@plurnk/plurnk-providers 1.5.0 → 1.6.1

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.
Files changed (105) hide show
  1. package/.env.defaults +41 -34
  2. package/README.md +15 -0
  3. package/SPEC.md +242 -89
  4. package/dist/AiSdkProvider.d.ts +33 -33
  5. package/dist/AiSdkProvider.d.ts.map +1 -1
  6. package/dist/AiSdkProvider.js +442 -133
  7. package/dist/AiSdkProvider.js.map +1 -1
  8. package/dist/Mock.d.ts +10 -11
  9. package/dist/Mock.d.ts.map +1 -1
  10. package/dist/Mock.js +87 -25
  11. package/dist/Mock.js.map +1 -1
  12. package/dist/Pool.d.ts +9 -24
  13. package/dist/Pool.d.ts.map +1 -1
  14. package/dist/Pool.js +86 -25
  15. package/dist/Pool.js.map +1 -1
  16. package/dist/accounting.d.ts +5 -2
  17. package/dist/accounting.d.ts.map +1 -1
  18. package/dist/accounting.js +100 -16
  19. package/dist/accounting.js.map +1 -1
  20. package/dist/accountingPublic.d.ts +5 -0
  21. package/dist/accountingPublic.d.ts.map +1 -0
  22. package/dist/accountingPublic.js +3 -0
  23. package/dist/accountingPublic.js.map +1 -0
  24. package/dist/aiSdkTransport.d.ts +9 -2
  25. package/dist/aiSdkTransport.d.ts.map +1 -1
  26. package/dist/aiSdkTransport.js +160 -62
  27. package/dist/aiSdkTransport.js.map +1 -1
  28. package/dist/capacity.d.ts +26 -0
  29. package/dist/capacity.d.ts.map +1 -0
  30. package/dist/capacity.js +90 -0
  31. package/dist/capacity.js.map +1 -0
  32. package/dist/catalogProvider.d.ts +8 -3
  33. package/dist/catalogProvider.d.ts.map +1 -1
  34. package/dist/catalogProvider.js +45 -41
  35. package/dist/catalogProvider.js.map +1 -1
  36. package/dist/compatibleProvider.d.ts.map +1 -1
  37. package/dist/compatibleProvider.js +26 -12
  38. package/dist/compatibleProvider.js.map +1 -1
  39. package/dist/cost.d.ts +10 -10
  40. package/dist/cost.d.ts.map +1 -1
  41. package/dist/cost.js +90 -42
  42. package/dist/cost.js.map +1 -1
  43. package/dist/env.d.ts +13 -11
  44. package/dist/env.d.ts.map +1 -1
  45. package/dist/env.js +83 -46
  46. package/dist/env.js.map +1 -1
  47. package/dist/errors.d.ts +17 -3
  48. package/dist/errors.d.ts.map +1 -1
  49. package/dist/errors.js +91 -8
  50. package/dist/errors.js.map +1 -1
  51. package/dist/index.d.ts +7 -6
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +5 -3
  54. package/dist/index.js.map +1 -1
  55. package/dist/ollama.js +3 -3
  56. package/dist/ollama.js.map +1 -1
  57. package/dist/promptTokens.d.ts.map +1 -1
  58. package/dist/promptTokens.js +7 -4
  59. package/dist/promptTokens.js.map +1 -1
  60. package/dist/sdkModels.d.ts +7 -2
  61. package/dist/sdkModels.d.ts.map +1 -1
  62. package/dist/sdkModels.js +43 -13
  63. package/dist/sdkModels.js.map +1 -1
  64. package/dist/types.d.ts +55 -33
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/usage.d.ts +22 -5
  67. package/dist/usage.d.ts.map +1 -1
  68. package/dist/usage.js +169 -83
  69. package/dist/usage.js.map +1 -1
  70. package/package.json +18 -7
  71. package/src/AiSdkProvider.test.ts +964 -206
  72. package/src/AiSdkProvider.ts +545 -155
  73. package/src/Mock.test.ts +69 -30
  74. package/src/Mock.ts +99 -29
  75. package/src/Pool.test.ts +90 -19
  76. package/src/Pool.ts +96 -27
  77. package/src/ProviderRegistry.test.ts +16 -11
  78. package/src/accounting.test.ts +58 -22
  79. package/src/accounting.ts +119 -18
  80. package/src/accountingPublic.ts +9 -0
  81. package/src/aiSdkTransport.test.ts +42 -49
  82. package/src/aiSdkTransport.ts +174 -62
  83. package/src/boundaries.test.ts +2 -0
  84. package/src/capacity.test.ts +92 -0
  85. package/src/capacity.ts +140 -0
  86. package/src/catalogProvider.test.ts +339 -30
  87. package/src/catalogProvider.ts +65 -47
  88. package/src/compatibleProvider.test.ts +7 -5
  89. package/src/compatibleProvider.ts +29 -13
  90. package/src/cost.test.ts +86 -36
  91. package/src/cost.ts +111 -50
  92. package/src/defaults.test.ts +13 -3
  93. package/src/env.test.ts +103 -25
  94. package/src/env.ts +153 -65
  95. package/src/errors.test.ts +80 -2
  96. package/src/errors.ts +107 -8
  97. package/src/index.ts +26 -7
  98. package/src/ollama.test.ts +5 -3
  99. package/src/ollama.ts +3 -3
  100. package/src/promptTokens.ts +8 -5
  101. package/src/sdkModels.test.ts +77 -8
  102. package/src/sdkModels.ts +51 -15
  103. package/src/types.ts +112 -51
  104. package/src/usage.test.ts +112 -116
  105. package/src/usage.ts +214 -93
