@plurnk/plurnk-providers 1.3.12 → 1.5.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.
Files changed (139) hide show
  1. package/.env.defaults +47 -38
  2. package/README.md +68 -4
  3. package/SPEC.md +245 -62
  4. package/dist/AiSdkProvider.d.ts +19 -5
  5. package/dist/AiSdkProvider.d.ts.map +1 -1
  6. package/dist/AiSdkProvider.js +264 -156
  7. package/dist/AiSdkProvider.js.map +1 -1
  8. package/dist/Mock.d.ts +15 -17
  9. package/dist/Mock.d.ts.map +1 -1
  10. package/dist/Mock.js +27 -10
  11. package/dist/Mock.js.map +1 -1
  12. package/dist/Pool.d.ts +8 -2
  13. package/dist/Pool.d.ts.map +1 -1
  14. package/dist/Pool.js +41 -8
  15. package/dist/Pool.js.map +1 -1
  16. package/dist/ProviderRegistry.d.ts +4 -1
  17. package/dist/ProviderRegistry.d.ts.map +1 -1
  18. package/dist/ProviderRegistry.js +7 -3
  19. package/dist/ProviderRegistry.js.map +1 -1
  20. package/dist/accounting.d.ts +3 -0
  21. package/dist/accounting.d.ts.map +1 -0
  22. package/dist/accounting.js +84 -0
  23. package/dist/accounting.js.map +1 -0
  24. package/dist/aiSdkTransport.d.ts +5 -2
  25. package/dist/aiSdkTransport.d.ts.map +1 -1
  26. package/dist/aiSdkTransport.js +91 -5
  27. package/dist/aiSdkTransport.js.map +1 -1
  28. package/dist/catalogProvider.d.ts +5 -2
  29. package/dist/catalogProvider.d.ts.map +1 -1
  30. package/dist/catalogProvider.js +24 -11
  31. package/dist/catalogProvider.js.map +1 -1
  32. package/dist/compatibleProvider.d.ts.map +1 -1
  33. package/dist/compatibleProvider.js +11 -4
  34. package/dist/compatibleProvider.js.map +1 -1
  35. package/dist/cost.d.ts +11 -0
  36. package/dist/cost.d.ts.map +1 -0
  37. package/dist/cost.js +61 -0
  38. package/dist/cost.js.map +1 -0
  39. package/dist/discover.d.ts +2 -0
  40. package/dist/discover.d.ts.map +1 -1
  41. package/dist/discover.js +15 -9
  42. package/dist/discover.js.map +1 -1
  43. package/dist/env.d.ts +4 -6
  44. package/dist/env.d.ts.map +1 -1
  45. package/dist/env.js +27 -29
  46. package/dist/env.js.map +1 -1
  47. package/dist/errors.d.ts +27 -0
  48. package/dist/errors.d.ts.map +1 -0
  49. package/dist/errors.js +152 -0
  50. package/dist/errors.js.map +1 -0
  51. package/dist/index.d.ts +12 -6
  52. package/dist/index.d.ts.map +1 -1
  53. package/dist/index.js +8 -5
  54. package/dist/index.js.map +1 -1
  55. package/dist/notices.d.ts +10 -0
  56. package/dist/notices.d.ts.map +1 -0
  57. package/dist/notices.js +11 -0
  58. package/dist/notices.js.map +1 -0
  59. package/dist/ollama.d.ts.map +1 -1
  60. package/dist/ollama.js +3 -3
  61. package/dist/ollama.js.map +1 -1
  62. package/dist/openai.d.ts +1 -1
  63. package/dist/openai.d.ts.map +1 -1
  64. package/dist/promptTokens.d.ts +4 -0
  65. package/dist/promptTokens.d.ts.map +1 -0
  66. package/dist/promptTokens.js +32 -0
  67. package/dist/promptTokens.js.map +1 -0
  68. package/dist/sdkModels.d.ts +2 -0
  69. package/dist/sdkModels.d.ts.map +1 -1
  70. package/dist/sdkModels.js +17 -6
  71. package/dist/sdkModels.js.map +1 -1
  72. package/dist/types.d.ts +52 -16
  73. package/dist/types.d.ts.map +1 -1
  74. package/dist/types.js +1 -1
  75. package/dist/types.js.map +1 -1
  76. package/dist/usage.d.ts +4 -0
  77. package/dist/usage.d.ts.map +1 -1
  78. package/dist/usage.js +64 -19
  79. package/dist/usage.js.map +1 -1
  80. package/dist/warnings.js +0 -0
  81. package/dist/warnings.js.map +1 -1
  82. package/package.json +15 -10
  83. package/src/AiSdkProvider.test.ts +750 -169
  84. package/src/AiSdkProvider.ts +354 -200
  85. package/src/Mock.test.ts +29 -14
  86. package/src/Mock.ts +36 -15
  87. package/src/Pool.test.ts +43 -6
  88. package/src/Pool.ts +56 -10
  89. package/src/ProviderRegistry.test.ts +158 -9
  90. package/src/ProviderRegistry.ts +19 -6
  91. package/src/accounting.test.ts +58 -0
  92. package/src/accounting.ts +88 -0
  93. package/src/aiSdkTransport.ts +101 -8
  94. package/src/boundaries.test.ts +9 -3
  95. package/src/catalogProvider.test.ts +43 -15
  96. package/src/catalogProvider.ts +32 -16
  97. package/src/compatibleProvider.test.ts +96 -0
  98. package/src/compatibleProvider.ts +15 -6
  99. package/src/cost.test.ts +64 -0
  100. package/src/cost.ts +78 -0
  101. package/src/defaults.test.ts +1 -0
  102. package/src/discover.test.ts +48 -7
  103. package/src/discover.ts +31 -21
  104. package/src/env.test.ts +38 -48
  105. package/src/env.ts +43 -40
  106. package/src/errors.test.ts +148 -0
  107. package/src/errors.ts +208 -0
  108. package/src/index.ts +30 -8
  109. package/src/lexicon-guard.test.ts +6 -6
  110. package/src/notices.ts +22 -0
  111. package/src/ollama.test.ts +64 -0
  112. package/src/ollama.ts +6 -3
  113. package/src/openai.ts +3 -0
  114. package/src/promptTokens.ts +41 -0
  115. package/src/sdkModels.test.ts +29 -3
  116. package/src/sdkModels.ts +19 -11
  117. package/src/types.ts +125 -64
  118. package/src/usage.test.ts +24 -5
  119. package/src/usage.ts +72 -21
  120. package/src/warnings.test.ts +10 -10
  121. package/src/warnings.ts +0 -0
  122. package/dist/OpenAICompat.d.ts +0 -76
  123. package/dist/OpenAICompat.d.ts.map +0 -1
  124. package/dist/OpenAICompat.js +0 -555
  125. package/dist/OpenAICompat.js.map +0 -1
  126. package/dist/openaiStream.d.ts +0 -47
  127. package/dist/openaiStream.d.ts.map +0 -1
  128. package/dist/openaiStream.js +0 -280
  129. package/dist/openaiStream.js.map +0 -1
  130. package/dist/standardProviders.d.ts +0 -31
  131. package/dist/standardProviders.d.ts.map +0 -1
  132. package/dist/standardProviders.js +0 -518
  133. package/dist/standardProviders.js.map +0 -1
  134. package/dist/telemetry.d.ts +0 -24
  135. package/dist/telemetry.d.ts.map +0 -1
  136. package/dist/telemetry.js +0 -85
  137. package/dist/telemetry.js.map +0 -1
  138. package/src/telemetry.test.ts +0 -69
  139. package/src/telemetry.ts +0 -116
