@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.
Files changed (90) hide show
  1. package/.env.defaults +40 -34
  2. package/README.md +3 -0
  3. package/SPEC.md +153 -62
  4. package/dist/AiSdkProvider.d.ts +19 -25
  5. package/dist/AiSdkProvider.d.ts.map +1 -1
  6. package/dist/AiSdkProvider.js +353 -120
  7. package/dist/AiSdkProvider.js.map +1 -1
  8. package/dist/Mock.d.ts +7 -13
  9. package/dist/Mock.d.ts.map +1 -1
  10. package/dist/Mock.js +36 -8
  11. package/dist/Mock.js.map +1 -1
  12. package/dist/Pool.d.ts +2 -21
  13. package/dist/Pool.d.ts.map +1 -1
  14. package/dist/Pool.js +19 -14
  15. package/dist/Pool.js.map +1 -1
  16. package/dist/accounting.d.ts +6 -0
  17. package/dist/accounting.d.ts.map +1 -0
  18. package/dist/accounting.js +168 -0
  19. package/dist/accounting.js.map +1 -0
  20. package/dist/aiSdkTransport.d.ts +11 -3
  21. package/dist/aiSdkTransport.d.ts.map +1 -1
  22. package/dist/aiSdkTransport.js +198 -29
  23. package/dist/aiSdkTransport.js.map +1 -1
  24. package/dist/catalogProvider.d.ts +7 -2
  25. package/dist/catalogProvider.d.ts.map +1 -1
  26. package/dist/catalogProvider.js +32 -26
  27. package/dist/catalogProvider.js.map +1 -1
  28. package/dist/compatibleProvider.d.ts.map +1 -1
  29. package/dist/compatibleProvider.js +18 -7
  30. package/dist/compatibleProvider.js.map +1 -1
  31. package/dist/cost.d.ts +10 -10
  32. package/dist/cost.d.ts.map +1 -1
  33. package/dist/cost.js +88 -43
  34. package/dist/cost.js.map +1 -1
  35. package/dist/env.d.ts +5 -7
  36. package/dist/env.d.ts.map +1 -1
  37. package/dist/env.js +30 -32
  38. package/dist/env.js.map +1 -1
  39. package/dist/errors.d.ts +14 -2
  40. package/dist/errors.d.ts.map +1 -1
  41. package/dist/errors.js +60 -2
  42. package/dist/errors.js.map +1 -1
  43. package/dist/index.d.ts +4 -4
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +3 -2
  46. package/dist/index.js.map +1 -1
  47. package/dist/ollama.js +3 -3
  48. package/dist/ollama.js.map +1 -1
  49. package/dist/sdkModels.d.ts +6 -0
  50. package/dist/sdkModels.d.ts.map +1 -1
  51. package/dist/sdkModels.js +46 -3
  52. package/dist/sdkModels.js.map +1 -1
  53. package/dist/types.d.ts +40 -29
  54. package/dist/types.d.ts.map +1 -1
  55. package/dist/usage.d.ts +21 -4
  56. package/dist/usage.d.ts.map +1 -1
  57. package/dist/usage.js +188 -74
  58. package/dist/usage.js.map +1 -1
  59. package/package.json +9 -7
  60. package/src/AiSdkProvider.test.ts +1039 -182
  61. package/src/AiSdkProvider.ts +428 -141
  62. package/src/Mock.test.ts +37 -12
  63. package/src/Mock.ts +46 -12
  64. package/src/Pool.test.ts +19 -6
  65. package/src/Pool.ts +20 -16
  66. package/src/ProviderRegistry.test.ts +16 -11
  67. package/src/accounting.test.ts +94 -0
  68. package/src/accounting.ts +190 -0
  69. package/src/aiSdkTransport.test.ts +42 -49
  70. package/src/aiSdkTransport.ts +218 -32
  71. package/src/boundaries.test.ts +2 -0
  72. package/src/catalogProvider.test.ts +271 -24
  73. package/src/catalogProvider.ts +44 -28
  74. package/src/compatibleProvider.test.ts +6 -3
  75. package/src/compatibleProvider.ts +20 -7
  76. package/src/cost.test.ts +55 -35
  77. package/src/cost.ts +110 -54
  78. package/src/defaults.test.ts +13 -3
  79. package/src/env.test.ts +50 -26
  80. package/src/env.ts +43 -42
  81. package/src/errors.test.ts +47 -2
  82. package/src/errors.ts +68 -3
  83. package/src/index.ts +21 -5
  84. package/src/ollama.test.ts +4 -1
  85. package/src/ollama.ts +3 -3
  86. package/src/sdkModels.test.ts +94 -3
  87. package/src/sdkModels.ts +53 -3
  88. package/src/types.ts +91 -33
  89. package/src/usage.test.ts +112 -108
  90. package/src/usage.ts +233 -84
@@ -1,5 +1,5 @@
1
1
  import { type JSONValue, type LanguageModel } from "ai";
