@theokit/sdk 4.33.1 → 4.34.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.
- package/CHANGELOG.md +16 -0
- package/dist/{agent-LIVADAZ4.js → agent-EQQA5VGX.js} +8 -8
- package/dist/{agent-LIVADAZ4.js.map → agent-EQQA5VGX.js.map} +1 -1
- package/dist/{agent-T2AIB3EV.cjs → agent-W6NI3HY4.cjs} +9 -9
- package/dist/{agent-T2AIB3EV.cjs.map → agent-W6NI3HY4.cjs.map} +1 -1
- package/dist/{chunk-3CMIY3N7.js → chunk-5QMXYX3X.js} +3 -3
- package/dist/{chunk-3CMIY3N7.js.map → chunk-5QMXYX3X.js.map} +1 -1
- package/dist/{chunk-SDYJESYZ.js → chunk-7BTE3RXJ.js} +13 -9
- package/dist/{chunk-SDYJESYZ.js.map → chunk-7BTE3RXJ.js.map} +1 -1
- package/dist/{chunk-E33A7YIR.cjs → chunk-G4WI3VW2.cjs} +12 -8
- package/dist/chunk-G4WI3VW2.cjs.map +1 -0
- package/dist/{chunk-2BYBFBNH.cjs → chunk-IAZX7RZM.cjs} +24 -7
- package/dist/chunk-IAZX7RZM.cjs.map +1 -0
- package/dist/{chunk-TOVGIP4L.js → chunk-IPHW3VKP.js} +14 -6
- package/dist/chunk-IPHW3VKP.js.map +1 -0
- package/dist/{chunk-KT6SWUY6.js → chunk-IX2LKBCD.js} +3 -3
- package/dist/{chunk-KT6SWUY6.js.map → chunk-IX2LKBCD.js.map} +1 -1
- package/dist/{chunk-WKSVAP6H.cjs → chunk-IZFZ6RHA.cjs} +5 -5
- package/dist/{chunk-WKSVAP6H.cjs.map → chunk-IZFZ6RHA.cjs.map} +1 -1
- package/dist/{chunk-NEPJ3TC4.cjs → chunk-JYMBHNNU.cjs} +13 -5
- package/dist/chunk-JYMBHNNU.cjs.map +1 -0
- package/dist/{chunk-FX2DAR5R.cjs → chunk-M2PU44HP.cjs} +3 -3
- package/dist/{chunk-FX2DAR5R.cjs.map → chunk-M2PU44HP.cjs.map} +1 -1
- package/dist/{chunk-GBCQ5742.js → chunk-RKG6QFCJ.js} +3 -3
- package/dist/{chunk-GBCQ5742.js.map → chunk-RKG6QFCJ.js.map} +1 -1
- package/dist/{chunk-4LXCZSIC.js → chunk-TPTHVSIG.js} +23 -9
- package/dist/chunk-TPTHVSIG.js.map +1 -0
- package/dist/{chunk-SIJZVUUD.cjs → chunk-TS6IPRME.cjs} +56 -42
- package/dist/chunk-TS6IPRME.cjs.map +1 -0
- package/dist/{chunk-F5RLC6ZH.js → chunk-VQ6NY4F5.js} +23 -6
- package/dist/chunk-VQ6NY4F5.js.map +1 -0
- package/dist/{chunk-FTRNHGAD.cjs → chunk-WEHUJ7ZS.cjs} +8 -8
- package/dist/{chunk-FTRNHGAD.cjs.map → chunk-WEHUJ7ZS.cjs.map} +1 -1
- package/dist/{compact-session-J7VNCICZ.js → compact-session-5BDD4HIB.js} +4 -4
- package/dist/{compact-session-J7VNCICZ.js.map → compact-session-5BDD4HIB.js.map} +1 -1
- package/dist/{compact-session-24PK2G4M.cjs → compact-session-BEA3IOON.cjs} +12 -12
- package/dist/{compact-session-24PK2G4M.cjs.map → compact-session-BEA3IOON.cjs.map} +1 -1
- package/dist/compaction.cjs +14 -14
- package/dist/compaction.d.cts +9 -4
- package/dist/compaction.d.ts +9 -4
- package/dist/compaction.js +1 -1
- package/dist/cron.cjs +8 -8
- package/dist/cron.js +7 -7
- package/dist/eval.cjs +7 -7
- package/dist/eval.js +6 -6
- package/dist/{fs-session-store-ENQIIMIR.cjs → fs-session-store-QS763E3Y.cjs} +5 -5
- package/dist/{fs-session-store-ENQIIMIR.cjs.map → fs-session-store-QS763E3Y.cjs.map} +1 -1
- package/dist/fs-session-store-SJ3RA5I2.js +10 -0
- package/dist/{fs-session-store-RKLORRCG.js.map → fs-session-store-SJ3RA5I2.js.map} +1 -1
- package/dist/index.cjs +29 -29
- package/dist/index.js +9 -9
- package/dist/{inject-session-343WIDCM.cjs → inject-session-SMH56NXP.cjs} +4 -4
- package/dist/{inject-session-343WIDCM.cjs.map → inject-session-SMH56NXP.cjs.map} +1 -1
- package/dist/{inject-session-RZEDWO53.js → inject-session-V5FTK72N.js} +3 -3
- package/dist/{inject-session-RZEDWO53.js.map → inject-session-V5FTK72N.js.map} +1 -1
- package/dist/internal/persistence/fs-session-store.d.cts +15 -0
- package/dist/internal/persistence/fs-session-store.d.ts +15 -0
- package/dist/internal/persistence/session-writer.d.cts +14 -4
- package/dist/internal/persistence/session-writer.d.ts +14 -4
- package/dist/persistence.cjs +3 -3
- package/dist/persistence.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-2BYBFBNH.cjs.map +0 -1
- package/dist/chunk-4LXCZSIC.js.map +0 -1
- package/dist/chunk-E33A7YIR.cjs.map +0 -1
- package/dist/chunk-F5RLC6ZH.js.map +0 -1
- package/dist/chunk-NEPJ3TC4.cjs.map +0 -1
- package/dist/chunk-SIJZVUUD.cjs.map +0 -1
- package/dist/chunk-TOVGIP4L.js.map +0 -1
- package/dist/fs-session-store-RKLORRCG.js +0 -10
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { acquireSessionWriter } from './chunk-
|
|
1
|
+
import { acquireSessionWriter } from './chunk-IPHW3VKP.js';
|
|
2
2
|
import { withFileLock, appendJsonl } from './chunk-UAYYNWYJ.js';
|
|
3
3
|
import { readTranscript, transcriptPath } from './chunk-Q56IYTBZ.js';
|
|
4
4
|
import { mkdir } from 'fs/promises';
|
|
@@ -47,13 +47,30 @@ var FsSessionStore = class {
|
|
|
47
47
|
if (records.length === 0) return;
|
|
48
48
|
const path = transcriptPath(this.#baseDir, this.#cwd, agentId);
|
|
49
49
|
await mkdir(dirname(path), { recursive: true });
|
|
50
|
-
if (!this.#leases.has(agentId)) {
|
|
51
|
-
this.#leases.set(agentId, await adquirirCompartilhado(path));
|
|
52
|
-
}
|
|
53
50
|
await withFileLock(path, async () => {
|
|
54
51
|
for (const record of records) appendJsonl(path, record);
|
|
55
52
|
});
|
|
56
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* Toma o lease de escritor da sessão. Lança `SessionBusyError` quando outro processo a detém.
|
|
56
|
+
*
|
|
57
|
+
* **Explícito, e NÃO no `appendRecords`** — a revisão adversarial do M95 mediu por que isso
|
|
58
|
+
* importa: o contrato de `SessionStore` diz que "an `appendRecords` rejection is logged to
|
|
59
|
+
* stderr, NOT thrown to the caller (best-effort write)". Adquirir ali fazia o `SessionBusyError`
|
|
60
|
+
* ser **engolido**, e o resultado era pior que o problema original: em vez de dois escritores
|
|
61
|
+
* intercalarem linhas, o perdedor **perdia o turno em silêncio** — nada em disco, um aviso em
|
|
62
|
+
* stderr invisível sob a TUI, e o chamador sem como reagir.
|
|
63
|
+
*
|
|
64
|
+
* No init o erro chega a quem pode agir: o `exec` forka para um id novo, que é o que a própria
|
|
65
|
+
* mensagem do erro prescreve. É a diferença entre falhar onde dá para decidir e falhar onde só
|
|
66
|
+
* dá para perder.
|
|
67
|
+
*/
|
|
68
|
+
async acquire(agentId) {
|
|
69
|
+
if (this.#leases.has(agentId)) return;
|
|
70
|
+
const path = transcriptPath(this.#baseDir, this.#cwd, agentId);
|
|
71
|
+
await mkdir(dirname(path), { recursive: true });
|
|
72
|
+
this.#leases.set(agentId, await adquirirCompartilhado(path));
|
|
73
|
+
}
|
|
57
74
|
/**
|
|
58
75
|
* Solta todo lease que este store detém.
|
|
59
76
|
*
|
|
@@ -69,5 +86,5 @@ var FsSessionStore = class {
|
|
|
69
86
|
};
|
|
70
87
|
|
|
71
88
|
export { FsSessionStore };
|
|
72
|
-
//# sourceMappingURL=chunk-
|
|
73
|
-
//# sourceMappingURL=chunk-
|
|
89
|
+
//# sourceMappingURL=chunk-VQ6NY4F5.js.map
|
|
90
|
+
//# sourceMappingURL=chunk-VQ6NY4F5.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/internal/persistence/fs-session-store.ts"],"names":[],"mappings":"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","file":"chunk-VQ6NY4F5.js","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\";\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\";\nimport { acquireSessionWriter, type SessionWriterLease } from \"./session-writer.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 */\n/**\n * Leases compartilhados por caminho, com contagem de referências.\n *\n * `acquireSessionWriter` é ESTRITO de propósito: duas aquisições concorrentes do mesmo caminho, e\n * exatamente uma vence — \"um lease que deixasse as duas passarem seria decorativo\" (o teste do M81\n * diz isso com todas as letras, e está certo). Esse é o contrato do primitivo, e ele não muda.\n *\n * Mas dentro de UM processo é normal existir mais de um store sobre a mesma sessão: os testes\n * golden de compactação e de sends concorrentes fazem exatamente isso, e são registro de\n * comportamento real do runtime. Aplicar o primitivo cru ali transformaria um padrão legítimo em\n * `SessionBusyError`.\n *\n * A conciliação é aqui, no consumidor do primitivo: o processo tira UM lease por caminho e conta\n * quantos stores o usam. O último a soltar libera de fato. Cross-process continua estrito — que é o\n * problema que o M81 enuncia (\"`exec resume --last` pode escrever na sessão viva da TUI\").\n */\nconst compartilhados = new Map<string, { lease: SessionWriterLease; refs: number }>();\n\nasync function adquirirCompartilhado(path: string): Promise<SessionWriterLease> {\n const existente = compartilhados.get(path);\n if (existente !== undefined) {\n existente.refs++;\n return criarProxy(path);\n }\n const lease = await acquireSessionWriter(path);\n compartilhados.set(path, { lease, refs: 1 });\n return criarProxy(path);\n}\n\n/** Um handle que decrementa a contagem; o último a soltar libera o lease de verdade. */\nfunction criarProxy(path: string): SessionWriterLease {\n let solto = false;\n return {\n sessionPath: path,\n release: async (): Promise<void> => {\n if (solto) return;\n solto = true;\n const entrada = compartilhados.get(path);\n if (entrada === undefined) return;\n entrada.refs--;\n if (entrada.refs > 0) return;\n compartilhados.delete(path);\n await entrada.lease.release();\n },\n };\n}\n\nexport class FsSessionStore implements SessionStore {\n readonly #baseDir: string;\n readonly #cwd: string;\n /** Um lease por `agentId` — um store serve mais de uma sessão ao longo da vida do processo. */\n readonly #leases = new Map<string, SessionWriterLease>();\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\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 /**\n * Toma o lease de escritor da sessão. Lança `SessionBusyError` quando outro processo a detém.\n *\n * **Explícito, e NÃO no `appendRecords`** — a revisão adversarial do M95 mediu por que isso\n * importa: o contrato de `SessionStore` diz que \"an `appendRecords` rejection is logged to\n * stderr, NOT thrown to the caller (best-effort write)\". Adquirir ali fazia o `SessionBusyError`\n * ser **engolido**, e o resultado era pior que o problema original: em vez de dois escritores\n * intercalarem linhas, o perdedor **perdia o turno em silêncio** — nada em disco, um aviso em\n * stderr invisível sob a TUI, e o chamador sem como reagir.\n *\n * No init o erro chega a quem pode agir: o `exec` forka para um id novo, que é o que a própria\n * mensagem do erro prescreve. É a diferença entre falhar onde dá para decidir e falhar onde só\n * dá para perder.\n */\n async acquire(agentId: string): Promise<void> {\n if (this.#leases.has(agentId)) return;\n const path = transcriptPath(this.#baseDir, this.#cwd, agentId);\n await mkdir(dirname(path), { recursive: true });\n this.#leases.set(agentId, await adquirirCompartilhado(path));\n }\n\n /**\n * Solta todo lease que este store detém.\n *\n * Sem isto o `.writer.lock` sobrevive ao processo e a próxima abertura teria de esperar a janela\n * de heartbeat — recuperável, mas 30 s de espera para um encerramento LIMPO seria um defeito\n * evitável. Idempotente: chamar duas vezes não é erro.\n */\n async dispose(): Promise<void> {\n const leases = [...this.#leases.values()];\n this.#leases.clear();\n for (const lease of leases) await lease.release();\n }\n}\n"]}
|
|
@@ -4,7 +4,7 @@ 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
6
|
var chunk2DYI7MIF_cjs = require('./chunk-2DYI7MIF.cjs');
|
|
7
|
-
var
|
|
7
|
+
var chunkM2PU44HP_cjs = require('./chunk-M2PU44HP.cjs');
|
|
8
8
|
var chunkD42XHI4O_cjs = require('./chunk-D42XHI4O.cjs');
|
|
9
9
|
var chunkA44COQJJ_cjs = require('./chunk-A44COQJJ.cjs');
|
|
10
10
|
var chunkBEURCLDV_cjs = require('./chunk-BEURCLDV.cjs');
|
|
@@ -726,7 +726,7 @@ async function resolveBedrockToken(region) {
|
|
|
726
726
|
return cachedToken.value;
|
|
727
727
|
}
|
|
728
728
|
try {
|
|
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-
|
|
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-WEHUJ7ZS.cjs', document.baseURI).href)));
|
|
730
730
|
const gen = r("@aws/bedrock-token-generator");
|
|
731
731
|
if (typeof gen.getToken !== "function") return void 0;
|
|
732
732
|
const providers = r("@aws-sdk/credential-providers");
|
|
@@ -2309,7 +2309,7 @@ async function resolveVertexAccessToken() {
|
|
|
2309
2309
|
async function getAuthClientOrThrow() {
|
|
2310
2310
|
let mod;
|
|
2311
2311
|
try {
|
|
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-
|
|
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-WEHUJ7ZS.cjs', document.baseURI).href)));
|
|
2313
2313
|
mod = r("google-auth-library");
|
|
2314
2314
|
} catch (err) {
|
|
2315
2315
|
const isModuleMissing = err instanceof Error && (err.message.includes("Cannot find module") || err.code === "MODULE_NOT_FOUND");
|
|
@@ -2828,14 +2828,14 @@ async function compactSessionTranscript(opts) {
|
|
|
2828
2828
|
compressible.push({ role: m.role, content: text });
|
|
2829
2829
|
}
|
|
2830
2830
|
}
|
|
2831
|
-
const preTokens =
|
|
2831
|
+
const preTokens = chunkM2PU44HP_cjs.estimateTokens(compressible.map((m) => m.content).join("\n"));
|
|
2832
2832
|
const summaryBody = await opts.summarize(compressible);
|
|
2833
2833
|
const preserved = [];
|
|
2834
2834
|
let budget = 0;
|
|
2835
2835
|
for (let i = compressible.length - 1; i >= 0; i--) {
|
|
2836
2836
|
const m = compressible[i];
|
|
2837
2837
|
if (m === void 0 || m.role !== "user" || isCompactSummary(m.content)) continue;
|
|
2838
|
-
const cost =
|
|
2838
|
+
const cost = chunkM2PU44HP_cjs.estimateTokens(m.content);
|
|
2839
2839
|
if (budget + cost > COMPACT_USER_MESSAGE_MAX_TOKENS) {
|
|
2840
2840
|
const remaining = COMPACT_USER_MESSAGE_MAX_TOKENS - budget;
|
|
2841
2841
|
if (remaining > 50) {
|
|
@@ -2860,7 +2860,7 @@ ${summaryBody}`;
|
|
|
2860
2860
|
const delta = transcript.records().slice(prior.length);
|
|
2861
2861
|
await opts.store.appendRecords(opts.loc.agentId, delta);
|
|
2862
2862
|
chunkIT3PWBW4_cjs.invalidateSessionCache(opts.loc.cwd, opts.loc.agentId);
|
|
2863
|
-
const postTokens =
|
|
2863
|
+
const postTokens = chunkM2PU44HP_cjs.estimateTokens([...preserved, summary].join("\n"));
|
|
2864
2864
|
return { preTokens, postTokens };
|
|
2865
2865
|
}
|
|
2866
2866
|
function resolveSummarizerRoute(opts) {
|
|
@@ -2970,5 +2970,5 @@ exports.resolveProviderChain = resolveProviderChain;
|
|
|
2970
2970
|
exports.resolveSummarizerRoute = resolveSummarizerRoute;
|
|
2971
2971
|
exports.shouldAutoCompact = shouldAutoCompact;
|
|
2972
2972
|
exports.tryFirstEvent = tryFirstEvent;
|
|
2973
|
-
//# sourceMappingURL=chunk-
|
|
2974
|
-
//# sourceMappingURL=chunk-
|
|
2973
|
+
//# sourceMappingURL=chunk-WEHUJ7ZS.cjs.map
|
|
2974
|
+
//# sourceMappingURL=chunk-WEHUJ7ZS.cjs.map
|