package/dist/cost.js ADDED
@@ -0,0 +1,61 @@
1
+ const DECIMAL = /^(?:0|[1-9]\d*)(?:\.\d+)?$/;
2
+ const CURRENCY = /^[A-Z][A-Z0-9]{2,11}$/;
3
+ const nonEmpty = (value, name) => {
4
+ if (value.trim() === "")
5
+ throw new TypeError(`${name} must be non-empty`);
6
+ return value;
7
+ };
8
+ const decimal = (value, name) => {
9
+ if (!DECIMAL.test(value))
10
+ throw new TypeError(`${name} must be a canonical non-negative decimal string`);
11
+ return value;
12
+ };
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");
19
+ }
20
+ decimal(charge.usdEquivalent, "provider charge USD equivalent");
21
+ nonEmpty(charge.source, "provider charge source");
22
+ return charge;
23
+ };
24
+ export const validateProviderCost = (cost) => {
25
+ switch (cost.kind) {
26
+ case "authoritative":
27
+ return validateAuthoritativeCharge(cost);
28
+ 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;
35
+ case "unknown":
36
+ nonEmpty(cost.reason, "provider unknown-cost reason");
37
+ return cost;
38
+ }
39
+ };
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
+ };
49
+ };
50
+ 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));
61
+ //# sourceMappingURL=cost.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cost.js","sourceRoot":"","sources":["../src/cost.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { PackageAttributions } from "@plurnk/plurnk-meta";
1
2
  export type DiscoverOptions = {
2
3
  cwd?: string;
3
4
  packageDirs?: string[];
@@ -7,6 +8,7 @@ export type Discovery = {
7
8
  registry: Map<string, string>;
8
9
  skipped: Map<string, string>;
9
10
  attributions: Map<string, string | string[]>;
11
+ packageAttributions: PackageAttributions;
10
12
  };
11
13
  export declare const discover: (options?: DiscoverOptions) => Promise<Discovery>;
12
14
  //# sourceMappingURL=discover.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAuBA,MAAM,MAAM,eAAe,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC3B,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAM7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;CAChD,CAAC;AAGF,eAAO,MAAM,QAAQ,aAAmB,eAAe,KAAQ,OAAO,CAAC,SAAS,CAyB/E,CAAC"}
1
+ {"version":3,"file":"discover.d.ts","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACR,mBAAmB,EAGtB,MAAM,qBAAqB,CAAC;AAsB7B,MAAM,MAAM,eAAe,GAAG;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;CAC3B,CAAC;AAGF,MAAM,MAAM,SAAS,GAAG;IACpB,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC9B,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B,YAAY,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAAC;IAC7C,mBAAmB,EAAE,mBAAmB,CAAC;CAC5C,CAAC;AAGF,eAAO,MAAM,QAAQ,aAAmB,eAAe,KAAQ,OAAO,CAAC,SAAS,CA6B/E,CAAC"}
package/dist/discover.js CHANGED
@@ -7,6 +7,7 @@ export const discover = async (options = {}) => {
7
7
  const registry = new Map();
8
8
  const skipped = new Map();
9
9
  const attributions = new Map();
10
+ const packageAttributions = new Map();
10
11
  for (const dir of dirs) {
11
12
  const info = await readProviderInfo(dir);
12
13
  if (info === null)
@@ -20,11 +21,15 @@ export const discover = async (options = {}) => {
20
21
  throw new Error(`provider name collision: '${info.name}' claimed by both `
21
22
  + `${existing} and ${info.packageName}`);
22
23
  }
24
+ const tags = Meta.normalizeAttribution(info.attribution, info.packageName);
23
25
  registry.set(info.name, info.packageName);
24
- if (info.attribution !== undefined)
25
- attributions.set(info.name, info.attribution);
26
+ const attribution = attributionProjection(info.attribution, tags);
27
+ if (attribution !== undefined)
28
+ attributions.set(info.name, attribution);
29
+ if (tags.length > 0)
30
+ packageAttributions.set(info.packageName, tags);
26
31
  }
27
- return { registry, skipped, attributions };
32
+ return { registry, skipped, attributions, packageAttributions };
28
33
  };
29
34
  // Enumerate every installed package directory — scoped and unscoped — under
30
35
  // `<cwd>/node_modules`. Unreadable node_modules (e.g. nothing installed) → [].
@@ -54,16 +59,17 @@ const readProviderInfo = async (dir) => {
54
59
  if (typeof plurnk !== "object" || plurnk === null)
55
60
  return null;
56
61
  const plurnkRec = plurnk;
57
- if (plurnkRec.kind !== "provider")
62
+ if (!Meta.declaresKind(plurnkRec, "provider"))
58
63
  return null;
59
64
  if (typeof plurnkRec.name !== "string" || plurnkRec.name === "")
60
65
  return null;
61
66
  if (typeof record.name !== "string" || record.name === "")
62
67
  return null;
63
- const attr = plurnkRec.attribution;
64
- const attribution = typeof attr === "string" ? attr
65
- : Array.isArray(attr) && attr.every((x) => typeof x === "string") ? attr
66
- : undefined;
67
- return { name: plurnkRec.name, packageName: record.name, attribution };
68
+ return { name: plurnkRec.name, packageName: record.name, attribution: plurnkRec.attribution };
69
+ };
70
+ const attributionProjection = (raw, tags) => {
71
+ if (raw === undefined || raw === null)
72
+ return undefined;
73
+ return typeof raw === "string" ? raw : [...tags];
68
74
  };
69
75
  //# sourceMappingURL=discover.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"discover.js","sourceRoot":"","sources":["../src/discover.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts CHANGED
@@ -9,12 +9,8 @@ export declare const dataCaptureFromEnv: (env: NodeJS.ProcessEnv, label: string)
9
9
  rawBody: boolean;
10
10
  };
