@theokit/agents 9.3.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 +197 -0
- package/dist/{define-agent-3Kuf6iKM.d.ts → agent-compiler-CIPQkehU.d.ts} +3 -233
- package/dist/ask.d.ts +17 -5
- package/dist/ask.js.map +1 -1
- package/dist/{bridge-entry-51lU7LQw.d.ts → bridge-entry-emr2PSXC.d.ts} +99 -464
- package/dist/bridge.d.ts +4 -2
- package/dist/bridge.js +27 -17
- package/dist/{chunk-RZCNKKOG.js → chunk-CKRM5Q2K.js} +172 -1227
- package/dist/chunk-CKRM5Q2K.js.map +1 -0
- package/dist/chunk-QJN2LLPF.js +1110 -0
- package/dist/chunk-QJN2LLPF.js.map +1 -0
- package/dist/config.d.ts +115 -3
- package/dist/config.js +115 -17
- package/dist/config.js.map +1 -1
- package/dist/define-agent-BO5QSjV8.d.ts +236 -0
- package/dist/delegation-scoring-CDvtrYKd.d.ts +469 -0
- package/dist/index.d.ts +8 -4
- package/dist/index.js +41 -31
- package/dist/index.js.map +1 -1
- package/dist/interactive.d.ts +0 -1
- package/dist/session.d.ts +251 -6
- package/dist/session.js +328 -39
- package/dist/session.js.map +1 -1
- package/dist/testing.d.ts +2 -1
- package/dist/tools.d.ts +54 -0
- package/dist/tools.js +100 -1
- package/dist/tools.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-RZCNKKOG.js.map +0 -1
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,24 +8,62 @@ 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";
|
|
55
|
+
function projectsRoot(root = transcriptRoot()) {
|
|
56
|
+
return join(root, "projects");
|
|
57
|
+
}
|
|
58
|
+
__name(projectsRoot, "projectsRoot");
|
|
16
59
|
function projectDirFor(cwd, root = transcriptRoot()) {
|
|
17
|
-
return join(root,
|
|
60
|
+
return join(projectsRoot(root), encodeProjectDir(cwd));
|
|
18
61
|
}
|
|
19
62
|
__name(projectDirFor, "projectDirFor");
|
|
20
63
|
function recordProjectDir(cwd, root = transcriptRoot()) {
|
|
21
64
|
const sidecar = join(projectDirFor(cwd, root), CWD_SIDECAR);
|
|
22
65
|
try {
|
|
23
|
-
|
|
24
|
-
recursive: true
|
|
25
|
-
});
|
|
66
|
+
ensureSecureDir(sidecar);
|
|
26
67
|
writeFileSync(sidecar, `${cwd}
|
|
27
68
|
`, "utf8");
|
|
28
69
|
} catch {
|
|
@@ -31,7 +72,7 @@ function recordProjectDir(cwd, root = transcriptRoot()) {
|
|
|
31
72
|
__name(recordProjectDir, "recordProjectDir");
|
|
32
73
|
function resolveProjectDir(encodedName, root = transcriptRoot()) {
|
|
33
74
|
try {
|
|
34
|
-
const raw = readFileSync(join(root,
|
|
75
|
+
const raw = readFileSync(join(projectsRoot(root), encodedName, CWD_SIDECAR), "utf8");
|
|
35
76
|
const cwd = raw.trim();
|
|
36
77
|
return cwd.length > 0 ? cwd : void 0;
|
|
37
78
|
} catch {
|
|
@@ -46,9 +87,7 @@ __name(projectDirMatches, "projectDirMatches");
|
|
|
46
87
|
|
|
47
88
|
// src/session/session-pointer.ts
|
|
48
89
|
import { readFileSync as readFileSync2 } from "fs";
|
|
49
|
-
import { mkdirSync as mkdirSync2 } from "fs";
|
|
50
90
|
import { join as join2 } from "path";
|
|
51
|
-
import { dirname as dirname2 } from "path";
|
|
52
91
|
import { atomicWriteText, transcriptRoot as transcriptRoot2 } from "@theokit/sdk/persistence";
|
|
53
92
|
var POINTER = "last-session";
|
|
54
93
|
function sessionPointerPath(cwd, root = transcriptRoot2()) {
|
|
@@ -73,9 +112,7 @@ __name(loadOrCreateSessionId, "loadOrCreateSessionId");
|
|
|
73
112
|
async function persistSessionId(cwd, sessionId, root = transcriptRoot2()) {
|
|
74
113
|
const target = sessionPointerPath(cwd, root);
|
|
75
114
|
try {
|
|
76
|
-
|
|
77
|
-
recursive: true
|
|
78
|
-
});
|
|
115
|
+
ensureSecureDir(target);
|
|
79
116
|
await atomicWriteText(target, `${sessionId}
|
|
80
117
|
`);
|
|
81
118
|
return {
|
|
@@ -90,15 +127,16 @@ async function persistSessionId(cwd, sessionId, root = transcriptRoot2()) {
|
|
|
90
127
|
__name(persistSessionId, "persistSessionId");
|
|
91
128
|
|
|
92
129
|
// src/session/session-lifecycle.ts
|
|
93
|
-
var SessionInUseError = class extends
|
|
130
|
+
var SessionInUseError = class extends TheokitAgentError2 {
|
|
94
131
|
static {
|
|
95
132
|
__name(this, "SessionInUseError");
|
|
96
133
|
}
|
|
97
134
|
sessionId;
|
|
98
135
|
reason;
|
|
136
|
+
registryRemoved;
|
|
99
137
|
name = "SessionInUseError";
|
|
100
|
-
constructor(sessionId, reason) {
|
|
101
|
-
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;
|
|
102
140
|
}
|
|
103
141
|
};
|
|
104
142
|
function listSessions(cwd, root = transcriptRoot3()) {
|
|
@@ -156,12 +194,32 @@ function readPointer(cwd, root) {
|
|
|
156
194
|
}
|
|
157
195
|
}
|
|
158
196
|
__name(readPointer, "readPointer");
|
|
159
|
-
function deleteSession(sessionId, options) {
|
|
197
|
+
async function deleteSession(sessionId, options) {
|
|
160
198
|
const root = options.root ?? transcriptRoot3();
|
|
161
199
|
if (options.force !== true) {
|
|
162
200
|
const reason = protectedTranscripts(options.cwd, root).get(sessionId);
|
|
163
201
|
if (reason !== void 0) throw new SessionInUseError(sessionId, reason);
|
|
164
202
|
}
|
|
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
|
+
}
|
|
222
|
+
}
|
|
165
223
|
let transcriptRemoved = false;
|
|
166
224
|
try {
|
|
167
225
|
rmSync(transcriptPath(root, options.cwd, sessionId));
|
|
@@ -169,58 +227,82 @@ function deleteSession(sessionId, options) {
|
|
|
169
227
|
} catch {
|
|
170
228
|
}
|
|
171
229
|
return {
|
|
172
|
-
registryRemoved
|
|
173
|
-
transcriptRemoved
|
|
230
|
+
registryRemoved,
|
|
231
|
+
transcriptRemoved,
|
|
232
|
+
registryError
|
|
174
233
|
};
|
|
175
234
|
}
|
|
176
235
|
__name(deleteSession, "deleteSession");
|
|
177
236
|
function forkBeforeUserTurn(srcId, newId, nth, options) {
|
|
178
237
|
if (!Number.isInteger(nth) || nth < 1) {
|
|
179
|
-
throw new
|
|
238
|
+
throw new TheokitAgentError2(`forkBeforeUserTurn: \`nth\` counts user turns from 1, received ${String(nth)}.`);
|
|
180
239
|
}
|
|
181
240
|
if (srcId === newId) {
|
|
182
|
-
throw new
|
|
241
|
+
throw new TheokitAgentError2(`forkBeforeUserTurn: srcId and newId must differ \u2014 forking "${srcId}" onto itself would truncate the source transcript in place.`);
|
|
183
242
|
}
|
|
184
243
|
const root = options.root ?? transcriptRoot3();
|
|
185
244
|
const src = transcriptPath(root, options.cwd, srcId);
|
|
186
245
|
const dst = transcriptPath(root, options.cwd, newId);
|
|
187
|
-
const
|
|
188
|
-
if (
|
|
189
|
-
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.`);
|
|
190
249
|
}
|
|
250
|
+
const selected = turns[nth - 1];
|
|
191
251
|
forkTranscript(src, dst, {
|
|
192
|
-
beforeRecordIndex:
|
|
252
|
+
beforeRecordIndex: selected.index,
|
|
193
253
|
liveSessionPaths: [
|
|
194
254
|
...protectedTranscripts(options.cwd, root).keys()
|
|
195
255
|
].map((id) => transcriptPath(root, options.cwd, id))
|
|
196
256
|
});
|
|
197
257
|
return {
|
|
198
258
|
transcript: dst,
|
|
199
|
-
recordIndex
|
|
259
|
+
recordIndex: selected.index,
|
|
260
|
+
selectedText: selected.text
|
|
200
261
|
};
|
|
201
262
|
}
|
|
202
263
|
__name(forkBeforeUserTurn, "forkBeforeUserTurn");
|
|
203
|
-
|
|
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) {
|
|
204
277
|
const records = loadJsonl(src);
|
|
205
|
-
let
|
|
206
|
-
for (
|
|
207
|
-
if (
|
|
208
|
-
|
|
209
|
-
|
|
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
|
+
}
|
|
210
284
|
}
|
|
211
|
-
|
|
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
|
+
});
|
|
292
|
+
}
|
|
293
|
+
return turns;
|
|
212
294
|
}
|
|
213
|
-
__name(
|
|
295
|
+
__name(reachableUserTurns, "reachableUserTurns");
|
|
214
296
|
|
|
215
297
|
// src/session/gc/transcript-gc.ts
|
|
216
298
|
import { rmSync as rmSync2 } from "fs";
|
|
217
|
-
import { TheokitAgentError as
|
|
299
|
+
import { TheokitAgentError as TheokitAgentError3 } from "@theokit/sdk/errors";
|
|
218
300
|
import { transcriptPath as transcriptPath2, transcriptRoot as transcriptRoot4 } from "@theokit/sdk/persistence";
|
|
219
301
|
var FLOOR = {
|
|
220
302
|
keepLast: 1,
|
|
221
303
|
maxAgeDays: 1
|
|
222
304
|
};
|
|
223
|
-
var GCProtectionUnavailableError = class extends
|
|
305
|
+
var GCProtectionUnavailableError = class extends TheokitAgentError3 {
|
|
224
306
|
static {
|
|
225
307
|
__name(this, "GCProtectionUnavailableError");
|
|
226
308
|
}
|
|
@@ -234,7 +316,7 @@ var GCProtectionUnavailableError = class extends TheokitAgentError2 {
|
|
|
234
316
|
}), this.reason = reason;
|
|
235
317
|
}
|
|
236
318
|
};
|
|
237
|
-
var GCFloorError = class extends
|
|
319
|
+
var GCFloorError = class extends TheokitAgentError3 {
|
|
238
320
|
static {
|
|
239
321
|
__name(this, "GCFloorError");
|
|
240
322
|
}
|
|
@@ -317,7 +399,7 @@ function planTranscriptGC(options) {
|
|
|
317
399
|
};
|
|
318
400
|
}
|
|
319
401
|
__name(planTranscriptGC, "planTranscriptGC");
|
|
320
|
-
function runTranscriptGC(plan, options) {
|
|
402
|
+
async function runTranscriptGC(plan, options) {
|
|
321
403
|
const removed = [];
|
|
322
404
|
const errors = [];
|
|
323
405
|
const protectedNow = options.apply ? resolveProtection(protectedTranscripts(plan.cwd, plan.root), options.protectedIds) : /* @__PURE__ */ new Map();
|
|
@@ -327,6 +409,17 @@ function runTranscriptGC(plan, options) {
|
|
|
327
409
|
removed.push(candidate.id);
|
|
328
410
|
continue;
|
|
329
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
|
+
}
|
|
330
423
|
try {
|
|
331
424
|
rmSync2(transcriptPath2(plan.root, plan.cwd, candidate.id));
|
|
332
425
|
removed.push(candidate.id);
|
|
@@ -348,10 +441,204 @@ function runTranscriptGC(plan, options) {
|
|
|
348
441
|
};
|
|
349
442
|
}
|
|
350
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");
|
|
351
635
|
export {
|
|
352
636
|
GCFloorError,
|
|
353
637
|
GCProtectionUnavailableError,
|
|
638
|
+
LivenessBudgetError,
|
|
354
639
|
SessionInUseError,
|
|
640
|
+
SessionRegistryRemoverError,
|
|
641
|
+
classifyProjects,
|
|
355
642
|
deleteSession,
|
|
356
643
|
forkBeforeUserTurn,
|
|
357
644
|
listSessions,
|
|
@@ -360,10 +647,12 @@ export {
|
|
|
360
647
|
planTranscriptGC,
|
|
361
648
|
projectDirFor,
|
|
362
649
|
projectDirMatches,
|
|
650
|
+
projectsRoot,
|
|
363
651
|
protectedTranscripts,
|
|
364
652
|
recordProjectDir,
|
|
365
653
|
resolveProjectDir,
|
|
366
654
|
runTranscriptGC,
|
|
367
|
-
sessionPointerPath
|
|
655
|
+
sessionPointerPath,
|
|
656
|
+
transcriptRootHint
|
|
368
657
|
};
|
|
369
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","projectDirFor","cwd","root","transcriptRoot","join","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","SessionInUseError","TheokitAgentError","name","sessionId","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","transcriptRemoved","rmSync","transcriptPath","registryRemoved","removeFromRegistry","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/testing.d.ts
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { AgentOutputEvent } from '@theokit/presenter';
|
|
2
2
|
import { WireChunk } from '@theokit/presenter/wire';
|
|
3
|
-
import { A as AgentDefinition } from './define-agent-
|
|
3
|
+
import { A as AgentDefinition } from './define-agent-BO5QSjV8.js';
|
|
4
4
|
import '@theokit/sdk';
|
|
5
5
|
import 'zod';
|
|
6
|
+
import './agent-compiler-CIPQkehU.js';
|
|
6
7
|
import '@theokit/sdk/errors';
|
|
7
8
|
import './hook-handlers-Cw2FsnE5.js';
|
|
8
9
|
|
package/dist/tools.d.ts
CHANGED
|
@@ -1 +1,55 @@
|
|
|
1
1
|
export { CatastrophicCommandError, CommandPolicy, ContextMatchError, ContextMatchReason, CreateApplyPatchToolOptions, CreateBraveWebSearchAdapterOptions, CreateCurrentTimeToolOptions, CreateEditFileToolOptions, CreateGenericHttpSearchAdapterOptions, CreateGitDiffToolOptions, CreateGitStatusToolOptions, CreateGlobToolOptions, CreateInteractiveShellToolOptions, CreateListDirToolOptions, CreateReadFileToolOptions, CreateRunVitestToolOptions, CreateSearchTextToolOptions, CreateShellToolOptions, CreateWebFetchToolOptions, CreateWebSearchToolOptions, CreateWriteFileToolOptions, DEFAULT_TOOL_GUIDANCE, EnvContextOptions, PlanModeTool, PlanModeToolOptions, PlanModeToolWithStore, PlanNode, QuestionTool, QuestionToolOptions, ReadTracker, ReasoningTools, RedirectBlockedError, RepoMapOptions, ResolveAndScreenOptions, ScreenedFetchOptions, SessionArtifactStore, SessionArtifactStoreOptions, SsrfBlockedError, TodoItem, TodolistTool, ToolGuidanceMap, TruncationMode, TruncationOptions, TruncationResult, VitestSummary, WebSearchCallback, WebSearchResult, buildEnvContext, buildRepoMap, catastrophicShellReason, commandDenialReason, createApplyPatchTool, createBraveWebSearchAdapter, createCurrentTimeTool, createEditFileTool, createGenericHttpSearchAdapter, createGitDiffTool, createGitStatusTool, createGlobTool, createInteractiveShellTool, createListDirTool, createPlanModeTool, createQuestionTool, createReadFileTool, createRunVitestTool, createSearchTextTool, createSessionArtifactStore, createShellTool, createTodolistTool, createUpdatePlanTool, createWebFetchTool, createWebSearchTool, createWriteFileTool, createWriteStdinTool, denyCatastrophicCommands, formatCode, formatDiff, formatError, formatFileList, injectGuidance, isBlockedIp, isCommandAllowed, renderToolList, replaceUnique, resolveAndScreen, screenedFetch, todoItemsToPlanNodes, truncateOutput, withDefaultGuidance, withDescription, withName, withShellExitGuidance, withToolResultGuidance } from '@theokit/sdk-tools';
|
|
2
|
+
import * as _theokit_sdk from '@theokit/sdk';
|
|
3
|
+
import { TheokitAgentError } from '@theokit/sdk/errors';
|
|
4
|
+
import { D as DelegationTarget, a as DelegateOptions } from './delegation-scoring-CDvtrYKd.js';
|
|
5
|
+
import '@theokit/sdk/retry';
|
|
6
|
+
import './agent-compiler-CIPQkehU.js';
|
|
7
|
+
import 'zod';
|
|
8
|
+
import './hook-handlers-Cw2FsnE5.js';
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* A roster misconfiguration — always raised at factory time, never at the model's first call.
|
|
12
|
+
*
|
|
13
|
+
* The distinction is the point. `delegate()` refuses an empty `apiKey` deep in its own call stack,
|
|
14
|
+
* so a factory that forwards `{}` fails only when the model first reaches for the tool — by which
|
|
15
|
+
* point the failure is a tool error the model will try to reason about, rather than a startup error
|
|
16
|
+
* a human can read.
|
|
17
|
+
*/
|
|
18
|
+
declare class DelegateToolConfigError extends TheokitAgentError {
|
|
19
|
+
readonly code: 'empty_roster' | 'duplicate_name' | 'missing_api_key' | 'unknown_agent';
|
|
20
|
+
readonly name = "DelegateToolConfigError";
|
|
21
|
+
constructor(message: string, code: 'empty_roster' | 'duplicate_name' | 'missing_api_key' | 'unknown_agent');
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* One delegation target, named.
|
|
25
|
+
*
|
|
26
|
+
* The name is carried here rather than read off the target because `DelegationPort` is `{run}` and
|
|
27
|
+
* has no name to read — pairing them keeps a type guard out of every use site.
|
|
28
|
+
*/
|
|
29
|
+
interface DelegateRosterEntry {
|
|
30
|
+
readonly name: string;
|
|
31
|
+
readonly target: DelegationTarget;
|
|
32
|
+
}
|
|
33
|
+
interface CreateDelegateToolOptions {
|
|
34
|
+
/** Who the agent may delegate to. Must be non-empty and free of duplicate names. */
|
|
35
|
+
readonly roster: readonly DelegateRosterEntry[];
|
|
36
|
+
/** Forwarded to `delegate()` verbatim. `apiKey` is required when any target is a `SubAgentSpec`. */
|
|
37
|
+
readonly defaults?: DelegateOptions;
|
|
38
|
+
/** Defaults to `delegate`. Override when an app already exposes a tool by that name. */
|
|
39
|
+
readonly name?: string;
|
|
40
|
+
/** Defaults to a description naming the roster. Override to describe the roster's semantics. */
|
|
41
|
+
readonly description?: string;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Build a tool that lets the agent delegate a task to one of `roster`.
|
|
45
|
+
*
|
|
46
|
+
* Recursion is bounded by BUDGET, not by depth — a sub-agent holding this same tool may delegate
|
|
47
|
+
* again, and `delegate()` clamps the parent's remaining budget into each child. That guarantee is
|
|
48
|
+
* conditional on the caller supplying `budget` / `parentBudgetRemaining` in `defaults`; both are
|
|
49
|
+
* optional in `DelegateOptions`, and with neither set nothing at this layer bounds the descent.
|
|
50
|
+
* Stated rather than fixed: a depth counter here would be a second owner of a rule `delegate()`
|
|
51
|
+
* already owns.
|
|
52
|
+
*/
|
|
53
|
+
declare function createDelegateTool(options: CreateDelegateToolOptions): _theokit_sdk.CustomTool;
|
|
54
|
+
|
|
55
|
+
export { type CreateDelegateToolOptions, type DelegateRosterEntry, DelegateToolConfigError, createDelegateTool };
|