@plurnk/plurnk-providers 1.4.0 → 1.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/.env.defaults +40 -34
- package/README.md +3 -0
- package/SPEC.md +153 -62
- package/dist/AiSdkProvider.d.ts +19 -25
- package/dist/AiSdkProvider.d.ts.map +1 -1
- package/dist/AiSdkProvider.js +353 -120
- package/dist/AiSdkProvider.js.map +1 -1
- package/dist/Mock.d.ts +7 -13
- package/dist/Mock.d.ts.map +1 -1
- package/dist/Mock.js +36 -8
- package/dist/Mock.js.map +1 -1
- package/dist/Pool.d.ts +2 -21
- package/dist/Pool.d.ts.map +1 -1
- package/dist/Pool.js +19 -14
- package/dist/Pool.js.map +1 -1
- package/dist/accounting.d.ts +6 -0
- package/dist/accounting.d.ts.map +1 -0
- package/dist/accounting.js +168 -0
- package/dist/accounting.js.map +1 -0
- package/dist/aiSdkTransport.d.ts +11 -3
- package/dist/aiSdkTransport.d.ts.map +1 -1
- package/dist/aiSdkTransport.js +198 -29
- package/dist/aiSdkTransport.js.map +1 -1
- package/dist/catalogProvider.d.ts +7 -2
- package/dist/catalogProvider.d.ts.map +1 -1
- package/dist/catalogProvider.js +32 -26
- package/dist/catalogProvider.js.map +1 -1
- package/dist/compatibleProvider.d.ts.map +1 -1
- package/dist/compatibleProvider.js +18 -7
- package/dist/compatibleProvider.js.map +1 -1
- package/dist/cost.d.ts +10 -10
- package/dist/cost.d.ts.map +1 -1
- package/dist/cost.js +88 -43
- package/dist/cost.js.map +1 -1
- package/dist/env.d.ts +5 -7
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +30 -32
- package/dist/env.js.map +1 -1
- package/dist/errors.d.ts +14 -2
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +60 -2
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +4 -4
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/ollama.js +3 -3
- package/dist/ollama.js.map +1 -1
- package/dist/sdkModels.d.ts +6 -0
- package/dist/sdkModels.d.ts.map +1 -1
- package/dist/sdkModels.js +46 -3
- package/dist/sdkModels.js.map +1 -1
- package/dist/types.d.ts +40 -29
- package/dist/types.d.ts.map +1 -1
- package/dist/usage.d.ts +21 -4
- package/dist/usage.d.ts.map +1 -1
- package/dist/usage.js +188 -74
- package/dist/usage.js.map +1 -1
- package/package.json +9 -7
- package/src/AiSdkProvider.test.ts +1039 -182
- package/src/AiSdkProvider.ts +428 -141
- package/src/Mock.test.ts +37 -12
- package/src/Mock.ts +46 -12
- package/src/Pool.test.ts +19 -6
- package/src/Pool.ts +20 -16
- package/src/ProviderRegistry.test.ts +16 -11
- package/src/accounting.test.ts +94 -0
- package/src/accounting.ts +190 -0
- package/src/aiSdkTransport.test.ts +42 -49
- package/src/aiSdkTransport.ts +218 -32
- package/src/boundaries.test.ts +2 -0
- package/src/catalogProvider.test.ts +271 -24
- package/src/catalogProvider.ts +44 -28
- package/src/compatibleProvider.test.ts +6 -3
- package/src/compatibleProvider.ts +20 -7
- package/src/cost.test.ts +55 -35
- package/src/cost.ts +110 -54
- package/src/defaults.test.ts +13 -3
- package/src/env.test.ts +50 -26
- package/src/env.ts +43 -42
- package/src/errors.test.ts +47 -2
- package/src/errors.ts +68 -3
- package/src/index.ts +21 -5
- package/src/ollama.test.ts +4 -1
- package/src/ollama.ts +3 -3
- package/src/sdkModels.test.ts +94 -3
- package/src/sdkModels.ts +53 -3
- package/src/types.ts +91 -33
- package/src/usage.test.ts +112 -108
- package/src/usage.ts +233 -84
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalogProvider.js","sourceRoot":"","sources":["../src/catalogProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,YAAY,EAAkB,MAAM,uBAAuB,CAAC;AACrF,OAAO,EACH,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"catalogProvider.js","sourceRoot":"","sources":["../src/catalogProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibleProvider.d.ts","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"compatibleProvider.d.ts","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAgG3C,eAAO,MAAM,yBAAyB,aACxB,QAAQ,GAAG,QAAQ,OACxB,MAAM,CAAC,UAAU,SACf,MAAM,oBACK,MAAM,KACzB,OAAO,CAAC,QAAQ,CA2GlB,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import AiSdkProvider from "./AiSdkProvider.js";
|
|
2
|
-
import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, envelopeFromEnv, parseOptionalFloat, parseOptionalInt, parseRequiredFloat, parseRequiredInt,
|
|
2
|
+
import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, envelopeFromEnv, parseOptionalFloat, parseOptionalInt, parseRequiredFloat, parseRequiredInt, parseTimeoutMs, cacheAffinityFromEnv, cacheWritePolicyFromEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, } from "./env.js";
|
|
3
3
|
import { providerSource } from "./notices.js";
|
|
4
|
+
import { plurnkCostNormalizer } from "./accounting.js";
|
|
4
5
|
import { emitWarningOnce } from "./warnings.js";
|
|
5
6
|
const chatUrl = (provider, env, override) => {
|
|
6
7
|
const configured = override
|
|
@@ -20,7 +21,10 @@ const chatUrl = (provider, env, override) => {
|
|
|
20
21
|
const probeModels = async (url, headers, model, timeout) => {
|
|
21
22
|
const modelsUrl = url.replace(/\/chat\/completions$/, "/models");
|
|
22
23
|
try {
|
|
23
|
-
const response = await fetch(modelsUrl, {
|
|
24
|
+
const response = await fetch(modelsUrl, {
|
|
25
|
+
headers,
|
|
26
|
+
...(timeout > 0 ? { signal: AbortSignal.timeout(timeout) } : {}),
|
|
27
|
+
});
|
|
24
28
|
if (!response.ok)
|
|
25
29
|
return { nCtx: null, llamaServer: false, servedModel: null, failed: true };
|
|
26
30
|
const data = await response.json();
|
|
@@ -53,7 +57,7 @@ const probeProps = async (url, headers, timeout) => {
|
|
|
53
57
|
try {
|
|
54
58
|
const response = await fetch(url.replace(/\/v1\/chat\/completions$/, "/props"), {
|
|
55
59
|
headers,
|
|
56
|
-
signal: AbortSignal.timeout(timeout),
|
|
60
|
+
...(timeout > 0 ? { signal: AbortSignal.timeout(timeout) } : {}),
|
|
57
61
|
});
|
|
58
62
|
if (!response.ok)
|
|
59
63
|
return { slotCount: null, eosText: null };
|
|
@@ -68,12 +72,17 @@ const probeProps = async (url, headers, timeout) => {
|
|
|
68
72
|
}
|
|
69
73
|
};
|
|
70
74
|
export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOverride) => {
|
|
75
|
+
// The knobs remain universal and fail hard when malformed, but this local /
|
|
76
|
+
// first-party compatible route declares no vendor cache projection. llama-server
|
|
77
|
+
// already owns slot affinity and the first-party endpoint receives worker metadata.
|
|
78
|
+
cacheAffinityFromEnv(env, provider);
|
|
79
|
+
cacheWritePolicyFromEnv(env, provider);
|
|
71
80
|
const url = chatUrl(provider, env, baseUrlOverride);
|
|
72
81
|
const apiKey = provider === "openai" ? env.OPENAI_API_KEY : env.PLURNK_API_KEY;
|
|
73
82
|
const headers = apiKey === undefined || apiKey.length === 0
|
|
74
83
|
? {}
|
|
75
84
|
: { Authorization: `Bearer ${apiKey}` };
|
|
76
|
-
const timeout =
|
|
85
|
+
const timeout = parseTimeoutMs(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", provider);
|
|
77
86
|
const attempts = parseRequiredInt(env.PLURNK_PROVIDERS_PROBE_ATTEMPTS, "PLURNK_PROVIDERS_PROBE_ATTEMPTS", provider);
|
|
78
87
|
const probe = await probeModelsRetrying(url, headers, model, timeout, attempts, parseRequiredInt(env.PLURNK_PROVIDERS_PROBE_DELAY, "PLURNK_PROVIDERS_PROBE_DELAY", provider));
|
|
79
88
|
const contextWindow = effectiveContextWindow(contextWindowFromEnv(env, provider), probe.nCtx);
|
|
@@ -105,7 +114,7 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
|
|
|
105
114
|
promptTokensUrl = url.replace(/\/v1\/chat\/completions$/, "/v1/chat/completions/input_tokens");
|
|
106
115
|
}
|
|
107
116
|
if (!llamaServer) {
|
|
108
|
-
emitWarningOnce(`${provider} provider:
|
|
117
|
+
emitWarningOnce(`${provider} provider: request-level prompt counting is a chars/2 estimate; hard context-envelope admission fails closed without exact or bounded evidence`, "PLURNK_PROMPT_COUNT_ESTIMATE");
|
|
109
118
|
}
|
|
110
119
|
const { reasoningReserve, completionReserve } = envelopeFromEnv(env, provider);
|
|
111
120
|
return new AiSdkProvider({
|
|
@@ -114,7 +123,9 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
|
|
|
114
123
|
headers,
|
|
115
124
|
contextWindow,
|
|
116
125
|
fetchTimeoutMs: timeout,
|
|
117
|
-
|
|
126
|
+
operationTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_OPERATION_TIMEOUT, "PLURNK_PROVIDERS_OPERATION_TIMEOUT", provider),
|
|
127
|
+
firstContentTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT, "PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT", provider),
|
|
128
|
+
streamIdleTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", provider),
|
|
118
129
|
reasoning: reasoningFromEnv(env, provider),
|
|
119
130
|
reasoningResponseStyle: reasoningResponseStyleFromEnv(env, provider),
|
|
120
131
|
reasoningStyle,
|
|
@@ -130,7 +141,6 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
|
|
|
130
141
|
tuningFloors: provider !== "plurnk",
|
|
131
142
|
retryAttempts: parseRequiredInt(env.PLURNK_PROVIDERS_RETRY_ATTEMPTS, "PLURNK_PROVIDERS_RETRY_ATTEMPTS", provider),
|
|
132
143
|
errorDetailLimit: parseRequiredInt(env.PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT, "PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT", provider),
|
|
133
|
-
promptCacheKey: promptCacheKeyFromEnv(env, provider),
|
|
134
144
|
source: providerSource(provider),
|
|
135
145
|
grammarStyle,
|
|
136
146
|
gbnfDebug: env.PLURNK_PROVIDERS_GBNF_DEBUG !== undefined
|
|
@@ -138,6 +148,7 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
|
|
|
138
148
|
&& env.PLURNK_PROVIDERS_GBNF_DEBUG !== "0",
|
|
139
149
|
...dataCaptureFromEnv(env, provider),
|
|
140
150
|
firstPartyMetadata: provider === "plurnk",
|
|
151
|
+
normalizeCost: provider === "plurnk" ? plurnkCostNormalizer : undefined,
|
|
141
152
|
apiKeyRejectedMessage: provider === "plurnk"
|
|
142
153
|
? "PLURNK_API_KEY was rejected by plurnk.ai (invalid or expired)."
|
|
143
154
|
: undefined,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"compatibleProvider.js","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"AAAA,OAAO,aAAyD,MAAM,oBAAoB,CAAC;AAC3F,OAAO,EACH,oBAAoB,EACpB,sBAAsB,EACtB,kBAAkB,EAClB,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,EAClB,gBAAgB,EAChB,
|
|
1
|
+
{"version":3,"file":"compatibleProvider.js","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"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"}
|
package/dist/cost.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type
|
|
3
|
-
export declare const
|
|
4
|
-
export declare const
|
|
5
|
-
export declare const
|
|
6
|
-
export declare const
|
|
7
|
-
export declare const
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
1
|
+
import type { ChargedCost, ProviderCost, ProviderUsage } from "./types.ts";
|
|
2
|
+
import { type TokenRates } from "./usage.ts";
|
|
3
|
+
export declare const validateDecimal: (value: unknown, name: string) => string;
|
|
4
|
+
export declare const validateChargedCost: (value: unknown) => ChargedCost;
|
|
5
|
+
export declare const validateProviderCost: (value: unknown) => ProviderCost;
|
|
6
|
+
export declare const estimateProviderCost: (usage: ProviderUsage | undefined, rates: TokenRates | null, source: string) => ProviderCost;
|
|
7
|
+
export declare const resolveProviderCost: (direct: ProviderCost | undefined, estimated: ProviderCost) => ProviderCost;
|
|
8
|
+
export declare const providerCostUsd: (cost: ProviderCost) => string | null;
|
|
9
|
+
export declare const addDecimals: (values: readonly string[]) => string;
|
|
10
|
+
export declare const sumProviderCostsUsd: (costs: readonly ProviderCost[]) => string | null;
|
|
11
11
|
//# sourceMappingURL=cost.d.ts.map
|
package/dist/cost.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,
|
|
1
|
+
{"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,WAAW,EACX,YAAY,EACZ,aAAa,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,EAGH,KAAK,UAAU,EAClB,MAAM,YAAY,CAAC;AAmBpB,eAAO,MAAM,eAAe,UAAW,OAAO,QAAQ,MAAM,KAAG,MAK9D,CAAC;AAWF,eAAO,MAAM,mBAAmB,UAAW,OAAO,KAAG,WASpD,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAAW,OAAO,KAAG,YAerD,CAAC;AAEF,eAAO,MAAM,oBAAoB,UACtB,aAAa,GAAG,SAAS,SACzB,UAAU,GAAG,IAAI,UAChB,MAAM,KACf,YAkBF,CAAC;AAEF,eAAO,MAAM,mBAAmB,WACpB,YAAY,GAAG,SAAS,aACrB,YAAY,KACxB,YAE+B,CAAC;AAEnC,eAAO,MAAM,eAAe,SAAU,YAAY,KAAG,MAAM,GAAG,IAY7D,CAAC;AAQF,eAAO,MAAM,WAAW,WAAY,SAAS,MAAM,EAAE,KAAG,MAQvD,CAAC;AAEF,eAAO,MAAM,mBAAmB,UAAW,SAAS,YAAY,EAAE,KAAG,MAAM,GAAG,IAK7E,CAAC"}
|
package/dist/cost.js
CHANGED
|
@@ -1,64 +1,109 @@
|
|
|
1
|
+
import { calculateCostUsdDecimal, canonicalDecimal, } from "./usage.js";
|
|
1
2
|
const DECIMAL = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
|
|
2
3
|
const CURRENCY = /^[A-Z][A-Z0-9]{2,11}$/;
|
|
4
|
+
const recordOf = (value, name) => {
|
|
5
|
+
if (typeof value !== "object" || value === null || Array.isArray(value)) {
|
|
6
|
+
throw new TypeError(`${name} must be an object`);
|
|
7
|
+
}
|
|
8
|
+
return value;
|
|
9
|
+
};
|
|
3
10
|
const nonEmpty = (value, name) => {
|
|
4
|
-
if (value.trim() === "")
|
|
5
|
-
throw new TypeError(`${name} must be non-empty`);
|
|
11
|
+
if (typeof value !== "string" || value.trim() === "") {
|
|
12
|
+
throw new TypeError(`${name} must be a non-empty string`);
|
|
13
|
+
}
|
|
6
14
|
return value;
|
|
7
15
|
};
|
|
8
|
-
const
|
|
9
|
-
if (!DECIMAL.test(value))
|
|
16
|
+
export const validateDecimal = (value, name) => {
|
|
17
|
+
if (typeof value !== "string" || !DECIMAL.test(value)) {
|
|
10
18
|
throw new TypeError(`${name} must be a canonical non-negative decimal string`);
|
|
19
|
+
}
|
|
11
20
|
return value;
|
|
12
21
|
};
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
22
|
+
const monetaryAmount = (value, name) => {
|
|
23
|
+
const amount = recordOf(value, name);
|
|
24
|
+
const decimalAmount = validateDecimal(amount.amount, `${name} amount`);
|
|
25
|
+
if (typeof amount.currency !== "string" || !CURRENCY.test(amount.currency)) {
|
|
26
|
+
throw new TypeError(`${name} currency must be an uppercase currency code`);
|
|
27
|
+
}
|
|
28
|
+
return { amount: decimalAmount, currency: amount.currency };
|
|
29
|
+
};
|
|
30
|
+
export const validateChargedCost = (value) => {
|
|
31
|
+
const cost = recordOf(value, "provider charged cost");
|
|
32
|
+
if (cost.kind !== "charged")
|
|
33
|
+
throw new TypeError("provider charged cost kind must be charged");
|
|
34
|
+
monetaryAmount(cost.amount, "provider charged cost");
|
|
35
|
+
if (cost.usdEquivalent !== undefined) {
|
|
36
|
+
validateDecimal(cost.usdEquivalent, "provider charged cost USD equivalent");
|
|
19
37
|
}
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
return charge;
|
|
38
|
+
nonEmpty(cost.source, "provider charged cost source");
|
|
39
|
+
return value;
|
|
23
40
|
};
|
|
24
|
-
export const validateProviderCost = (
|
|
41
|
+
export const validateProviderCost = (value) => {
|
|
42
|
+
const cost = recordOf(value, "provider cost");
|
|
25
43
|
switch (cost.kind) {
|
|
26
|
-
case "
|
|
27
|
-
return
|
|
44
|
+
case "charged":
|
|
45
|
+
return validateChargedCost(value);
|
|
28
46
|
case "estimated":
|
|
29
|
-
|
|
30
|
-
nonEmpty(cost.source, "provider cost
|
|
31
|
-
return
|
|
32
|
-
case "free":
|
|
33
|
-
nonEmpty(cost.source, "provider free source");
|
|
34
|
-
return cost;
|
|
47
|
+
monetaryAmount(cost.amount, "provider estimated cost");
|
|
48
|
+
nonEmpty(cost.source, "provider estimated cost source");
|
|
49
|
+
return value;
|
|
35
50
|
case "unknown":
|
|
36
51
|
nonEmpty(cost.reason, "provider unknown-cost reason");
|
|
37
|
-
return
|
|
52
|
+
return value;
|
|
53
|
+
default:
|
|
54
|
+
throw new TypeError("provider cost kind must be charged, estimated, or unknown");
|
|
38
55
|
}
|
|
39
56
|
};
|
|
40
|
-
export const
|
|
41
|
-
if (
|
|
42
|
-
return
|
|
43
|
-
if (current !== undefined)
|
|
44
|
-
return validateProviderCost(current);
|
|
45
|
-
const cost = legacy();
|
|
46
|
-
if (!Number.isFinite(cost) || cost < 0) {
|
|
47
|
-
throw new TypeError("legacy provider cost must be a finite non-negative number");
|
|
57
|
+
export const estimateProviderCost = (usage, rates, source) => {
|
|
58
|
+
if (usage === undefined) {
|
|
59
|
+
return { kind: "unknown", reason: "the provider response reported no normalized usage" };
|
|
48
60
|
}
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
61
|
+
if (rates === null) {
|
|
62
|
+
return { kind: "unknown", reason: "Models.dev has no complete rate for this model" };
|
|
63
|
+
}
|
|
64
|
+
const usd = calculateCostUsdDecimal(usage, rates);
|
|
65
|
+
return usd === null
|
|
66
|
+
? {
|
|
67
|
+
kind: "unknown",
|
|
68
|
+
reason: "the provider response omitted a token category with a distinct Models.dev rate",
|
|
69
|
+
}
|
|
70
|
+
: {
|
|
71
|
+
kind: "estimated",
|
|
72
|
+
amount: { amount: usd, currency: "USD" },
|
|
73
|
+
source,
|
|
74
|
+
};
|
|
52
75
|
};
|
|
76
|
+
export const resolveProviderCost = (direct, estimated) => direct === undefined
|
|
77
|
+
? validateProviderCost(estimated)
|
|
78
|
+
: validateProviderCost(direct);
|
|
53
79
|
export const providerCostUsd = (cost) => {
|
|
54
|
-
const
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
80
|
+
const validated = validateProviderCost(cost);
|
|
81
|
+
switch (validated.kind) {
|
|
82
|
+
case "charged":
|
|
83
|
+
return validated.amount.currency === "USD"
|
|
84
|
+
? validated.amount.amount
|
|
85
|
+
: validated.usdEquivalent ?? null;
|
|
86
|
+
case "estimated":
|
|
87
|
+
return validated.amount.currency === "USD" ? validated.amount.amount : null;
|
|
88
|
+
case "unknown":
|
|
89
|
+
return null;
|
|
90
|
+
}
|
|
91
|
+
};
|
|
92
|
+
const decimalParts = (value) => {
|
|
93
|
+
validateDecimal(value, "decimal amount");
|
|
94
|
+
const [integer, fraction = ""] = value.split(".");
|
|
95
|
+
return { coefficient: BigInt(`${integer}${fraction}`), scale: fraction.length };
|
|
96
|
+
};
|
|
97
|
+
export const addDecimals = (values) => {
|
|
98
|
+
const parts = values.map(decimalParts);
|
|
99
|
+
const scale = Math.max(0, ...parts.map((part) => part.scale));
|
|
100
|
+
const coefficient = parts.reduce((sum, part) => sum + part.coefficient * 10n ** BigInt(scale - part.scale), 0n);
|
|
101
|
+
return canonicalDecimal(coefficient, scale);
|
|
102
|
+
};
|
|
103
|
+
export const sumProviderCostsUsd = (costs) => {
|
|
104
|
+
const values = costs.map(providerCostUsd);
|
|
105
|
+
return values.some((value) => value === null)
|
|
106
|
+
? null
|
|
107
|
+
: addDecimals(values);
|
|
62
108
|
};
|
|
63
|
-
export const providerCostFor = (provider, usage, charge) => resolveProviderCost(charge, provider.calculateCharge?.(usage), () => provider.calculateCost(usage));
|
|
64
109
|
//# sourceMappingURL=cost.js.map
|
package/dist/cost.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAKA,OAAO,EACH,uBAAuB,EACvB,gBAAgB,GAEnB,MAAM,YAAY,CAAC;AAEpB,MAAM,OAAO,GAAG,4BAA4B,CAAC;AAC7C,MAAM,QAAQ,GAAG,uBAAuB,CAAC;AAEzC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,IAAY,EAA2B,EAAE;IACvE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACtE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,oBAAoB,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,KAAgC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAE,IAAY,EAAU,EAAE;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC;QACnD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,6BAA6B,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,KAAc,EAAE,IAAY,EAAU,EAAE;IACpE,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,kDAAkD,CAAC,CAAC;IACnF,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,KAAc,EAAE,IAAY,EAAwC,EAAE;IAC1F,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;IACrC,MAAM,aAAa,GAAG,eAAe,CAAC,MAAM,CAAC,MAAM,EAAE,GAAG,IAAI,SAAS,CAAC,CAAC;IACvE,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzE,MAAM,IAAI,SAAS,CAAC,GAAG,IAAI,8CAA8C,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAe,EAAE;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,CAAC;IACtD,IAAI,IAAI,CAAC,IAAI,KAAK,SAAS;QAAE,MAAM,IAAI,SAAS,CAAC,4CAA4C,CAAC,CAAC;IAC/F,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,uBAAuB,CAAC,CAAC;IACrD,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS,EAAE,CAAC;QACnC,eAAe,CAAC,IAAI,CAAC,aAAa,EAAE,sCAAsC,CAAC,CAAC;IAChF,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;IACtD,OAAO,KAAoB,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,KAAc,EAAgB,EAAE;IACjE,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IAC9C,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;QAChB,KAAK,SAAS;YACV,OAAO,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACtC,KAAK,WAAW;YACZ,cAAc,CAAC,IAAI,CAAC,MAAM,EAAE,yBAAyB,CAAC,CAAC;YACvD,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,gCAAgC,CAAC,CAAC;YACxD,OAAO,KAAqB,CAAC;QACjC,KAAK,SAAS;YACV,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,8BAA8B,CAAC,CAAC;YACtD,OAAO,KAAqB,CAAC;QACjC;YACI,MAAM,IAAI,SAAS,CAAC,2DAA2D,CAAC,CAAC;IACzF,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAChC,KAAgC,EAChC,KAAwB,EACxB,MAAc,EACF,EAAE;IACd,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;QACtB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,oDAAoD,EAAE,CAAC;IAC7F,CAAC;IACD,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACjB,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,gDAAgD,EAAE,CAAC;IACzF,CAAC;IACD,MAAM,GAAG,GAAG,uBAAuB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAClD,OAAO,GAAG,KAAK,IAAI;QACf,CAAC,CAAC;YACE,IAAI,EAAE,SAAS;YACf,MAAM,EAAE,gFAAgF;SAC3F;QACD,CAAC,CAAC;YACE,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE;YACxC,MAAM;SACT,CAAC;AACV,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAC/B,MAAgC,EAChC,SAAuB,EACX,EAAE,CAAC,MAAM,KAAK,SAAS;IACnC,CAAC,CAAC,oBAAoB,CAAC,SAAS,CAAC;IACjC,CAAC,CAAC,oBAAoB,CAAC,MAAM,CAAC,CAAC;AAEnC,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,IAAkB,EAAiB,EAAE;IACjE,MAAM,SAAS,GAAG,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC7C,QAAQ,SAAS,CAAC,IAAI,EAAE,CAAC;QACrB,KAAK,SAAS;YACV,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK;gBACtC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM;gBACzB,CAAC,CAAC,SAAS,CAAC,aAAa,IAAI,IAAI,CAAC;QAC1C,KAAK,WAAW;YACZ,OAAO,SAAS,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;QAChF,KAAK,SAAS;YACV,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,CAAC,KAAa,EAA0C,EAAE;IAC3E,eAAe,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACzC,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAClD,OAAO,EAAE,WAAW,EAAE,MAAM,CAAC,GAAG,OAAO,GAAG,QAAQ,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,MAAM,EAAE,CAAC;AACpF,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,MAAyB,EAAU,EAAE;IAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAC5B,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,WAAW,GAAG,GAAG,IAAI,MAAM,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,EACzE,EAAE,CACL,CAAC;IACF,OAAO,gBAAgB,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAA8B,EAAiB,EAAE;IACjF,MAAM,MAAM,GAAG,KAAK,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;IAC1C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,IAAI,CAAC;QACzC,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,WAAW,CAAC,MAAkB,CAAC,CAAC;AAC1C,CAAC,CAAC"}
|
package/dist/env.d.ts
CHANGED
|
@@ -1,9 +1,13 @@
|
|
|
1
1
|
export declare const parseRequiredInt: (raw: string | undefined, name: string, label: string) => number;
|
|
2
|
+
export declare const MAX_PROVIDER_TIMEOUT_MS = 2147483647;
|
|
3
|
+
export declare const parseTimeoutMs: (raw: string | undefined, name: string, label: string) => number;
|
|
2
4
|
export declare const parseOptionalInt: (raw: string | undefined, name: string, label: string) => number | null;
|
|
3
5
|
export declare const parseRequiredFloat: (raw: string | undefined, name: string, label: string, min: number) => number;
|
|
4
6
|
export declare const parseOptionalFloat: (raw: string | undefined, name: string, label: string, min: number) => number | null;
|
|
5
7
|
export declare const requireEnv: (raw: string | undefined, name: string, label: string) => string;
|
|
6
|
-
export
|
|
8
|
+
export type CacheWritePolicy = "off" | "stable-system";
|
|
9
|
+
export declare const cacheAffinityFromEnv: (env: NodeJS.ProcessEnv, label: string) => boolean;
|
|
10
|
+
export declare const cacheWritePolicyFromEnv: (env: NodeJS.ProcessEnv, label: string) => CacheWritePolicy;
|
|
7
11
|
export declare const dataCaptureFromEnv: (env: NodeJS.ProcessEnv, label: string) => {
|
|
8
12
|
topLogprobs: number | null;
|
|
9
13
|
rawBody: boolean;
|
|
@@ -11,12 +15,6 @@ export declare const dataCaptureFromEnv: (env: NodeJS.ProcessEnv, label: string)
|
|
|
11
15
|
export declare const contextWindowFromEnv: (env: NodeJS.ProcessEnv, label: string) => number | null;
|
|
12
16
|
export declare function effectiveContextWindow(operatorCap: number | null, naturalWindow: number): number;
|
|
13
17
|
export declare function effectiveContextWindow(operatorCap: number | null, naturalWindow: number | null): number | null;
|
|
14
|
-
export type ProviderTokenRates = {
|
|
15
|
-
input: number;
|
|
16
|
-
cached: number;
|
|
17
|
-
output: number;
|
|
18
|
-
};
|
|
19
|
-
export declare const tokenRatesFromEnv: (env: NodeJS.ProcessEnv, label: string) => ProviderTokenRates | null;
|
|
20
18
|
export type ReserveSpec = {
|
|
21
19
|
percent: number;
|
|
22
20
|
} | {
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAGA,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,kBAAkB,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,OAAO,MAAM,KAAG,MAAM,GAAG,IAK/G,CAAC;AAEF,eAAO,MAAM,UAAU,QAAS,MAAM,GAAG,SAAS,QAAQ,MAAM,SAAS,MAAM,KAAG,MAGjF,CAAC;AAEF,eAAO,MAAM,
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
package/dist/env.js
CHANGED
|
@@ -8,6 +8,14 @@ export const parseRequiredInt = (raw, name, label) => {
|
|
|
8
8
|
throw new Error(`${label} provider: ${name} must be a non-negative integer (got "${raw}")`);
|
|
9
9
|
return n;
|
|
10
10
|
};
|
|
11
|
+
export const MAX_PROVIDER_TIMEOUT_MS = 2_147_483_647;
|
|
12
|
+
export const parseTimeoutMs = (raw, name, label) => {
|
|
13
|
+
const timeoutMs = parseRequiredInt(raw, name, label);
|
|
14
|
+
if (timeoutMs > MAX_PROVIDER_TIMEOUT_MS) {
|
|
15
|
+
throw new Error(`${label} provider: ${name} must be at most ${MAX_PROVIDER_TIMEOUT_MS} milliseconds (got "${raw}")`);
|
|
16
|
+
}
|
|
17
|
+
return timeoutMs;
|
|
18
|
+
};
|
|
11
19
|
export const parseOptionalInt = (raw, name, label) => {
|
|
12
20
|
if (raw === undefined || raw.length === 0)
|
|
13
21
|
return null;
|
|
@@ -37,14 +45,6 @@ export const requireEnv = (raw, name, label) => {
|
|
|
37
45
|
throw new Error(`${label} provider: ${name} must be set`);
|
|
38
46
|
return raw;
|
|
39
47
|
};
|
|
40
|
-
export const promptCacheKeyFromEnv = (env, label) => {
|
|
41
|
-
const name = "PLURNK_PROVIDERS_PROMPT_CACHE_KEY";
|
|
42
|
-
const value = env[name];
|
|
43
|
-
if (value !== "0" && value !== "1") {
|
|
44
|
-
throw new Error(`${label} provider: ${name} must be "0" or "1"`);
|
|
45
|
-
}
|
|
46
|
-
return value === "1";
|
|
47
|
-
};
|
|
48
48
|
// {§provider-configuration} A still-set retired knob fails
|
|
49
49
|
// hard pointing at its successor — never silently coexists with the new floor.
|
|
50
50
|
// The retired names appear ONLY as this function's ARGUMENTS at the call sites
|
|
@@ -54,6 +54,23 @@ const shedRenamed = (env, oldName, newName, label, ref) => {
|
|
|
54
54
|
if (stale !== undefined && stale.length > 0)
|
|
55
55
|
throw new Error(`${label} provider: ${oldName} was renamed to ${newName} (${ref}); update the env`);
|
|
56
56
|
};
|
|
57
|
+
export const cacheAffinityFromEnv = (env, label) => {
|
|
58
|
+
const name = "PLURNK_PROVIDERS_CACHE_AFFINITY";
|
|
59
|
+
shedRenamed(env, "PLURNK_PROVIDERS_PROMPT_CACHE_KEY", name, label, "{§provider-cache-affinity}"); // lexicon-allow
|
|
60
|
+
const value = env[name];
|
|
61
|
+
if (value !== "0" && value !== "1") {
|
|
62
|
+
throw new Error(`${label} provider: ${name} must be "0" or "1"`);
|
|
63
|
+
}
|
|
64
|
+
return value === "1";
|
|
65
|
+
};
|
|
66
|
+
export const cacheWritePolicyFromEnv = (env, label) => {
|
|
67
|
+
const name = "PLURNK_PROVIDERS_CACHE_WRITE_POLICY";
|
|
68
|
+
const value = env[name];
|
|
69
|
+
if (value !== "off" && value !== "stable-system") {
|
|
70
|
+
throw new Error(`${label} provider: ${name} must be "off" or "stable-system"`);
|
|
71
|
+
}
|
|
72
|
+
return value;
|
|
73
|
+
};
|
|
57
74
|
// {§provider-evidence} Data-capture knobs are read identically by every provider
|
|
58
75
|
// (standard AND
|
|
59
76
|
// plugin) so the opt-in surface is one source of truth. Both OFF by default —
|
|
@@ -86,25 +103,6 @@ export function effectiveContextWindow(operatorCap, naturalWindow) {
|
|
|
86
103
|
? operatorCap
|
|
87
104
|
: Math.min(operatorCap, naturalWindow);
|
|
88
105
|
}
|
|
89
|
-
// {§model-fact-resolution} — any explicit rate opts into one complete operator
|
|
90
|
-
// estimate; cached input alone may default to the explicit input rate.
|
|
91
|
-
export const tokenRatesFromEnv = (env, label) => {
|
|
92
|
-
const inputName = "PLURNK_PROVIDERS_INPUT_USD_PER_MILLION";
|
|
93
|
-
const cachedName = "PLURNK_PROVIDERS_CACHE_READ_USD_PER_MILLION";
|
|
94
|
-
const outputName = "PLURNK_PROVIDERS_OUTPUT_USD_PER_MILLION";
|
|
95
|
-
const configured = [inputName, cachedName, outputName]
|
|
96
|
-
.some((name) => env[name] !== undefined && env[name] !== "");
|
|
97
|
-
if (!configured)
|
|
98
|
-
return null;
|
|
99
|
-
const input = parseRequiredFloat(env[inputName], inputName, label, 0);
|
|
100
|
-
return {
|
|
101
|
-
input,
|
|
102
|
-
cached: env[cachedName] === undefined || env[cachedName] === ""
|
|
103
|
-
? input
|
|
104
|
-
: parseRequiredFloat(env[cachedName], cachedName, label, 0),
|
|
105
|
-
output: parseRequiredFloat(env[outputName], outputName, label, 0),
|
|
106
|
-
};
|
|
107
|
-
};
|
|
108
106
|
const parseReserve = (raw, name, label) => {
|
|
109
107
|
if (raw === undefined || raw.length === 0)
|
|
110
108
|
throw new Error(`${label} provider: ${name} must be set (a percentage of the window like "10%", or an absolute token count)`);
|
|
@@ -164,7 +162,7 @@ export const reasoningFromEnv = (env, label) => {
|
|
|
164
162
|
const capName = "PLURNK_PROVIDERS_REASONING_BUDGET";
|
|
165
163
|
const capRaw = env[capName];
|
|
166
164
|
if (capRaw === undefined || capRaw.length === 0)
|
|
167
|
-
|
|
165
|
+
return { mode: "on", budget: null };
|
|
168
166
|
const n = Number(capRaw);
|
|
169
167
|
if (!Number.isInteger(n) || n <= 0)
|
|
170
168
|
throw new Error(`${label} provider: ${capName} must be a positive integer (got "${capRaw}")`);
|
|
@@ -184,19 +182,19 @@ export const PROVIDERS_KNOBS = Object.freeze([
|
|
|
184
182
|
"PLURNK_PROVIDERS_REASONING_BUDGET",
|
|
185
183
|
"PLURNK_PROVIDERS_REASONING",
|
|
186
184
|
"PLURNK_PROVIDERS_CONTEXT_WINDOW",
|
|
187
|
-
"PLURNK_PROVIDERS_INPUT_USD_PER_MILLION",
|
|
188
|
-
"PLURNK_PROVIDERS_CACHE_READ_USD_PER_MILLION",
|
|
189
|
-
"PLURNK_PROVIDERS_OUTPUT_USD_PER_MILLION",
|
|
190
185
|
"PLURNK_PROVIDERS_RETRY_ATTEMPTS",
|
|
191
186
|
"PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT",
|
|
187
|
+
"PLURNK_PROVIDERS_OPERATION_TIMEOUT",
|
|
192
188
|
"PLURNK_PROVIDERS_FETCH_TIMEOUT",
|
|
189
|
+
"PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT",
|
|
193
190
|
"PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT",
|
|
194
191
|
"PLURNK_PROVIDERS_LLAMA_SERVER",
|
|
195
192
|
"PLURNK_PROVIDERS_TEMPERATURE",
|
|
196
193
|
"PLURNK_PROVIDERS_REPEAT_PENALTY",
|
|
197
194
|
"PLURNK_PROVIDERS_FREQUENCY_PENALTY",
|
|
198
195
|
"PLURNK_PROVIDERS_SERVICE_TIER",
|
|
199
|
-
"
|
|
196
|
+
"PLURNK_PROVIDERS_CACHE_WRITE_POLICY",
|
|
197
|
+
"PLURNK_PROVIDERS_CACHE_AFFINITY",
|
|
200
198
|
"PLURNK_PROVIDERS_REPEAT_LAST_N",
|
|
201
199
|
"PLURNK_PROVIDERS_DRY_MULTIPLIER",
|
|
202
200
|
"PLURNK_PROVIDERS_DRY_BASE",
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,kCAAkC;AAElC,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAuB,EAAE,IAAY,EAAE,KAAa,EAAU,EAAE;IAC7F,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,cAAc,CAAC,CAAC;IACrG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,yCAAyC,GAAG,IAAI,CAAC,CAAC;IAC/H,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,GAAuB,EAAE,IAAY,EAAE,KAAa,EAAiB,EAAE;IACpG,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,yCAAyC,GAAG,IAAI,CAAC,CAAC;IAC/H,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAuB,EAAE,IAAY,EAAE,KAAa,EAAE,GAAW,EAAU,EAAE;IAC5G,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,cAAc,CAAC,CAAC;IACrG,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,+BAA+B,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;IACnI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAuB,EAAE,IAAY,EAAE,KAAa,EAAE,GAAW,EAAiB,EAAE;IACnH,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACvD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACtB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,+BAA+B,GAAG,UAAU,GAAG,IAAI,CAAC,CAAC;IACnI,OAAO,CAAC,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,UAAU,GAAG,CAAC,GAAuB,EAAE,IAAY,EAAE,KAAa,EAAU,EAAE;IACvF,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,GAAG,KAAK,cAAc,IAAI,cAAc,CAAC,CAAC;IACrG,OAAO,GAAG,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|