11
11
  export declare const contextWindowFromEnv: (env: NodeJS.ProcessEnv, label: string) => number | null;
12
- export type ProviderTokenRates = {
13
- input: number;
14
- cached: number;
15
- output: number;
16
- };
17
- export declare const tokenRatesFromEnv: (env: NodeJS.ProcessEnv, label: string) => ProviderTokenRates | null;
12
+ export declare function effectiveContextWindow(operatorCap: number | null, naturalWindow: number): number;
13
+ export declare function effectiveContextWindow(operatorCap: number | null, naturalWindow: number | null): number | null;
18
14
  export type ReserveSpec = {
19
15
  percent: number;
20
16
  } | {
@@ -34,6 +30,8 @@ export type Reasoning = {
34
30
  mode: ReasoningMode;
35
31
  budget: number | null;
36
32
  };
33
+ export type ReasoningResponseStyle = "verbatim" | "think-tags";
34
+ export declare const reasoningResponseStyleFromEnv: (env: NodeJS.ProcessEnv, label: string) => ReasoningResponseStyle;
37
35
  export declare const reasoningFromEnv: (env: NodeJS.ProcessEnv, label: string) => Reasoning;
38
36
  export declare const PROVIDERS_KNOBS: readonly string[];
39
37
  export declare const scopeEnvToAlias: (env: NodeJS.ProcessEnv, alias: string, knobs?: readonly string[]) => NodeJS.ProcessEnv;
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;AAmBF,eAAO,MAAM,kBAAkB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG;IAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CASxH,CAAC;AAMF,eAAO,MAAM,oBAAoB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,MAAM,GAAG,IAGrF,CAAC;AAEF,MAAM,MAAM,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAEnF,eAAO,MAAM,iBAAiB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,kBAAkB,GAAG,IAe9F,CAAC;AAcF,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;AAWF,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,eAAO,MAAM,gBAAgB,QAAS,MAAM,CAAC,UAAU,SAAS,MAAM,KAAG,SAcxE,CAAC;AASF,eAAO,MAAM,eAAe,mBA2B1B,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":"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"}
package/dist/env.js CHANGED
@@ -45,7 +45,7 @@ export const promptCacheKeyFromEnv = (env, label) => {
45
45
  }
46
46
  return value === "1";
47
47
  };
