@deepthonk/providers 0.1.3 → 0.1.5

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.
@@ -1,5 +1,9 @@
1
1
  import { ProviderError } from "@deepthonk/core";
2
2
  import { resolveProviderConfig } from "./defaults.js";
3
+ const DEFAULT_RESPONSE_BODY_LIMIT_BYTES = 1024 * 1024;
4
+ const DEFAULT_MAX_RETRY_DELAY_MS = 60_000;
5
+ const DEFAULT_OUTPUT_TOKENS = 4096;
6
+ const DEFAULT_JUDGE_OUTPUT_TOKENS = 1024;
3
7
  export class OpenAiCompatibleDriver {
4
8
  config;
5
9
  provider;
@@ -7,7 +11,11 @@ export class OpenAiCompatibleDriver {
7
11
  apiKey;
8
12
  httpRetries;
9
13
  requestTimeoutMs;
14
+ responseBodyLimitBytes;
15
+ maxRetryDelayMs;
10
16
  supportsJsonMode;
17
+ jsonModeState;
18
+ jsonModeProbe;
11
19
  constructor(config) {
12
20
  this.config = config;
13
21
  this.provider = config.provider;
@@ -15,7 +23,10 @@ export class OpenAiCompatibleDriver {
15
23
  this.apiKey = config.apiKey ?? (config.apiKeyEnv ? process.env[config.apiKeyEnv] : undefined);
16
24
  this.httpRetries = config.retry?.httpRetries ?? 12;
17
25
  this.requestTimeoutMs = config.retry?.requestTimeoutMs ?? 120_000;
26
+ this.responseBodyLimitBytes = config.retry?.responseBodyLimitBytes ?? DEFAULT_RESPONSE_BODY_LIMIT_BYTES;
27
+ this.maxRetryDelayMs = Math.min(config.retry?.maxRetryDelayMs ?? DEFAULT_MAX_RETRY_DELAY_MS, DEFAULT_MAX_RETRY_DELAY_MS);
18
28
  this.supportsJsonMode = config.supportsJsonMode ?? true;
29
+ this.jsonModeState = this.supportsJsonMode ? "unknown" : "unsupported";
19
30
  if (!this.apiKey) {
20
31
  throw new ProviderError(`Missing API key. Set ${config.apiKeyEnv ?? "apiKey"} for provider ${config.provider}.`, {
21
32
  code: "provider.missing_api_key",
@@ -25,101 +36,159 @@ export class OpenAiCompatibleDriver {
25
36
  }
26
37
  }
27
38
  async generate(input) {
28
- return this.chat(input.model, input.temperature, messages(input), false);
39
+ const controls = requestControls(input);
40
+ return this.chat(input.model, input.temperature, messages(input), false, controls.maxOutputTokens ?? DEFAULT_OUTPUT_TOKENS, controls.signal);
29
41
  }
30
42
  async compare(input) {
31
- return this.chat(input.model, input.temperature, messages(input), true);
43
+ const controls = requestControls(input);
44
+ const request = () => this.chat(input.model, input.temperature, messages(input), this.jsonModeState !== "unsupported", controls.maxOutputTokens ?? DEFAULT_JUDGE_OUTPUT_TOKENS, controls.signal);
45
+ if (this.jsonModeState !== "unknown")
46
+ return request();
47
+ if (!this.jsonModeProbe) {
48
+ const probe = request().then((result) => {
49
+ if (this.jsonModeState === "unknown")
50
+ this.jsonModeState = "supported";
51
+ return result;
52
+ });
53
+ this.jsonModeProbe = probe;
54
+ void probe.finally(() => {
55
+ if (this.jsonModeProbe === probe)
56
+ this.jsonModeProbe = undefined;
57
+ }).catch(() => undefined);
58
+ return probe;
59
+ }
60
+ try {
61
+ await this.jsonModeProbe;
62
+ }
63
+ catch {
64
+ // The next waiter becomes the coordinated probe if the first call failed before
65
+ // determining JSON-mode support.
66
+ }
67
+ return this.compare(input);
32
68
  }
33
69
  async mutate(input) {
34
- return this.chat(input.model, input.temperature, messages(input), false);
70
+ const controls = requestControls(input);
71
+ return this.chat(input.model, input.temperature, messages(input), false, controls.maxOutputTokens ?? DEFAULT_OUTPUT_TOKENS, controls.signal);
35
72
  }
36
73
  async finalize(input) {
37
- return this.chat(input.model, 0.2, messages(input), false);
74
+ const controls = requestControls(input);
75
+ return this.chat(input.model, 0.2, messages(input), false, controls.maxOutputTokens ?? DEFAULT_OUTPUT_TOKENS, controls.signal);
38
76
  }
39
- async chat(model, temperature, messagesValue, jsonMode) {
77
+ async chat(model, temperature, messagesValue, jsonMode, maxOutputTokens, inputSignal) {
40
78
  const started = Date.now();
41
79
  let lastError;
42
80
  let retryCount = 0;
43
- for (let attempt = 0; attempt <= this.httpRetries; attempt += 1) {
44
- let timeout;
45
- try {
46
- const body = {
47
- model,
48
- messages: messagesValue,
49
- temperature,
50
- max_tokens: 4096
51
- };
52
- if (jsonMode && this.supportsJsonMode)
53
- body.response_format = { type: "json_object" };
54
- const controller = this.requestTimeoutMs ? new AbortController() : undefined;
55
- timeout = controller ? setTimeout(() => controller.abort(), this.requestTimeoutMs) : undefined;
56
- const response = await fetch(`${this.baseUrl}/chat/completions`, {
57
- method: "POST",
58
- headers: {
59
- "content-type": "application/json",
60
- authorization: `Bearer ${this.apiKey}`
61
- },
62
- body: JSON.stringify(body),
63
- signal: controller?.signal
64
- });
65
- if (timeout)
66
- clearTimeout(timeout);
67
- timeout = undefined;
68
- if (!response.ok) {
69
- const text = await response.text();
70
- if ((response.status === 429 || response.status >= 500) && attempt < this.httpRetries) {
71
- retryCount += 1;
72
- await sleep(retryDelay(response, attempt));
73
- continue;
81
+ let retryAttempt = 0;
82
+ let useJsonMode = jsonMode;
83
+ const deadline = deadlineSignal(this.requestTimeoutMs, inputSignal);
84
+ try {
85
+ while (true) {
86
+ try {
87
+ const body = {
88
+ model,
89
+ messages: messagesValue,
90
+ temperature,
91
+ max_tokens: maxOutputTokens
92
+ };
93
+ if (useJsonMode)
94
+ body.response_format = { type: "json_object" };
95
+ const response = await fetch(`${this.baseUrl}/chat/completions`, {
96
+ method: "POST",
97
+ headers: {
98
+ "content-type": "application/json",
99
+ authorization: `Bearer ${this.apiKey}`
100
+ },
101
+ body: JSON.stringify(body),
102
+ signal: deadline.signal
103
+ });
104
+ if (!response.ok) {
105
+ const text = await readBoundedBody(response, this.responseBodyLimitBytes, deadline.signal);
106
+ if ((response.status === 429 || response.status >= 500) && retryAttempt < this.httpRetries) {
107
+ retryCount += 1;
108
+ const delay = retryDelay(response, retryAttempt, this.maxRetryDelayMs);
109
+ retryAttempt += 1;
110
+ await sleep(delay, deadline.signal);
111
+ continue;
112
+ }
113
+ if (useJsonMode && rejectsJsonMode(response.status, text)) {
114
+ this.jsonModeState = "unsupported";
115
+ useJsonMode = false;
116
+ retryCount += 1;
117
+ continue;
118
+ }
119
+ throw providerHttpError(this.provider, response.status);
74
120
  }
75
- if (jsonMode && this.supportsJsonMode && rejectsJsonMode(response.status, text)) {
76
- return new OpenAiCompatibleDriver({ ...this.config, supportsJsonMode: false }).chat(model, temperature, messagesValue, false);
121
+ const responseText = await readBoundedBody(response, this.responseBodyLimitBytes, deadline.signal);
122
+ let json;
123
+ try {
124
+ json = JSON.parse(responseText);
77
125
  }
78
- throw providerHttpError(this.provider, response.status);
79
- }
80
- const json = (await response.json());
81
- const choice = json.choices?.[0];
82
- if (choice?.finish_reason === "length") {
83
- throw new ProviderError("Provider response was truncated by max_tokens.", {
84
- code: "provider.output_truncated",
85
- retryable: false,
86
- fix: "Use a model/provider with shorter outputs or increase max output token support in provider config."
87
- });
126
+ catch {
127
+ throw new ProviderError("Provider response was not valid JSON.", {
128
+ code: "provider.invalid_response_json",
129
+ retryable: false,
130
+ fix: "Check that the configured endpoint implements OpenAI-compatible chat completions."
131
+ });
132
+ }
133
+ const choice = json.choices?.[0];
134
+ if (choice?.finish_reason === "length") {
135
+ throw new ProviderError("Provider response was truncated by max_tokens.", {
136
+ code: "provider.output_truncated",
137
+ retryable: false,
138
+ fix: "Use a model/provider with shorter outputs or increase max output token support in provider config."
139
+ });
140
+ }
141
+ const text = choice?.message?.content;
142
+ if (!text)
143
+ throw new ProviderError("Provider response did not include choices[0].message.content.", { code: "provider.empty_response" });
144
+ return {
145
+ text,
146
+ model: json.model ?? model,
147
+ provider: this.provider,
148
+ usage: {
149
+ inputTokens: json.usage?.prompt_tokens,
150
+ inputCacheHitTokens: json.usage?.prompt_cache_hit_tokens,
151
+ inputCacheMissTokens: json.usage?.prompt_cache_miss_tokens,
152
+ outputTokens: json.usage?.completion_tokens,
153
+ totalTokens: json.usage?.total_tokens
154
+ },
155
+ latencyMs: Date.now() - started,
156
+ retryCount,
157
+ raw: json
158
+ };
88
159
  }
89
- const text = choice?.message?.content;
90
- if (!text)
91
- throw new ProviderError("Provider response did not include choices[0].message.content.", { code: "provider.empty_response" });
92
- return {
93
- text,
94
- model: json.model ?? model,
95
- provider: this.provider,
96
- usage: {
97
- inputTokens: json.usage?.prompt_tokens,
98
- inputCacheHitTokens: json.usage?.prompt_cache_hit_tokens,
99
- inputCacheMissTokens: json.usage?.prompt_cache_miss_tokens,
100
- outputTokens: json.usage?.completion_tokens,
101
- totalTokens: json.usage?.total_tokens
102
- },
103
- latencyMs: Date.now() - started,
104
- retryCount,
105
- raw: json
106
- };
107
- }
108
- catch (error) {
109
- if (timeout)
110
- clearTimeout(timeout);
111
- lastError = error;
112
- if (attempt < this.httpRetries && isRetryableError(error)) {
113
- retryCount += 1;
114
- await sleep(backoff(attempt));
115
- continue;
160
+ catch (error) {
161
+ lastError = error;
162
+ if (!deadline.signal.aborted && retryAttempt < this.httpRetries && isRetryableError(error)) {
163
+ retryCount += 1;
164
+ const delay = backoff(retryAttempt, this.maxRetryDelayMs);
165
+ retryAttempt += 1;
166
+ try {
167
+ await sleep(delay, deadline.signal);
168
+ }
169
+ catch (sleepError) {
170
+ lastError = sleepError;
171
+ break;
172
+ }
173
+ continue;
174
+ }
175
+ break;
116
176
  }
117
- break;
118
177
  }
119
178
  }
179
+ finally {
180
+ deadline.dispose();
181
+ }
120
182
  if (lastError instanceof ProviderError)
121
183
  throw lastError;
122
- if (isAbortError(lastError)) {
184
+ if (inputSignal?.aborted) {
185
+ throw new ProviderError("Provider request was aborted.", {
186
+ code: "provider.aborted",
187
+ retryable: false,
188
+ fix: "Retry the run if the cancellation was unintended."
189
+ });
190
+ }
191
+ if (isAbortError(lastError) || deadline.timedOut()) {
123
192
  throw new ProviderError(`Provider request timed out after ${this.requestTimeoutMs}ms.`, {
124
193
  code: "provider.timeout",
125
194
  retryable: true,
@@ -159,7 +228,7 @@ function normalizeBaseUrl(baseUrl) {
159
228
  return baseUrl.replace(/\/+$/, "");
160
229
  }
161
230
  function rejectsJsonMode(status, body) {
162
- return status === 400 && /response_format|json/i.test(body);
231
+ return (status === 400 || status === 422) && /response_format|json/i.test(body);
163
232
  }
164
233
  function isRetryableError(error) {
165
234
  if (error instanceof ProviderError)
@@ -174,30 +243,128 @@ function providerHttpError(provider, status) {
174
243
  fix: retryable ? "Retry later or lower concurrency." : "Check provider configuration, request shape, and model access."
175
244
  });
176
245
  }
177
- function retryDelay(response, attempt) {
246
+ function retryDelay(response, attempt, maxDelayMs) {
178
247
  const retryAfter = response.headers.get("retry-after");
179
248
  if (!retryAfter)
180
- return backoff(attempt);
249
+ return backoff(attempt, maxDelayMs);
181
250
  const seconds = Number(retryAfter);
182
251
  if (Number.isFinite(seconds))
183
- return Math.max(0, seconds * 1000);
252
+ return Math.min(maxDelayMs, Math.max(0, seconds * 1000));
184
253
  const timestamp = Date.parse(retryAfter);
185
254
  if (Number.isFinite(timestamp))
186
- return Math.max(0, timestamp - Date.now());
187
- return backoff(attempt);
255
+ return Math.min(maxDelayMs, Math.max(0, timestamp - Date.now()));
256
+ return backoff(attempt, maxDelayMs);
188
257
  }
189
258
  function isAbortError(error) {
190
259
  return error instanceof Error && error.name === "AbortError";
191
260
  }
192
- function backoff(attempt) {
261
+ function backoff(attempt, maxDelayMs = DEFAULT_MAX_RETRY_DELAY_MS) {
193
262
  // Multiplicative jitter (±20% around the capped exponential base) matches the reference
194
263
  // Python's burst dispersion. Additive jitter at the 60s cap was effectively ±0.4% and would
195
264
  // align concurrent retries into the next provider rate-limit window.
196
- const base = Math.min(60_000, 500 * 2 ** attempt);
265
+ const base = Math.min(maxDelayMs, 500 * 2 ** attempt);
197
266
  const jitterFactor = 0.8 + Math.random() * 0.4;
198
- return Math.floor(base * jitterFactor);
267
+ return Math.min(maxDelayMs, Math.floor(base * jitterFactor));
268
+ }
269
+ function sleep(ms, signal) {
270
+ if (signal?.aborted)
271
+ return Promise.reject(abortError());
272
+ return new Promise((resolve, reject) => {
273
+ const timer = setTimeout(() => {
274
+ signal?.removeEventListener("abort", onAbort);
275
+ resolve();
276
+ }, ms);
277
+ const onAbort = () => {
278
+ clearTimeout(timer);
279
+ reject(abortError());
280
+ };
281
+ signal?.addEventListener("abort", onAbort, { once: true });
282
+ });
283
+ }
284
+ async function readBoundedBody(response, limitBytes, signal) {
285
+ const declaredLength = Number(response.headers.get("content-length"));
286
+ if (Number.isFinite(declaredLength) && declaredLength > limitBytes)
287
+ throw responseTooLarge(limitBytes);
288
+ if (!response.body)
289
+ return "";
290
+ const reader = response.body.getReader();
291
+ const chunks = [];
292
+ let total = 0;
293
+ try {
294
+ while (true) {
295
+ if (signal?.aborted)
296
+ throw abortError();
297
+ const { done, value } = await readWithAbort(reader, signal);
298
+ if (done)
299
+ break;
300
+ total += value.byteLength;
301
+ if (total > limitBytes) {
302
+ await reader.cancel();
303
+ throw responseTooLarge(limitBytes);
304
+ }
305
+ chunks.push(value);
306
+ }
307
+ }
308
+ finally {
309
+ reader.releaseLock();
310
+ }
311
+ const bytes = new Uint8Array(total);
312
+ let offset = 0;
313
+ for (const chunk of chunks) {
314
+ bytes.set(chunk, offset);
315
+ offset += chunk.byteLength;
316
+ }
317
+ return new TextDecoder().decode(bytes);
318
+ }
319
+ function readWithAbort(reader, signal) {
320
+ if (!signal)
321
+ return reader.read();
322
+ if (signal.aborted)
323
+ return Promise.reject(abortError());
324
+ return new Promise((resolve, reject) => {
325
+ const onAbort = () => {
326
+ void reader.cancel(signal.reason).catch(() => undefined);
327
+ reject(abortError());
328
+ };
329
+ signal.addEventListener("abort", onAbort, { once: true });
330
+ void reader.read().then(resolve, reject).finally(() => signal.removeEventListener("abort", onAbort));
331
+ });
332
+ }
333
+ function responseTooLarge(limitBytes) {
334
+ return new ProviderError(`Provider response exceeded the ${limitBytes}-byte body limit.`, {
335
+ code: "provider.response_too_large",
336
+ retryable: false,
337
+ fix: "Use a provider that returns bounded chat completion responses or reduce the requested output size."
338
+ });
339
+ }
340
+ function deadlineSignal(timeoutMs, inputSignal) {
341
+ const controller = new AbortController();
342
+ let timeoutReached = false;
343
+ const onInputAbort = () => controller.abort(inputSignal?.reason);
344
+ if (inputSignal?.aborted)
345
+ controller.abort(inputSignal.reason);
346
+ else
347
+ inputSignal?.addEventListener("abort", onInputAbort, { once: true });
348
+ const timer = timeoutMs
349
+ ? setTimeout(() => {
350
+ timeoutReached = true;
351
+ controller.abort(abortError());
352
+ }, timeoutMs)
353
+ : undefined;
354
+ return {
355
+ signal: controller.signal,
356
+ timedOut: () => timeoutReached,
357
+ dispose: () => {
358
+ if (timer)
359
+ clearTimeout(timer);
360
+ inputSignal?.removeEventListener("abort", onInputAbort);
361
+ }
362
+ };
363
+ }
364
+ function abortError() {
365
+ return new DOMException("Aborted", "AbortError");
199
366
  }
200
- function sleep(ms) {
201
- return new Promise((resolve) => setTimeout(resolve, ms));
367
+ function requestControls(input) {
368
+ return input;
202
369
  }
203
370
  //# sourceMappingURL=openaiCompatible.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"openaiCompatible.js","sourceRoot":"","sources":["../src/openaiCompatible.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openaiCompatible.js","sourceRoot":"","sources":["../src/openaiCompatible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAuH,MAAM,iBAAiB,CAAC;AACrK,OAAO,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAoBtD,MAAM,iCAAiC,GAAG,IAAI,GAAG,IAAI,CAAC;AACtD,MAAM,0BAA0B,GAAG,MAAM,CAAC;AAC1C,MAAM,qBAAqB,GAAG,IAAI,CAAC;AACnC,MAAM,2BAA2B,GAAG,IAAI,CAAC;AAEzC,MAAM,OAAO,sBAAsB;IAYJ;IAXpB,QAAQ,CAAS;IACjB,OAAO,CAAS;IAChB,MAAM,CAAU;IAChB,WAAW,CAAS;IACpB,gBAAgB,CAAU;IAC1B,sBAAsB,CAAS;IAC/B,eAAe,CAAS;IACxB,gBAAgB,CAAU;IAC3B,aAAa,CAA0C;IACvD,aAAa,CAA4B;IAEjD,YAA6B,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACjD,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;QAChC,IAAI,CAAC,OAAO,GAAG,gBAAgB,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC9F,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,KAAK,EAAE,WAAW,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,KAAK,EAAE,gBAAgB,IAAI,OAAO,CAAC;QAClE,IAAI,CAAC,sBAAsB,GAAG,MAAM,CAAC,KAAK,EAAE,sBAAsB,IAAI,iCAAiC,CAAC;QACxG,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,EAAE,eAAe,IAAI,0BAA0B,EAAE,0BAA0B,CAAC,CAAC;QACzH,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,IAAI,CAAC;QACxD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC;QACvE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,aAAa,CAAC,wBAAwB,MAAM,CAAC,SAAS,IAAI,QAAQ,iBAAiB,MAAM,CAAC,QAAQ,GAAG,EAAE;gBAC/G,IAAI,EAAE,0BAA0B;gBAChC,SAAS,EAAE,KAAK;gBAChB,GAAG,EAAE,OAAO,MAAM,CAAC,SAAS,IAAI,QAAQ,0BAA0B;aACnE,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,eAAe,IAAI,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/I,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,KAAmB;QAC/B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,GAAG,EAAE,CACnB,IAAI,CAAC,IAAI,CACP,KAAK,CAAC,KAAK,EACX,KAAK,CAAC,WAAW,EACjB,QAAQ,CAAC,KAAK,CAAC,EACf,IAAI,CAAC,aAAa,KAAK,aAAa,EACpC,QAAQ,CAAC,eAAe,IAAI,2BAA2B,EACvD,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;YAAE,OAAO,OAAO,EAAE,CAAC;QACvD,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,MAAM,KAAK,GAAG,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE;gBACtC,IAAI,IAAI,CAAC,aAAa,KAAK,SAAS;oBAAE,IAAI,CAAC,aAAa,GAAG,WAAW,CAAC;gBACvE,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;YAC3B,KAAK,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE;gBACtB,IAAI,IAAI,CAAC,aAAa,KAAK,KAAK;oBAAE,IAAI,CAAC,aAAa,GAAG,SAAS,CAAC;YACnE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC1B,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,aAAa,CAAC;QAC3B,CAAC;QAAC,MAAM,CAAC;YACP,gFAAgF;YAChF,iCAAiC;QACnC,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAkB;QAC7B,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,eAAe,IAAI,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC/I,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,KAAoB;QACjC,MAAM,QAAQ,GAAG,eAAe,CAAC,KAAK,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,QAAQ,CAAC,eAAe,IAAI,qBAAqB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IACjI,CAAC;IAEO,KAAK,CAAC,IAAI,CAChB,KAAa,EACb,WAAmB,EACnB,aAA4B,EAC5B,QAAiB,EACjB,eAAuB,EACvB,WAAyB;QAEzB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC3B,IAAI,SAAkB,CAAC;QACvB,IAAI,UAAU,GAAG,CAAC,CAAC;QACnB,IAAI,YAAY,GAAG,CAAC,CAAC;QACrB,IAAI,WAAW,GAAG,QAAQ,CAAC;QAC3B,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,CAAC;YACH,OAAO,IAAI,EAAE,CAAC;gBACd,IAAI,CAAC;oBACH,MAAM,IAAI,GAA4B;wBACpC,KAAK;wBACL,QAAQ,EAAE,aAAa;wBACvB,WAAW;wBACX,UAAU,EAAE,eAAe;qBAC5B,CAAC;oBACF,IAAI,WAAW;wBAAE,IAAI,CAAC,eAAe,GAAG,EAAE,IAAI,EAAE,aAAa,EAAE,CAAC;oBAChE,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,IAAI,CAAC,OAAO,mBAAmB,EAAE;wBAC/D,MAAM,EAAE,MAAM;wBACd,OAAO,EAAE;4BACP,cAAc,EAAE,kBAAkB;4BAClC,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;yBACvC;wBACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBAC1B,MAAM,EAAE,QAAQ,CAAC,MAAM;qBACxB,CAAC,CAAC;oBACH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;wBACjB,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;wBAC3F,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;4BAC3F,UAAU,IAAI,CAAC,CAAC;4BAChB,MAAM,KAAK,GAAG,UAAU,CAAC,QAAQ,EAAE,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;4BACvE,YAAY,IAAI,CAAC,CAAC;4BAClB,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;4BACpC,SAAS;wBACX,CAAC;wBACD,IAAI,WAAW,IAAI,eAAe,CAAC,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;4BAC1D,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;4BACnC,WAAW,GAAG,KAAK,CAAC;4BACpB,UAAU,IAAI,CAAC,CAAC;4BAChB,SAAS;wBACX,CAAC;wBACD,MAAM,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1D,CAAC;oBACD,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,sBAAsB,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;oBACnG,IAAI,IAAwB,CAAC;oBAC7B,IAAI,CAAC;wBACH,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAuB,CAAC;oBACxD,CAAC;oBAAC,MAAM,CAAC;wBACP,MAAM,IAAI,aAAa,CAAC,uCAAuC,EAAE;4BAC/D,IAAI,EAAE,gCAAgC;4BACtC,SAAS,EAAE,KAAK;4BAChB,GAAG,EAAE,mFAAmF;yBACzF,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC;oBACjC,IAAI,MAAM,EAAE,aAAa,KAAK,QAAQ,EAAE,CAAC;wBACvC,MAAM,IAAI,aAAa,CAAC,gDAAgD,EAAE;4BACxE,IAAI,EAAE,2BAA2B;4BACjC,SAAS,EAAE,KAAK;4BAChB,GAAG,EAAE,oGAAoG;yBAC1G,CAAC,CAAC;oBACL,CAAC;oBACD,MAAM,IAAI,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC;oBACtC,IAAI,CAAC,IAAI;wBAAE,MAAM,IAAI,aAAa,CAAC,+DAA+D,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,CAAC,CAAC;oBACzI,OAAO;wBACL,IAAI;wBACJ,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,KAAK;wBAC1B,QAAQ,EAAE,IAAI,CAAC,QAAQ;wBACvB,KAAK,EAAE;4BACL,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,aAAa;4BACtC,mBAAmB,EAAE,IAAI,CAAC,KAAK,EAAE,uBAAuB;4BACxD,oBAAoB,EAAE,IAAI,CAAC,KAAK,EAAE,wBAAwB;4BAC1D,YAAY,EAAE,IAAI,CAAC,KAAK,EAAE,iBAAiB;4BAC3C,WAAW,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY;yBACtC;wBACD,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO;wBAC/B,UAAU;wBACV,GAAG,EAAE,IAAI;qBACV,CAAC;gBACJ,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,SAAS,GAAG,KAAK,CAAC;oBAClB,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,IAAI,YAAY,GAAG,IAAI,CAAC,WAAW,IAAI,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;wBAC3F,UAAU,IAAI,CAAC,CAAC;wBAChB,MAAM,KAAK,GAAG,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;wBAC1D,YAAY,IAAI,CAAC,CAAC;wBAClB,IAAI,CAAC;4BACH,MAAM,KAAK,CAAC,KAAK,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;wBACtC,CAAC;wBAAC,OAAO,UAAU,EAAE,CAAC;4BACpB,SAAS,GAAG,UAAU,CAAC;4BACvB,MAAM;wBACR,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,MAAM;gBACR,CAAC;YACH,CAAC;QACD,CAAC;gBAAS,CAAC;YACT,QAAQ,CAAC,OAAO,EAAE,CAAC;QACrB,CAAC;QACD,IAAI,SAAS,YAAY,aAAa;YAAE,MAAM,SAAS,CAAC;QACxD,IAAI,WAAW,EAAE,OAAO,EAAE,CAAC;YACzB,MAAM,IAAI,aAAa,CAAC,+BAA+B,EAAE;gBACvD,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,KAAK;gBAChB,GAAG,EAAE,mDAAmD;aACzD,CAAC,CAAC;QACL,CAAC;QACD,IAAI,YAAY,CAAC,SAAS,CAAC,IAAI,QAAQ,CAAC,QAAQ,EAAE,EAAE,CAAC;YACnD,MAAM,IAAI,aAAa,CAAC,oCAAoC,IAAI,CAAC,gBAAgB,KAAK,EAAE;gBACtF,IAAI,EAAE,kBAAkB;gBACxB,SAAS,EAAE,IAAI;gBACf,GAAG,EAAE,wDAAwD;aAC9D,CAAC,CAAC;QACL,CAAC;QACD,MAAM,IAAI,aAAa,CAAC,4BAA6B,SAAmB,CAAC,OAAO,EAAE,EAAE;YAClF,IAAI,EAAE,yBAAyB;YAC/B,SAAS,EAAE,IAAI;YACf,GAAG,EAAE,kEAAkE;SACxE,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,oBAAoB,CAAC,SAAkC,EAAE;IACvE,OAAO,IAAI,sBAAsB,CAAC,qBAAqB,CAAC;QACtD,QAAQ,EAAE,UAAU;QACpB,GAAG,MAAM;KACV,CAAC,CAAC,CAAC;AACN,CAAC;AAED,SAAS,QAAQ,CAAC,KAAiE;IACjF,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,MAAM,IAAI,aAAa,CAAC,uCAAuC,CAAC,CAAC;IACpF,MAAM,YAAY,GAAkB;QAClC,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE;QAChD,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE;KAC7C,CAAC;IACF,OAAO,YAAY,CAAC,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,gBAAgB,CAAC,OAAgB;IACxC,IAAI,CAAC,OAAO,EAAE,CAAC;QACb,MAAM,IAAI,aAAa,CAAC,8CAA8C,EAAE;YACtE,IAAI,EAAE,2BAA2B;YACjC,SAAS,EAAE,KAAK;YAChB,GAAG,EAAE,4CAA4C;SAClD,CAAC,CAAC;IACL,CAAC;IACD,OAAO,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AACrC,CAAC;AAED,SAAS,eAAe,CAAC,MAAc,EAAE,IAAY;IACnD,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC,IAAI,uBAAuB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAClF,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAc;IACtC,IAAI,KAAK,YAAY,aAAa;QAAE,OAAO,KAAK,CAAC,SAAS,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,iBAAiB,CAAC,QAAgB,EAAE,MAAc;IACzD,MAAM,SAAS,GAAG,MAAM,KAAK,GAAG,IAAI,MAAM,IAAI,GAAG,CAAC;IAClD,OAAO,IAAI,aAAa,CAAC,iBAAiB,MAAM,SAAS,QAAQ,GAAG,EAAE;QACpE,IAAI,EAAE,iBAAiB,MAAM,EAAE;QAC/B,SAAS;QACT,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC,mCAAmC,CAAC,CAAC,CAAC,gEAAgE;KACxH,CAAC,CAAC;AACL,CAAC;AAED,SAAS,UAAU,CAAC,QAAkB,EAAE,OAAe,EAAE,UAAkB;IACzE,MAAM,UAAU,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,CAAC,UAAU;QAAE,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;IACrD,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,CAAC;IACnC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC;IACvF,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;IACzC,IAAI,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;IACjG,OAAO,OAAO,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AAC/D,CAAC;AAED,SAAS,OAAO,CAAC,OAAe,EAAE,UAAU,GAAG,0BAA0B;IACvE,wFAAwF;IACxF,4FAA4F;IAC5F,qEAAqE;IACrE,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,GAAG,CAAC,IAAI,OAAO,CAAC,CAAC;IACtD,MAAM,YAAY,GAAG,GAAG,GAAG,IAAI,CAAC,MAAM,EAAE,GAAG,GAAG,CAAC;IAC/C,OAAO,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,GAAG,YAAY,CAAC,CAAC,CAAC;AAC/D,CAAC;AAED,SAAS,KAAK,CAAC,EAAU,EAAE,MAAoB;IAC7C,IAAI,MAAM,EAAE,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACzD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC,EAAE,EAAE,CAAC,CAAC;QACP,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,YAAY,CAAC,KAAK,CAAC,CAAC;YACpB,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;AACL,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAkB,EAAE,UAAkB,EAAE,MAAoB;IACzF,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,UAAU;QAAE,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;IACvG,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAC9B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,CAAC;QACH,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,MAAM,EAAE,OAAO;gBAAE,MAAM,UAAU,EAAE,CAAC;YACxC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5D,IAAI,IAAI;gBAAE,MAAM;YAChB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,KAAK,GAAG,UAAU,EAAE,CAAC;gBACvB,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,gBAAgB,CAAC,UAAU,CAAC,CAAC;YACrC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;IACH,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;IACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC;IACpC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,UAAU,CAAC;IAC7B,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED,SAAS,aAAa,CACpB,MAA+C,EAC/C,MAAoB;IAEpB,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;IAClC,IAAI,MAAM,CAAC,OAAO;QAAE,OAAO,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;IACxD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,OAAO,GAAG,GAAG,EAAE;YACnB,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YACzD,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC;QACvB,CAAC,CAAC;QACF,MAAM,CAAC,gBAAgB,CAAC,OAAO,EAAE,OAAO,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1D,KAAK,MAAM,CAAC,IAAI,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;IACvG,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,gBAAgB,CAAC,UAAkB;IAC1C,OAAO,IAAI,aAAa,CAAC,kCAAkC,UAAU,mBAAmB,EAAE;QACxF,IAAI,EAAE,6BAA6B;QACnC,SAAS,EAAE,KAAK;QAChB,GAAG,EAAE,oGAAoG;KAC1G,CAAC,CAAC;AACL,CAAC;AAED,SAAS,cAAc,CAAC,SAA6B,EAAE,WAAyB;IAK9E,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,IAAI,cAAc,GAAG,KAAK,CAAC;IAC3B,MAAM,YAAY,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IACjE,IAAI,WAAW,EAAE,OAAO;QAAE,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;;QAC1D,WAAW,EAAE,gBAAgB,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1E,MAAM,KAAK,GAAG,SAAS;QACrB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE;YACd,cAAc,GAAG,IAAI,CAAC;YACtB,UAAU,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QACjC,CAAC,EAAE,SAAS,CAAC;QACf,CAAC,CAAC,SAAS,CAAC;IACd,OAAO;QACL,MAAM,EAAE,UAAU,CAAC,MAAM;QACzB,QAAQ,EAAE,GAAG,EAAE,CAAC,cAAc;QAC9B,OAAO,EAAE,GAAG,EAAE;YACZ,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YAC/B,WAAW,EAAE,mBAAmB,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,YAAY,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,eAAe,CAAC,KAAc;IACrC,OAAO,KAA2D,CAAC;AACrE,CAAC"}
package/dist/pricing.js CHANGED
@@ -7,7 +7,7 @@ export const defaultProviderPricing = [
7
7
  inputCacheMissUsdPerMillion: 0.14,
8
8
  outputUsdPerMillion: 0.28,
9
9
  source: "https://api-docs.deepseek.com/quick_start/pricing/",
10
- note: "Official DeepSeek pricing page, checked 2026-05-18. Input uses cache-hit/cache-miss fields when provider usage reports them."
10
+ note: "Official DeepSeek pricing page, checked 2026-06-24. Input uses cache-hit/cache-miss fields when provider usage reports them."
11
11
  },
12
12
  {
13
13
  provider: "deepseek",
@@ -17,7 +17,7 @@ export const defaultProviderPricing = [
17
17
  inputCacheMissUsdPerMillion: 0.435,
18
18
  outputUsdPerMillion: 0.87,
19
19
  source: "https://api-docs.deepseek.com/quick_start/pricing/",
20
- note: "Official DeepSeek V4-Pro discounted pricing, checked 2026-05-18; DeepSeek says the 75% discount is extended until 2026-05-31 15:59 UTC."
20
+ note: "Official DeepSeek pricing page, checked 2026-06-24. Input uses cache-hit/cache-miss fields when provider usage reports them."
21
21
  }
22
22
  ];
23
23
  export const editablePricing = defaultProviderPricing;
@@ -1 +1 @@
1
- {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD;QACE,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,mBAAmB;QAC1B,kBAAkB,EAAE,IAAI;QACxB,0BAA0B,EAAE,MAAM;QAClC,2BAA2B,EAAE,IAAI;QACjC,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,oDAAoD;QAC5D,IAAI,EAAE,8HAA8H;KACrI;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,iBAAiB;QACxB,kBAAkB,EAAE,KAAK;QACzB,0BAA0B,EAAE,QAAQ;QACpC,2BAA2B,EAAE,KAAK;QAClC,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,oDAAoD;QAC5D,IAAI,EAAE,yIAAyI;KAChJ;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAiB,sBAAsB,CAAC;AAEpE,MAAM,UAAU,8BAA8B,CAAC,MAAsB;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,KAAyB,EAAE,EAAE;QAC1D,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAmB,EAAE,CAAC;QACpF,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC"}
1
+ {"version":3,"file":"pricing.js","sourceRoot":"","sources":["../src/pricing.ts"],"names":[],"mappings":"AAgBA,MAAM,CAAC,MAAM,sBAAsB,GAAiB;IAClD;QACE,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,mBAAmB;QAC1B,kBAAkB,EAAE,IAAI;QACxB,0BAA0B,EAAE,MAAM;QAClC,2BAA2B,EAAE,IAAI;QACjC,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,oDAAoD;QAC5D,IAAI,EAAE,8HAA8H;KACrI;IACD;QACE,QAAQ,EAAE,UAAU;QACpB,KAAK,EAAE,iBAAiB;QACxB,kBAAkB,EAAE,KAAK;QACzB,0BAA0B,EAAE,QAAQ;QACpC,2BAA2B,EAAE,KAAK;QAClC,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,oDAAoD;QAC5D,IAAI,EAAE,8HAA8H;KACrI;CACF,CAAC;AAEF,MAAM,CAAC,MAAM,eAAe,GAAiB,sBAAsB,CAAC;AAEpE,MAAM,UAAU,8BAA8B,CAAC,MAAsB;IACnE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,MAAM,GAAG,GAAG,CAAC,QAAgB,EAAE,KAAyB,EAAE,EAAE;QAC1D,IAAI,KAAK;YAAE,IAAI,CAAC,GAAG,CAAC,GAAG,QAAQ,IAAI,KAAK,EAAE,CAAC,CAAC;IAC9C,CAAC,CAAC;IACF,KAAK,MAAM,IAAI,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAmB,EAAE,CAAC;QACpF,GAAG,CAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,EAAE,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,KAAK;YAAE,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;IAC9C,CAAC;IACD,OAAO,sBAAsB,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;AAChG,CAAC"}
@@ -4,6 +4,7 @@ import { dirname, join } from "node:path";
4
4
  import YAML from "yaml";
5
5
  import { ConfigError } from "@deepthonk/core";
6
6
  import { defaultConfigPath } from "./env.js";
7
+ import { normalizeExternalConfig } from "./externalConfig.js";
7
8
  export const NAMED_PROFILE_NAME_RE = /^[a-zA-Z][a-zA-Z0-9_-]{0,63}$/;
8
9
  export const RAW_API_KEY_RE = /^api[_-]?key$/i;
9
10
  export const SECRET_KEY_RE = /^(api[_-]?key|token|secret|password|authorization|bearer|cookie|credential)$/i;
@@ -94,8 +95,10 @@ function validateNamedProfileValue(value, name) {
94
95
  }
95
96
  const config = value;
96
97
  rejectRawApiKeyFields(config, name);
97
- validateRequiredFields(config, name);
98
- return config;
98
+ rejectAllSecretShapedFields(config, name);
99
+ const normalized = normalizeExternalConfig(config, `named profile '${name}'`);
100
+ validateRequiredFields(normalized, name);
101
+ return normalized;
99
102
  }
100
103
  export function rejectRawApiKeyFields(value, name = "profile") {
101
104
  rejectMatchingProfileKeys(value, RAW_API_KEY_RE, "config.profile_raw_api_key", (key, path) => ({
@@ -1 +1 @@
1
- {"version":3,"file":"profileRegistry.js","sourceRoot":"","sources":["../src/profileRegistry.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"profileRegistry.js","sourceRoot":"","sources":["../src/profileRegistry.ts"],"names":[],"mappings":"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"}