@theokit/sdk 4.30.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 +57 -0
- package/dist/{agent-Ekv8y7_c.d.ts → agent-BJbGi8-R.d.ts} +1 -1
- package/dist/{agent-LD76RI74.cjs → agent-BKNJIOEY.cjs} +9 -9
- package/dist/{agent-LD76RI74.cjs.map → agent-BKNJIOEY.cjs.map} +1 -1
- package/dist/{agent-Bzg2_uGr.d.cts → agent-CbZPGFfM.d.cts} +1 -1
- package/dist/{agent-7YUGJJTU.js → agent-HW7OY2W3.js} +8 -8
- package/dist/{agent-7YUGJJTU.js.map → agent-HW7OY2W3.js.map} +1 -1
- package/dist/agent.d.ts +15 -2
- package/dist/{chunk-ISZ3MBUD.js → chunk-CCRWSZ2F.js} +57 -20
- package/dist/chunk-CCRWSZ2F.js.map +1 -0
- package/dist/chunk-CJVMDRQB.cjs +169 -0
- package/dist/chunk-CJVMDRQB.cjs.map +1 -0
- package/dist/{chunk-YU6KON2I.cjs → chunk-E2YEDATX.cjs} +6 -6
- package/dist/{chunk-YU6KON2I.cjs.map → chunk-E2YEDATX.cjs.map} +1 -1
- package/dist/{chunk-NG6B2PMA.cjs → chunk-GQBXBHZ2.cjs} +5 -5
- package/dist/{chunk-NG6B2PMA.cjs.map → chunk-GQBXBHZ2.cjs.map} +1 -1
- package/dist/{chunk-2HRYBRD7.cjs → chunk-IOOSAZZH.cjs} +8 -9
- package/dist/chunk-IOOSAZZH.cjs.map +1 -0
- package/dist/{chunk-2MF3IE2D.cjs → chunk-NZCFLEHO.cjs} +136 -25
- package/dist/chunk-NZCFLEHO.cjs.map +1 -0
- package/dist/{chunk-U6QGZHPN.js → chunk-RPKTXBPK.js} +5 -6
- package/dist/chunk-RPKTXBPK.js.map +1 -0
- package/dist/{chunk-GWMQ5CS3.cjs → chunk-S6F3FKFR.cjs} +87 -50
- package/dist/chunk-S6F3FKFR.cjs.map +1 -0
- package/dist/{chunk-SQLZ7ONU.js → chunk-SJLOIZ4Z.js} +4 -4
- package/dist/{chunk-SQLZ7ONU.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-UAYYNWYJ.js +163 -0
- 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-5YCAR23S.js → chunk-WYPHQ7NM.js} +3 -3
- package/dist/{chunk-5YCAR23S.js.map → chunk-WYPHQ7NM.js.map} +1 -1
- package/dist/{chunk-NRSH7RJY.js → chunk-XDNGF5BY.js} +133 -22
- package/dist/chunk-XDNGF5BY.js.map +1 -0
- package/dist/{compact-session-OO7NVWPB.cjs → compact-session-42BK7RE3.cjs} +12 -12
- package/dist/{compact-session-OO7NVWPB.cjs.map → compact-session-42BK7RE3.cjs.map} +1 -1
- package/dist/{compact-session-OO2GD76G.js → compact-session-QMBOCFVQ.js} +4 -4
- package/dist/{compact-session-OO2GD76G.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 -12
- package/dist/eval.cjs.map +1 -1
- package/dist/eval.js +7 -8
- package/dist/eval.js.map +1 -1
- package/dist/fs-session-store-IIP7ZBYE.cjs +17 -0
- package/dist/{fs-session-store-KAUQYSGI.cjs.map → fs-session-store-IIP7ZBYE.cjs.map} +1 -1
- package/dist/fs-session-store-T7YPW5A4.js +8 -0
- package/dist/{fs-session-store-ZKB5NN37.js.map → fs-session-store-T7YPW5A4.js.map} +1 -1
- package/dist/index.cjs +29 -29
- package/dist/index.d.cts +23 -10
- package/dist/index.d.ts +23 -10
- package/dist/index.js +9 -9
- package/dist/{inject-session-6MJUSGZP.cjs → inject-session-6ZMCA2NE.cjs} +6 -6
- package/dist/{inject-session-6MJUSGZP.cjs.map → inject-session-6ZMCA2NE.cjs.map} +1 -1
- package/dist/{inject-session-KOFHS5K3.js → inject-session-YA3GQE4G.js} +4 -4
- package/dist/{inject-session-KOFHS5K3.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 +53 -0
- package/dist/internal/llm/transport-error.d.ts +9 -0
- package/dist/internal/persistence/index.cjs +18 -19
- package/dist/internal/persistence/index.cjs.map +1 -1
- package/dist/internal/persistence/index.js +1 -2
- package/dist/internal/persistence/index.js.map +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 +17 -14
- package/dist/persistence.cjs.map +1 -1
- package/dist/persistence.d.cts +1 -1
- package/dist/persistence.d.ts +1 -1
- package/dist/persistence.js +2 -3
- package/dist/persistence.js.map +1 -1
- package/dist/{run-OJbGyweZ.d.cts → run-CwEJtLPE.d.cts} +8 -0
- package/dist/{run-OJbGyweZ.d.ts → 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-2HRYBRD7.cjs.map +0 -1
- package/dist/chunk-2MF3IE2D.cjs.map +0 -1
- package/dist/chunk-4SXHEZIV.cjs.map +0 -1
- package/dist/chunk-C7PICHRF.cjs +0 -68
- package/dist/chunk-C7PICHRF.cjs.map +0 -1
- package/dist/chunk-GWMQ5CS3.cjs.map +0 -1
- package/dist/chunk-HK7ZHSAX.cjs +0 -85
- package/dist/chunk-HK7ZHSAX.cjs.map +0 -1
- package/dist/chunk-HZQEDNF6.js +0 -66
- package/dist/chunk-HZQEDNF6.js.map +0 -1
- package/dist/chunk-ISZ3MBUD.js.map +0 -1
- package/dist/chunk-NRSH7RJY.js.map +0 -1
- package/dist/chunk-R6ZP6KNB.js +0 -80
- package/dist/chunk-R6ZP6KNB.js.map +0 -1
- package/dist/chunk-U6QGZHPN.js.map +0 -1
- package/dist/chunk-ZZWTY3RX.js.map +0 -1
- package/dist/fs-session-store-KAUQYSGI.cjs +0 -17
- package/dist/fs-session-store-ZKB5NN37.js +0 -8
- package/dist/session-transcript-LPNZR3YS.cjs +0 -46
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/persistence/fs-session-store.ts"],"names":["readTranscript","transcriptPath","path","mkdir","dirname","withFileLock","appendJsonl"],"mappings":";;;;;;;AAyCO,IAAM,iBAAN,MAA6C;AAAA,EACzC,QAAA;AAAA,EACA,IAAA;AAAA,EAET,YAAY,OAAA,EAAgC;AAC1C,IAAA,IAAA,CAAK,WAAW,OAAA,CAAQ,OAAA;AACxB,IAAA,IAAA,CAAK,OAAO,OAAA,CAAQ,GAAA;AAAA,EACtB;AAAA,EAEA,MAAM,YAAY,OAAA,EAA2C;AAC3D,IAAA,OAAOA,iCAAeC,gCAAA,CAAe,IAAA,CAAK,UAAU,IAAA,CAAK,IAAA,EAAM,OAAO,CAAC,CAAA;AAAA,EACzE;AAAA,EAEA,MAAM,aAAA,CAAc,OAAA,EAAiB,OAAA,EAAkD;AAErF,IAAA,IAAI,OAAA,CAAQ,WAAW,CAAA,EAAG;AAC1B,IAAA,MAAMC,SAAOD,gCAAA,CAAe,IAAA,CAAK,QAAA,EAAU,IAAA,CAAK,MAAM,OAAO,CAAA;AAE7D,IAAA,MAAME,eAAMC,YAAA,CAAQF,MAAI,GAAG,EAAE,SAAA,EAAW,MAAM,CAAA;AAC9C,IAAA,MAAMG,8BAAA,CAAaH,QAAM,YAAY;AAyBnC,MAAA,KAAA,MAAW,MAAA,IAAU,OAAA,EAASI,6BAAA,CAAYJ,MAAA,EAAM,MAAM,CAAA;AAAA,IACxD,CAAC,CAAA;AAAA,EACH;AACF","file":"chunk-IOOSAZZH.cjs","sourcesContent":["/**\n * SE41 — `FsSessionStore`, the DEFAULT reference implementation of the pluggable\n * {@link SessionStore} seam. It reads and append-writes the native Claude-shaped\n * `.jsonl` transcript at `<baseDir>/projects/<encoded-cwd>/<agentId>.jsonl` — the\n * exact on-disk format SE40 introduced (the file the Claude Code CLI can\n * `--continue`). Omitting `local.sessionStore` resolves to this store, so the\n * default persistence path is byte-identical to SE40 behavior.\n *\n * `readRecords` is `readTranscript(transcriptPath(...))` (a missing session →\n * `[]`, not an error — a fresh agent has no history). `appendRecords` is a TRUE\n * append: it reads the prior records, concatenates the new-turn delta, and\n * rewrites the whole line set atomically under the SE40 cross-process file lock\n * (`writeTranscript` never shrinks — the native format is an append-only\n * `parentUuid` DAG). The parent dir is created BEFORE acquiring the lock because\n * the lock's companion `<path>.lock` file needs an existing parent dir (the SE40\n * `mkdir(dirname)`-before-lock fix).\n *\n * @internal\n */\n\nimport { mkdir } from \"node:fs/promises\";\nimport { dirname } from \"node:path\";\n\nimport type { SessionStore } from \"../../types/session-store.js\";\nimport { withFileLock } from \"./file-lock.js\";\nimport { appendJsonl } from \"./jsonl.js\";\nimport { readTranscript, type SessionRecord, transcriptPath } from \"./session-transcript.js\";\n\n/** Options identifying the on-disk transcript location for the FS default store. */\nexport interface FsSessionStoreOptions {\n /** Transcript base dir (`~/.theokit` default, `~/.claude` for CLI interop) — already `~`-expanded. */\n baseDir: string;\n /** The workspace cwd whose encoded form is the transcript project dir. */\n cwd: string;\n}\n\n/**\n * The default `SessionStore` — reads/append-writes the native `.jsonl` transcript.\n *\n * @internal\n */\nexport class FsSessionStore implements SessionStore {\n readonly #baseDir: string;\n readonly #cwd: string;\n\n constructor(options: FsSessionStoreOptions) {\n this.#baseDir = options.baseDir;\n this.#cwd = options.cwd;\n }\n\n async readRecords(agentId: string): Promise<SessionRecord[]> {\n return readTranscript(transcriptPath(this.#baseDir, this.#cwd, agentId));\n }\n\n async appendRecords(agentId: string, records: readonly SessionRecord[]): Promise<void> {\n // Empty delta → nothing to persist (avoids an unnecessary lock + rewrite).\n if (records.length === 0) return;\n const path = transcriptPath(this.#baseDir, this.#cwd, agentId);\n // mkdir BEFORE the lock: withFileLock's companion `<path>.lock` needs the parent dir.\n await mkdir(dirname(path), { recursive: true });\n await withFileLock(path, async () => {\n // M93 — acrescenta o DELTA em vez de reescrever o arquivo inteiro.\n //\n // Antes: `readTranscript` + `writeTranscript` de tudo, por turno. O(n) de I/O **e** de parse a\n // cada turno, O(n²) por sessão — a nota do consumidor em `agents/lib/session/backtrack.ts`\n // registra 1,4 MB / 3000 linhas em 200 turnos.\n //\n // Correto porque o formato **já é append-only**: o DAG de `parentUuid` não depende da ordem de\n // linha, e cada registro carrega o próprio pai. `appendJsonl` **já existia no pacote** e tinha um\n // único chamador (`eval/runner.ts`) — a primitiva estava lá, o store é que a ignorava (rung 4).\n //\n // O `withFileLock` permanece — mas a afirmação anterior de que \"ele é o que serializa dois\n // `appendRecords` concorrentes\" era forte demais, e a revisão adversarial do M93 mediu isso:\n // removê-lo não reprova nenhum teste. A razão é o próprio parágrafo acima — o DAG de\n // `parentUuid` não depende da ordem de linha, então dois lotes intercalados reconstroem igual.\n // O trabalho que o lock fazia (proteger um read-modify-write) sumiu junto com o rewrite.\n //\n // O que ele ainda cobre é a janela TOCTOU de `precisaDeQuebraAntes` (ler o último byte, depois\n // escrever): sem ele, dois processos podem ambos concluir \"falta \\n\" e produzir uma linha em\n // branco — que o leitor descarta, isto é, benigno. Fica como **defesa declarada, não\n // mecanizada** (a disciplina de `error-handling.md § 4`: enumerar o resíduo em vez de deixar a\n // ausência de teste passar por cobertura).\n //\n // `writeTranscript` continua existindo para **compactação**, a única operação que legitimamente\n // reescreve o arquivo.\n for (const record of records) appendJsonl(path, record);\n });\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
var chunkLUSXDZPV_cjs = require('./chunk-LUSXDZPV.cjs');
|
|
4
4
|
var chunkIT3PWBW4_cjs = require('./chunk-IT3PWBW4.cjs');
|
|
5
5
|
var chunk6JSIEDKL_cjs = require('./chunk-6JSIEDKL.cjs');
|
|
6
|
-
var
|
|
6
|
+
var chunkU2FO3MRG_cjs = require('./chunk-U2FO3MRG.cjs');
|
|
7
7
|
var chunkEVADEGM7_cjs = require('./chunk-EVADEGM7.cjs');
|
|
8
8
|
var chunkD42XHI4O_cjs = require('./chunk-D42XHI4O.cjs');
|
|
9
9
|
var chunkA44COQJJ_cjs = require('./chunk-A44COQJJ.cjs');
|
|
@@ -475,6 +475,22 @@ function releaseReader(reader) {
|
|
|
475
475
|
}
|
|
476
476
|
}
|
|
477
477
|
|
|
478
|
+
// src/internal/llm/transport-error.ts
|
|
479
|
+
function ehAbort(err) {
|
|
480
|
+
if (typeof err !== "object" || err === null) return false;
|
|
481
|
+
const nome = err.name;
|
|
482
|
+
return nome === "AbortError" || nome === "TimeoutError";
|
|
483
|
+
}
|
|
484
|
+
function wrapTransportError(err, ctx) {
|
|
485
|
+
if (ehAbort(err)) return err;
|
|
486
|
+
if (err instanceof chunkA44COQJJ_cjs.NetworkError) return err;
|
|
487
|
+
const detalhe = err instanceof Error ? err.message : String(err);
|
|
488
|
+
return new chunkA44COQJJ_cjs.NetworkError(`${ctx.providerId} transport failure on ${ctx.endpoint}: ${detalhe}`, {
|
|
489
|
+
code: "transport_failure",
|
|
490
|
+
cause: err
|
|
491
|
+
});
|
|
492
|
+
}
|
|
493
|
+
|
|
478
494
|
// src/internal/llm/anthropic.ts
|
|
479
495
|
var AnthropicClient = class {
|
|
480
496
|
constructor(options) {
|
|
@@ -495,12 +511,17 @@ var AnthropicClient = class {
|
|
|
495
511
|
"anthropic-version": this.options.version ?? "2023-06-01"
|
|
496
512
|
};
|
|
497
513
|
if (this.options.extraHeaders !== void 0) Object.assign(headers, this.options.extraHeaders);
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
|
|
514
|
+
let response;
|
|
515
|
+
try {
|
|
516
|
+
response = await this.fetchImpl(`${this.baseUrl}/v1/messages`, {
|
|
517
|
+
method: "POST",
|
|
518
|
+
signal,
|
|
519
|
+
headers,
|
|
520
|
+
body: JSON.stringify(body)
|
|
521
|
+
});
|
|
522
|
+
} catch (fetchErr) {
|
|
523
|
+
throw wrapTransportError(fetchErr, { providerId: this.name, endpoint: "/v1/messages" });
|
|
524
|
+
}
|
|
504
525
|
if (!response.ok) {
|
|
505
526
|
const text = await response.text().catch(() => "");
|
|
506
527
|
let body2 = text;
|
|
@@ -705,7 +726,7 @@ async function resolveBedrockToken(region) {
|
|
|
705
726
|
return cachedToken.value;
|
|
706
727
|
}
|
|
707
728
|
try {
|
|
708
|
-
const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
729
|
+
const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-NZCFLEHO.cjs', document.baseURI).href)));
|
|
709
730
|
const gen = r("@aws/bedrock-token-generator");
|
|
710
731
|
if (typeof gen.getToken !== "function") return void 0;
|
|
711
732
|
const providers = r("@aws-sdk/credential-providers");
|
|
@@ -1465,7 +1486,7 @@ var OpenAIClient = class {
|
|
|
1465
1486
|
endpoint: "/v1/chat/completions"
|
|
1466
1487
|
});
|
|
1467
1488
|
if (mapped !== void 0) throw mapped;
|
|
1468
|
-
throw fetchErr;
|
|
1489
|
+
throw wrapTransportError(fetchErr, { providerId, endpoint: "/v1/chat/completions" });
|
|
1469
1490
|
}
|
|
1470
1491
|
if (!response.ok) {
|
|
1471
1492
|
const text = await response.text().catch(() => "");
|
|
@@ -2121,6 +2142,92 @@ var ResponsesApiClient = class {
|
|
|
2121
2142
|
}
|
|
2122
2143
|
};
|
|
2123
2144
|
|
|
2145
|
+
// src/internal/llm/abort-error.ts
|
|
2146
|
+
function abortError2(signal) {
|
|
2147
|
+
if (signal.reason instanceof Error) return signal.reason;
|
|
2148
|
+
return new Error(signal.reason !== void 0 ? String(signal.reason) : "aborted");
|
|
2149
|
+
}
|
|
2150
|
+
|
|
2151
|
+
// src/internal/llm/retrying-client.ts
|
|
2152
|
+
var MAX_TENTATIVAS = 3;
|
|
2153
|
+
function ehTransitorio(err) {
|
|
2154
|
+
if (!chunkA44COQJJ_cjs.isTransientError(err)) return false;
|
|
2155
|
+
if (err instanceof chunkA44COQJJ_cjs.CredentialPoolExhaustedError) return false;
|
|
2156
|
+
if (err instanceof chunkA44COQJJ_cjs.TheokitAgentError && err.code === "circuit_open") return false;
|
|
2157
|
+
if (err instanceof chunkA44COQJJ_cjs.RateLimitError && err.metadata?.statusCode === 402) return false;
|
|
2158
|
+
return true;
|
|
2159
|
+
}
|
|
2160
|
+
function dicaDeRetryAfterMs(err) {
|
|
2161
|
+
if (!(err instanceof chunkA44COQJJ_cjs.RateLimitError)) return void 0;
|
|
2162
|
+
const segundos = err.metadata?.retryAfter;
|
|
2163
|
+
return typeof segundos === "number" && segundos > 0 ? segundos * 1e3 : void 0;
|
|
2164
|
+
}
|
|
2165
|
+
async function* consumir(gen, estado) {
|
|
2166
|
+
let passo = await gen.next();
|
|
2167
|
+
while (passo.done !== true) {
|
|
2168
|
+
estado.emitiu = true;
|
|
2169
|
+
yield passo.value;
|
|
2170
|
+
passo = await gen.next();
|
|
2171
|
+
}
|
|
2172
|
+
return passo.value;
|
|
2173
|
+
}
|
|
2174
|
+
function podeReexecutar(err, emitiu, tentativa) {
|
|
2175
|
+
if (emitiu) return false;
|
|
2176
|
+
if (tentativa === MAX_TENTATIVAS - 1) return false;
|
|
2177
|
+
return ehTransitorio(err);
|
|
2178
|
+
}
|
|
2179
|
+
var RetryingLlmClient = class {
|
|
2180
|
+
#inner;
|
|
2181
|
+
#rng;
|
|
2182
|
+
constructor(inner, opts) {
|
|
2183
|
+
this.#inner = inner;
|
|
2184
|
+
this.#rng = opts?.rng;
|
|
2185
|
+
}
|
|
2186
|
+
/**
|
|
2187
|
+
* O cliente decorado. Público pela mesma convenção de `FaultInjectingLlmClient.inner`: os testes
|
|
2188
|
+
* de fiação do router afirmam `instanceof PoolAwareLlmClient` e precisam enxergar através dos
|
|
2189
|
+
* decorators. Sem isto, adicionar um decorator quebra testes cuja intenção continua válida — que
|
|
2190
|
+
* foi exatamente o que o M93 fez com 4 testes pré-existentes.
|
|
2191
|
+
*/
|
|
2192
|
+
get inner() {
|
|
2193
|
+
return this.#inner;
|
|
2194
|
+
}
|
|
2195
|
+
get name() {
|
|
2196
|
+
return this.#inner.name;
|
|
2197
|
+
}
|
|
2198
|
+
/**
|
|
2199
|
+
* Espera o backoff da tentativa `n`, honrando o `Retry-After` do provider quando ele veio.
|
|
2200
|
+
*
|
|
2201
|
+
* Método próprio porque o `stream` é um gerador com laço aninhado, e embutir aqui a montagem
|
|
2202
|
+
* condicional das opções levava a complexidade cognitiva a 19 (teto do projeto: 10). O corpo do
|
|
2203
|
+
* `stream` fica sendo só a máquina de tentativas.
|
|
2204
|
+
*/
|
|
2205
|
+
async #esperarBackoff(err, tentativa, signal) {
|
|
2206
|
+
const dica = dicaDeRetryAfterMs(err);
|
|
2207
|
+
const ms = chunkLUSXDZPV_cjs.computeBackoffMs({
|
|
2208
|
+
attempt: tentativa,
|
|
2209
|
+
...dica !== void 0 ? { retryAfterMs: dica } : {},
|
|
2210
|
+
...this.#rng !== void 0 ? { rng: this.#rng } : {}
|
|
2211
|
+
});
|
|
2212
|
+
await chunkLUSXDZPV_cjs.sleepWithAbort(ms, signal);
|
|
2213
|
+
}
|
|
2214
|
+
async *stream(request, signal) {
|
|
2215
|
+
let ultimoErro;
|
|
2216
|
+
for (let tentativa = 0; tentativa < MAX_TENTATIVAS; tentativa++) {
|
|
2217
|
+
if (signal.aborted) throw ultimoErro ?? abortError2(signal);
|
|
2218
|
+
const estado = { emitiu: false };
|
|
2219
|
+
try {
|
|
2220
|
+
return yield* consumir(this.#inner.stream(request, signal), estado);
|
|
2221
|
+
} catch (err) {
|
|
2222
|
+
ultimoErro = err;
|
|
2223
|
+
if (!podeReexecutar(err, estado.emitiu, tentativa)) throw err;
|
|
2224
|
+
await this.#esperarBackoff(err, tentativa, signal);
|
|
2225
|
+
}
|
|
2226
|
+
}
|
|
2227
|
+
throw ultimoErro ?? new Error("retry esgotado sem erro registrado");
|
|
2228
|
+
}
|
|
2229
|
+
};
|
|
2230
|
+
|
|
2124
2231
|
// src/internal/error-mappers/vertex.ts
|
|
2125
2232
|
var VERTEX_RULES = [
|
|
2126
2233
|
{ test: (s, e) => s === 429 || e === "RESOURCE_EXHAUSTED", code: "rate_limit" },
|
|
@@ -2202,7 +2309,7 @@ async function resolveVertexAccessToken() {
|
|
|
2202
2309
|
async function getAuthClientOrThrow() {
|
|
2203
2310
|
let mod;
|
|
2204
2311
|
try {
|
|
2205
|
-
const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-
|
|
2312
|
+
const r = module$1.createRequire((typeof document === 'undefined' ? require('u' + 'rl').pathToFileURL(__filename).href : (_documentCurrentScript && _documentCurrentScript.tagName.toUpperCase() === 'SCRIPT' && _documentCurrentScript.src || new URL('chunk-NZCFLEHO.cjs', document.baseURI).href)));
|
|
2206
2313
|
mod = r("google-auth-library");
|
|
2207
2314
|
} catch (err) {
|
|
2208
2315
|
const isModuleMissing = err instanceof Error && (err.message.includes("Cannot find module") || err.code === "MODULE_NOT_FOUND");
|
|
@@ -2382,11 +2489,13 @@ function buildClient(name, routerOptions) {
|
|
|
2382
2489
|
const resilience = routerOptions.onRateLimit !== void 0 ? { onRateLimit: routerOptions.onRateLimit } : {};
|
|
2383
2490
|
const ambient = chunkLUSXDZPV_cjs.currentCredentialPool(name);
|
|
2384
2491
|
if (ambient !== void 0) {
|
|
2385
|
-
return new
|
|
2386
|
-
|
|
2387
|
-
|
|
2388
|
-
|
|
2389
|
-
|
|
2492
|
+
return new RetryingLlmClient(
|
|
2493
|
+
new PoolAwareLlmClient(
|
|
2494
|
+
ambient,
|
|
2495
|
+
(apiKey) => selectTransport(profile, apiKey),
|
|
2496
|
+
void 0,
|
|
2497
|
+
resilience
|
|
2498
|
+
)
|
|
2390
2499
|
);
|
|
2391
2500
|
}
|
|
2392
2501
|
const poolKeys = filterPoolKeys(routerOptions.apiKeys?.[name]);
|
|
@@ -2412,16 +2521,18 @@ function buildPoolOrSingle(args) {
|
|
|
2412
2521
|
);
|
|
2413
2522
|
const pool = new chunkLUSXDZPV_cjs.CredentialPool(name, entries, strategy);
|
|
2414
2523
|
const resilience = routerOptions.onRateLimit !== void 0 ? { onRateLimit: routerOptions.onRateLimit } : {};
|
|
2415
|
-
return new
|
|
2416
|
-
|
|
2417
|
-
|
|
2418
|
-
|
|
2419
|
-
|
|
2524
|
+
return new RetryingLlmClient(
|
|
2525
|
+
new PoolAwareLlmClient(
|
|
2526
|
+
pool,
|
|
2527
|
+
(apiKey2) => selectTransport(profile, apiKey2),
|
|
2528
|
+
void 0,
|
|
2529
|
+
resilience
|
|
2530
|
+
)
|
|
2420
2531
|
);
|
|
2421
2532
|
}
|
|
2422
2533
|
const apiKey = poolKeys?.[0] ?? resolveApiKey(profile.envVars) ?? sentinelForNoAuth(profile) ?? sentinelForLazyAuth(profile);
|
|
2423
2534
|
if (apiKey === void 0) return void 0;
|
|
2424
|
-
return selectTransport(profile, apiKey);
|
|
2535
|
+
return new RetryingLlmClient(selectTransport(profile, apiKey));
|
|
2425
2536
|
}
|
|
2426
2537
|
function resolveBaseUrlEnvOverride(providerName) {
|
|
2427
2538
|
switch (providerName) {
|
|
@@ -2709,7 +2820,7 @@ function plainText(content) {
|
|
|
2709
2820
|
}
|
|
2710
2821
|
async function compactSessionTranscript(opts) {
|
|
2711
2822
|
const prior = await opts.store.readRecords(opts.loc.agentId);
|
|
2712
|
-
const history =
|
|
2823
|
+
const history = chunkU2FO3MRG_cjs.reconstructMessages(prior);
|
|
2713
2824
|
const compressible = [];
|
|
2714
2825
|
for (const m of history) {
|
|
2715
2826
|
const text = plainText(m.content);
|
|
@@ -2738,7 +2849,7 @@ async function compactSessionTranscript(opts) {
|
|
|
2738
2849
|
}
|
|
2739
2850
|
const summary = `${COMPACT_SUMMARY_MARKER}
|
|
2740
2851
|
${summaryBody}`;
|
|
2741
|
-
const transcript =
|
|
2852
|
+
const transcript = chunkU2FO3MRG_cjs.SessionTranscript.fromRecords(prior, {
|
|
2742
2853
|
cwd: opts.loc.cwd,
|
|
2743
2854
|
sessionId: opts.sessionId,
|
|
2744
2855
|
model: opts.loc.model ?? "unknown"
|
|
@@ -2859,5 +2970,5 @@ exports.resolveProviderChain = resolveProviderChain;
|
|
|
2859
2970
|
exports.resolveSummarizerRoute = resolveSummarizerRoute;
|
|
2860
2971
|
exports.shouldAutoCompact = shouldAutoCompact;
|
|
2861
2972
|
exports.tryFirstEvent = tryFirstEvent;
|
|
2862
|
-
//# sourceMappingURL=chunk-
|
|
2863
|
-
//# sourceMappingURL=chunk-
|
|
2973
|
+
//# sourceMappingURL=chunk-NZCFLEHO.cjs.map
|
|
2974
|
+
//# sourceMappingURL=chunk-NZCFLEHO.cjs.map
|