48
- // Old-name shed (the #399/#472 lexicon renames): a still-set retired knob fails
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
51
51
  // (each lexicon-allow), never as a live identifier.
@@ -54,7 +54,8 @@ 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
- // Data-capture knobs (#36), read identically by every provider (standard AND
57
+ // {§provider-evidence} Data-capture knobs are read identically by every provider
58
+ // (standard AND
58
59
  // plugin) so the opt-in surface is one source of truth. Both OFF by default —
59
60
  // the flag is the isolation, so serving turns request and carry nothing.
60
61
  // PLURNK_PROVIDERS_TOP_LOGPROBS "off" or a non-negative int = the OpenAI
@@ -72,31 +73,19 @@ export const dataCaptureFromEnv = (env, label) => {
72
73
  rawBody: env.PLURNK_PROVIDERS_RAWBODY !== undefined && env.PLURNK_PROVIDERS_RAWBODY !== "" && env.PLURNK_PROVIDERS_RAWBODY !== "0",
73
74
  };
74
75
  };
75
- // The context-window pin (SPEC §4) under its OpenAI-lexicon name (#472) — the
76
- // industry term is "context window" (OpenAI/Anthropic docs, models.dev
77
- // contextWindow); CONTEXT_SIZE was home-grown. One reader for base AND
78
- // plugins, so the shed fires everywhere the knob is honored.
76
+ // {§model-fact-resolution} — one context-window reader for every provider path;
77
+ // the retired CONTEXT_SIZE spelling fails visibly at the same boundary.
79
78
  export const contextWindowFromEnv = (env, label) => {
80
- shedRenamed(env, "PLURNK_PROVIDERS_CONTEXT_SIZE", "PLURNK_PROVIDERS_CONTEXT_WINDOW", label, "the industry term, #472"); // lexicon-allow
79
+ shedRenamed(env, "PLURNK_PROVIDERS_CONTEXT_SIZE", "PLURNK_PROVIDERS_CONTEXT_WINDOW", label, "{§model-fact-resolution}"); // lexicon-allow
81
80
  return parseOptionalInt(env.PLURNK_PROVIDERS_CONTEXT_WINDOW, "PLURNK_PROVIDERS_CONTEXT_WINDOW", label);
82
81
  };
83
- export const tokenRatesFromEnv = (env, label) => {
84
- const inputName = "PLURNK_PROVIDERS_INPUT_USD_PER_MILLION";
85
- const cachedName = "PLURNK_PROVIDERS_CACHE_READ_USD_PER_MILLION";
86
- const outputName = "PLURNK_PROVIDERS_OUTPUT_USD_PER_MILLION";
87
- const configured = [inputName, cachedName, outputName]
88
- .some((name) => env[name] !== undefined && env[name] !== "");
89
- if (!configured)
90
- return null;
91
- const input = parseRequiredFloat(env[inputName], inputName, label, 0);
92
- return {
93
- input,
94
- cached: env[cachedName] === undefined || env[cachedName] === ""
95
- ? input
96
- : parseRequiredFloat(env[cachedName], cachedName, label, 0),
97
- output: parseRequiredFloat(env[outputName], outputName, label, 0),
98
- };
99
- };
82
+ export function effectiveContextWindow(operatorCap, naturalWindow) {
83
+ return operatorCap === null
84
+ ? naturalWindow
85
+ : naturalWindow === null
86
+ ? operatorCap
87
+ : Math.min(operatorCap, naturalWindow);
88
+ }
100
89
  const parseReserve = (raw, name, label) => {
101
90
  if (raw === undefined || raw.length === 0)
102
91
  throw new Error(`${label} provider: ${name} must be set (a percentage of the window like "10%", or an absolute token count)`);
@@ -132,9 +121,19 @@ export const resolveEnvelopeFromEnv = (env, window) => {
132
121
  completionReserve: one(env.PLURNK_PROVIDERS_COMPLETION_RESERVE, "PLURNK_PROVIDERS_COMPLETION_RESERVE"),
133
122
  };
134
123
  };