@@ -1,9 +1,9 @@
1
1
  import { lookupProvider, resolveModel } from "@plurnk/plurnk-models";
2
- import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, envelopeFromEnv, parseRequiredFloat, parseRequiredInt, promptCacheKeyFromEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, resolveReserve, } from "./env.js";
2
+ import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, generationEnvelopeFromEnv, parseRequiredFloat, parseRequiredInt, parseTimeoutMs, cacheAffinityFromEnv, cacheWritePolicyFromEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, } from "./env.js";
3
3
  import AiSdkProvider from "./AiSdkProvider.js";
4
4
  import { configuredProviderInfo, createSdkModel } from "./sdkModels.js";
5
5
  import { providerSource } from "./notices.js";
6
- import { calculateCostUsd, calculateCostUsdDecimal } from "./usage.js";
6
+ import { estimateProviderCost } from "./cost.js";
7
7
  import { emitWarningOnce } from "./warnings.js";
8
8
  const reasoningStyleFromEnv = (env, name) => {
9
9
  const prefix = name.replaceAll(/[^a-zA-Z0-9]/g, "_").toUpperCase();
@@ -19,65 +19,65 @@ const reasoningStyleFromEnv = (env, name) => {
19
19
  }
20
20
  return value;
21
21
  };
22
- export const providerFromSdkModel = ({ name, env, model, languageModel, normalizeCharge, url, headers, contextWindow, info, attributions, }) => {
23
- emitWarningOnce(`${name} provider: physical prompt counting is a chars/2 estimate; over-policy recovery fails closed without exact or bounded request evidence`, "PLURNK_PROMPT_COUNT_ESTIMATE");
24
- const reasoning = reasoningFromEnv(env, name);
25
- const { reasoningReserve: configuredReasoning, completionReserve: configuredCompletion } = envelopeFromEnv(env, name);
26
- const completionReserve = "tokens" in configuredCompletion
27
- ? configuredCompletion
28
- : info?.maxOutput === undefined
29
- ? configuredCompletion
30
- : { tokens: Math.min(info.maxOutput, Math.round(configuredCompletion.percent * contextWindow)) };
31
- const completionTokens = resolveReserve(completionReserve, contextWindow);
32
- const reasoningReserve = "tokens" in configuredReasoning
33
- ? configuredReasoning
34
- : reasoning.budget !== null
35
- ? { tokens: reasoning.budget }
36
- : completionTokens === null
37
- ? configuredReasoning
38
- : { tokens: Math.round(completionTokens / 2) };
22
+ export const providerFromSdkModel = ({ name, env, model, languageModel, normalizeCost, url, headers, contextWindow, info, attributions, cacheAffinity, systemCacheProviderOptions, reasoningResponseProviderOptions, additiveReasoningProvider, }) => {
23
+ emitWarningOnce(`${name} provider: request-level prompt counting is a chars/2 estimate; capacity is deferred to the provider`, "PLURNK_PROMPT_COUNT_ESTIMATE");
24
+ const maxInputTokens = info?.maxInputTokens ?? null;
25
+ const maxOutputTokens = info?.maxOutputTokens === undefined
26
+ ? null
27
+ : Math.min(info.maxOutputTokens, contextWindow);
28
+ const envelope = generationEnvelopeFromEnv(env, name, contextWindow, maxOutputTokens);
29
+ const reasoning = reasoningFromEnv(env, name, envelope.reasoningBudget);
39
30
  const catalogCost = info?.cost;
40
31
  const rates = catalogCost === undefined ? null : {
41
32
  input: catalogCost.inputPer1M,
42
33
  output: catalogCost.outputPer1M,
43
- cached: catalogCost.cacheReadPer1M ?? catalogCost.inputPer1M,
34
+ ...(catalogCost.reasoningPer1M === undefined
35
+ ? {}
36
+ : { reasoning: catalogCost.reasoningPer1M }),
37
+ ...(catalogCost.cacheReadPer1M === undefined
38
+ ? {}
39
+ : { cacheRead: catalogCost.cacheReadPer1M }),
40
+ ...(catalogCost.cacheWritePer1M === undefined
41
+ ? {}
42
+ : { cacheWrite: catalogCost.cacheWritePer1M }),
44
43
  };
45
- const calculateCost = rates === null
46
- ? undefined
47
- : (usage) => calculateCostUsd(usage, rates);
48
- const calculateCharge = rates === null
49
- ? () => ({ kind: "unknown", reason: "the response reported no cost and Models.dev has no rate for this model" })
50
- : rates.input === 0 && rates.output === 0 && rates.cached === 0
51
- ? () => ({ kind: "free", source: "Models.dev catalog rates" })
52
- : (usage) => ({
53
- kind: "estimated",
54
- usd: calculateCostUsdDecimal(usage, rates),
55
- source: "Models.dev catalog rates",
56
- });
44
+ const estimateCost = (usage) => estimateProviderCost(usage, rates, "Models.dev catalog rates");
45
+ const affinityEnabled = cacheAffinityFromEnv(env, name);
46
+ const cacheWritePolicy = cacheWritePolicyFromEnv(env, name);
57
47
  return new AiSdkProvider({
58
48
  model,
59
49
  ...(attributions === undefined ? {} : { attributions }),
60
50
  ...(languageModel === undefined ? {} : { languageModel }),
61
- ...(normalizeCharge === undefined ? {} : { normalizeCharge }),
51
+ ...(normalizeCost === undefined ? {} : { normalizeCost }),
62
52
  ...(url === undefined ? {} : { url }),
63
53
  ...(headers === undefined ? {} : { headers: { ...headers } }),
64
54
  contextWindow,
65
- fetchTimeoutMs: parseRequiredInt(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", name),
66
- streamIdleTimeoutMs: parseRequiredInt(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", name),
55
+ maxInputTokens,
56
+ maxOutputTokens,
57
+ outputBudget: envelope.outputBudget,
58
+ reasoningBudget: reasoning.budget,
59
+ ...(additiveReasoningProvider === undefined ? {} : { additiveReasoningProvider }),
60
+ fetchTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", name),
61
+ operationTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_OPERATION_TIMEOUT, "PLURNK_PROVIDERS_OPERATION_TIMEOUT", name),
62
+ firstContentTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT, "PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT", name),
63
+ streamIdleTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", name),
67
64
  reasoning,
68
65
  reasoningResponseStyle: reasoningResponseStyleFromEnv(env, name),
69
66
  temperature: parseRequiredFloat(env.PLURNK_PROVIDERS_TEMPERATURE, "PLURNK_PROVIDERS_TEMPERATURE", name, 0),
70
67
  repeatPenalty: parseRequiredFloat(env.PLURNK_PROVIDERS_REPEAT_PENALTY, "PLURNK_PROVIDERS_REPEAT_PENALTY", name, 0),
71
68
  frequencyPenalty: parseRequiredFloat(env.PLURNK_PROVIDERS_FREQUENCY_PENALTY, "PLURNK_PROVIDERS_FREQUENCY_PENALTY", name, 0),
72
- reasoningReserve,
73
- completionReserve,
74
69
  retryAttempts: parseRequiredInt(env.PLURNK_PROVIDERS_RETRY_ATTEMPTS, "PLURNK_PROVIDERS_RETRY_ATTEMPTS", name),
75
70
  errorDetailLimit: parseRequiredInt(env.PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT, "PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT", name),
76
71
  reasoningStyle: reasoningStyleFromEnv(env, name),
77
- promptCacheKey: url === undefined ? false : promptCacheKeyFromEnv(env, name),
72
+ ...(affinityEnabled && cacheAffinity !== undefined ? { cacheAffinity } : {}),
73
+ ...(cacheWritePolicy === "stable-system" && systemCacheProviderOptions !== undefined
74
+ ? { systemCacheProviderOptions }
75
+ : {}),
76
+ ...(reasoningResponseProviderOptions === undefined
77
+ ? {}
78
+ : { reasoningResponseProviderOptions }),
78
79
  serviceTier: env.PLURNK_PROVIDERS_SERVICE_TIER,
79
- calculateCost,
80
- calculateCharge,
80
+ estimateCost,
81
81
  source: providerSource(name),
82
82
  gbnfDebug: env.PLURNK_PROVIDERS_GBNF_DEBUG !== undefined
83
83
  && env.PLURNK_PROVIDERS_GBNF_DEBUG !== ""
@@ -109,9 +109,13 @@ export const catalogProviderFromEnv = (name, env, model, baseUrlOverride) => {
109
109
  env,
110
110
  model: wireModel,
111
111
  languageModel: sdk.languageModel,
112
- normalizeCharge: sdk.normalizeCharge,
112
+ normalizeCost: sdk.normalizeCost,
113
113
  url: sdk.compatible?.url,
114
114
  headers: sdk.compatible?.headers,
115
+ cacheAffinity: sdk.cacheAffinity,
116
+ systemCacheProviderOptions: sdk.systemCacheProviderOptions,
117
+ reasoningResponseProviderOptions: sdk.reasoningResponseProviderOptions,
118
+ additiveReasoningProvider: sdk.additiveReasoningProvider,
115
119
  contextWindow,
116
120
  info,
117
121
  });
@@ -1 +1 @@
1
- {"version":3,"file":"catalogProvider.js","sourceRoot":"","sources":["../src/catalogProvider.ts"],"names":[],"mappings":"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"}
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,yBAAyB,EACzB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,6BAA6B,GAChC,MAAM,UAAU,CAAC;AAClB,OAAO,aAAsC,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAKhD,MAAM,qBAAqB,GAAG,CAC1B,GAAsB,EACtB,IAAY,EACc,EAAE;IAC5B,MAAM,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,eAAe,EAAE,GAAG,CAAC,CAAC,WAAW,EAAE,CAAC;IACnE,MAAM,KAAK,GAAG,GAAG,CAAC,6BAA6B,MAAM,kBAAkB,CAAC,CAAC;IACzE,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAChE,MAAM,MAAM,GAA8B;QACtC,MAAM,EAAE,OAAO,EAAE,mBAAmB,EAAE,QAAQ;QAC9C,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,WAAW;KAChE,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAuB,CAAC,EAAE,CAAC;QAC5C,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,wCAAwC,MAAM,uCAAuC,KAAK,GAAG,CAAC,CAAC;IAC1H,CAAC;IACD,OAAO,KAAuB,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,EACjC,IAAI,EACJ,GAAG,EACH,KAAK,EACL,aAAa,EACb,aAAa,EACb,GAAG,EACH,OAAO,EACP,aAAa,EACb,IAAI,EACJ,YAAY,EACZ,aAAa,EACb,0BAA0B,EAC1B,gCAAgC,EAChC,yBAAyB,GAgB5B,EAAY,EAAE;IACX,eAAe,CACX,GAAG,IAAI,sGAAsG,EAC7G,8BAA8B,CACjC,CAAC;IAEF,MAAM,cAAc,GAAG,IAAI,EAAE,cAAc,IAAI,IAAI,CAAC;IACpD,MAAM,eAAe,GAAG,IAAI,EAAE,eAAe,KAAK,SAAS;QACvD,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;IACpD,MAAM,QAAQ,GAAG,yBAAyB,CACtC,GAAG,EACH,IAAI,EACJ,aAAa,EACb,eAAe,CAClB,CAAC;IACF,MAAM,SAAS,GAAG,gBAAgB,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;IAExE,MAAM,WAAW,GAAG,IAAI,EAAE,IAAI,CAAC;IAC/B,MAAM,KAAK,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;QAC7C,KAAK,EAAE,WAAW,CAAC,UAAU;QAC7B,MAAM,EAAE,WAAW,CAAC,WAAW;QAC/B,GAAG,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;QAChD,GAAG,CAAC,WAAW,CAAC,cAAc,KAAK,SAAS;YACxC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,cAAc,EAAE,CAAC;QAChD,GAAG,CAAC,WAAW,CAAC,eAAe,KAAK,SAAS;YACzC,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,UAAU,EAAE,WAAW,CAAC,eAAe,EAAE,CAAC;KACrD,CAAC;IACF,MAAM,YAAY,GAAG,CAAC,KAAiD,EAAE,EAAE,CACvE,oBAAoB,CAAC,KAAK,EAAE,KAAK,EAAE,0BAA0B,CAAC,CAAC;IACnE,MAAM,eAAe,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxD,MAAM,gBAAgB,GAAG,uBAAuB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IAE5D,OAAO,IAAI,aAAa,CAAC;QACrB,KAAK;QACL,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACvD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;QACzD,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;QACzD,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC;QACrC,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC;QAC7D,aAAa;QACb,cAAc;QACd,eAAe;QACf,YAAY,EAAE,QAAQ,CAAC,YAAY;QACnC,eAAe,EAAE,SAAS,CAAC,MAAM;QACjC,GAAG,CAAC,yBAAyB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,yBAAyB,EAAE,CAAC;QACjF,cAAc,EAAE,cAAc,CAAC,GAAG,CAAC,8BAA8B,EAAE,gCAAgC,EAAE,IAAI,CAAC;QAC1G,kBAAkB,EAAE,cAAc,CAAC,GAAG,CAAC,kCAAkC,EAAE,oCAAoC,EAAE,IAAI,CAAC;QACtH,qBAAqB,EAAE,cAAc,CAAC,GAAG,CAAC,sCAAsC,EAAE,wCAAwC,EAAE,IAAI,CAAC;QACjI,mBAAmB,EAAE,cAAc,CAAC,GAAG,CAAC,oCAAoC,EAAE,sCAAsC,EAAE,IAAI,CAAC;QAC3H,SAAS;QACT,sBAAsB,EAAE,6BAA6B,CAAC,GAAG,EAAE,IAAI,CAAC;QAChE,WAAW,EAAE,kBAAkB,CAAC,GAAG,CAAC,4BAA4B,EAAE,8BAA8B,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1G,aAAa,EAAE,kBAAkB,CAAC,GAAG,CAAC,+BAA+B,EAAE,iCAAiC,EAAE,IAAI,EAAE,CAAC,CAAC;QAClH,gBAAgB,EAAE,kBAAkB,CAAC,GAAG,CAAC,kCAAkC,EAAE,oCAAoC,EAAE,IAAI,EAAE,CAAC,CAAC;QAC3H,aAAa,EAAE,gBAAgB,CAAC,GAAG,CAAC,+BAA+B,EAAE,iCAAiC,EAAE,IAAI,CAAC;QAC7G,gBAAgB,EAAE,gBAAgB,CAAC,GAAG,CAAC,mCAAmC,EAAE,qCAAqC,EAAE,IAAI,CAAC;QACxH,cAAc,EAAE,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC;QAChD,GAAG,CAAC,eAAe,IAAI,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5E,GAAG,CAAC,gBAAgB,KAAK,eAAe,IAAI,0BAA0B,KAAK,SAAS;YAChF,CAAC,CAAC,EAAE,0BAA0B,EAAE;YAChC,CAAC,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,gCAAgC,KAAK,SAAS;YAC9C,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC,EAAE,gCAAgC,EAAE,CAAC;QAC3C,WAAW,EAAE,GAAG,CAAC,6BAA6B;QAC9C,YAAY;QACZ,MAAM,EAAE,cAAc,CAAC,IAAI,CAAC;QAC5B,SAAS,EAAE,GAAG,CAAC,2BAA2B,KAAK,SAAS;eACjD,GAAG,CAAC,2BAA2B,KAAK,EAAE;eACtC,GAAG,CAAC,2BAA2B,KAAK,GAAG;QAC9C,GAAG,kBAAkB,CAAC,GAAG,EAAE,IAAI,CAAC;KACnC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAClC,IAAY,EACZ,GAAsB,EACtB,KAAa,EACb,eAAwB,EACT,EAAE;IACjB,MAAM,QAAQ,GAAG,YAAY,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC3C,MAAM,eAAe,GAAG,oBAAoB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;IACxD,IAAI,cAAc,CAAC,IAAI,CAAC,KAAK,IAAI,IAAI,sBAAsB,CAAC,IAAI,EAAE,GAAG,CAAC,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC7F,IAAI,CAAC,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,QAAQ,CAAC,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC/E,IAAI,QAAQ,KAAK,IAAI,IAAI,eAAe,KAAK,IAAI,EAAE,CAAC;QAChD,MAAM,IAAI,KAAK,CACX,GAAG,IAAI,6CAA6C,KAAK,2EAA2E,CACvI,CAAC;IACN,CAAC;IACD,MAAM,SAAS,GAAG,QAAQ,EAAE,EAAE,IAAI,KAAK,CAAC;IACxC,MAAM,GAAG,GAAG,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,EAAE,eAAe,CAAC,CAAC;IAClE,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,IAAI,GAAG,QAAQ,EAAE,IAAI,CAAC;IAC5B,MAAM,aAAa,GAAG,sBAAsB,CAAC,eAAe,EAAE,IAAI,EAAE,aAAa,IAAI,IAAI,CAAC,CAAC;IAC3F,IAAI,aAAa,KAAK,IAAI,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CACX,GAAG,IAAI,6CAA6C,SAAS,2EAA2E,CAC3I,CAAC;IACN,CAAC;IACD,OAAO,oBAAoB,CAAC;QACxB,IAAI;QACJ,GAAG;QACH,KAAK,EAAE,SAAS;QAChB,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,GAAG,EAAE,GAAG,CAAC,UAAU,EAAE,GAAG;QACxB,OAAO,EAAE,GAAG,CAAC,UAAU,EAAE,OAAO;QAChC,aAAa,EAAE,GAAG,CAAC,aAAa;QAChC,0BAA0B,EAAE,GAAG,CAAC,0BAA0B;QAC1D,gCAAgC,EAAE,GAAG,CAAC,gCAAgC;QACtE,yBAAyB,EAAE,GAAG,CAAC,yBAAyB;QACxD,aAAa;QACb,IAAI;KACP,CAAC,CAAC;AACP,CAAC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"compatibleProvider.d.ts","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AA6F3C,eAAO,MAAM,yBAAyB,aACxB,QAAQ,GAAG,QAAQ,OACxB,MAAM,CAAC,UAAU,SACf,MAAM,oBACK,MAAM,KACzB,OAAO,CAAC,QAAQ,CAoGlB,CAAC"}
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,CA8GlB,CAAC"}
@@ -1,6 +1,7 @@
1
1
  import AiSdkProvider from "./AiSdkProvider.js";
2
- import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, envelopeFromEnv, parseOptionalFloat, parseOptionalInt, parseRequiredFloat, parseRequiredInt, promptCacheKeyFromEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, } from "./env.js";
2
+ import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, generationEnvelopeFromEnv, 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, { headers, signal: AbortSignal.timeout(timeout) });
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 = parseRequiredInt(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", provider);
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,17 +114,24 @@ 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: physical prompt counting is a chars/2 estimate; over-policy recovery fails closed without exact or bounded request evidence`, "PLURNK_PROMPT_COUNT_ESTIMATE");
117
+ emitWarningOnce(`${provider} provider: request-level prompt counting is a chars/2 estimate; capacity is deferred to the provider`, "PLURNK_PROMPT_COUNT_ESTIMATE");
109
118
  }
110
- const { reasoningReserve, completionReserve } = envelopeFromEnv(env, provider);
119
+ const envelope = generationEnvelopeFromEnv(env, provider, contextWindow, null);
120
+ const reasoning = reasoningFromEnv(env, provider, envelope.reasoningBudget);
111
121
  return new AiSdkProvider({
112
122
  model,
113
123
  url,
114
124
  headers,
115
125
  contextWindow,
126
+ maxInputTokens: null,
127
+ maxOutputTokens: null,
128
+ outputBudget: envelope.outputBudget,
129
+ reasoningBudget: reasoning.budget,
116
130
  fetchTimeoutMs: timeout,
117
- streamIdleTimeoutMs: parseRequiredInt(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", provider),
118
- reasoning: reasoningFromEnv(env, provider),
131
+ operationTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_OPERATION_TIMEOUT, "PLURNK_PROVIDERS_OPERATION_TIMEOUT", provider),
132
+ firstContentTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT, "PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT", provider),
133
+ streamIdleTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", provider),
134
+ reasoning,
119
135
  reasoningResponseStyle: reasoningResponseStyleFromEnv(env, provider),
120
136
  reasoningStyle,
121
137
  temperature: parseRequiredFloat(env.PLURNK_PROVIDERS_TEMPERATURE, "PLURNK_PROVIDERS_TEMPERATURE", provider, 0),
@@ -125,12 +141,9 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
125
141
  dryBase: parseOptionalFloat(env.PLURNK_PROVIDERS_DRY_BASE, "PLURNK_PROVIDERS_DRY_BASE", provider, 0) ?? undefined,
126
142
  dryAllowedLength: parseOptionalInt(env.PLURNK_PROVIDERS_DRY_ALLOWED_LENGTH, "PLURNK_PROVIDERS_DRY_ALLOWED_LENGTH", provider) ?? undefined,
127
143
  repeatLastN: parseOptionalInt(env.PLURNK_PROVIDERS_REPEAT_LAST_N, "PLURNK_PROVIDERS_REPEAT_LAST_N", provider) ?? undefined,
128
- reasoningReserve,
129
- completionReserve,
130
144
  tuningFloors: provider !== "plurnk",
131
145
  retryAttempts: parseRequiredInt(env.PLURNK_PROVIDERS_RETRY_ATTEMPTS, "PLURNK_PROVIDERS_RETRY_ATTEMPTS", provider),
132
146
  errorDetailLimit: parseRequiredInt(env.PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT, "PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT", provider),
133
- promptCacheKey: promptCacheKeyFromEnv(env, provider),
134
147
  source: providerSource(provider),
135
148
  grammarStyle,
136
149
  gbnfDebug: env.PLURNK_PROVIDERS_GBNF_DEBUG !== undefined
@@ -138,6 +151,7 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
138
151
  && env.PLURNK_PROVIDERS_GBNF_DEBUG !== "0",
139
152
  ...dataCaptureFromEnv(env, provider),
140
153
  firstPartyMetadata: provider === "plurnk",
154
+ normalizeCost: provider === "plurnk" ? plurnkCostNormalizer : undefined,
141
155
  apiKeyRejectedMessage: provider === "plurnk"
142
156
  ? "PLURNK_API_KEY was rejected by plurnk.ai (invalid or expired)."
143
157
  : undefined,
@@ -147,7 +161,7 @@ export const compatibleProviderFromEnv = async (provider, env, model, baseUrlOve
147
161
  tokenizeUrl,
148
162
  promptTokensUrl,
149
163
  servedModel: probe.servedModel ?? undefined,
150
- requiresMaxTokens: llamaServer || undefined,
164
+ requiresOutputBudget: llamaServer || undefined,
151
165
  });
152
166
  };
153
167
  //# sourceMappingURL=compatibleProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"compatibleProvider.js","sourceRoot":"","sources":["../src/compatibleProvider.ts"],"names":[],"mappings":"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"}
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 { AuthoritativeCharge, ProviderUsage } from "./types.ts";
2
- import type { ProviderCost } from "@plurnk/plurnk-contracts";
3
- export declare const validateAuthoritativeCharge: (charge: AuthoritativeCharge) => AuthoritativeCharge;
4
- export declare const validateProviderCost: (cost: ProviderCost) => ProviderCost;
5
- export declare const resolveProviderCost: (charge: AuthoritativeCharge | undefined, current: ProviderCost | undefined) => ProviderCost;
6
- export declare const providerCostUsd: (cost: ProviderCost) => number | null;
7
- export declare const providerCostFor: (provider: {
8
- calculateCharge?(usage: ProviderUsage): Exclude<ProviderCost, AuthoritativeCharge>;
9
- calculateCost(usage: ProviderUsage): number;
10
- }, usage: ProviderUsage, charge?: AuthoritativeCharge) => ProviderCost;
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
@@ -1 +1 @@
1
- {"version":3,"file":"cost.d.ts","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACR,mBAAmB,EACnB,aAAa,EAChB,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAe7D,eAAO,MAAM,2BAA2B,WAAY,mBAAmB,KAAG,mBASzE,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,YAAY,KAAG,YAezD,CAAC;AAEF,eAAO,MAAM,mBAAmB,WACpB,mBAAmB,GAAG,SAAS,WAC9B,YAAY,GAAG,SAAS,KAClC,YAOF,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,YAAY,KAAG,MAAM,GAAG,IAS7D,CAAC;AAEF,eAAO,MAAM,eAAe,aACd;IAAE,eAAe,CAAC,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,EAAE,mBAAmB,CAAC,CAAC;IAAC,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,MAAM,CAAA;CAAE,SACtI,aAAa,WACX,mBAAmB,KAC7B,YAGF,CAAC"}
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,61 +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 decimal = (value, name) => {
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
- export const validateAuthoritativeCharge = (charge) => {
14
- if (charge.kind !== "authoritative")
15
- throw new TypeError("provider charge must be authoritative");
16
- decimal(charge.amount.amount, "provider charge amount");
17
- if (!CURRENCY.test(charge.amount.currency)) {
18
- throw new TypeError("provider charge currency must be an uppercase currency code");
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`);
19
27
  }
