@theokit/agents 9.4.0 → 10.0.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 +62 -0
- package/dist/ask.d.ts +17 -5
- package/dist/ask.js.map +1 -1
- package/dist/{bridge-entry-CmYUgNit.d.ts → bridge-entry-emr2PSXC.d.ts} +96 -1
- package/dist/bridge.d.ts +1 -1
- package/dist/bridge.js +10 -2
- package/dist/{chunk-W6TABP2S.js → chunk-CKRM5Q2K.js} +162 -123
- package/dist/chunk-CKRM5Q2K.js.map +1 -0
- package/dist/{chunk-CAXGTLRU.js → chunk-QJN2LLPF.js} +2 -2
- package/dist/config.d.ts +67 -1
- package/dist/config.js +70 -1
- package/dist/config.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/session.d.ts +231 -11
- package/dist/session.js +318 -54
- package/dist/session.js.map +1 -1
- package/dist/tools.js +1 -1
- package/package.json +1 -1
- package/dist/chunk-W6TABP2S.js.map +0 -1
- /package/dist/{chunk-CAXGTLRU.js.map → chunk-QJN2LLPF.js.map} +0 -0
package/dist/session.js
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
|
+
import {
|
|
2
|
+
ensureSecureDir
|
|
3
|
+
} from "./chunk-QXGSF6WX.js";
|
|
1
4
|
import {
|
|
2
5
|
__name
|
|
3
6
|
} from "./chunk-Z4QWC7IK.js";
|
|
@@ -5,12 +8,48 @@ import {
|
|
|
5
8
|
// src/session/session-lifecycle.ts
|
|
6
9
|
import { readFileSync as readFileSync3, readdirSync, rmSync, statSync } from "fs";
|
|
7
10
|
import { join as join3 } from "path";
|
|
8
|
-
import { TheokitAgentError } from "@theokit/sdk/errors";
|
|
11
|
+
import { TheokitAgentError as TheokitAgentError2 } from "@theokit/sdk/errors";
|
|
9
12
|
import { classifySessionArtifact, forkTranscript, loadJsonl, sessionHasWriter, transcriptPath, transcriptRoot as transcriptRoot3 } from "@theokit/sdk/persistence";
|
|
10
13
|
|
|
14
|
+
// src/session/gc/registry-remover.ts
|
|
15
|
+
import { TheokitAgentError } from "@theokit/sdk/errors";
|
|
16
|
+
var SessionRegistryRemoverError = class extends TheokitAgentError {
|
|
17
|
+
static {
|
|
18
|
+
__name(this, "SessionRegistryRemoverError");
|
|
19
|
+
}
|
|
20
|
+
name = "SessionRegistryRemoverError";
|
|
21
|
+
sessionId;
|
|
22
|
+
constructor(sessionId, timeoutMs) {
|
|
23
|
+
super(`[@theokit/agents] the registry remover for session "${sessionId}" timed out: it did not settle within ${String(timeoutMs)}ms. The transcript was left on disk \u2014 an orphan file is collected by the next sweep, while a registry entry pointing at a deleted transcript is repaired by nothing, because GC works from transcripts.`);
|
|
24
|
+
this.sessionId = sessionId;
|
|
25
|
+
}
|
|
26
|
+
};
|
|
27
|
+
var DEFAULT_REGISTRY_TIMEOUT_MS = 3e4;
|
|
28
|
+
function isThenable(value) {
|
|
29
|
+
return typeof value?.then === "function";
|
|
30
|
+
}
|
|
31
|
+
__name(isThenable, "isThenable");
|
|
32
|
+
async function awaitRegistryRemoval(outcome, sessionId, timeoutMs = DEFAULT_REGISTRY_TIMEOUT_MS) {
|
|
33
|
+
if (!isThenable(outcome) || !Number.isFinite(timeoutMs)) return outcome;
|
|
34
|
+
let timer;
|
|
35
|
+
try {
|
|
36
|
+
return await Promise.race([
|
|
37
|
+
outcome,
|
|
38
|
+
new Promise((_resolve, reject) => {
|
|
39
|
+
timer = setTimeout(() => {
|
|
40
|
+
reject(new SessionRegistryRemoverError(sessionId, timeoutMs));
|
|
41
|
+
}, timeoutMs);
|
|
42
|
+
})
|
|
43
|
+
]);
|
|
44
|
+
} finally {
|
|
45
|
+
if (timer !== void 0) clearTimeout(timer);
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
__name(awaitRegistryRemoval, "awaitRegistryRemoval");
|
|
49
|
+
|
|
11
50
|
// src/session/project-index.ts
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
51
|
+
import { readFileSync, writeFileSync } from "fs";
|
|
52
|
+
import { join } from "path";
|
|
14
53
|
import { encodeProjectDir, transcriptRoot } from "@theokit/sdk/persistence";
|
|
15
54
|
var CWD_SIDECAR = "cwd";
|
|
16
55
|
function projectsRoot(root = transcriptRoot()) {
|
|
@@ -24,9 +63,7 @@ __name(projectDirFor, "projectDirFor");
|
|
|
24
63
|
function recordProjectDir(cwd, root = transcriptRoot()) {
|
|
25
64
|
const sidecar = join(projectDirFor(cwd, root), CWD_SIDECAR);
|
|
26
65
|
try {
|
|
27
|
-
|
|
28
|
-
recursive: true
|
|
29
|
-
});
|
|
66
|
+
ensureSecureDir(sidecar);
|
|
30
67
|
writeFileSync(sidecar, `${cwd}
|
|
31
68
|
`, "utf8");
|
|
32
69
|
} catch {
|
|
@@ -50,9 +87,7 @@ __name(projectDirMatches, "projectDirMatches");
|
|
|
50
87
|
|
|
51
88
|
// src/session/session-pointer.ts
|
|
52
89
|
import { readFileSync as readFileSync2 } from "fs";
|
|
53
|
-
import { mkdirSync as mkdirSync2 } from "fs";
|
|
54
90
|
import { join as join2 } from "path";
|
|
55
|
-
import { dirname as dirname2 } from "path";
|
|
56
91
|
import { atomicWriteText, transcriptRoot as transcriptRoot2 } from "@theokit/sdk/persistence";
|
|
57
92
|
var POINTER = "last-session";
|
|
58
93
|
function sessionPointerPath(cwd, root = transcriptRoot2()) {
|
|
@@ -77,9 +112,7 @@ __name(loadOrCreateSessionId, "loadOrCreateSessionId");
|
|
|
77
112
|
async function persistSessionId(cwd, sessionId, root = transcriptRoot2()) {
|
|
78
113
|
const target = sessionPointerPath(cwd, root);
|
|
79
114
|
try {
|
|
80
|
-
|
|
81
|
-
recursive: true
|
|
82
|
-
});
|
|
115
|
+
ensureSecureDir(target);
|
|
83
116
|
await atomicWriteText(target, `${sessionId}
|
|
84
117
|
`);
|
|
85
118
|
return {
|
|
@@ -94,30 +127,16 @@ async function persistSessionId(cwd, sessionId, root = transcriptRoot2()) {
|
|
|
94
127
|
__name(persistSessionId, "persistSessionId");
|
|
95
128
|
|
|
96
129
|
// src/session/session-lifecycle.ts
|
|
97
|
-
var
|
|
98
|
-
static {
|
|
99
|
-
__name(this, "SessionRegistryRemoverError");
|
|
100
|
-
}
|
|
101
|
-
name = "SessionRegistryRemoverError";
|
|
102
|
-
sessionId;
|
|
103
|
-
constructor(sessionId) {
|
|
104
|
-
super(`refusing to delete session ${sessionId}: removeFromRegistry returned a Promise, and this function is synchronous \u2014 its result would be reported as removed before it happened. Await your registry removal first, then pass its outcome: const removed = await Agent.delete(id).then(() => true); deleteSession(id, { removeFromRegistry: () => removed }).`);
|
|
105
|
-
this.sessionId = sessionId;
|
|
106
|
-
}
|
|
107
|
-
};
|
|
108
|
-
function isThenable(value) {
|
|
109
|
-
return typeof value?.then === "function";
|
|
110
|
-
}
|
|
111
|
-
__name(isThenable, "isThenable");
|
|
112
|
-
var SessionInUseError = class extends TheokitAgentError {
|
|
130
|
+
var SessionInUseError = class extends TheokitAgentError2 {
|
|
113
131
|
static {
|
|
114
132
|
__name(this, "SessionInUseError");
|
|
115
133
|
}
|
|
116
134
|
sessionId;
|
|
117
135
|
reason;
|
|
136
|
+
registryRemoved;
|
|
118
137
|
name = "SessionInUseError";
|
|
119
|
-
constructor(sessionId, reason) {
|
|
120
|
-
super(`session "${sessionId}" is protected (${reason}). Deleting it would discard state something is still using. Stop the run, or pass { force: true } to delete anyway.`), this.sessionId = sessionId, this.reason = reason;
|
|
138
|
+
constructor(sessionId, reason, registryRemoved = false) {
|
|
139
|
+
super(`session "${sessionId}" is protected (${reason}). Deleting it would discard state something is still using. Stop the run, or pass { force: true } to delete anyway.` + (registryRemoved ? ` The registry entry was already removed before this was noticed \u2014 do not retry that half, only the transcript.` : "")), this.sessionId = sessionId, this.reason = reason, this.registryRemoved = registryRemoved;
|
|
121
140
|
}
|
|
122
141
|
};
|
|
123
142
|
function listSessions(cwd, root = transcriptRoot3()) {
|
|
@@ -175,15 +194,31 @@ function readPointer(cwd, root) {
|
|
|
175
194
|
}
|
|
176
195
|
}
|
|
177
196
|
__name(readPointer, "readPointer");
|
|
178
|
-
function deleteSession(sessionId, options) {
|
|
197
|
+
async function deleteSession(sessionId, options) {
|
|
179
198
|
const root = options.root ?? transcriptRoot3();
|
|
180
199
|
if (options.force !== true) {
|
|
181
200
|
const reason = protectedTranscripts(options.cwd, root).get(sessionId);
|
|
182
201
|
if (reason !== void 0) throw new SessionInUseError(sessionId, reason);
|
|
183
202
|
}
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
203
|
+
let registryRemoved = false;
|
|
204
|
+
let registryError;
|
|
205
|
+
if (options.removeFromRegistry !== void 0) {
|
|
206
|
+
try {
|
|
207
|
+
const outcome = await awaitRegistryRemoval(options.removeFromRegistry(sessionId), sessionId, options.registryTimeoutMs);
|
|
208
|
+
registryRemoved = outcome !== false;
|
|
209
|
+
} catch (error) {
|
|
210
|
+
return {
|
|
211
|
+
registryRemoved: false,
|
|
212
|
+
transcriptRemoved: false,
|
|
213
|
+
registryError: error
|
|
214
|
+
};
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
if (options.force !== true) {
|
|
218
|
+
const nowProtected = protectedTranscripts(options.cwd, root).get(sessionId);
|
|
219
|
+
if (nowProtected !== void 0) {
|
|
220
|
+
throw new SessionInUseError(sessionId, nowProtected, registryRemoved);
|
|
221
|
+
}
|
|
187
222
|
}
|
|
188
223
|
let transcriptRemoved = false;
|
|
189
224
|
try {
|
|
@@ -193,57 +228,81 @@ function deleteSession(sessionId, options) {
|
|
|
193
228
|
}
|
|
194
229
|
return {
|
|
195
230
|
registryRemoved,
|
|
196
|
-
transcriptRemoved
|
|
231
|
+
transcriptRemoved,
|
|
232
|
+
registryError
|
|
197
233
|
};
|
|
198
234
|
}
|
|
199
235
|
__name(deleteSession, "deleteSession");
|
|
200
236
|
function forkBeforeUserTurn(srcId, newId, nth, options) {
|
|
201
237
|
if (!Number.isInteger(nth) || nth < 1) {
|
|
202
|
-
throw new
|
|
238
|
+
throw new TheokitAgentError2(`forkBeforeUserTurn: \`nth\` counts user turns from 1, received ${String(nth)}.`);
|
|
203
239
|
}
|
|
204
240
|
if (srcId === newId) {
|
|
205
|
-
throw new
|
|
241
|
+
throw new TheokitAgentError2(`forkBeforeUserTurn: srcId and newId must differ \u2014 forking "${srcId}" onto itself would truncate the source transcript in place.`);
|
|
206
242
|
}
|
|
207
243
|
const root = options.root ?? transcriptRoot3();
|
|
208
244
|
const src = transcriptPath(root, options.cwd, srcId);
|
|
209
245
|
const dst = transcriptPath(root, options.cwd, newId);
|
|
210
|
-
const
|
|
211
|
-
if (
|
|
212
|
-
throw new
|
|
246
|
+
const turns = reachableUserTurns(src);
|
|
247
|
+
if (nth > turns.length) {
|
|
248
|
+
throw new TheokitAgentError2(`forkBeforeUserTurn: session "${srcId}" has ${String(turns.length)} reachable user turn(s), so turn ${String(nth)} does not exist. "Reachable" excludes tool results, goal continuations, and anything before the last compaction boundary \u2014 those are records the user did not type or can no longer see.`);
|
|
213
249
|
}
|
|
250
|
+
const selected = turns[nth - 1];
|
|
214
251
|
forkTranscript(src, dst, {
|
|
215
|
-
beforeRecordIndex:
|
|
252
|
+
beforeRecordIndex: selected.index,
|
|
216
253
|
liveSessionPaths: [
|
|
217
254
|
...protectedTranscripts(options.cwd, root).keys()
|
|
218
255
|
].map((id) => transcriptPath(root, options.cwd, id))
|
|
219
256
|
});
|
|
220
257
|
return {
|
|
221
258
|
transcript: dst,
|
|
222
|
-
recordIndex
|
|
259
|
+
recordIndex: selected.index,
|
|
260
|
+
selectedText: selected.text
|
|
223
261
|
};
|
|
224
262
|
}
|
|
225
263
|
__name(forkBeforeUserTurn, "forkBeforeUserTurn");
|
|
226
|
-
|
|
264
|
+
var GOAL_CONTINUATION_MARKER = "[[theokit:goal-continuation]]";
|
|
265
|
+
function textOfRecord(record) {
|
|
266
|
+
return (record.message?.content ?? []).filter((block) => block.type === "text").map((block) => block.text ?? "").join("");
|
|
267
|
+
}
|
|
268
|
+
__name(textOfRecord, "textOfRecord");
|
|
269
|
+
function isGenuineUserTurn(record) {
|
|
270
|
+
if (record.type !== "user") return false;
|
|
271
|
+
const text = textOfRecord(record);
|
|
272
|
+
if (text.length === 0) return false;
|
|
273
|
+
return !text.startsWith(GOAL_CONTINUATION_MARKER);
|
|
274
|
+
}
|
|
275
|
+
__name(isGenuineUserTurn, "isGenuineUserTurn");
|
|
276
|
+
function reachableUserTurns(src) {
|
|
227
277
|
const records = loadJsonl(src);
|
|
228
|
-
let
|
|
229
|
-
for (
|
|
230
|
-
if (
|
|
231
|
-
|
|
232
|
-
|
|
278
|
+
let floor = -1;
|
|
279
|
+
for (let i = records.length - 1; i >= 0; i -= 1) {
|
|
280
|
+
if (records[i]?.type === "system" && records[i]?.subtype === "compact_boundary") {
|
|
281
|
+
floor = i;
|
|
282
|
+
break;
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
const turns = [];
|
|
286
|
+
for (let i = floor + 1; i < records.length; i += 1) {
|
|
287
|
+
const record = records[i];
|
|
288
|
+
if (isGenuineUserTurn(record)) turns.push({
|
|
289
|
+
index: i,
|
|
290
|
+
text: textOfRecord(record)
|
|
291
|
+
});
|
|
233
292
|
}
|
|
234
|
-
return
|
|
293
|
+
return turns;
|
|
235
294
|
}
|
|
236
|
-
__name(
|
|
295
|
+
__name(reachableUserTurns, "reachableUserTurns");
|
|
237
296
|
|
|
238
297
|
// src/session/gc/transcript-gc.ts
|
|
239
298
|
import { rmSync as rmSync2 } from "fs";
|
|
240
|
-
import { TheokitAgentError as
|
|
299
|
+
import { TheokitAgentError as TheokitAgentError3 } from "@theokit/sdk/errors";
|
|
241
300
|
import { transcriptPath as transcriptPath2, transcriptRoot as transcriptRoot4 } from "@theokit/sdk/persistence";
|
|
242
301
|
var FLOOR = {
|
|
243
302
|
keepLast: 1,
|
|
244
303
|
maxAgeDays: 1
|
|
245
304
|
};
|
|
246
|
-
var GCProtectionUnavailableError = class extends
|
|
305
|
+
var GCProtectionUnavailableError = class extends TheokitAgentError3 {
|
|
247
306
|
static {
|
|
248
307
|
__name(this, "GCProtectionUnavailableError");
|
|
249
308
|
}
|
|
@@ -257,7 +316,7 @@ var GCProtectionUnavailableError = class extends TheokitAgentError2 {
|
|
|
257
316
|
}), this.reason = reason;
|
|
258
317
|
}
|
|
259
318
|
};
|
|
260
|
-
var GCFloorError = class extends
|
|
319
|
+
var GCFloorError = class extends TheokitAgentError3 {
|
|
261
320
|
static {
|
|
262
321
|
__name(this, "GCFloorError");
|
|
263
322
|
}
|
|
@@ -340,7 +399,7 @@ function planTranscriptGC(options) {
|
|
|
340
399
|
};
|
|
341
400
|
}
|
|
342
401
|
__name(planTranscriptGC, "planTranscriptGC");
|
|
343
|
-
function runTranscriptGC(plan, options) {
|
|
402
|
+
async function runTranscriptGC(plan, options) {
|
|
344
403
|
const removed = [];
|
|
345
404
|
const errors = [];
|
|
346
405
|
const protectedNow = options.apply ? resolveProtection(protectedTranscripts(plan.cwd, plan.root), options.protectedIds) : /* @__PURE__ */ new Map();
|
|
@@ -350,6 +409,17 @@ function runTranscriptGC(plan, options) {
|
|
|
350
409
|
removed.push(candidate.id);
|
|
351
410
|
continue;
|
|
352
411
|
}
|
|
412
|
+
if (options.removeFromRegistry !== void 0) {
|
|
413
|
+
try {
|
|
414
|
+
await awaitRegistryRemoval(options.removeFromRegistry(candidate.id), candidate.id, options.registryTimeoutMs);
|
|
415
|
+
} catch (error) {
|
|
416
|
+
errors.push({
|
|
417
|
+
id: candidate.id,
|
|
418
|
+
message: `registry removal failed, transcript kept: ${error.message}`
|
|
419
|
+
});
|
|
420
|
+
continue;
|
|
421
|
+
}
|
|
422
|
+
}
|
|
353
423
|
try {
|
|
354
424
|
rmSync2(transcriptPath2(plan.root, plan.cwd, candidate.id));
|
|
355
425
|
removed.push(candidate.id);
|
|
@@ -371,11 +441,204 @@ function runTranscriptGC(plan, options) {
|
|
|
371
441
|
};
|
|
372
442
|
}
|
|
373
443
|
__name(runTranscriptGC, "runTranscriptGC");
|
|
444
|
+
|
|
445
|
+
// src/session/transcript-root-hint.ts
|
|
446
|
+
import { readdirSync as readdirSync2 } from "fs";
|
|
447
|
+
function transcriptRootHint(found, previousRoot, env = process.env) {
|
|
448
|
+
if (found > 0) return void 0;
|
|
449
|
+
const current = env.THEOKIT_HOME?.trim();
|
|
450
|
+
if (current === void 0 || current.length === 0) return void 0;
|
|
451
|
+
if (current === previousRoot) return void 0;
|
|
452
|
+
let projects;
|
|
453
|
+
try {
|
|
454
|
+
projects = readdirSync2(projectsRoot(previousRoot));
|
|
455
|
+
} catch {
|
|
456
|
+
return void 0;
|
|
457
|
+
}
|
|
458
|
+
if (projects.length === 0) return void 0;
|
|
459
|
+
return `No sessions under ${current} (THEOKIT_HOME). ${String(projects.length)} project(s) with sessions remain under the previous root ${previousRoot} \u2014 unset THEOKIT_HOME to see them again, or move the contents across.`;
|
|
460
|
+
}
|
|
461
|
+
__name(transcriptRootHint, "transcriptRootHint");
|
|
462
|
+
|
|
463
|
+
// src/session/liveness-oracle.ts
|
|
464
|
+
import { TheokitAgentError as TheokitAgentError4 } from "@theokit/sdk/errors";
|
|
465
|
+
var DEFAULT_TRANSCRIPT_SAMPLES = 3;
|
|
466
|
+
function encodeProjectDir2(cwd) {
|
|
467
|
+
return cwd.replace(/[^a-zA-Z0-9]/g, "-");
|
|
468
|
+
}
|
|
469
|
+
__name(encodeProjectDir2, "encodeProjectDir");
|
|
470
|
+
var LivenessBudgetError = class extends TheokitAgentError4 {
|
|
471
|
+
static {
|
|
472
|
+
__name(this, "LivenessBudgetError");
|
|
473
|
+
}
|
|
474
|
+
constructor(budget) {
|
|
475
|
+
super(`refusing to classify projects with budget ${String(budget)}: it must be a non-negative integer. The bound is spent with \`remaining -= 1\`, and on a non-finite value that subtraction never reaches zero \u2014 so every \`remaining <= 0\` guard becomes a no-op and the sweep is unbounded, which is the ~64M-syscall run this module exists to prevent. Pass a real ceiling (at the measured 2.54 ops/project, a tree of N projects wants >= 3N); \`0\` is valid and means "spend nothing", yielding \`undetermined\` for every project.`);
|
|
476
|
+
}
|
|
477
|
+
};
|
|
478
|
+
function assertUsableBudget(budget) {
|
|
479
|
+
if (!Number.isInteger(budget) || budget < 0) throw new LivenessBudgetError(budget);
|
|
480
|
+
}
|
|
481
|
+
__name(assertUsableBudget, "assertUsableBudget");
|
|
482
|
+
function verdictFromRecordedCwds(cwds, probe, budgetLeft) {
|
|
483
|
+
let unprobeable;
|
|
484
|
+
for (const cwd of cwds) {
|
|
485
|
+
if (!budgetLeft()) {
|
|
486
|
+
unprobeable ??= "search budget exhausted";
|
|
487
|
+
break;
|
|
488
|
+
}
|
|
489
|
+
const at = probe(cwd);
|
|
490
|
+
if ("error" in at) {
|
|
491
|
+
unprobeable ??= `could not stat ${cwd}: ${at.error}`;
|
|
492
|
+
continue;
|
|
493
|
+
}
|
|
494
|
+
if (at.found) return {
|
|
495
|
+
liveness: "alive",
|
|
496
|
+
reason: `recorded cwd ${cwd} exists`
|
|
497
|
+
};
|
|
498
|
+
}
|
|
499
|
+
return unprobeable !== void 0 ? {
|
|
500
|
+
liveness: "undetermined",
|
|
501
|
+
reason: unprobeable
|
|
502
|
+
} : {
|
|
503
|
+
liveness: "dead",
|
|
504
|
+
reason: `every recorded cwd is gone (${cwds.join(", ")})`
|
|
505
|
+
};
|
|
506
|
+
}
|
|
507
|
+
__name(verdictFromRecordedCwds, "verdictFromRecordedCwds");
|
|
508
|
+
function classifyProjects(encoded, opts) {
|
|
509
|
+
assertUsableBudget(opts.budget);
|
|
510
|
+
const out = /* @__PURE__ */ new Map();
|
|
511
|
+
let remaining = opts.budget;
|
|
512
|
+
const probe = /* @__PURE__ */ __name((path) => {
|
|
513
|
+
remaining -= 1;
|
|
514
|
+
try {
|
|
515
|
+
const answer = opts.fs.exists(path);
|
|
516
|
+
return answer === void 0 ? {
|
|
517
|
+
error: `could not determine whether ${path} exists`
|
|
518
|
+
} : {
|
|
519
|
+
found: answer
|
|
520
|
+
};
|
|
521
|
+
} catch (error) {
|
|
522
|
+
return {
|
|
523
|
+
error: error instanceof Error ? error.message : String(error)
|
|
524
|
+
};
|
|
525
|
+
}
|
|
526
|
+
}, "probe");
|
|
527
|
+
const recordedCwd = /* @__PURE__ */ __name((name) => {
|
|
528
|
+
const dir = `${opts.projectsRoot}/${name}`;
|
|
529
|
+
let entries;
|
|
530
|
+
remaining -= 1;
|
|
531
|
+
try {
|
|
532
|
+
entries = opts.fs.listEntries(dir);
|
|
533
|
+
} catch (error) {
|
|
534
|
+
return {
|
|
535
|
+
kind: "unreadable",
|
|
536
|
+
error: error instanceof Error ? error.message : String(error)
|
|
537
|
+
};
|
|
538
|
+
}
|
|
539
|
+
const samples = opts.transcriptSamples ?? DEFAULT_TRANSCRIPT_SAMPLES;
|
|
540
|
+
const cwds = [];
|
|
541
|
+
for (const file of entries.filter((f) => f.endsWith(".jsonl")).slice(0, samples)) {
|
|
542
|
+
if (remaining <= 0) break;
|
|
543
|
+
remaining -= 1;
|
|
544
|
+
let record;
|
|
545
|
+
try {
|
|
546
|
+
record = JSON.parse(opts.fs.firstLine(`${dir}/${file}`));
|
|
547
|
+
} catch {
|
|
548
|
+
continue;
|
|
549
|
+
}
|
|
550
|
+
const cwd = record?.cwd;
|
|
551
|
+
if (typeof cwd !== "string" || cwd.length === 0) continue;
|
|
552
|
+
if (encodeProjectDir2(cwd) === name && !cwds.includes(cwd)) cwds.push(cwd);
|
|
553
|
+
}
|
|
554
|
+
return cwds.length > 0 ? {
|
|
555
|
+
kind: "found",
|
|
556
|
+
cwds
|
|
557
|
+
} : {
|
|
558
|
+
kind: "absent"
|
|
559
|
+
};
|
|
560
|
+
}, "recordedCwd");
|
|
561
|
+
let candidates;
|
|
562
|
+
let enumerationError;
|
|
563
|
+
const enumerate = /* @__PURE__ */ __name(() => {
|
|
564
|
+
if (candidates === void 0 && enumerationError === void 0) {
|
|
565
|
+
try {
|
|
566
|
+
candidates = opts.candidatePaths();
|
|
567
|
+
} catch (error) {
|
|
568
|
+
enumerationError = `could not enumerate candidate projects: ${String(error)}`;
|
|
569
|
+
candidates = [];
|
|
570
|
+
}
|
|
571
|
+
}
|
|
572
|
+
return candidates ?? [];
|
|
573
|
+
}, "enumerate");
|
|
574
|
+
const searchPool = /* @__PURE__ */ __name((name, pool) => {
|
|
575
|
+
const seen = /* @__PURE__ */ new Set();
|
|
576
|
+
for (const candidate of pool) {
|
|
577
|
+
if (remaining <= 0) return {
|
|
578
|
+
liveness: "undetermined",
|
|
579
|
+
reason: "search budget exhausted"
|
|
580
|
+
};
|
|
581
|
+
if (seen.has(candidate)) continue;
|
|
582
|
+
seen.add(candidate);
|
|
583
|
+
if (encodeProjectDir2(candidate) !== name) continue;
|
|
584
|
+
const hit = probe(candidate);
|
|
585
|
+
if ("error" in hit) {
|
|
586
|
+
return {
|
|
587
|
+
liveness: "undetermined",
|
|
588
|
+
reason: `could not stat ${candidate}: ${hit.error}`
|
|
589
|
+
};
|
|
590
|
+
}
|
|
591
|
+
if (hit.found) {
|
|
592
|
+
return {
|
|
593
|
+
liveness: "alive",
|
|
594
|
+
reason: `found by search at ${candidate}`
|
|
595
|
+
};
|
|
596
|
+
}
|
|
597
|
+
}
|
|
598
|
+
return remaining <= 0 ? {
|
|
599
|
+
liveness: "undetermined",
|
|
600
|
+
reason: "search budget exhausted"
|
|
601
|
+
} : {
|
|
602
|
+
liveness: "undetermined",
|
|
603
|
+
reason: "no candidate path matched, and the candidate pool is not exhaustive"
|
|
604
|
+
};
|
|
605
|
+
}, "searchPool");
|
|
606
|
+
for (const name of encoded) {
|
|
607
|
+
if (remaining <= 0) {
|
|
608
|
+
out.set(name, {
|
|
609
|
+
liveness: "undetermined",
|
|
610
|
+
reason: "search budget exhausted"
|
|
611
|
+
});
|
|
612
|
+
continue;
|
|
613
|
+
}
|
|
614
|
+
const recorded = recordedCwd(name);
|
|
615
|
+
if (recorded.kind === "unreadable") {
|
|
616
|
+
out.set(name, {
|
|
617
|
+
liveness: "undetermined",
|
|
618
|
+
reason: `could not read ${opts.projectsRoot}/${name}: ${recorded.error}`
|
|
619
|
+
});
|
|
620
|
+
continue;
|
|
621
|
+
}
|
|
622
|
+
if (recorded.kind === "found") {
|
|
623
|
+
out.set(name, verdictFromRecordedCwds(recorded.cwds, probe, () => remaining > 0));
|
|
624
|
+
continue;
|
|
625
|
+
}
|
|
626
|
+
const pool = enumerate();
|
|
627
|
+
out.set(name, enumerationError === void 0 ? searchPool(name, pool) : {
|
|
628
|
+
liveness: "undetermined",
|
|
629
|
+
reason: enumerationError
|
|
630
|
+
});
|
|
631
|
+
}
|
|
632
|
+
return out;
|
|
633
|
+
}
|
|
634
|
+
__name(classifyProjects, "classifyProjects");
|
|
374
635
|
export {
|
|
375
636
|
GCFloorError,
|
|
376
637
|
GCProtectionUnavailableError,
|
|
638
|
+
LivenessBudgetError,
|
|
377
639
|
SessionInUseError,
|
|
378
640
|
SessionRegistryRemoverError,
|
|
641
|
+
classifyProjects,
|
|
379
642
|
deleteSession,
|
|
380
643
|
forkBeforeUserTurn,
|
|
381
644
|
listSessions,
|
|
@@ -389,6 +652,7 @@ export {
|
|
|
389
652
|
recordProjectDir,
|
|
390
653
|
resolveProjectDir,
|
|
391
654
|
runTranscriptGC,
|
|
392
|
-
sessionPointerPath
|
|
655
|
+
sessionPointerPath,
|
|
656
|
+
transcriptRootHint
|
|
393
657
|
};
|
|
394
658
|
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/session/session-lifecycle.ts","../src/session/project-index.ts","../src/session/session-pointer.ts","../src/session/gc/transcript-gc.ts"],"mappings":"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","names":["readFileSync","readdirSync","rmSync","statSync","join","TheokitAgentError","classifySessionArtifact","forkTranscript","loadJsonl","sessionHasWriter","transcriptPath","transcriptRoot","mkdirSync","readFileSync","writeFileSync","dirname","join","encodeProjectDir","transcriptRoot","CWD_SIDECAR","projectsRoot","root","transcriptRoot","join","projectDirFor","cwd","encodeProjectDir","recordProjectDir","sidecar","mkdirSync","dirname","recursive","writeFileSync","resolveProjectDir","encodedName","raw","readFileSync","trim","length","undefined","projectDirMatches","readFileSync","mkdirSync","join","dirname","atomicWriteText","transcriptRoot","POINTER","sessionPointerPath","cwd","root","transcriptRoot","join","projectDirFor","loadOrCreateSessionId","mintId","existing","readFileSync","trim","length","sessionId","resumed","persistSessionId","target","mkdirSync","dirname","recursive","atomicWriteText","persisted","SessionRegistryRemoverError","TheokitAgentError","name","sessionId","isThenable","value","then","SessionInUseError","reason","listSessions","cwd","root","transcriptRoot","dir","projectDirFor","entries","readdirSync","found","entry","path","join","isDirectory","modifiedAt","stats","statSync","mtime","kind","classifySessionArtifact","push","id","replace","transcript","sort","a","b","getTime","protectedTranscripts","protectedBy","Map","sessions","pointer","readPointer","undefined","set","length","has","session","hasWriter","sessionHasWriter","readFileSync","sessionPointerPath","trim","deleteSession","options","force","get","registryRemoved","removeFromRegistry","transcriptRemoved","rmSync","transcriptPath","forkBeforeUserTurn","srcId","newId","nth","Number","isInteger","String","src","dst","recordIndex","recordIndexOfUserTurn","forkTranscript","beforeRecordIndex","liveSessionPaths","keys","map","records","loadJsonl","seen","index","record","type","rmSync","TheokitAgentError","transcriptPath","transcriptRoot","FLOOR","keepLast","maxAgeDays","GCProtectionUnavailableError","TheokitAgentError","name","reason","Error","message","String","code","isRetryable","cause","GCFloorError","field","received","resolveProtection","builtin","provider","undefined","extra","union","Map","id","set","planTranscriptGC","options","Number","isFinite","root","transcriptRoot","now","Date","cutoff","sessions","listSessions","cwd","protectedBy","protectedTranscripts","protectedIds","candidates","kept","index","session","entries","protection","get","push","age","modifiedAt","getTime","isNaN","transcript","runTranscriptGC","plan","removed","errors","protectedNow","apply","candidate","has","rmSync","transcriptPath","error","dryRun"]}
|
|
1
|
+
{"version":3,"sources":["../src/session/session-lifecycle.ts","../src/session/gc/registry-remover.ts","../src/session/project-index.ts","../src/session/session-pointer.ts","../src/session/gc/transcript-gc.ts","../src/session/transcript-root-hint.ts","../src/session/liveness-oracle.ts"],"mappings":"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","names":["readFileSync","readdirSync","rmSync","statSync","join","TheokitAgentError","classifySessionArtifact","forkTranscript","loadJsonl","sessionHasWriter","transcriptPath","transcriptRoot","TheokitAgentError","SessionRegistryRemoverError","TheokitAgentError","name","sessionId","timeoutMs","String","DEFAULT_REGISTRY_TIMEOUT_MS","isThenable","value","then","awaitRegistryRemoval","outcome","Number","isFinite","timer","Promise","race","_resolve","reject","setTimeout","undefined","clearTimeout","readFileSync","writeFileSync","join","encodeProjectDir","transcriptRoot","CWD_SIDECAR","projectsRoot","root","transcriptRoot","join","projectDirFor","cwd","encodeProjectDir","recordProjectDir","sidecar","ensureSecureDir","writeFileSync","resolveProjectDir","encodedName","raw","readFileSync","trim","length","undefined","projectDirMatches","readFileSync","join","atomicWriteText","transcriptRoot","POINTER","sessionPointerPath","cwd","root","transcriptRoot","join","projectDirFor","loadOrCreateSessionId","mintId","existing","readFileSync","trim","length","sessionId","resumed","persistSessionId","target","ensureSecureDir","atomicWriteText","persisted","SessionInUseError","TheokitAgentError","name","sessionId","reason","registryRemoved","listSessions","cwd","root","transcriptRoot","dir","projectDirFor","entries","readdirSync","found","entry","path","join","isDirectory","modifiedAt","stats","statSync","mtime","kind","classifySessionArtifact","push","id","replace","transcript","sort","a","b","getTime","protectedTranscripts","protectedBy","Map","sessions","pointer","readPointer","undefined","set","length","has","session","hasWriter","sessionHasWriter","readFileSync","sessionPointerPath","trim","deleteSession","options","force","get","registryError","removeFromRegistry","outcome","awaitRegistryRemoval","registryTimeoutMs","error","transcriptRemoved","nowProtected","rmSync","transcriptPath","forkBeforeUserTurn","srcId","newId","nth","Number","isInteger","String","src","dst","turns","reachableUserTurns","selected","forkTranscript","beforeRecordIndex","index","liveSessionPaths","keys","map","recordIndex","selectedText","text","GOAL_CONTINUATION_MARKER","textOfRecord","record","message","content","filter","block","type","isGenuineUserTurn","startsWith","records","loadJsonl","floor","i","subtype","rmSync","TheokitAgentError","transcriptPath","transcriptRoot","FLOOR","keepLast","maxAgeDays","GCProtectionUnavailableError","TheokitAgentError","name","reason","Error","message","String","code","isRetryable","cause","GCFloorError","field","received","resolveProtection","builtin","provider","undefined","extra","union","Map","id","set","planTranscriptGC","options","Number","isFinite","root","transcriptRoot","now","Date","cutoff","sessions","listSessions","cwd","protectedBy","protectedTranscripts","protectedIds","candidates","kept","index","session","entries","protection","get","push","age","modifiedAt","getTime","isNaN","transcript","runTranscriptGC","plan","removed","errors","protectedNow","apply","candidate","has","removeFromRegistry","awaitRegistryRemoval","registryTimeoutMs","error","rmSync","transcriptPath","dryRun","readdirSync","transcriptRootHint","found","previousRoot","env","process","undefined","current","THEOKIT_HOME","trim","length","projects","readdirSync","projectsRoot","String","TheokitAgentError","DEFAULT_TRANSCRIPT_SAMPLES","encodeProjectDir","cwd","replace","LivenessBudgetError","TheokitAgentError","budget","String","assertUsableBudget","Number","isInteger","verdictFromRecordedCwds","cwds","probe","budgetLeft","unprobeable","at","error","found","liveness","reason","undefined","join","classifyProjects","encoded","opts","out","Map","remaining","path","answer","fs","exists","Error","message","recordedCwd","name","dir","projectsRoot","entries","listEntries","kind","samples","transcriptSamples","file","filter","f","endsWith","slice","record","JSON","parse","firstLine","length","includes","push","candidates","enumerationError","enumerate","candidatePaths","searchPool","pool","seen","Set","candidate","has","add","hit","set","recorded"]}
|
package/dist/tools.js
CHANGED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theokit/agents",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "10.0.0",
|
|
4
4
|
"description": "AI agents as first-class citizens of the TheoKit pipeline. The fluent agent()/tool() builders compile to SDK Agent.create() (M31 builder-only authoring API).",
|
|
5
5
|
"license": "Apache-2.0",
|
|
6
6
|
"type": "module",
|