124
+ export const reasoningResponseStyleFromEnv = (env, label) => {
125
+ const name = "PLURNK_PROVIDERS_REASONING_RESPONSE_STYLE";
126
+ const raw = env[name];
127
+ if (raw === undefined || raw.length === 0)
128
+ return "verbatim";
129
+ if (raw !== "verbatim" && raw !== "think-tags") {
130
+ throw new Error(`${label} provider: ${name} must be "verbatim" or "think-tags" (got "${raw}")`);
131
+ }
132
+ return raw;
133
+ };
135
134
  export const reasoningFromEnv = (env, label) => {
136
- shedRenamed(env, "PLURNK_PROVIDERS_THINKING", "PLURNK_PROVIDERS_REASONING", label, "#399"); // lexicon-allow
137
- shedRenamed(env, "PLURNK_PROVIDERS_THINKING_CAPACITY", "PLURNK_PROVIDERS_REASONING_BUDGET", label, "#399"); // lexicon-allow
135
+ shedRenamed(env, "PLURNK_PROVIDERS_THINKING", "PLURNK_PROVIDERS_REASONING", label, "provider configuration contract"); // lexicon-allow
136
+ shedRenamed(env, "PLURNK_PROVIDERS_THINKING_CAPACITY", "PLURNK_PROVIDERS_REASONING_BUDGET", label, "provider configuration contract"); // lexicon-allow
138
137
  const name = "PLURNK_PROVIDERS_REASONING";
139
138
  const raw = env[name];
140
139
  if (raw === undefined || raw.length === 0)
@@ -162,13 +161,12 @@ export const reasoningFromEnv = (env, label) => {
162
161
  export const PROVIDERS_KNOBS = Object.freeze([
163
162
  "PLURNK_PROVIDERS_REASONING_RESERVE",
164
163
  "PLURNK_PROVIDERS_COMPLETION_RESERVE",
164
+ "PLURNK_PROVIDERS_REASONING_RESPONSE_STYLE",
165
165
  "PLURNK_PROVIDERS_REASONING_BUDGET",
166
166
  "PLURNK_PROVIDERS_REASONING",
167
167
  "PLURNK_PROVIDERS_CONTEXT_WINDOW",
168
- "PLURNK_PROVIDERS_INPUT_USD_PER_MILLION",
169
- "PLURNK_PROVIDERS_CACHE_READ_USD_PER_MILLION",
170
- "PLURNK_PROVIDERS_OUTPUT_USD_PER_MILLION",
171
168
  "PLURNK_PROVIDERS_RETRY_ATTEMPTS",
169
+ "PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT",
172
170
  "PLURNK_PROVIDERS_FETCH_TIMEOUT",
173
171
  "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT",
174
172
  "PLURNK_PROVIDERS_LLAMA_SERVER",
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type ProblemDetails } from "@plurnk/plurnk-contracts";
2
+ import type { ProviderAttempt } from "./types.ts";
3
+ export type ProviderErrorKind = "rate_limit" | "network_failure" | "model_refused" | "invalid_response" | "unauthorized" | "quota_exceeded" | "grammar_invalid" | "resource_interrupted";
4
+ export interface ClassifiedProviderError {
5
+ kind: ProviderErrorKind;
6
+ message: string;
7
+ retryable?: boolean;
8
+ attempts?: number;
9
+ retryExhausted?: boolean;
10
+ }
11
+ export declare class ProviderError extends Error {
12
+ readonly source: string;
13
+ readonly kind: ProviderErrorKind;
14
+ readonly problem: ProblemDetails;
15
+ readonly attempt?: ProviderAttempt;
16
+ constructor(source: string, kind: ProviderErrorKind, message: string, options?: {
17
+ status?: number | null;
18
+ cause?: unknown;
19
+ retryable?: boolean;
20
+ extensions?: Readonly<Record<string, unknown>>;
21
+ attempt?: ProviderAttempt;
22
+ });
23
+ get status(): number;
24
+ }
25
+ export declare const classifyProviderError: (err: unknown, detailLimit?: number) => ClassifiedProviderError;
26
+ export declare const toProviderError: (err: unknown, source: string, detailLimit?: number) => ProviderError;
27
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAGzE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,iBAAiB,GACvB,YAAY,GACZ,iBAAiB,GACjB,eAAe,GACf,kBAAkB,GAClB,cAAc,GACd,gBAAgB,GAChB,iBAAiB,GACjB,sBAAsB,CAAC;AAE7B,MAAM,WAAW,uBAAuB;IACpC,IAAI,EAAE,iBAAiB,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;CAC5B;AA4DD,qBAAa,aAAc,SAAQ,KAAK;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,eAAe,CAAC;IAEnC,YACI,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,MAAM,EACf,OAAO,GAAE;QACL,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,KAAK,CAAC,EAAE,OAAO,CAAC;QAChB,SAAS,CAAC,EAAE,OAAO,CAAC;QACpB,UAAU,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;QAC/C,OAAO,CAAC,EAAE,eAAe,CAAC;KACxB,EAmBT;IAED,IAAI,MAAM,IAAI,MAAM,CAEnB;CACJ;AAkBD,eAAO,MAAM,qBAAqB,QACzB,OAAO,gBACE,MAAM,KACrB,uBA0CF,CAAC;AAEF,eAAO,MAAM,eAAe,QACnB,OAAO,UACJ,MAAM,gBACA,MAAM,KACrB,aAiBF,CAAC"}
package/dist/errors.js ADDED
@@ -0,0 +1,152 @@
1
+ import { Problems } from "@plurnk/plurnk-contracts";
2
+ import { APICallError, RetryError } from "ai";
3
+ import { providerSource } from "./notices.js";
4
+ const defaultStatus = (kind) => {
5
+ switch (kind) {
6
+ case "unauthorized": return 401;
7
+ case "quota_exceeded": return 402;
8
+ case "rate_limit": return 429;
9
+ case "model_refused":
10
+ case "grammar_invalid": return 422;
11
+ case "invalid_response": return 502;
12
+ case "network_failure":
13
+ case "resource_interrupted": return 503;
14
+ }
15
+ };
16
+ const retryable = (kind) => {
17
+ switch (kind) {
18
+ case "rate_limit":
19
+ case "network_failure":
20
+ return true;
21
+ case "invalid_response":
22
+ case "grammar_invalid":
23
+ case "resource_interrupted":
24
+ case "model_refused":
25
+ case "unauthorized":
26
+ case "quota_exceeded":
27
+ return false;
28
+ }
29
+ };
30
+ const buildProblem = (source, kind, message, status, extensions, retryableOverride) => {
31
+ const code = {
32
+ rate_limit: "rate-limit",
33
+ network_failure: "network-failure",
34
+ model_refused: "model-refused",
35
+ invalid_response: "invalid-response",
36
+ unauthorized: "unauthorized",
37
+ quota_exceeded: "quota-exceeded",
38
+ grammar_invalid: "grammar-invalid",
39
+ resource_interrupted: "resource-interrupted",
40
+ };
41
+ return Problems.create(source, code[kind], status, message, {
42
+ providerKind: kind,
43
+ stage: "provider-request",
44
+ retryable: retryableOverride ?? retryable(kind),
45
+ ...extensions,
46
+ });
47
+ };
48
+ // A provider operation failed before a completed exchange existed. An
49
+ // interrupted response may still carry attempt evidence for its consumer.
50
+ // The standardized Problem is the public failure contract; kind remains the
51
+ // provider pool's routing discriminator and is repeated as a Problem extension.
52
+ export class ProviderError extends Error {
53
+ source;
54
+ kind;
55
+ problem;
56
+ attempt;
57
+ constructor(source, kind, message, options = {}) {
58
+ super(message, options.cause !== undefined ? { cause: options.cause } : undefined);
59
+ this.name = "ProviderError";
60
+ this.source = providerSource(source);
61
+ this.kind = kind;
62
+ this.attempt = options.attempt;
63
+ const status = options.status !== null && options.status !== undefined
64
+ && Number.isInteger(options.status) && options.status >= 400 && options.status <= 599
65
+ ? options.status
66
+ : defaultStatus(kind);
67
+ this.problem = buildProblem(this.source, kind, message, status, options.extensions ?? {}, options.retryable);
68
+ }
69
+ get status() {
70
+ return this.problem.status;
71
+ }
72
+ }
73
+ const wireErrorType = (body) => {
74
+ try {
75
+ const { error } = JSON.parse(body);
76
+ return typeof error?.type === "string" ? error.type : null;
77
+ }
78
+ catch {
79
+ return null;
80
+ }
81
+ };
82
+ const preview = (value, limit) => {
83
+ const text = value instanceof Error ? value.message : String(value);
84
+ return limit !== undefined && text.length > limit
85
+ ? `${text.slice(0, limit)}...`
86
+ : text;
87
+ };
88
+ export const classifyProviderError = (err, detailLimit) => {
89
+ if (RetryError.isInstance(err)) {
90
+ return {
91
+ ...classifyProviderError(err.lastError, detailLimit),
92
+ retryable: false,
93
+ attempts: err.errors.length,
94
+ retryExhausted: err.reason === "maxRetriesExceeded",
95
+ };
96
+ }
97
+ if (APICallError.isInstance(err)) {
98
+ const status = err.statusCode ?? 0;
99
+ const message = err.message.trim().length > 0
100
+ ? preview(err.message, detailLimit)
101
+ : "The provider request failed without a diagnostic message.";
102
+ const body = err.responseBody ?? "";
103
+ if (status === 401 || status === 403)
104
+ return { kind: "unauthorized", message };
105
+ if (status === 402)
106
+ return { kind: "quota_exceeded", message };
107
+ if (status === 429)
108
+ return { kind: "rate_limit", message };
109
+ if (status === 0 && err.isRetryable)
110
+ return { kind: "network_failure", message };
111
+ if (status >= 500)
112
+ return { kind: "network_failure", message };
113
+ if (status === 422 && wireErrorType(body) === "grammar_invalid") {
114
+ return { kind: "grammar_invalid", message };
115
+ }
116
+ return { kind: "invalid_response", message };
117
+ }
118
+ const wire = err;
119
+ if (wire?.type === "grammar_invalid") {
120
+ return {
121
+ kind: "grammar_invalid",
122
+ message: typeof wire.message === "string"
123
+ ? preview(wire.message, detailLimit)
124
+ : "The provider rejected the response grammar.",
125
+ };
126
+ }
127
+ const error = err;
128
+ return {
129
+ kind: "network_failure",
130
+ message: preview((error?.message ?? String(err)) || "The provider request failed.", detailLimit),
131
+ };
132
+ };
133
+ export const toProviderError = (err, source, detailLimit) => {
134
+ if (err instanceof ProviderError)
135
+ return err;
136
+ const underlying = RetryError.isInstance(err) ? err.lastError : err;
137
+ const classified = classifyProviderError(err, detailLimit);
138
+ const { kind, message } = classified;
139
+ const status = APICallError.isInstance(underlying) ? underlying.statusCode ?? null : null;
140
+ return new ProviderError(source, kind, message, {
141
+ status,
142
+ cause: err,
143
+ retryable: classified.retryable,
144
+ extensions: {
145
+ ...(classified.attempts === undefined ? {} : { attempts: classified.attempts }),
146
+ ...(classified.retryExhausted === undefined
147
+ ? {}
148
+ : { retryExhausted: classified.retryExhausted }),
149
+ },
150
+ });
151
+ };
152
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,6 @@
1
- export type { ChatMessage, FinishReason, Provider, ProviderAssistant, AiSdkProviderPlugin, ProviderOptions, ProviderResponse, ProviderUsage, TokenLogprob, TokenAlternative, } from "./types.ts";
1
+ export type { ChatMessage, FinishReason, GrammarEvidence, Provider, ProviderAssistant, ProviderAttempt, ProviderAttemptFinishReason, AiSdkProviderPlugin, ProviderOptions, ProviderResponse, ProviderEncryptedReasoningItem, ProviderUsage, PromptTokenMeasurement, TokenLogprob, TokenAlternative, AuthoritativeCharge, } from "./types.ts";
2
+ export type { ProviderCost } from "@plurnk/plurnk-contracts";
3
+ export { assertPromptTokenMeasurement } from "./promptTokens.ts";
2
4
  export type { ProviderAlias } from "@plurnk/plurnk-aliases";
3
5
  export { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-aliases";
4
6
  export { instantiateProvider, loadActiveProvider, resetDiscoveryCache, } from "./ProviderRegistry.ts";
@@ -8,12 +10,16 @@ export { default as AiSdkProvider, effortFromBudget } from "./AiSdkProvider.ts";
8
10
  export type { AiSdkProviderConfig, ReasoningStyle, GrammarStyle } from "./AiSdkProvider.ts";
9
11
  export { default as Pool } from "./Pool.ts";
10
12
  export type { ProviderFetch } from "./AiSdkProvider.ts";
11
- export { parseRequiredInt, parseOptionalInt, parseRequiredFloat, parseOptionalFloat, requireEnv, reasoningFromEnv, scopeEnvToAlias, dataCaptureFromEnv, contextWindowFromEnv, envelopeFromEnv, resolveReserve } from "./env.ts";
12
- export type { Reasoning, ReasoningMode, ReserveSpec } from "./env.ts";
13
- export { normalizeUsage, calculateCostUsd } from "./usage.ts";
13
+ export { parseRequiredInt, parseOptionalInt, parseRequiredFloat, parseOptionalFloat, requireEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, scopeEnvToAlias, dataCaptureFromEnv, contextWindowFromEnv, effectiveContextWindow, envelopeFromEnv, resolveReserve, PROVIDERS_KNOBS } from "./env.ts";
14
+ export type { Reasoning, ReasoningMode, ReasoningResponseStyle, ReserveSpec } from "./env.ts";
15
+ export { normalizeUsage, calculateCostUsd, calculateCostUsdDecimal } from "./usage.ts";
16
+ export { providerCostFor, providerCostUsd, resolveProviderCost, validateAuthoritativeCharge, validateProviderCost, } from "./cost.ts";
14
17
  export type { RawUsage, TokenRates } from "./usage.ts";
15
- export { ProviderError, classifyProviderError, toProviderError, providerSource } from "./telemetry.ts";
16
- export type { TelemetryEvent, ProviderTelemetryKind } from "./telemetry.ts";
18
+ export { ProviderError, classifyProviderError, toProviderError } from "./errors.ts";
19
+ export { providerSource } from "./notices.ts";
20
+ export type { ProviderErrorKind } from "./errors.ts";
21
+ export type { ProviderNotice, ProviderNoticeKind } from "./notices.ts";
22
+ export type { PluginAttributionContext, PluginAttributionDeclaration, PluginAttributionSource, } from "@plurnk/plurnk-meta";
17
23
  export { default as Mock } from "./Mock.ts";
18
24
  export type { MockAssistant, MockResponse, MockReturnedAssistant } from "./Mock.ts";
19
25
  export { mockDefaultUsage } from "./Mock.ts";
@@ -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,iBAAiB,EACjB,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,gBAAgB,GACnB,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;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI5F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAChO,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AACtE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAC9D,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;AAE5E,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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACR,WAAW,EACX,YAAY,EACZ,eAAe,EACf,QAAQ,EACR,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,mBAAmB,EACnB,eAAe,EACf,gBAAgB,EAChB,8BAA8B,EAC9B,aAAa,EACb,sBAAsB,EACtB,YAAY,EACZ,gBAAgB,EAChB,mBAAmB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAKjE,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;AAG/B,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,YAAY,EAAE,eAAe,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAChF,YAAY,EAAE,mBAAmB,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAI5F,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AACxS,YAAY,EAAE,SAAS,EAAE,aAAa,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAC9F,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACH,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,WAAW,CAAC;AACnB,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACvD,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9C,YAAY,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACrD,YAAY,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AACvE,YAAY,EACR,wBAAwB,EACxB,4BAA4B,EAC5B,uBAAuB,GAC1B,MAAM,qBAAqB,CAAC;AAE7B,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,16 +1,19 @@
1
+ export { assertPromptTokenMeasurement } from "./promptTokens.js";
1
2
  export { parseAliasesFromEnv, resolveActiveAlias } from "@plurnk/plurnk-aliases";
2
3
  export { instantiateProvider, loadActiveProvider, resetDiscoveryCache, } from "./ProviderRegistry.js";
3
- // Scope-agnostic plugin discovery (SPEC §5).
4
+ // Scope-agnostic plugin discovery ({§plugin-family-kind}).
4
5
  export { discover } from "./discover.js";
5
6
  // Stable PLURNK adapter over AI SDK language models and compatible local URLs.
6
7
  export { default as AiSdkProvider, effortFromBudget } from "./AiSdkProvider.js";
7
- // Capacity pool (SPEC §15): front N interchangeable backends as one Provider -
8
+ // {§provider-capacity-pool} Front N interchangeable backends as one Provider -
8
9
  // worker-sticky for KV-cache reuse, overflow to a healthy sibling; the blend
9
10
  // DECISION stays the consumer's, by choosing which pool to call.
10
11
  export { default as Pool } from "./Pool.js";
11
- export { parseRequiredInt, parseOptionalInt, parseRequiredFloat, parseOptionalFloat, requireEnv, reasoningFromEnv, scopeEnvToAlias, dataCaptureFromEnv, contextWindowFromEnv, envelopeFromEnv, resolveReserve } from "./env.js";
12
- export { normalizeUsage, calculateCostUsd } from "./usage.js";
13
- export { ProviderError, classifyProviderError, toProviderError, providerSource } from "./telemetry.js";
12
+ export { parseRequiredInt, parseOptionalInt, parseRequiredFloat, parseOptionalFloat, requireEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, scopeEnvToAlias, dataCaptureFromEnv, contextWindowFromEnv, effectiveContextWindow, envelopeFromEnv, resolveReserve, PROVIDERS_KNOBS } from "./env.js";
13
+ export { normalizeUsage, calculateCostUsd, calculateCostUsdDecimal } from "./usage.js";
14
+ export { providerCostFor, providerCostUsd, resolveProviderCost, validateAuthoritativeCharge, validateProviderCost, } from "./cost.js";
15
+ export { ProviderError, classifyProviderError, toProviderError } from "./errors.js";
16
+ export { providerSource } from "./notices.js";
14
17
  export { default as Mock } from "./Mock.js";
15
18
  export { mockDefaultUsage } from "./Mock.js";
16
19
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,6CAA6C;AAC7C,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,+EAA+E;AAC/E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,+EAA+E;AAC/E,6EAA6E;AAC7E,iEAAiE;AACjE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAEhO,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9D,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAGvG,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAE,4BAA4B,EAAE,MAAM,mBAAmB,CAAC;AAMjE,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAEjF,OAAO,EACH,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,GACtB,MAAM,uBAAuB,CAAC;AAE/B,2DAA2D;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAGzC,+EAA+E;AAC/E,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEhF,+EAA+E;AAC/E,6EAA6E;AAC7E,iEAAiE;AACjE,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,UAAU,EAAE,gBAAgB,EAAE,6BAA6B,EAAE,eAAe,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,eAAe,EAAE,cAAc,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAExS,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,MAAM,YAAY,CAAC;AACvF,OAAO,EACH,eAAe,EACf,eAAe,EACf,mBAAmB,EACnB,2BAA2B,EAC3B,oBAAoB,GACvB,MAAM,WAAW,CAAC;AAEnB,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AACpF,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAS9C,OAAO,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAE5C,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAC"}