2
- import type { ChatMessage, ProviderAttemptFinishReason, ProviderUsage, TokenLogprob } from "./types.ts";
2
+ import type { ChatMessage, ProviderAttemptFinishReason, ProviderChargeEvidence, ProviderUsage, TokenLogprob } from "./types.ts";
3
3
  export type AiSdkTransportRequest = {
4
4
  url: string;
5
5
  model: string;
@@ -9,8 +9,8 @@ export type AiSdkTransportRequest = {
9
9
  signal?: AbortSignal;
10
10
  fetch?: typeof globalThis.fetch;
11
11
  fetchTimeoutMs: number;
12
+ firstContentTimeoutMs?: number;
12
13
  streamIdleTimeoutMs?: number;
13
- retryAttempts: number;
14
14
  streaming: boolean;
15
15
  captureRawBody: boolean;
16
16
  };
@@ -21,7 +21,7 @@ export type AiSdkTransportResponse = {
21
21
  reasoningProjected: boolean;
22
22
  finishReason: ProviderAttemptFinishReason;
23
23
  rawFinishReason?: string;
24
- usage: ProviderUsage;
24
+ usage?: ProviderUsage;
25
25
  metadata: Record<string, unknown>;
26
26
  reasoningEncrypted: Array<{
27
27
  id: string | null;
@@ -32,11 +32,13 @@ export type AiSdkTransportResponse = {
32
32
  }>;
33
33
  }>;
34
34
  logprobs: TokenLogprob[];
35
+ chargeEvidence: ProviderChargeEvidence;
35
36
  rawBody?: unknown;
36
37
  };
37
38
  export type AiSdkModelRequest = Omit<AiSdkTransportRequest, "url" | "model" | "body" | "fetch"> & {
38
39
  languageModel: LanguageModel;
39
40
  providerOptions?: Record<string, Record<string, JSONValue | undefined>>;
41
+ systemProviderOptions?: Record<string, Record<string, JSONValue | undefined>>;
40
42
  temperature?: number;
41
43
  topP?: number;
42
44
  topK?: number;
@@ -50,5 +52,11 @@ export type AiSdkModelRequest = Omit<AiSdkTransportRequest, "url" | "model" | "b
50
52
  declare const executeModel: (request: AiSdkModelRequest) => Promise<AiSdkTransportResponse>;
51
53
  export declare const executeAiSdkModel: typeof executeModel;
52
54
  export declare const executeOpenAICompatible: (request: AiSdkTransportRequest) => Promise<AiSdkTransportResponse>;
55
+ export type AiSdkTransportFailureEvidence = {
56
+ readonly usage?: ProviderUsage;
57
+ readonly chargeEvidence: ProviderChargeEvidence;
58
+ readonly status?: number;
59
+ };
60
+ export declare const transportFailureEvidence: (error: unknown) => AiSdkTransportFailureEvidence;
53
61
  export {};
54
62
  //# sourceMappingURL=aiSdkTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"aiSdkTransport.d.ts","sourceRoot":"","sources":["../src/aiSdkTransport.ts"],"names":[],"mappings":"AACA,OAAO,EAA4B,KAAK,SAAS,EAAE,KAAK,aAAa,EAA2B,MAAM,IAAI,CAAC;AAE3G,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAmHxG,MAAM,MAAM,qBAAqB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,2BAA2B,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,EAAE,aAAa,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kBAAkB,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC7D,CAAC,CAAC;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG;IAC9F,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC;CAC7F,CAAC;AAEF,QAAA,MAAM,YAAY,YACL,iBAAiB,KAC3B,OAAO,CAAC,sBAAsB,CA8GhC,CAAC;AAEF,eAAO,MAAM,iBAAiB,qBAAe,CAAC;AAE9C,eAAO,MAAM,uBAAuB,YACvB,qBAAqB,KAC/B,OAAO,CAAC,sBAAsB,CA4BhC,CAAC"}
1
+ {"version":3,"file":"aiSdkTransport.d.ts","sourceRoot":"","sources":["../src/aiSdkTransport.ts"],"names":[],"mappings":"AACA,OAAO,EAA0C,KAAK,SAAS,EAAE,KAAK,aAAa,EAA2B,MAAM,IAAI,CAAC;AAEzH,OAAO,KAAK,EAAE,WAAW,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA+IhI,MAAM,MAAM,qBAAqB,GAAG;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;IAChC,cAAc,EAAE,MAAM,CAAC;IACvB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;CAC3B,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,YAAY,EAAE,2BAA2B,CAAC;IAC1C,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,kBAAkB,EAAE,KAAK,CAAC;QACtB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAA;SAAE,CAAC,CAAC;KAC7D,CAAC,CAAC;IACH,QAAQ,EAAE,YAAY,EAAE,CAAC;IACzB,cAAc,EAAE,sBAAsB,CAAC;IACvC,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,iBAAiB,GAAG,IAAI,CAAC,qBAAqB,EAAE,KAAK,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC,GAAG;IAC9F,aAAa,EAAE,aAAa,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IACxE,qBAAqB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC,CAAC,CAAC;IAC9E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,SAAS,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,kBAAkB,CAAC;CAC7F,CAAC;AA+CF,QAAA,MAAM,YAAY,YACL,iBAAiB,KAC3B,OAAO,CAAC,sBAAsB,CAehC,CAAC;AAoKF,eAAO,MAAM,iBAAiB,qBAAe,CAAC;AAE9C,eAAO,MAAM,uBAAuB,YACvB,qBAAqB,KAC/B,OAAO,CAAC,sBAAsB,CA4BhC,CAAC;AAWF,MAAM,MAAM,6BAA6B,GAAG;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAChD,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAC1B,OAAO,KACf,6BAyBF,CAAC"}
@@ -1,8 +1,9 @@
1
1
  import { createOpenAICompatible } from "@ai-sdk/openai-compatible";
2
- import { generateText, streamText } from "ai";
2
+ import { APICallError, generateText, streamText } from "ai";
3
3
  import { z } from "zod/v4";
4
4
  import { normalizeUsage } from "./usage.js";
5
5
  import { emitWarningOnce } from "./warnings.js";
6
+ import { ProviderTimeoutError, providerTimeoutOf } from "./errors.js";
6
7
  const errorSchema = z.object({
7
8
  error: z.object({
8
9
  message: z.string(),
@@ -11,21 +12,27 @@ const errorSchema = z.object({
11
12
  code: z.union([z.string(), z.number()]).nullish(),
12
13
  }).passthrough(),
13
14
  }).passthrough();
15
+ const retryDirective = (status, headers) => {
16
+ const raw = headers instanceof Headers
17
+ ? headers.get("x-should-retry")
18
+ : Object.entries(headers).find(([name]) => name.toLowerCase() === "x-should-retry")?.[1];
19
+ const directive = raw?.trim().toLowerCase();
20
+ if (directive === "false")
21
+ return false;
22
+ if (directive === "true")
23
+ return true;
24
+ if (status !== undefined && status >= 520 && status <= 527)
25
+ return false;
26
+ return null;
27
+ };
14
28
  const errorStructure = {
15
29
  errorSchema,
16
30
  errorToMessage: ({ error }) => error.message,
17
31
  isRetryable(response) {
18
- const directive = response.headers.get("x-should-retry")?.trim().toLowerCase();
19
- if (directive === "false")
20
- return false;
21
- if (directive === "true")
22
- return true;
23
- if (response.status >= 520 && response.status <= 527)
24
- return false;
25
- return response.status === 408
32
+ return retryDirective(response.status, response.headers) ?? (response.status === 408
26
33
  || response.status === 409
27
34
  || response.status === 429
28
- || response.status >= 500;
35
+ || response.status >= 500);
29
36
  },
30
37
  };
31
38
  const baseUrl = (completionUrl) => {
@@ -36,23 +43,42 @@ const baseUrl = (completionUrl) => {
36
43
  url.pathname = url.pathname.slice(0, -"/chat/completions".length);
37
44
  return url.toString().replace(/\/$/, "");
38
45
  };
39
- const usageOf = (usage, reasoningText, contentText) => normalizeUsage({
46
+ const usageOf = (usage) => normalizeUsage({
40
47
  prompt_tokens: usage.inputTokens,
41
48
  completion_tokens: usage.outputTokens,
42
49
  total_tokens: usage.totalTokens,
43
- prompt_tokens_details: { cached_tokens: usage.inputTokenDetails.cacheReadTokens },
50
+ prompt_tokens_details: {
51
+ cached_tokens: usage.inputTokenDetails.cacheReadTokens,
52
+ cache_write_tokens: usage.inputTokenDetails.cacheWriteTokens,
53
+ },
44
54
  completion_tokens_details: usage.outputTokenDetails.reasoningTokens !== undefined
45
55
  ? { reasoning_tokens: usage.outputTokenDetails.reasoningTokens }
46
56
  : undefined,
47
- }, reasoningText, contentText);
48
- const wireUsageOf = (values, reasoningText, contentText) => {
57
+ });
58
+ const wireUsageOf = (values) => {
49
59
  for (let index = values.length - 1; index >= 0; index -= 1) {
50
60
  const usage = recordOf(values[index])?.usage;
51
61
  if (usage !== null && typeof usage === "object") {
52
- return normalizeUsage(usage, reasoningText, contentText);
62
+ return normalizeUsage(usage);
53
63
  }
54
64
  }
55
- return null;
65
+ return undefined;
66
+ };
67
+ const wireUsageEvidenceOf = (values) => {
68
+ for (let index = values.length - 1; index >= 0; index -= 1) {
69
+ const record = recordOf(values[index]);
70
+ if (record !== null && record.usage !== undefined)
71
+ return record.usage;
72
+ }
73
+ return undefined;
74
+ };
75
+ const wireChargeEvidenceOf = (values) => {
76
+ for (let index = values.length - 1; index >= 0; index -= 1) {
77
+ const record = recordOf(values[index]);
78
+ if (record !== null && record.charge !== undefined)
79
+ return record.charge;
80
+ }
81
+ return undefined;
56
82
  };
57
83
  const finishReasonOf = (reason) => {
58
84
  switch (reason?.toLowerCase()) {
@@ -93,14 +119,75 @@ const metadataOf = (values) => {
93
119
  if (record === null)
94
120
  continue;
95
121
  for (const [key, item] of Object.entries(record)) {
96
- if (key !== "choices" && key !== "usage")
122
+ if (key !== "choices" && key !== "usage" && key !== "charge")
97
123
  metadata[key] = item;
98
124
  }
99
125
  }
100
126
  return metadata;
101
127
  };
128
+ const transportTimeout = (cause, request) => {
129
+ const owned = providerTimeoutOf(cause);
130
+ if (owned !== null)
131
+ return owned;
132
+ const seen = new Set();
133
+ let current = cause;
134
+ while (typeof current === "object" && current !== null && !seen.has(current)) {
135
+ if (current.name === "TimeoutError")
136
+ break;
137
+ seen.add(current);
138
+ current = current.cause;
139
+ }
140
+ if (typeof current !== "object" || current === null)
141
+ return null;
142
+ const message = String(current.message ?? "");
143
+ if (/first chunk timeout/i.test(message)) {
144
+ return new ProviderTimeoutError("first_content", request.firstContentTimeoutMs ?? 0, cause);
145
+ }
146
+ if (/chunk timeout/i.test(message)) {
147
+ return new ProviderTimeoutError("stream_idle", request.streamIdleTimeoutMs ?? 0, cause);
148
+ }
149
+ return new ProviderTimeoutError("attempt", request.fetchTimeoutMs, cause);
150
+ };
151
+ const streamFailureValues = new WeakMap();
152
+ const applyRetryDirective = (error) => {
153
+ if (!APICallError.isInstance(error))
154
+ return error;
155
+ const directed = retryDirective(error.statusCode, error.responseHeaders ?? {});
156
+ if (directed === null || directed === error.isRetryable)
157
+ return error;
158
+ return new APICallError({
159
+ message: error.message,
160
+ url: error.url,
161
+ requestBodyValues: error.requestBodyValues,
162
+ statusCode: error.statusCode,
163
+ responseHeaders: error.responseHeaders,
164
+ responseBody: error.responseBody,
165
+ cause: error,
166
+ isRetryable: directed,
167
+ data: error.data,
168
+ });
169
+ };
102
170
  const executeModel = async (request) => {
103
- const { languageModel: model, providerOptions, temperature, topP, topK, presencePenalty, frequencyPenalty, stopSequences, seed, maxOutputTokens, reasoning, } = request;
171
+ try {
172
+ return await executeModelOnce(request);
173
+ }
174
+ catch (cause) {
175
+ if (request.signal?.aborted)
176
+ throw request.signal.reason;
177
+ const timeout = transportTimeout(cause, request);
178
+ if (timeout === null)
179
+ throw applyRetryDirective(cause);
180
+ throw new APICallError({
181
+ message: timeout.message,
182
+ url: "model:generation",
183
+ requestBodyValues: {},
184
+ cause: timeout,
185
+ isRetryable: true,
186
+ });
187
+ }
188
+ };
189
+ const executeModelOnce = async (request) => {
190
+ const { languageModel: model, providerOptions, systemProviderOptions, temperature, topP, topK, presencePenalty, frequencyPenalty, stopSequences, seed, maxOutputTokens, reasoning, } = request;
104
191
  const settings = {
105
192
  ...(temperature === undefined ? {} : { temperature }),
106
193
  ...(topP === undefined ? {} : { topP }),
@@ -118,9 +205,12 @@ const executeModel = async (request) => {
118
205
  if (request.messages.slice(instructionCount).some((message) => message.role === "system")) {
119
206
  throw new Error("provider messages: system instructions must precede conversational messages");
120
207
  }
121
- const instructions = request.messages.slice(0, instructionCount).map(({ content }) => ({
208
+ const instructions = request.messages.slice(0, instructionCount).map(({ content }, index) => ({
122
209
  role: "system",
123
210
  content,
211
+ ...(systemProviderOptions !== undefined && index === instructionCount - 1
212
+ ? { providerOptions: systemProviderOptions }
213
+ : {}),
124
214
  }));
125
215
  const messages = request.messages.slice(instructionCount);
126
216
  const common = {
@@ -129,12 +219,21 @@ const executeModel = async (request) => {
129
219
  messages: messages.length > 0
130
220
  ? messages
131
221
  : [{ role: "user", content: "" }],
132
- maxRetries: request.retryAttempts,
222
+ // AiSdkProvider owns retries so every physical request is independently
223
+ // observed and accounted. The SDK transport executes exactly once.
224
+ maxRetries: 0,
133
225
  abortSignal: request.signal,
134
226
  headers: request.headers,
135
227
  timeout: {
136
- totalMs: request.fetchTimeoutMs,
137
- ...(request.streamIdleTimeoutMs !== undefined && request.streamIdleTimeoutMs > 0
228
+ ...(request.fetchTimeoutMs > 0 ? { totalMs: request.fetchTimeoutMs } : {}),
229
+ ...(request.streaming
230
+ && request.firstContentTimeoutMs !== undefined
231
+ && request.firstContentTimeoutMs > 0
232
+ ? { firstChunkMs: request.firstContentTimeoutMs }
233
+ : {}),
234
+ ...(request.streaming
235
+ && request.streamIdleTimeoutMs !== undefined
236
+ && request.streamIdleTimeoutMs > 0
138
237
  ? { chunkMs: request.streamIdleTimeoutMs }
139
238
  : {}),
140
239
  },
@@ -148,6 +247,7 @@ const executeModel = async (request) => {
148
247
  const rawBody = result.response.body;
149
248
  const values = [rawBody];
150
249
  const evidence = extractEvidence(values);
250
+ const accountingUsage = wireUsageEvidenceOf(values);
151
251
  const reasoningText = evidence.reasoning || result.reasoningText || "";
152
252
  const rawFinishReason = result.rawFinishReason;
153
253
  return {
@@ -157,11 +257,25 @@ const executeModel = async (request) => {
157
257
  reasoningProjected: evidence.reasoningProjected,
158
258
  finishReason: finishReasonOf(rawFinishReason),
159
259
  ...(rawFinishReason === undefined ? {} : { rawFinishReason }),
160
- usage: wireUsageOf(values, reasoningText, result.text)
161
- ?? usageOf(result.usage, reasoningText, result.text),
260
+ usage: wireUsageOf(values) ?? usageOf(result.usage),
162
261
  metadata: metadataOf(values),
163
262
  reasoningEncrypted: evidence.reasoningEncrypted,
164
263
  logprobs: evidence.logprobs,
264
+ chargeEvidence: {
265
+ ...(wireChargeEvidenceOf(values) === undefined
266
+ ? {}
267
+ : { charge: wireChargeEvidenceOf(values) }),
268
+ ...(accountingUsage === undefined ? {} : { usage: accountingUsage }),
269
+ ...(result.providerMetadata === undefined
270
+ ? {}
271
+ : { providerMetadata: result.providerMetadata }),
272
+ response: {
273
+ id: result.response.id,
274
+ ...(result.response.headers === undefined
275
+ ? {}
276
+ : { headers: result.response.headers }),
277
+ },
278
+ },
165
279
  ...(request.captureRawBody ? { rawBody } : {}),
166
280
  };
167
281
  }
@@ -178,24 +292,43 @@ const executeModel = async (request) => {
178
292
  if (part.type === "error")
179
293
  streamError ??= part.error;
180
294
  }
181
- if (streamError !== undefined)
295
+ if (streamError !== undefined) {
296
+ if (typeof streamError === "object" && streamError !== null) {
297
+ streamFailureValues.set(streamError, [...rawChunks, streamError]);
298
+ }
182
299
  throw streamError;
300
+ }
183
301
  const evidence = extractEvidence(rawChunks);
302
+ const accountingUsage = wireUsageEvidenceOf(rawChunks);
184
303
  const content = await result.text;
185
304
  const reasoningText = evidence.reasoning || (await result.reasoningText) || "";
186
305
  const rawFinishReason = await result.rawFinishReason;
306
+ const [response, providerMetadata] = await Promise.all([
307
+ result.response,
308
+ result.providerMetadata,
309
+ ]);
187
310
  return {
188
- model: (await result.response).modelId,
311
+ model: response.modelId,
189
312
  content,
190
313
  reasoning: reasoningText,
191
314
  reasoningProjected: evidence.reasoningProjected,
192
315
  finishReason: finishReasonOf(rawFinishReason),
193
316
  ...(rawFinishReason === undefined ? {} : { rawFinishReason }),
194
- usage: wireUsageOf(rawChunks, reasoningText, content)
195
- ?? usageOf(await result.usage, reasoningText, content),
317
+ usage: wireUsageOf(rawChunks) ?? usageOf(await result.usage),
196
318
  metadata: metadataOf(rawChunks),
197
319
  reasoningEncrypted: evidence.reasoningEncrypted,
198
320
  logprobs: evidence.logprobs,
321
+ chargeEvidence: {
322
+ ...(wireChargeEvidenceOf(rawChunks) === undefined
323
+ ? {}
324
+ : { charge: wireChargeEvidenceOf(rawChunks) }),
325
+ ...(accountingUsage === undefined ? {} : { usage: accountingUsage }),
326
+ ...(providerMetadata === undefined ? {} : { providerMetadata }),
327
+ response: {
328
+ id: response.id,
329
+ ...(response.headers === undefined ? {} : { headers: response.headers }),
330
+ },
331
+ },
199
332
  ...(request.captureRawBody ? { rawBody: rawChunks } : {}),
200
333
  };
201
334
  };
@@ -223,12 +356,48 @@ export const executeOpenAICompatible = async (request) => {
223
356
  messages: request.messages,
224
357
  signal: request.signal,
225
358
  fetchTimeoutMs: request.fetchTimeoutMs,
359
+ firstContentTimeoutMs: request.firstContentTimeoutMs,
226
360
  streamIdleTimeoutMs: request.streamIdleTimeoutMs,
227
- retryAttempts: request.retryAttempts,
228
361
  streaming: request.streaming,
229
362
  captureRawBody: request.captureRawBody,
230
363
  });
231
364
  };
365
+ const responseBodyValues = (error) => {
366
+ if (error.responseBody === undefined || error.responseBody.length === 0)
367
+ return [];
368
+ try {
369
+ return [JSON.parse(error.responseBody)];
370
+ }
371
+ catch {
372
+ return [];
373
+ }
374
+ };
375
+ export const transportFailureEvidence = (error) => {
376
+ const values = typeof error === "object" && error !== null
377
+ ? streamFailureValues.get(error) ?? (APICallError.isInstance(error) ? responseBodyValues(error) : [])
378
+ : [];
379
+ const usage = wireUsageOf(values);
380
+ const usageEvidence = wireUsageEvidenceOf(values);
381
+ const charge = wireChargeEvidenceOf(values);
382
+ const wireStatus = values
383
+ .map(recordOf)
384
+ .find((record) => Number.isInteger(record?.status))?.status;
385
+ const apiStatus = APICallError.isInstance(error) ? error.statusCode : undefined;
386
+ const status = Number.isInteger(apiStatus) && apiStatus >= 100 && apiStatus <= 599
387
+ ? apiStatus
388
+ : Number.isInteger(wireStatus) && wireStatus >= 100 && wireStatus <= 599
389
+ ? wireStatus
390
+ : undefined;
391
+ return {
392
+ ...(usage === undefined ? {} : { usage }),
393
+ chargeEvidence: {
394
+ ...(charge === undefined ? {} : { charge }),
395
+ ...(usageEvidence === undefined ? {} : { usage: usageEvidence }),
396
+ response: {},
397
+ },
398
+ ...(status === undefined ? {} : { status }),
399
+ };
400
+ };
232
401
  const extractEvidence = (values) => {
233
402
  const encrypted = new Map();
234
403
  const logprobs = [];
@@ -1 +1 @@
1
- {"version":3,"file":"aiSdkTransport.js","sourceRoot":"","sources":["../src/aiSdkTransport.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"aiSdkTransport.js","sourceRoot":"","sources":["../src/aiSdkTransport.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAA+B,MAAM,2BAA2B,CAAC;AAChG,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,UAAU,EAA+D,MAAM,IAAI,CAAC;AACzH,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,OAAO,EAAE,cAAc,EAAiB,MAAM,YAAY,CAAC;AAC3D,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEtE,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IACzB,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC;QACZ,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;QAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE;QAC5B,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE;KACpD,CAAC,CAAC,WAAW,EAAE;CACnB,CAAC,CAAC,WAAW,EAAE,CAAC;AAEjB,MAAM,cAAc,GAAG,CACnB,MAA0B,EAC1B,OAAmD,EACrC,EAAE;IAChB,MAAM,GAAG,GAAG,OAAO,YAAY,OAAO;QAClC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;QAC/B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,KAAK,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC7F,MAAM,SAAS,GAAG,GAAG,EAAE,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,KAAK,CAAC;IACxC,IAAI,SAAS,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,IAAI,GAAG,IAAI,MAAM,IAAI,GAAG;QAAE,OAAO,KAAK,CAAC;IACzE,OAAO,IAAI,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAwD;IACxE,WAAW;IACX,cAAc,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO;IAC5C,WAAW,CAAC,QAAQ;QAChB,OAAO,cAAc,CAAC,QAAQ,CAAC,MAAM,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CACxD,QAAQ,CAAC,MAAM,KAAK,GAAG;eACpB,QAAQ,CAAC,MAAM,KAAK,GAAG;eACvB,QAAQ,CAAC,MAAM,KAAK,GAAG;eACvB,QAAQ,CAAC,MAAM,IAAI,GAAG,CAC5B,CAAC;IACN,CAAC;CACJ,CAAC;AAEF,MAAM,OAAO,GAAG,CAAC,aAAqB,EAAU,EAAE;IAC9C,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IACnC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,CAAC;QAC9C,MAAM,IAAI,KAAK,CAAC,wDAAwD,aAAa,EAAE,CAAC,CAAC;IAC7F,CAAC;IACD,GAAG,CAAC,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClE,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,MAAM,OAAO,GAAG,CACZ,KAAyB,EACA,EAAE,CAAC,cAAc,CAAC;IAC3C,aAAa,EAAE,KAAK,CAAC,WAAW;IAChC,iBAAiB,EAAE,KAAK,CAAC,YAAY;IACrC,YAAY,EAAE,KAAK,CAAC,WAAW;IAC/B,qBAAqB,EAAE;QACnB,aAAa,EAAE,KAAK,CAAC,iBAAiB,CAAC,eAAe;QACtD,kBAAkB,EAAE,KAAK,CAAC,iBAAiB,CAAC,gBAAgB;KAC/D;IACD,yBAAyB,EAAE,KAAK,CAAC,kBAAkB,CAAC,eAAe,KAAK,SAAS;QAC7E,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,CAAC,kBAAkB,CAAC,eAAe,EAAE;QAChE,CAAC,CAAC,SAAS;CAClB,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAChB,MAA0B,EACD,EAAE;IAC3B,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC;QAC7C,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC9C,OAAO,cAAc,CAAC,KAAiB,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,MAA0B,EAAW,EAAE;IAChE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IAC3E,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,MAA0B,EAAW,EAAE;IACjE,KAAK,IAAI,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACvC,IAAI,MAAM,KAAK,IAAI,IAAI,MAAM,CAAC,MAAM,KAAK,SAAS;YAAE,OAAO,MAAM,CAAC,MAAM,CAAC;IAC7E,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,MAA0B,EAA+B,EAAE;IAC/E,QAAQ,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;QAC5B,KAAK,MAAM,CAAC;QACZ,KAAK,WAAW,CAAC;QACjB,KAAK,UAAU,CAAC;QAChB,KAAK,eAAe,CAAC;QACrB,KAAK,WAAW;YACZ,OAAO,MAAM,CAAC;QAClB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY,CAAC;QAClB,KAAK,cAAc,CAAC;QACpB,KAAK,uBAAuB;YACxB,OAAO,QAAQ,CAAC;QACpB,KAAK,YAAY,CAAC;QAClB,KAAK,UAAU;YACX,OAAO,YAAY,CAAC;QACxB,KAAK,gBAAgB,CAAC;QACtB,KAAK,QAAQ,CAAC;QACd,KAAK,YAAY;YACb,OAAO,gBAAgB,CAAC;QAC5B,KAAK,8BAA8B;YAC/B,OAAO,sBAAsB,CAAC;QAClC;YACI,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,eAAe,CACX,+BAA+B,MAAM,uHAAuH,EAC5J,8BAA8B,CACjC,CAAC;YACN,CAAC;YACD,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAkC,EAAE,CAChE,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;IACvC,CAAC,CAAC,KAAgC;IAClC,CAAC,CAAC,IAAI,CAAC;AAEf,MAAM,UAAU,GAAG,CAAC,MAA0B,EAA2B,EAAE;IACvE,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC/C,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,QAAQ;gBAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;QACvF,CAAC;IACL,CAAC;IACD,OAAO,QAAQ,CAAC;AACpB,CAAC,CAAC;AAmDF,MAAM,gBAAgB,GAAG,CACrB,KAAc,EACd,OAA0B,EACC,EAAE;IAC7B,MAAM,KAAK,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;IACvC,IAAI,KAAK,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IAEjC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAW,CAAC;IAChC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;QAC3E,IAAK,OAA6B,CAAC,IAAI,KAAK,cAAc;YAAE,MAAM;QAClE,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAClB,OAAO,GAAI,OAA+B,CAAC,KAAK,CAAC;IACrD,CAAC;IACD,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjE,MAAM,OAAO,GAAG,MAAM,CAAE,OAAiC,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;IACzE,IAAI,sBAAsB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACvC,OAAO,IAAI,oBAAoB,CAAC,eAAe,EAAE,OAAO,CAAC,qBAAqB,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAChG,CAAC;IACD,IAAI,gBAAgB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QACjC,OAAO,IAAI,oBAAoB,CAAC,aAAa,EAAE,OAAO,CAAC,mBAAmB,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IAC5F,CAAC;IACD,OAAO,IAAI,oBAAoB,CAAC,SAAS,EAAE,OAAO,CAAC,cAAc,EAAE,KAAK,CAAC,CAAC;AAC9E,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,IAAI,OAAO,EAA8B,CAAC;AAEtE,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAW,EAAE;IACpD,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAClD,MAAM,QAAQ,GAAG,cAAc,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC/E,IAAI,QAAQ,KAAK,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IACtE,OAAO,IAAI,YAAY,CAAC;QACpB,OAAO,EAAE,KAAK,CAAC,OAAO;QACtB,GAAG,EAAE,KAAK,CAAC,GAAG;QACd,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;QAC1C,UAAU,EAAE,KAAK,CAAC,UAAU;QAC5B,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,QAAQ;QACrB,IAAI,EAAE,KAAK,CAAC,IAAI;KACnB,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,YAAY,GAAG,KAAK,EACtB,OAA0B,EACK,EAAE;IACjC,IAAI,CAAC;QACD,OAAO,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAC3C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,IAAI,OAAO,CAAC,MAAM,EAAE,OAAO;YAAE,MAAM,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;QACzD,MAAM,OAAO,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,OAAO,KAAK,IAAI;YAAE,MAAM,mBAAmB,CAAC,KAAK,CAAC,CAAC;QACvD,MAAM,IAAI,YAAY,CAAC;YACnB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,GAAG,EAAE,kBAAkB;YACvB,iBAAiB,EAAE,EAAE;YACrB,KAAK,EAAE,OAAO;YACd,WAAW,EAAE,IAAI;SACpB,CAAC,CAAC;IACP,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,KAAK,EAC1B,OAA0B,EACK,EAAE;IACjC,MAAM,EACF,aAAa,EAAE,KAAK,EACpB,eAAe,EACf,qBAAqB,EACrB,WAAW,EACX,IAAI,EACJ,IAAI,EACJ,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,IAAI,EACJ,eAAe,EACf,SAAS,GACZ,GAAG,OAAO,CAAC;IACZ,MAAM,QAAQ,GAAG;QACb,GAAG,CAAC,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;QAC7D,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;QAC/D,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC;QACzD,GAAG,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC;QACvC,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;QAC7D,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,CAAC;QACjD,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;KAChE,CAAC;IACF,MAAM,cAAc,GAAG,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC;IAC1F,MAAM,gBAAgB,GAAG,cAAc,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC;IAC1F,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,CAAC;QACxF,MAAM,IAAI,KAAK,CAAC,6EAA6E,CAAC,CAAC;IACnG,CAAC;IACD,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,gBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;QAC1F,IAAI,EAAE,QAAiB;QACvB,OAAO;QACP,GAAG,CAAC,qBAAqB,KAAK,SAAS,IAAI,KAAK,KAAK,gBAAgB,GAAG,CAAC;YACrE,CAAC,CAAC,EAAE,eAAe,EAAE,qBAAqB,EAAE;YAC5C,CAAC,CAAC,EAAE,CAAC;KACZ,CAAC,CAAC,CAAC;IACJ,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,MAAM,GAAG;QACX,KAAK;QACL,GAAG,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;QACtD,QAAQ,EAAE,QAAQ,CAAC,MAAM,GAAG,CAAC;YACzB,CAAC,CAAC,QAAQ;YACV,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC;QAC9C,wEAAwE;QACxE,mEAAmE;QACnE,UAAU,EAAE,CAAC;QACb,WAAW,EAAE,OAAO,CAAC,MAAM;QAC3B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,OAAO,EAAE;YACL,GAAG,CAAC,OAAO,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,OAAO,CAAC,SAAS;mBACd,OAAO,CAAC,qBAAqB,KAAK,SAAS;mBAC3C,OAAO,CAAC,qBAAqB,GAAG,CAAC;gBACpC,CAAC,CAAC,EAAE,YAAY,EAAE,OAAO,CAAC,qBAAqB,EAAE;gBACjD,CAAC,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,CAAC,SAAS;mBACd,OAAO,CAAC,mBAAmB,KAAK,SAAS;mBACzC,OAAO,CAAC,mBAAmB,GAAG,CAAC;gBAClC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,mBAAmB,EAAE;gBAC1C,CAAC,CAAC,EAAE,CAAC;SACZ;QACD,GAAG,QAAQ;KACL,CAAC;IAEX,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;YAC9B,GAAG,MAAM;YACT,OAAO,EAAE,EAAE,YAAY,EAAE,IAAI,EAAE;SAClC,CAAC,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;QACrC,MAAM,MAAM,GAAG,CAAC,OAAO,CAAC,CAAC;QACzB,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,eAAe,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QACpD,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,IAAI,MAAM,CAAC,aAAa,IAAI,EAAE,CAAC;QACvE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;QAC/C,OAAO;YACH,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO;YAC9B,OAAO,EAAE,MAAM,CAAC,IAAI;YACpB,SAAS,EAAE,aAAa;YACxB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;YAC/C,YAAY,EAAE,cAAc,CAAC,eAAe,CAAC;YAC7C,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;YAC7D,KAAK,EAAE,WAAW,CAAC,MAAM,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;YACnD,QAAQ,EAAE,UAAU,CAAC,MAAM,CAAC;YAC5B,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;YAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;YAC3B,cAAc,EAAE;gBACZ,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC,KAAK,SAAS;oBAC1C,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC/C,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;gBACpE,GAAG,CAAC,MAAM,CAAC,gBAAgB,KAAK,SAAS;oBACrC,CAAC,CAAC,EAAE;oBACJ,CAAC,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,gBAAgB,EAAE,CAAC;gBACpD,QAAQ,EAAE;oBACN,EAAE,EAAE,MAAM,CAAC,QAAQ,CAAC,EAAE;oBACtB,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS;wBACrC,CAAC,CAAC,EAAE;wBACJ,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;iBAC9C;aACJ;YACD,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACjD,CAAC;IACN,CAAC;IAED,MAAM,MAAM,GAAG,UAAU,CAAC;QACtB,GAAG,MAAM;QACT,gBAAgB,EAAE,IAAI;QACtB,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC;KACpB,CAAC,CAAC;IACH,MAAM,SAAS,GAAc,EAAE,CAAC;IAChC,IAAI,WAAoB,CAAC;IACzB,IAAI,KAAK,EAAE,MAAM,IAAI,IAAI,MAAM,CAAC,UAAU,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK;YAAE,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvD,IAAI,IAAI,CAAC,IAAI,KAAK,OAAO;YAAE,WAAW,KAAK,IAAI,CAAC,KAAK,CAAC;IAC1D,CAAC;IACD,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;QAC5B,IAAI,OAAO,WAAW,KAAK,QAAQ,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;YAC1D,mBAAmB,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,GAAG,SAAS,EAAE,WAAW,CAAC,CAAC,CAAC;QACtE,CAAC;QACD,MAAM,WAAW,CAAC;IACtB,CAAC;IACD,MAAM,QAAQ,GAAG,eAAe,CAAC,SAAS,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC;IAClC,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,IAAI,CAAC,MAAM,MAAM,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC;IAC/E,MAAM,eAAe,GAAG,MAAM,MAAM,CAAC,eAAe,CAAC;IACrD,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QACnD,MAAM,CAAC,QAAQ;QACf,MAAM,CAAC,gBAAgB;KAC1B,CAAC,CAAC;IACH,OAAO;QACH,KAAK,EAAE,QAAQ,CAAC,OAAO;QACvB,OAAO;QACP,SAAS,EAAE,aAAa;QACxB,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,YAAY,EAAE,cAAc,CAAC,eAAe,CAAC;QAC7C,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,CAAC;QAC7D,KAAK,EAAE,WAAW,CAAC,SAAS,CAAC,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC,KAAK,CAAC;QAC5D,QAAQ,EAAE,UAAU,CAAC,SAAS,CAAC;QAC/B,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB;QAC/C,QAAQ,EAAE,QAAQ,CAAC,QAAQ;QAC3B,cAAc,EAAE;YACZ,GAAG,CAAC,oBAAoB,CAAC,SAAS,CAAC,KAAK,SAAS;gBAC7C,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,EAAE,MAAM,EAAE,oBAAoB,CAAC,SAAS,CAAC,EAAE,CAAC;YAClD,GAAG,CAAC,eAAe,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC;YACpE,GAAG,CAAC,gBAAgB,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,CAAC;YAC/D,QAAQ,EAAE;gBACN,EAAE,EAAE,QAAQ,CAAC,EAAE;gBACf,GAAG,CAAC,QAAQ,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,CAAC,OAAO,EAAE,CAAC;aAC3E;SACJ;QACD,GAAG,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,YAAY,CAAC;AAE9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,KAAK,EACxC,OAA8B,EACC,EAAE;IACjC,MAAM,QAAQ,GAAG,sBAAsB,CAAC;QACpC,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC;QAC7B,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,YAAY,EAAE,IAAI;QAClB,oBAAoB,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC;YAChC,GAAG,OAAO;YACV,GAAG,OAAO,CAAC,IAAI;YACf,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,GAAG,CAAC,OAAO,CAAC,cAAc,KAAK,SAAS;gBACpC,CAAC,CAAC,EAAE,cAAc,EAAE,OAAO,CAAC,cAAc,EAAE;gBAC5C,CAAC,CAAC,EAAE,CAAC;SACZ,CAAC;KACL,CAAC,CAAC;IACH,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IACxE,OAAO,YAAY,CAAC;QAChB,aAAa,EAAE,KAAK;QACpB,OAAO,EAAE,EAAE;QACX,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,qBAAqB,EAAE,OAAO,CAAC,qBAAqB;QACpD,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;QAChD,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,cAAc,EAAE,OAAO,CAAC,cAAc;KACzC,CAAC,CAAC;AACP,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,KAAmB,EAAsB,EAAE;IACnE,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,IAAI,KAAK,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IACnF,IAAI,CAAC;QACD,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5C,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,EAAE,CAAC;IACd,CAAC;AACL,CAAC,CAAC;AAQF,MAAM,CAAC,MAAM,wBAAwB,GAAG,CACpC,KAAc,EACe,EAAE;IAC/B,MAAM,MAAM,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI;QACtD,CAAC,CAAC,mBAAmB,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACrG,CAAC,CAAC,EAAE,CAAC;IACT,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,MAAM,aAAa,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG,MAAM;SACpB,GAAG,CAAC,QAAQ,CAAC;SACb,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,MAAM,CAAC;IAChE,MAAM,SAAS,GAAG,YAAY,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;IAChF,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,IAAK,SAAoB,IAAI,GAAG,IAAK,SAAoB,IAAI,GAAG;QACtG,CAAC,CAAC,SAAmB;QACrB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,UAAU,CAAC,IAAK,UAAqB,IAAI,GAAG,IAAK,UAAqB,IAAI,GAAG;YAC5F,CAAC,CAAC,UAAoB;YACtB,CAAC,CAAC,SAAS,CAAC;IACpB,OAAO;QACH,GAAG,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC;QACzC,cAAc,EAAE;YACZ,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;YAC3C,GAAG,CAAC,aAAa,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,aAAa,EAAE,CAAC;YAChE,QAAQ,EAAE,EAAE;SACf;QACD,GAAG,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC;KAC9C,CAAC;AACN,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,MAAiB,EAKxC,EAAE;IACA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAgE,CAAC;IAC1F,MAAM,QAAQ,GAAmB,EAAE,CAAC;IACpC,IAAI,SAAS,GAAG,EAAE,CAAC;IACnB,IAAI,kBAAkB,GAAG,KAAK,CAAC;IAC/B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAC;QACzC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QACpC,IAAI,MAAM,KAAK,IAAI;YAAE,SAAS;QAC9B,MAAM,aAAa,GAAG,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAChD,MAAM,OAAO,GAAG,aAAa,EAAE,OAAO,CAAC;QACvC,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC1B,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;gBAC9B,IAAI,OAAO,KAAK,EAAE,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;oBAAE,SAAS;gBACpF,MAAM,GAAG,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;oBACzC,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE;wBACnC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;wBAC7B,OAAO,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ;4BACtE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;4BAChD,CAAC,CAAC,EAAE,CAAC;oBACb,CAAC,CAAC;oBACF,CAAC,CAAC,SAAS,CAAC;gBAChB,QAAQ,CAAC,IAAI,CAAC,GAAG,KAAK,SAAS;oBAC3B,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;oBAChD,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,CAAC;YAC/D,CAAC;QACL,CAAC;QACD,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QACzE,KAAK,MAAM,GAAG,IAAI,CAAC,mBAAmB,EAAE,WAAW,EAAE,UAAU,CAAC,EAAE,CAAC,CAAC,qCAAqC;YACrG,IAAI,OAAO,OAAO,CAAC,GAAG,CAAC,KAAK,QAAQ,EAAE,CAAC;gBACnC,kBAAkB,GAAG,IAAI,CAAC;gBAC1B,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAAE,SAAS;QACxD,KAAK,MAAM,KAAK,IAAI,OAAO,CAAC,iBAAiB,EAAE,CAAC;YAC5C,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;YAC/B,IAAI,MAAM,EAAE,IAAI,KAAK,qBAAqB,IAAI,OAAO,MAAM,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACxF,MAAM,EAAE,GAAG,OAAO,MAAM,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;YAC5D,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;gBACxC,CAAC,CAAC,SAAS,MAAM,CAAC,KAAK,EAAE;gBACzB,CAAC,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC,aAAa,SAAS,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC;YAC5D,MAAM,IAAI,GAAyD,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI;gBACrF,EAAE;gBACF,+DAA+D;gBAC/D,6DAA6D;gBAC7D,2DAA2D;gBAC3D,OAAO,EAAE,SAAS;gBAClB,SAAS,EAAE,EAAE;aAChB,CAAC;YACF,MAAM,MAAM,GAAG,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;YACxE,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;YACpC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC;gBAC1B,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,IAAI,MAAM,KAAK,IAAI;oBAAE,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC;YACxE,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;YACD,SAAS,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IACD,OAAO;QACH,kBAAkB,EAAE,CAAC,GAAG,SAAS,CAAC,MAAM,EAAE,CAAC;QAC3C,QAAQ;QACR,SAAS;QACT,kBAAkB;KACrB,CAAC;AACN,CAAC,CAAC"}
@@ -1,17 +1,22 @@
1
1
  import { type ModelInfo } from "@plurnk/plurnk-models";
2
- import type { Provider } from "./types.ts";
2
+ import type { Provider, ProviderCostNormalizer } from "./types.ts";
3
3
  import type { LanguageModel } from "ai";
4
+ import type { AiSdkProviderOptions, CacheAffinity } from "./AiSdkProvider.ts";
4
5
  import type { PluginAttribution, PluginAttributionContext } from "@plurnk/plurnk-meta";
5
- export declare const providerFromSdkModel: ({ name, env, model, languageModel, url, headers, contextWindow, info, attributions, }: {
6
+ export declare const providerFromSdkModel: ({ name, env, model, languageModel, normalizeCost, url, headers, contextWindow, info, attributions, cacheAffinity, systemCacheProviderOptions, reasoningResponseProviderOptions, }: {
6
7
  name: string;
7
8
  env: NodeJS.ProcessEnv;
8
9
  model: string;
9
10
  languageModel?: LanguageModel;
11
+ normalizeCost?: ProviderCostNormalizer;
10
12
  url?: string;
11
13
  headers?: Readonly<Record<string, string>>;
12
14
  contextWindow: number;
13
15
  info?: ModelInfo;
14
16
  attributions?: (context: PluginAttributionContext) => PluginAttribution;
17
+ cacheAffinity?: CacheAffinity;
18
+ systemCacheProviderOptions?: AiSdkProviderOptions;
19
+ reasoningResponseProviderOptions?: AiSdkProviderOptions;
15
20
  }) => Provider;
16
21
  export declare const catalogProviderFromEnv: (name: string, env: NodeJS.ProcessEnv, model: string, baseUrlOverride?: string) => Provider | null;
17
22
  //# sourceMappingURL=catalogProvider.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"catalogProvider.d.ts","sourceRoot":"","sources":["../src/catalogProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAkBrF,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,YAAY,CAAC;AAG1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAoBvF,eAAO,MAAM,oBAAoB,0FAU9B;IACC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,iBAAiB,CAAC;CAC3E,KAAG,QAwEH,CAAC;AAEF,eAAO,MAAM,sBAAsB,SACzB,MAAM,OACP,MAAM,CAAC,UAAU,SACf,MAAM,oBACK,MAAM,KACzB,QAAQ,GAAG,IA+Bb,CAAC"}
1
+ {"version":3,"file":"catalogProvider.d.ts","sourceRoot":"","sources":["../src/catalogProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgC,KAAK,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAmBrF,OAAO,KAAK,EAAE,QAAQ,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAC;AAGnE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,IAAI,CAAC;AACxC,OAAO,KAAK,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,iBAAiB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAmBvF,eAAO,MAAM,oBAAoB,sLAc9B;IACC,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,aAAa,CAAC,EAAE,sBAAsB,CAAC;IACvC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;IAC3C,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE,SAAS,CAAC;IACjB,YAAY,CAAC,EAAE,CAAC,OAAO,EAAE,wBAAwB,KAAK,iBAAiB,CAAC;IACxE,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,0BAA0B,CAAC,EAAE,oBAAoB,CAAC;IAClD,gCAAgC,CAAC,EAAE,oBAAoB,CAAC;CAC3D,KAAG,QA2EH,CAAC;AAEF,eAAO,MAAM,sBAAsB,SACzB,MAAM,OACP,MAAM,CAAC,UAAU,SACf,MAAM,oBACK,MAAM,KACzB,QAAQ,GAAG,IAmCb,CAAC"}
@@ -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, tokenRatesFromEnv, } from "./env.js";
2
+ import { contextWindowFromEnv, effectiveContextWindow, dataCaptureFromEnv, envelopeFromEnv, parseRequiredFloat, parseRequiredInt, parseTimeoutMs, cacheAffinityFromEnv, cacheWritePolicyFromEnv, reasoningFromEnv, reasoningResponseStyleFromEnv, resolveReserve, } 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 } 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,8 +19,8 @@ const reasoningStyleFromEnv = (env, name) => {
19
19
  }
20
20
  return value;
21
21
  };
22
- export const providerFromSdkModel = ({ name, env, model, languageModel, 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");
22
+ export const providerFromSdkModel = ({ name, env, model, languageModel, normalizeCost, url, headers, contextWindow, info, attributions, cacheAffinity, systemCacheProviderOptions, reasoningResponseProviderOptions, }) => {
23
+ emitWarningOnce(`${name} 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");
24
24
  const reasoning = reasoningFromEnv(env, name);
25
25
  const { reasoningReserve: configuredReasoning, completionReserve: configuredCompletion } = envelopeFromEnv(env, name);
26
26
  const completionReserve = "tokens" in configuredCompletion
@@ -36,35 +36,32 @@ export const providerFromSdkModel = ({ name, env, model, languageModel, url, hea
36
36
  : completionTokens === null
37
37
  ? configuredReasoning
38
38
  : { tokens: Math.round(completionTokens / 2) };
39
- const configuredRates = tokenRatesFromEnv(env, name);
40
39
  const catalogCost = info?.cost;
41
- const rates = configuredRates ?? (catalogCost === undefined ? null : {
40
+ const rates = catalogCost === undefined ? null : {
42
41
  input: catalogCost.inputPer1M,
43
42
  output: catalogCost.outputPer1M,
44
- cached: catalogCost.cacheReadPer1M ?? catalogCost.inputPer1M,
45
- });
46
- const calculateCost = rates === null
47
- ? undefined
48
- : (usage) => calculateCostUsd(usage, rates);
49
- const rateSource = configuredRates === null ? "Models.dev catalog rates" : "operator-configured rates";
50
- const calculateCharge = rates === null
51
- ? () => ({ kind: "unknown", reason: "no provider rate or settled charge is available" })
52
- : rates.input === 0 && rates.output === 0 && rates.cached === 0
53
- ? () => ({ kind: "free", source: rateSource })
54
- : (usage) => ({
55
- kind: "estimated",
56
- usd: String(calculateCostUsd(usage, rates)),
57
- source: rateSource,
58
- });
43
+ ...(catalogCost.cacheReadPer1M === undefined
44
+ ? {}
45
+ : { cacheRead: catalogCost.cacheReadPer1M }),
46
+ ...(catalogCost.cacheWritePer1M === undefined
47
+ ? {}
48
+ : { cacheWrite: catalogCost.cacheWritePer1M }),
49
+ };
50
+ const estimateCost = (usage) => estimateProviderCost(usage, rates, "Models.dev catalog rates");
51
+ const affinityEnabled = cacheAffinityFromEnv(env, name);
52
+ const cacheWritePolicy = cacheWritePolicyFromEnv(env, name);
59
53
  return new AiSdkProvider({
60
54
  model,
61
55
  ...(attributions === undefined ? {} : { attributions }),
62
56
  ...(languageModel === undefined ? {} : { languageModel }),
57
+ ...(normalizeCost === undefined ? {} : { normalizeCost }),
63
58
  ...(url === undefined ? {} : { url }),
64
59
  ...(headers === undefined ? {} : { headers: { ...headers } }),
65
60
  contextWindow,
66
- fetchTimeoutMs: parseRequiredInt(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", name),
67
- streamIdleTimeoutMs: parseRequiredInt(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", name),
61
+ fetchTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FETCH_TIMEOUT, "PLURNK_PROVIDERS_FETCH_TIMEOUT", name),
62
+ operationTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_OPERATION_TIMEOUT, "PLURNK_PROVIDERS_OPERATION_TIMEOUT", name),
63
+ firstContentTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT, "PLURNK_PROVIDERS_FIRST_CONTENT_TIMEOUT", name),
64
+ streamIdleTimeoutMs: parseTimeoutMs(env.PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT, "PLURNK_PROVIDERS_STREAM_IDLE_TIMEOUT", name),
68
65
  reasoning,
69
66
  reasoningResponseStyle: reasoningResponseStyleFromEnv(env, name),
70
67
  temperature: parseRequiredFloat(env.PLURNK_PROVIDERS_TEMPERATURE, "PLURNK_PROVIDERS_TEMPERATURE", name, 0),
@@ -75,10 +72,15 @@ export const providerFromSdkModel = ({ name, env, model, languageModel, url, hea
75
72
  retryAttempts: parseRequiredInt(env.PLURNK_PROVIDERS_RETRY_ATTEMPTS, "PLURNK_PROVIDERS_RETRY_ATTEMPTS", name),
76
73
  errorDetailLimit: parseRequiredInt(env.PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT, "PLURNK_PROVIDERS_ERROR_DETAIL_LIMIT", name),
77
74
  reasoningStyle: reasoningStyleFromEnv(env, name),
78
- promptCacheKey: url === undefined ? false : promptCacheKeyFromEnv(env, name),
75
+ ...(affinityEnabled && cacheAffinity !== undefined ? { cacheAffinity } : {}),
76
+ ...(cacheWritePolicy === "stable-system" && systemCacheProviderOptions !== undefined
77
+ ? { systemCacheProviderOptions }
78
+ : {}),
79
+ ...(reasoningResponseProviderOptions === undefined
80
+ ? {}
81
+ : { reasoningResponseProviderOptions }),
79
82
  serviceTier: env.PLURNK_PROVIDERS_SERVICE_TIER,
80
- calculateCost,
81
- calculateCharge,
83
+ estimateCost,
82
84
  source: providerSource(name),
83
85
  gbnfDebug: env.PLURNK_PROVIDERS_GBNF_DEBUG !== undefined
84
86
  && env.PLURNK_PROVIDERS_GBNF_DEBUG !== ""
@@ -110,8 +112,12 @@ export const catalogProviderFromEnv = (name, env, model, baseUrlOverride) => {
110
112
  env,
111
113
  model: wireModel,
112
114
  languageModel: sdk.languageModel,
115
+ normalizeCost: sdk.normalizeCost,
113
116
  url: sdk.compatible?.url,
114
117
  headers: sdk.compatible?.headers,
118
+ cacheAffinity: sdk.cacheAffinity,
119
+ systemCacheProviderOptions: sdk.systemCacheProviderOptions,
120
+ reasoningResponseProviderOptions: sdk.reasoningResponseProviderOptions,
115
121
  contextWindow,
116
122
  info,
117
123
  });