20
- decimal(charge.usdEquivalent, "provider charge USD equivalent");
21
- nonEmpty(charge.source, "provider charge source");
22
- return charge;
28
+ return { amount: decimalAmount, currency: amount.currency };
23
29
  };
24
- export const validateProviderCost = (cost) => {
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");
37
+ }
38
+ nonEmpty(cost.source, "provider charged cost source");
39
+ return value;
40
+ };
41
+ export const validateProviderCost = (value) => {
42
+ const cost = recordOf(value, "provider cost");
25
43
  switch (cost.kind) {
26
- case "authoritative":
27
- return validateAuthoritativeCharge(cost);
44
+ case "charged":
45
+ return validateChargedCost(value);
28
46
  case "estimated":
29
- decimal(cost.usd, "provider cost estimate");
30
- nonEmpty(cost.source, "provider cost estimate source");
31
- return cost;
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 cost;
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 resolveProviderCost = (charge, current) => {
41
- if (charge !== undefined)
42
- return validateAuthoritativeCharge(charge);
43
- if (current !== undefined)
44
- return validateProviderCost(current);
45
- return {
46
- kind: "unknown",
47
- reason: "the response reported no cost and Models.dev has no rate for this model",
48
- };
57
+ export const estimateProviderCost = (usage, rates, source) => {
58
+ if (usage === undefined) {
59
+ return { kind: "unknown", reason: "the provider response reported no normalized usage" };
60
+ }
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
+ };
49
75
  };
76
+ export const resolveProviderCost = (direct, estimated) => direct === undefined
77
+ ? validateProviderCost(estimated)
78
+ : validateProviderCost(direct);
50
79
  export const providerCostUsd = (cost) => {
51
- const value = cost.kind === "authoritative"
52
- ? cost.usdEquivalent
53
- : cost.kind === "estimated"
54
- ? cost.usd
55
- : cost.kind === "free"
56
- ? "0"
57
- : null;
58
- return value === null ? null : Number(value);
59
- };
60
- export const providerCostFor = (provider, usage, charge) => resolveProviderCost(charge, provider.calculateCharge?.(usage));
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);
108
+ };
61
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":"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"}
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
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 declare const promptCacheKeyFromEnv: (env: NodeJS.ProcessEnv, label: string) => boolean;
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,20 +15,18 @@ 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 ReserveSpec = {
18
+ export type TokenBudgetSpec = {
15
19
  percent: number;
16
20
  } | {
17
21
  tokens: number;
18
22
  };
19
- export declare const envelopeFromEnv: (env: NodeJS.ProcessEnv, label: string) => {
20
- reasoningReserve: ReserveSpec;
21
- completionReserve: ReserveSpec;
22
- };
23
- export declare const resolveReserve: (spec: ReserveSpec, window: number | null) => number | null;
24
- export declare const resolveEnvelopeFromEnv: (env: NodeJS.ProcessEnv, window: number | null) => {
25
- reasoningReserve: number | null;
26
- completionReserve: number | null;
23
+ export declare const resolveTokenBudget: (spec: TokenBudgetSpec, window: number | null) => number | null;
24
+ export type GenerationEnvelope = {
25
+ readonly outputBudget: number | null;
26
+ readonly reasoningBudget: number | null;
27
27
  };
28
+ export declare const generationEnvelopeFromEnv: (env: NodeJS.ProcessEnv, label: string, contextWindow: number | null, maxOutputTokens: number | null) => GenerationEnvelope;
29
+ export declare const resolveGenerationEnvelopeFromEnv: (env: NodeJS.ProcessEnv, contextWindow: number | null, maxOutputTokens?: number | null) => GenerationEnvelope;
28
30
  export type ReasoningMode = "off" | "adaptive" | "on";
29
31
  export type Reasoning = {
30
32
  mode: ReasoningMode;
@@ -32,7 +34,7 @@ export type Reasoning = {
32
34
  };
33
35
  export type ReasoningResponseStyle = "verbatim" | "think-tags";
34
36
  export declare const reasoningResponseStyleFromEnv: (env: NodeJS.ProcessEnv, label: string) => ReasoningResponseStyle;
35
- export declare const reasoningFromEnv: (env: NodeJS.ProcessEnv, label: string) => Reasoning;
37
+ export declare const reasoningFromEnv: (env: NodeJS.ProcessEnv, label: string, resolvedBudget?: number | null) => Reasoning;
36
38
  export declare const PROVIDERS_KNOBS: readonly string[];
37
39
  export declare const scopeEnvToAlias: (env: NodeJS.ProcessEnv, alias: string, knobs?: readonly string[]) => NodeJS.ProcessEnv;
38
40
  //# 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":"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,qBAAqB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,OAO7E,CAAC;AAoBF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CASxH,CAAC;AAIF,eAAO,MAAM,oBAAoB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,MAAM,GAAG,IAGrF,CAAC;AAIF,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAAC;AAClG,wBAAgB,sBAAsB,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,EAAE,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;AAmBhH,MAAM,MAAM,WAAW,GAAG;IAAE,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAenE,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,gBAAgB,EAAE,WAAW,CAAC;IAAC,iBAAiB,EAAE,WAAW,CAAA;CAGrI,CAAC;AAIH,eAAO,MAAM,cAAc,SAAU,WAAW,UAAU,MAAM,GAAG,IAAI,KAAG,MAAM,GAAG,IACY,CAAC;AAQhG,eAAO,MAAM,sBAAsB,QAAS,MAAM,CAAC,UAAU,UAAU,MAAM,GAAG,IAAI,KAAG;IAAE,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAA;CAOzJ,CAAC;AAUF,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,UAAU,GAAG,IAAI,CAAC;AACtD,MAAM,MAAM,SAAS,GAAG;IAAE,IAAI,EAAE,aAAa,CAAC;IAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;CAAE,CAAC;AAEvE,MAAM,MAAM,sBAAsB,GAAG,UAAU,GAAG,YAAY,CAAC;AAE/D,eAAO,MAAM,6BAA6B,QACjC,MAAM,CAAC,UAAU,SACf,MAAM,KACd,sBAQF,CAAC;AAEF,eAAO,MAAM,gBAAgB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,SAcxE,CAAC;AASF,eAAO,MAAM,eAAe,mBA0B1B,CAAC;AAaH,eAAO,MAAM,eAAe,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,UAAS,SAAS,MAAM,EAAE,KAAqB,MAAM,CAAC,UAkB1H,CAAC"}
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}