@theokit/sdk 4.31.0 → 4.31.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/{agent-Ekv8y7_c.d.ts → agent-BJbGi8-R.d.ts} +1 -1
- package/dist/{agent-6GQBOHHA.cjs → agent-BKNJIOEY.cjs} +9 -9
- package/dist/{agent-6GQBOHHA.cjs.map → agent-BKNJIOEY.cjs.map} +1 -1
- package/dist/{agent-Bzg2_uGr.d.cts → agent-CbZPGFfM.d.cts} +1 -1
- package/dist/{agent-DY5LGZ5E.js → agent-HW7OY2W3.js} +8 -8
- package/dist/{agent-DY5LGZ5E.js.map → agent-HW7OY2W3.js.map} +1 -1
- package/dist/{chunk-FZ75EZR5.js → chunk-CCRWSZ2F.js} +35 -28
- package/dist/chunk-CCRWSZ2F.js.map +1 -0
- package/dist/{chunk-WQEQCJTZ.cjs → chunk-CJVMDRQB.cjs} +26 -3
- package/dist/chunk-CJVMDRQB.cjs.map +1 -0
- package/dist/{chunk-XJT5VACT.cjs → chunk-E2YEDATX.cjs} +6 -6
- package/dist/{chunk-XJT5VACT.cjs.map → chunk-E2YEDATX.cjs.map} +1 -1
- package/dist/{chunk-FDGRQQWX.cjs → chunk-GQBXBHZ2.cjs} +5 -5
- package/dist/{chunk-FDGRQQWX.cjs.map → chunk-GQBXBHZ2.cjs.map} +1 -1
- package/dist/{chunk-U447MTG4.cjs → chunk-IOOSAZZH.cjs} +8 -8
- package/dist/chunk-IOOSAZZH.cjs.map +1 -0
- package/dist/{chunk-UKNMWCPZ.cjs → chunk-NZCFLEHO.cjs} +133 -70
- package/dist/chunk-NZCFLEHO.cjs.map +1 -0
- package/dist/{chunk-PORDVVJS.js → chunk-RPKTXBPK.js} +4 -4
- package/dist/chunk-RPKTXBPK.js.map +1 -0
- package/dist/{chunk-CYTAM3E6.cjs → chunk-S6F3FKFR.cjs} +65 -58
- package/dist/chunk-S6F3FKFR.cjs.map +1 -0
- package/dist/{chunk-VUXLNVX7.js → chunk-SJLOIZ4Z.js} +4 -4
- package/dist/{chunk-VUXLNVX7.js.map → chunk-SJLOIZ4Z.js.map} +1 -1
- package/dist/{chunk-4SXHEZIV.cjs → chunk-U2FO3MRG.cjs} +9 -3
- package/dist/chunk-U2FO3MRG.cjs.map +1 -0
- package/dist/{chunk-ICSCKB3N.js → chunk-UAYYNWYJ.js} +27 -4
- package/dist/chunk-UAYYNWYJ.js.map +1 -0
- package/dist/{chunk-ZZWTY3RX.js → chunk-VGUOUAM2.js} +9 -4
- package/dist/chunk-VGUOUAM2.js.map +1 -0
- package/dist/{chunk-4JWZRASX.js → chunk-WYPHQ7NM.js} +3 -3
- package/dist/{chunk-4JWZRASX.js.map → chunk-WYPHQ7NM.js.map} +1 -1
- package/dist/{chunk-TLG444A6.js → chunk-XDNGF5BY.js} +130 -67
- package/dist/chunk-XDNGF5BY.js.map +1 -0
- package/dist/{compact-session-2BFNMENR.cjs → compact-session-42BK7RE3.cjs} +12 -12
- package/dist/{compact-session-2BFNMENR.cjs.map → compact-session-42BK7RE3.cjs.map} +1 -1
- package/dist/{compact-session-2JONXHLR.js → compact-session-QMBOCFVQ.js} +4 -4
- package/dist/{compact-session-2JONXHLR.js.map → compact-session-QMBOCFVQ.js.map} +1 -1
- package/dist/{cron-D0Z29gI-.d.ts → cron-BU9qD5B6.d.ts} +2 -2
- package/dist/{cron-CjzvXGT2.d.cts → cron-BwojPwEs.d.cts} +2 -2
- package/dist/cron.cjs +8 -8
- package/dist/cron.d.cts +3 -3
- package/dist/cron.d.ts +3 -3
- package/dist/cron.js +7 -7
- package/dist/{errors-DHZtSNnj.d.ts → errors-Cua4WC9H.d.ts} +1 -1
- package/dist/{errors-BdL-buYn.d.cts → errors-DyVbXdR4.d.cts} +1 -1
- package/dist/errors.d.cts +2 -2
- package/dist/errors.d.ts +2 -2
- package/dist/eval.cjs +11 -11
- package/dist/eval.js +7 -7
- package/dist/fs-session-store-IIP7ZBYE.cjs +17 -0
- package/dist/{fs-session-store-26WVVMC4.cjs.map → fs-session-store-IIP7ZBYE.cjs.map} +1 -1
- package/dist/fs-session-store-T7YPW5A4.js +8 -0
- package/dist/{fs-session-store-7AEI4STY.js.map → fs-session-store-T7YPW5A4.js.map} +1 -1
- package/dist/index.cjs +29 -29
- package/dist/index.d.cts +8 -8
- package/dist/index.d.ts +8 -8
- package/dist/index.js +9 -9
- package/dist/{inject-session-MIFEKATN.cjs → inject-session-6ZMCA2NE.cjs} +6 -6
- package/dist/{inject-session-MIFEKATN.cjs.map → inject-session-6ZMCA2NE.cjs.map} +1 -1
- package/dist/{inject-session-NNSCCIVP.js → inject-session-YA3GQE4G.js} +4 -4
- package/dist/{inject-session-NNSCCIVP.js.map → inject-session-YA3GQE4G.js.map} +1 -1
- package/dist/internal/llm/abort-error.d.ts +1 -0
- package/dist/internal/llm/retrying-client.d.ts +27 -3
- package/dist/internal/llm/transport-error.d.ts +9 -0
- package/dist/internal/persistence/index.cjs +6 -6
- package/dist/internal/persistence/index.js +1 -1
- package/dist/internal/persistence/session-transcript.d.cts +13 -1
- package/dist/internal/persistence/session-transcript.d.ts +13 -1
- package/dist/internal/runtime/lifecycle/post-run-lifecycle.d.ts +1 -1
- package/dist/persistence.cjs +13 -9
- package/dist/persistence.d.cts +1 -1
- package/dist/persistence.d.ts +1 -1
- package/dist/persistence.js +2 -2
- package/dist/{run-OJbGyweZ.d.ts → run-CwEJtLPE.d.cts} +8 -0
- package/dist/{run-OJbGyweZ.d.cts → run-CwEJtLPE.d.ts} +8 -0
- package/dist/server/errors-envelope.d.cts +3 -3
- package/dist/server/errors-envelope.d.ts +3 -3
- package/dist/{session-transcript-T7LGJUGW.js → session-transcript-5VZUWEJ5.js} +3 -3
- package/dist/{session-transcript-T7LGJUGW.js.map → session-transcript-5VZUWEJ5.js.map} +1 -1
- package/dist/session-transcript-T4SB66I7.cjs +50 -0
- package/dist/{session-transcript-LPNZR3YS.cjs.map → session-transcript-T4SB66I7.cjs.map} +1 -1
- package/dist/subagents-loader.d.cts +2 -2
- package/dist/subagents-loader.d.ts +2 -2
- package/dist/types/agent-prims.d.ts +8 -0
- package/package.json +1 -1
- package/dist/chunk-4SXHEZIV.cjs.map +0 -1
- package/dist/chunk-CYTAM3E6.cjs.map +0 -1
- package/dist/chunk-FZ75EZR5.js.map +0 -1
- package/dist/chunk-ICSCKB3N.js.map +0 -1
- package/dist/chunk-PORDVVJS.js.map +0 -1
- package/dist/chunk-TLG444A6.js.map +0 -1
- package/dist/chunk-U447MTG4.cjs.map +0 -1
- package/dist/chunk-UKNMWCPZ.cjs.map +0 -1
- package/dist/chunk-WQEQCJTZ.cjs.map +0 -1
- package/dist/chunk-ZZWTY3RX.js.map +0 -1
- package/dist/fs-session-store-26WVVMC4.cjs +0 -17
- package/dist/fs-session-store-7AEI4STY.js +0 -8
- package/dist/session-transcript-LPNZR3YS.cjs +0 -46
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { currentCredentialPool, computeBackoffMs, sleepWithAbort, newPooledCredential, CredentialPool } from './chunk-6CLRANZA.js';
|
|
2
2
|
import { invalidateSessionCache } from './chunk-EEZ7CFMM.js';
|
|
3
3
|
import { tryJson, isPlainObject, sanitizeToolInput } from './chunk-U54XCYG3.js';
|
|
4
|
-
import { reconstructMessages, SessionTranscript } from './chunk-
|
|
4
|
+
import { reconstructMessages, SessionTranscript } from './chunk-VGUOUAM2.js';
|
|
5
5
|
import { estimateTokens } from './chunk-WA3FO4R7.js';
|
|
6
6
|
import { globalSingleton, registerProvider, registerBuiltins, getProviderProfile, inferModelDialect, inferRegionFromModelId, stripBedrockPrefix, resolveBedrockBaseUrl, resolveVertexBaseUrl, stripVertexPrefix } from './chunk-KAP4GJHO.js';
|
|
7
|
-
import { NetworkError, AuthenticationError, RateLimitError, ConfigurationError, UnknownAgentError, CredentialPoolExhaustedError } from './chunk-WLKFWQSJ.js';
|
|
7
|
+
import { NetworkError, AuthenticationError, RateLimitError, ConfigurationError, UnknownAgentError, CredentialPoolExhaustedError, isTransientError, TheokitAgentError } from './chunk-WLKFWQSJ.js';
|
|
8
8
|
import { redactSecrets } from './chunk-JTFYYKDT.js';
|
|
9
9
|
import { existsSync, readFileSync } from 'fs';
|
|
10
10
|
import { readdir } from 'fs/promises';
|
|
@@ -472,6 +472,22 @@ function releaseReader(reader) {
|
|
|
472
472
|
}
|
|
473
473
|
}
|
|
474
474
|
|
|
475
|
+
// src/internal/llm/transport-error.ts
|
|
476
|
+
function ehAbort(err) {
|
|
477
|
+
if (typeof err !== "object" || err === null) return false;
|
|
478
|
+
const nome = err.name;
|
|
479
|
+
return nome === "AbortError" || nome === "TimeoutError";
|
|
480
|
+
}
|
|
481
|
+
function wrapTransportError(err, ctx) {
|
|
482
|
+
if (ehAbort(err)) return err;
|
|
483
|
+
if (err instanceof NetworkError) return err;
|
|
484
|
+
const detalhe = err instanceof Error ? err.message : String(err);
|
|
485
|
+
return new NetworkError(`${ctx.providerId} transport failure on ${ctx.endpoint}: ${detalhe}`, {
|
|
486
|
+
code: "transport_failure",
|
|
487
|
+
cause: err
|
|
488
|
+
});
|
|
489
|
+
}
|
|
490
|
+
|
|
475
491
|
// src/internal/llm/anthropic.ts
|
|
476
492
|
var AnthropicClient = class {
|
|
477
493
|
constructor(options) {
|
|
@@ -492,12 +508,17 @@ var AnthropicClient = class {
|
|
|
492
508
|
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
493
509
|
};
|
|
494
510
|
if (this.options.extraHeaders !== void 0) Object.assign(headers, this.options.extraHeaders);
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
511
|
+
let response;
|
|
512
|
+
try {
|
|
513
|
+
response = await this.fetchImpl(`${this.baseUrl}/v1/messages`, {
|
|
514
|
+
method: "POST",
|
|
515
|
+
signal,
|
|
516
|
+
headers,
|
|
517
|
+
body: JSON.stringify(body)
|
|
518
|
+
});
|
|
519
|
+
} catch (fetchErr) {
|
|
520
|
+
throw wrapTransportError(fetchErr, { providerId: this.name, endpoint: "/v1/messages" });
|
|
521
|
+
}
|
|
501
522
|
if (!response.ok) {
|
|
502
523
|
const text = await response.text().catch(() => "");
|
|
503
524
|
let body2 = text;
|
|
@@ -1462,7 +1483,7 @@ var OpenAIClient = class {
|
|
|
1462
1483
|
endpoint: "/v1/chat/completions"
|
|
1463
1484
|
});
|
|
1464
1485
|
if (mapped !== void 0) throw mapped;
|
|
1465
|
-
throw fetchErr;
|
|
1486
|
+
throw wrapTransportError(fetchErr, { providerId, endpoint: "/v1/chat/completions" });
|
|
1466
1487
|
}
|
|
1467
1488
|
if (!response.ok) {
|
|
1468
1489
|
const text = await response.text().catch(() => "");
|
|
@@ -1923,60 +1944,6 @@ function abortError(signal) {
|
|
|
1923
1944
|
return new Error("AbortError");
|
|
1924
1945
|
}
|
|
1925
1946
|
|
|
1926
|
-
// src/internal/llm/retrying-client.ts
|
|
1927
|
-
var MAX_TENTATIVAS = 3;
|
|
1928
|
-
function ehTransitorio(err) {
|
|
1929
|
-
if (err instanceof AuthenticationError) return false;
|
|
1930
|
-
if (err instanceof RateLimitError) {
|
|
1931
|
-
const status = err.metadata?.statusCode ?? 429;
|
|
1932
|
-
return status !== 402;
|
|
1933
|
-
}
|
|
1934
|
-
return err instanceof Error && !/\b4\d\d\b/.test(err.message);
|
|
1935
|
-
}
|
|
1936
|
-
function dicaDeRetryAfterMs(err) {
|
|
1937
|
-
if (!(err instanceof RateLimitError)) return void 0;
|
|
1938
|
-
const segundos = err.metadata?.retryAfter;
|
|
1939
|
-
return typeof segundos === "number" && segundos > 0 ? segundos * 1e3 : void 0;
|
|
1940
|
-
}
|
|
1941
|
-
var RetryingLlmClient = class {
|
|
1942
|
-
#inner;
|
|
1943
|
-
#rng;
|
|
1944
|
-
constructor(inner, opts) {
|
|
1945
|
-
this.#inner = inner;
|
|
1946
|
-
this.#rng = opts?.rng;
|
|
1947
|
-
}
|
|
1948
|
-
get name() {
|
|
1949
|
-
return this.#inner.name;
|
|
1950
|
-
}
|
|
1951
|
-
async *stream(request, signal) {
|
|
1952
|
-
let ultimoErro;
|
|
1953
|
-
for (let tentativa = 0; tentativa < MAX_TENTATIVAS; tentativa++) {
|
|
1954
|
-
if (signal.aborted) throw ultimoErro ?? new Error("aborted");
|
|
1955
|
-
try {
|
|
1956
|
-
const gen = this.#inner.stream(request, signal);
|
|
1957
|
-
let passo = await gen.next();
|
|
1958
|
-
while (passo.done !== true) {
|
|
1959
|
-
yield passo.value;
|
|
1960
|
-
passo = await gen.next();
|
|
1961
|
-
}
|
|
1962
|
-
return passo.value;
|
|
1963
|
-
} catch (err) {
|
|
1964
|
-
ultimoErro = err;
|
|
1965
|
-
const ultima = tentativa === MAX_TENTATIVAS - 1;
|
|
1966
|
-
if (ultima || !ehTransitorio(err)) throw err;
|
|
1967
|
-
const dica = dicaDeRetryAfterMs(err);
|
|
1968
|
-
const ms = computeBackoffMs({
|
|
1969
|
-
attempt: tentativa,
|
|
1970
|
-
...dica !== void 0 ? { retryAfterMs: dica } : {},
|
|
1971
|
-
...this.#rng !== void 0 ? { rng: this.#rng } : {}
|
|
1972
|
-
});
|
|
1973
|
-
await sleepWithAbort(ms, signal);
|
|
1974
|
-
}
|
|
1975
|
-
}
|
|
1976
|
-
throw ultimoErro ?? new Error("retry esgotado sem erro registrado");
|
|
1977
|
-
}
|
|
1978
|
-
};
|
|
1979
|
-
|
|
1980
1947
|
// src/internal/llm/responses.ts
|
|
1981
1948
|
function messageToInputItems(message) {
|
|
1982
1949
|
const items = [];
|
|
@@ -2172,6 +2139,92 @@ var ResponsesApiClient = class {
|
|
|
2172
2139
|
}
|
|
2173
2140
|
};
|
|
2174
2141
|
|
|
2142
|
+
// src/internal/llm/abort-error.ts
|
|
2143
|
+
function abortError2(signal) {
|
|
2144
|
+
if (signal.reason instanceof Error) return signal.reason;
|
|
2145
|
+
return new Error(signal.reason !== void 0 ? String(signal.reason) : "aborted");
|
|
2146
|
+
}
|
|
2147
|
+
|
|
2148
|
+
// src/internal/llm/retrying-client.ts
|
|
2149
|
+
var MAX_TENTATIVAS = 3;
|
|
2150
|
+
function ehTransitorio(err) {
|
|
2151
|
+
if (!isTransientError(err)) return false;
|
|
2152
|
+
if (err instanceof CredentialPoolExhaustedError) return false;
|
|
2153
|
+
if (err instanceof TheokitAgentError && err.code === "circuit_open") return false;
|
|
2154
|
+
if (err instanceof RateLimitError && err.metadata?.statusCode === 402) return false;
|
|
2155
|
+
return true;
|
|
2156
|
+
}
|
|
2157
|
+
function dicaDeRetryAfterMs(err) {
|
|
2158
|
+
if (!(err instanceof RateLimitError)) return void 0;
|
|
2159
|
+
const segundos = err.metadata?.retryAfter;
|
|
2160
|
+
return typeof segundos === "number" && segundos > 0 ? segundos * 1e3 : void 0;
|
|
2161
|
+
}
|
|
2162
|
+
async function* consumir(gen, estado) {
|
|
2163
|
+
let passo = await gen.next();
|
|
2164
|
+
while (passo.done !== true) {
|
|
2165
|
+
estado.emitiu = true;
|
|
2166
|
+
yield passo.value;
|
|
2167
|
+
passo = await gen.next();
|
|
2168
|
+
}
|
|
2169
|
+
return passo.value;
|
|
2170
|
+
}
|
|
2171
|
+
function podeReexecutar(err, emitiu, tentativa) {
|
|
2172
|
+
if (emitiu) return false;
|
|
2173
|
+
if (tentativa === MAX_TENTATIVAS - 1) return false;
|
|
2174
|
+
return ehTransitorio(err);
|
|
2175
|
+
}
|
|
2176
|
+
var RetryingLlmClient = class {
|
|
2177
|
+
#inner;
|
|
2178
|
+
#rng;
|
|
2179
|
+
constructor(inner, opts) {
|
|
2180
|
+
this.#inner = inner;
|
|
2181
|
+
this.#rng = opts?.rng;
|
|
2182
|
+
}
|
|
2183
|
+
/**
|
|
2184
|
+
* O cliente decorado. Público pela mesma convenção de `FaultInjectingLlmClient.inner`: os testes
|
|
2185
|
+
* de fiação do router afirmam `instanceof PoolAwareLlmClient` e precisam enxergar através dos
|
|
2186
|
+
* decorators. Sem isto, adicionar um decorator quebra testes cuja intenção continua válida — que
|
|
2187
|
+
* foi exatamente o que o M93 fez com 4 testes pré-existentes.
|
|
2188
|
+
*/
|
|
2189
|
+
get inner() {
|
|
2190
|
+
return this.#inner;
|
|
2191
|
+
}
|
|
2192
|
+
get name() {
|
|
2193
|
+
return this.#inner.name;
|
|
2194
|
+
}
|
|
2195
|
+
/**
|
|
2196
|
+
* Espera o backoff da tentativa `n`, honrando o `Retry-After` do provider quando ele veio.
|
|
2197
|
+
*
|
|
2198
|
+
* Método próprio porque o `stream` é um gerador com laço aninhado, e embutir aqui a montagem
|
|
2199
|
+
* condicional das opções levava a complexidade cognitiva a 19 (teto do projeto: 10). O corpo do
|
|
2200
|
+
* `stream` fica sendo só a máquina de tentativas.
|
|
2201
|
+
*/
|
|
2202
|
+
async #esperarBackoff(err, tentativa, signal) {
|
|
2203
|
+
const dica = dicaDeRetryAfterMs(err);
|
|
2204
|
+
const ms = computeBackoffMs({
|
|
2205
|
+
attempt: tentativa,
|
|
2206
|
+
...dica !== void 0 ? { retryAfterMs: dica } : {},
|
|
2207
|
+
...this.#rng !== void 0 ? { rng: this.#rng } : {}
|
|
2208
|
+
});
|
|
2209
|
+
await sleepWithAbort(ms, signal);
|
|
2210
|
+
}
|
|
2211
|
+
async *stream(request, signal) {
|
|
2212
|
+
let ultimoErro;
|
|
2213
|
+
for (let tentativa = 0; tentativa < MAX_TENTATIVAS; tentativa++) {
|
|
2214
|
+
if (signal.aborted) throw ultimoErro ?? abortError2(signal);
|
|
2215
|
+
const estado = { emitiu: false };
|
|
2216
|
+
try {
|
|
2217
|
+
return yield* consumir(this.#inner.stream(request, signal), estado);
|
|
2218
|
+
} catch (err) {
|
|
2219
|
+
ultimoErro = err;
|
|
2220
|
+
if (!podeReexecutar(err, estado.emitiu, tentativa)) throw err;
|
|
2221
|
+
await this.#esperarBackoff(err, tentativa, signal);
|
|
2222
|
+
}
|
|
2223
|
+
}
|
|
2224
|
+
throw ultimoErro ?? new Error("retry esgotado sem erro registrado");
|
|
2225
|
+
}
|
|
2226
|
+
};
|
|
2227
|
+
|
|
2175
2228
|
// src/internal/error-mappers/vertex.ts
|
|
2176
2229
|
var VERTEX_RULES = [
|
|
2177
2230
|
{ test: (s, e) => s === 429 || e === "RESOURCE_EXHAUSTED", code: "rate_limit" },
|
|
@@ -2434,7 +2487,12 @@ function buildClient(name, routerOptions) {
|
|
|
2434
2487
|
const ambient = currentCredentialPool(name);
|
|
2435
2488
|
if (ambient !== void 0) {
|
|
2436
2489
|
return new RetryingLlmClient(
|
|
2437
|
-
new PoolAwareLlmClient(
|
|
2490
|
+
new PoolAwareLlmClient(
|
|
2491
|
+
ambient,
|
|
2492
|
+
(apiKey) => selectTransport(profile, apiKey),
|
|
2493
|
+
void 0,
|
|
2494
|
+
resilience
|
|
2495
|
+
)
|
|
2438
2496
|
);
|
|
2439
2497
|
}
|
|
2440
2498
|
const poolKeys = filterPoolKeys(routerOptions.apiKeys?.[name]);
|
|
@@ -2461,7 +2519,12 @@ function buildPoolOrSingle(args) {
|
|
|
2461
2519
|
const pool = new CredentialPool(name, entries, strategy);
|
|
2462
2520
|
const resilience = routerOptions.onRateLimit !== void 0 ? { onRateLimit: routerOptions.onRateLimit } : {};
|
|
2463
2521
|
return new RetryingLlmClient(
|
|
2464
|
-
new PoolAwareLlmClient(
|
|
2522
|
+
new PoolAwareLlmClient(
|
|
2523
|
+
pool,
|
|
2524
|
+
(apiKey2) => selectTransport(profile, apiKey2),
|
|
2525
|
+
void 0,
|
|
2526
|
+
resilience
|
|
2527
|
+
)
|
|
2465
2528
|
);
|
|
2466
2529
|
}
|
|
2467
2530
|
const apiKey = poolKeys?.[0] ?? resolveApiKey(profile.envVars) ?? sentinelForNoAuth(profile) ?? sentinelForLazyAuth(profile);
|
|
@@ -2885,5 +2948,5 @@ async function autoCompactIfNeeded(opts) {
|
|
|
2885
2948
|
}
|
|
2886
2949
|
|
|
2887
2950
|
export { COMPACT_SUMMARY_MARKER, COMPACT_USER_MESSAGE_MAX_TOKENS, CircuitBreaker, autoCompactIfNeeded, buildDefaultSummarizer, compactSessionTranscript, detectPrimaryProvider, discoverProviderPlugins, inferProviderFromApiKey, isCompactSummary, mapOllamaHttpError, mapOllamaTransportError, mapOpenAICompatibleError, parseSseStream, relayStream, renderToolResultContentText, resolveProviderChain, resolveSummarizerRoute, shouldAutoCompact, tryFirstEvent };
|
|
2888
|
-
//# sourceMappingURL=chunk-
|
|
2889
|
-
//# sourceMappingURL=chunk-
|
|
2951
|
+
//# sourceMappingURL=chunk-XDNGF5BY.js.map
|
|
2952
|
+
//# sourceMappingURL=chunk-XDNGF5BY.js.map
|