@theokit/agents 13.0.0-next.0 → 13.0.0-next.10
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 +283 -0
- package/dist/{agent-compiler-uhleFZj_.d.ts → agent-compiler-CvYfM-0t.d.ts} +63 -2
- package/dist/{bridge-entry-Dqd1t8oL.d.ts → bridge-entry-B3BRB3e_.d.ts} +60 -5
- package/dist/bridge.d.ts +5 -4
- package/dist/bridge.js +7 -3
- package/dist/{chunk-OAQEWLQJ.js → chunk-43O2CCZR.js} +19 -1
- package/dist/chunk-43O2CCZR.js.map +1 -0
- package/dist/{chunk-HU6ZUKDK.js → chunk-6YJIXBMA.js} +12 -3
- package/dist/chunk-6YJIXBMA.js.map +1 -0
- package/dist/{chunk-GHRHJPJS.js → chunk-FXQF7LS3.js} +178 -130
- package/dist/chunk-FXQF7LS3.js.map +1 -0
- package/dist/config.d.ts +20 -7
- package/dist/config.js +36 -16
- package/dist/config.js.map +1 -1
- package/dist/{define-agent-BL3jMyJi.d.ts → define-agent-Dp6e7chT.d.ts} +12 -152
- package/dist/{delegation-scoring--OiOTcAW.d.ts → delegation-scoring-BZdtCdMN.d.ts} +1 -1
- package/dist/index.d.ts +20 -10
- package/dist/index.js +15 -3
- package/dist/index.js.map +1 -1
- package/dist/persistence.js.map +1 -1
- package/dist/session.d.ts +113 -33
- package/dist/session.js +118 -45
- package/dist/session.js.map +1 -1
- package/dist/setting-sources-gate-tadmHT0c.d.ts +181 -0
- package/dist/testing.d.ts +3 -2
- package/dist/testing.js +1 -1
- package/dist/tools.d.ts +3 -2
- package/dist/tools.js +2 -2
- package/package.json +3 -3
- package/dist/chunk-GHRHJPJS.js.map +0 -1
- package/dist/chunk-HU6ZUKDK.js.map +0 -1
- package/dist/chunk-OAQEWLQJ.js.map +0 -1
package/dist/session.js
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
} from "./chunk-Z4QWC7IK.js";
|
|
7
7
|
|
|
8
8
|
// src/session/session-lifecycle.ts
|
|
9
|
-
import { readFileSync as readFileSync3, readdirSync, rmSync, statSync } from "fs";
|
|
9
|
+
import { closeSync, openSync, readFileSync as readFileSync3, readdirSync, readSync, rmSync, statSync } from "fs";
|
|
10
10
|
import { join as join3 } from "path";
|
|
11
11
|
import { TheokitAgentError as TheokitAgentError2 } from "@theokit/sdk/errors";
|
|
12
12
|
import { classifySessionArtifact, forkTranscript, loadJsonl, sessionHasWriter, transcriptPath, transcriptRoot as transcriptRoot3 } from "@theokit/sdk/persistence";
|
|
@@ -133,12 +133,22 @@ var SessionInUseError = class extends TheokitAgentError2 {
|
|
|
133
133
|
}
|
|
134
134
|
sessionId;
|
|
135
135
|
reason;
|
|
136
|
-
|
|
136
|
+
registryOutcome;
|
|
137
137
|
name = "SessionInUseError";
|
|
138
|
-
constructor(sessionId, reason,
|
|
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.` + (
|
|
138
|
+
constructor(sessionId, reason, registryOutcome) {
|
|
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.` + registryNote(registryOutcome)), this.sessionId = sessionId, this.reason = reason, this.registryOutcome = registryOutcome;
|
|
140
140
|
}
|
|
141
141
|
};
|
|
142
|
+
function registryNote(outcome) {
|
|
143
|
+
if (outcome === "removed") {
|
|
144
|
+
return ` The registry entry was already removed before this was noticed \u2014 do not retry that half, only the transcript.`;
|
|
145
|
+
}
|
|
146
|
+
if (outcome === "unconfirmed") {
|
|
147
|
+
return ` The registry removal was already attempted and reported nothing, so whether the entry is gone is unknown \u2014 verify it before retrying.`;
|
|
148
|
+
}
|
|
149
|
+
return "";
|
|
150
|
+
}
|
|
151
|
+
__name(registryNote, "registryNote");
|
|
142
152
|
function listSessions(cwd, root = transcriptRoot3()) {
|
|
143
153
|
const dir = projectDirFor(cwd, root);
|
|
144
154
|
let entries;
|
|
@@ -161,8 +171,10 @@ function listSessions(cwd, root = transcriptRoot3()) {
|
|
|
161
171
|
}
|
|
162
172
|
const kind = classifySessionArtifact(entry, isDirectory);
|
|
163
173
|
if (kind !== "transcript") continue;
|
|
174
|
+
const id = sessionIdOf(path);
|
|
164
175
|
found.push({
|
|
165
|
-
id
|
|
176
|
+
id,
|
|
177
|
+
idSource: id === void 0 ? "unavailable" : "transcript",
|
|
166
178
|
transcript: path,
|
|
167
179
|
modifiedAt
|
|
168
180
|
});
|
|
@@ -170,21 +182,48 @@ function listSessions(cwd, root = transcriptRoot3()) {
|
|
|
170
182
|
return found.sort((a, b) => b.modifiedAt.getTime() - a.modifiedAt.getTime());
|
|
171
183
|
}
|
|
172
184
|
__name(listSessions, "listSessions");
|
|
173
|
-
function
|
|
185
|
+
function sessionIdOf(path) {
|
|
186
|
+
let fd;
|
|
187
|
+
try {
|
|
188
|
+
fd = openSync(path, "r");
|
|
189
|
+
const buffer = Buffer.alloc(FIRST_RECORD_BYTES);
|
|
190
|
+
const read = readSync(fd, buffer, 0, FIRST_RECORD_BYTES, 0);
|
|
191
|
+
const newline = buffer.indexOf(10);
|
|
192
|
+
const end = newline === -1 || newline > read ? read : newline;
|
|
193
|
+
const first = JSON.parse(buffer.toString("utf8", 0, end));
|
|
194
|
+
if (typeof first === "object" && first !== null) {
|
|
195
|
+
const id = first.sessionId;
|
|
196
|
+
if (typeof id === "string" && id.length > 0) return id;
|
|
197
|
+
}
|
|
198
|
+
} catch {
|
|
199
|
+
} finally {
|
|
200
|
+
if (fd !== void 0) closeSync(fd);
|
|
201
|
+
}
|
|
202
|
+
return void 0;
|
|
203
|
+
}
|
|
204
|
+
__name(sessionIdOf, "sessionIdOf");
|
|
205
|
+
var FIRST_RECORD_BYTES = 64 * 1024;
|
|
206
|
+
function protectedTranscriptPaths(cwd, root = transcriptRoot3()) {
|
|
174
207
|
const protectedBy = /* @__PURE__ */ new Map();
|
|
175
208
|
const sessions = listSessions(cwd, root);
|
|
176
209
|
const pointer = readPointer(cwd, root);
|
|
177
|
-
if (pointer !== void 0)
|
|
178
|
-
|
|
179
|
-
|
|
210
|
+
if (pointer !== void 0) {
|
|
211
|
+
protectedBy.set(transcriptPath(root, cwd, pointer), "resumable session pointer");
|
|
212
|
+
}
|
|
213
|
+
if (sessions.length > 0 && !protectedBy.has(sessions[0].transcript)) {
|
|
214
|
+
protectedBy.set(sessions[0].transcript, "most recent session");
|
|
180
215
|
}
|
|
181
216
|
for (const session of sessions) {
|
|
182
217
|
const hasWriter = sessionHasWriter(session.transcript);
|
|
183
|
-
if (hasWriter) protectedBy.set(session.
|
|
218
|
+
if (hasWriter) protectedBy.set(session.transcript, "active writer lease");
|
|
184
219
|
}
|
|
185
220
|
return protectedBy;
|
|
186
221
|
}
|
|
187
|
-
__name(
|
|
222
|
+
__name(protectedTranscriptPaths, "protectedTranscriptPaths");
|
|
223
|
+
function transcriptOf(id, cwd, root = transcriptRoot3()) {
|
|
224
|
+
return transcriptPath(root, cwd, id);
|
|
225
|
+
}
|
|
226
|
+
__name(transcriptOf, "transcriptOf");
|
|
188
227
|
function readPointer(cwd, root) {
|
|
189
228
|
try {
|
|
190
229
|
const id = readFileSync3(sessionPointerPath(cwd, root), "utf8").trim();
|
|
@@ -197,27 +236,29 @@ __name(readPointer, "readPointer");
|
|
|
197
236
|
async function deleteSession(sessionId, options) {
|
|
198
237
|
const root = options.root ?? transcriptRoot3();
|
|
199
238
|
if (options.force !== true) {
|
|
200
|
-
const reason =
|
|
239
|
+
const reason = protectedTranscriptPaths(options.cwd, root).get(transcriptOf(sessionId, options.cwd, root));
|
|
201
240
|
if (reason !== void 0) throw new SessionInUseError(sessionId, reason);
|
|
202
241
|
}
|
|
203
|
-
let
|
|
242
|
+
let registryOutcome = "not-attempted";
|
|
204
243
|
let registryError;
|
|
205
244
|
if (options.removeFromRegistry !== void 0) {
|
|
206
245
|
try {
|
|
207
246
|
const outcome = await awaitRegistryRemoval(options.removeFromRegistry(sessionId), sessionId, options.registryTimeoutMs);
|
|
208
|
-
|
|
247
|
+
if (outcome === false) registryOutcome = "nothing-to-remove";
|
|
248
|
+
else if (outcome === void 0) registryOutcome = "unconfirmed";
|
|
249
|
+
else registryOutcome = "removed";
|
|
209
250
|
} catch (error) {
|
|
210
251
|
return {
|
|
211
|
-
|
|
252
|
+
registryOutcome: "failed",
|
|
212
253
|
transcriptRemoved: false,
|
|
213
254
|
registryError: error
|
|
214
255
|
};
|
|
215
256
|
}
|
|
216
257
|
}
|
|
217
258
|
if (options.force !== true) {
|
|
218
|
-
const nowProtected =
|
|
259
|
+
const nowProtected = protectedTranscriptPaths(options.cwd, root).get(transcriptOf(sessionId, options.cwd, root));
|
|
219
260
|
if (nowProtected !== void 0) {
|
|
220
|
-
throw new SessionInUseError(sessionId, nowProtected,
|
|
261
|
+
throw new SessionInUseError(sessionId, nowProtected, registryOutcome);
|
|
221
262
|
}
|
|
222
263
|
}
|
|
223
264
|
let transcriptRemoved = false;
|
|
@@ -227,7 +268,7 @@ async function deleteSession(sessionId, options) {
|
|
|
227
268
|
} catch {
|
|
228
269
|
}
|
|
229
270
|
return {
|
|
230
|
-
|
|
271
|
+
registryOutcome,
|
|
231
272
|
transcriptRemoved,
|
|
232
273
|
registryError
|
|
233
274
|
};
|
|
@@ -251,7 +292,7 @@ function forkBeforeUserTurn(srcId, newId, nth, options) {
|
|
|
251
292
|
forkTranscript(src, dst, {
|
|
252
293
|
beforeRecordIndex: selected.index,
|
|
253
294
|
liveSessionPaths: [
|
|
254
|
-
...
|
|
295
|
+
...protectedTranscriptPaths(options.cwd, root).keys()
|
|
255
296
|
].map((id) => transcriptPath(root, options.cwd, id))
|
|
256
297
|
});
|
|
257
298
|
return {
|
|
@@ -297,7 +338,7 @@ __name(reachableUserTurns, "reachableUserTurns");
|
|
|
297
338
|
// src/session/gc/transcript-gc.ts
|
|
298
339
|
import { rmSync as rmSync2 } from "fs";
|
|
299
340
|
import { TheokitAgentError as TheokitAgentError3 } from "@theokit/sdk/errors";
|
|
300
|
-
import {
|
|
341
|
+
import { transcriptRoot as transcriptRoot4 } from "@theokit/sdk/persistence";
|
|
301
342
|
var FLOOR = {
|
|
302
343
|
keepLast: 1,
|
|
303
344
|
maxAgeDays: 1
|
|
@@ -327,7 +368,7 @@ var GCFloorError = class extends TheokitAgentError3 {
|
|
|
327
368
|
super(`transcript GC: \`${field}\` must be at least ${String(FLOOR[field])}, received ${String(received)}. This is refused rather than clamped: a policy silently replaced by a different one is a policy nobody reviewed.`), this.field = field, this.received = received;
|
|
328
369
|
}
|
|
329
370
|
};
|
|
330
|
-
function resolveProtection(builtin, provider) {
|
|
371
|
+
function resolveProtection(builtin, provider, cwd, root) {
|
|
331
372
|
if (provider === void 0) return builtin;
|
|
332
373
|
let extra;
|
|
333
374
|
try {
|
|
@@ -335,8 +376,9 @@ function resolveProtection(builtin, provider) {
|
|
|
335
376
|
} catch (cause) {
|
|
336
377
|
throw new GCProtectionUnavailableError(cause);
|
|
337
378
|
}
|
|
338
|
-
const union = new Map(
|
|
339
|
-
for (const [id, reason] of
|
|
379
|
+
const union = /* @__PURE__ */ new Map();
|
|
380
|
+
for (const [id, reason] of extra) union.set(transcriptOf(id, cwd, root), reason);
|
|
381
|
+
for (const [path, reason] of builtin) union.set(path, reason);
|
|
340
382
|
return union;
|
|
341
383
|
}
|
|
342
384
|
__name(resolveProtection, "resolveProtection");
|
|
@@ -351,11 +393,11 @@ function planTranscriptGC(options) {
|
|
|
351
393
|
const now = options.now ?? Date.now();
|
|
352
394
|
const cutoff = now - options.maxAgeDays * 864e5;
|
|
353
395
|
const sessions = listSessions(options.cwd, root);
|
|
354
|
-
const protectedBy = resolveProtection(
|
|
396
|
+
const protectedBy = resolveProtection(protectedTranscriptPaths(options.cwd, root), options.protectedIds, options.cwd, root);
|
|
355
397
|
const candidates = [];
|
|
356
398
|
const kept = [];
|
|
357
399
|
for (const [index, session] of sessions.entries()) {
|
|
358
|
-
const protection = protectedBy.get(session.
|
|
400
|
+
const protection = protectedBy.get(session.transcript);
|
|
359
401
|
if (protection !== void 0) {
|
|
360
402
|
kept.push({
|
|
361
403
|
id: session.id,
|
|
@@ -399,33 +441,62 @@ function planTranscriptGC(options) {
|
|
|
399
441
|
};
|
|
400
442
|
}
|
|
401
443
|
__name(planTranscriptGC, "planTranscriptGC");
|
|
444
|
+
async function releaseFromRegistry(candidate, options) {
|
|
445
|
+
if (candidate.id === void 0) {
|
|
446
|
+
return {
|
|
447
|
+
note: {
|
|
448
|
+
id: void 0,
|
|
449
|
+
message: UNNAMEABLE_COLLECTION
|
|
450
|
+
},
|
|
451
|
+
unlink: true
|
|
452
|
+
};
|
|
453
|
+
}
|
|
454
|
+
if (options.removeFromRegistry === void 0) return {
|
|
455
|
+
unlink: true
|
|
456
|
+
};
|
|
457
|
+
try {
|
|
458
|
+
await awaitRegistryRemoval(options.removeFromRegistry(candidate.id), candidate.id, options.registryTimeoutMs);
|
|
459
|
+
return {
|
|
460
|
+
unlink: true
|
|
461
|
+
};
|
|
462
|
+
} catch (error) {
|
|
463
|
+
return {
|
|
464
|
+
note: {
|
|
465
|
+
id: candidate.id,
|
|
466
|
+
message: `registry removal failed, transcript kept: ${error.message}`
|
|
467
|
+
},
|
|
468
|
+
unlink: false
|
|
469
|
+
};
|
|
470
|
+
}
|
|
471
|
+
}
|
|
472
|
+
__name(releaseFromRegistry, "releaseFromRegistry");
|
|
473
|
+
var UNNAMEABLE_COLLECTION = "transcript collected without a registry removal: its session id could not be read, and a fabricated one would name no session";
|
|
474
|
+
function recordRemoval(candidate, removed, orphaned) {
|
|
475
|
+
if (candidate.id === void 0) orphaned.push(candidate.transcript);
|
|
476
|
+
else removed.push(candidate.id);
|
|
477
|
+
}
|
|
478
|
+
__name(recordRemoval, "recordRemoval");
|
|
402
479
|
async function runTranscriptGC(plan, options) {
|
|
403
480
|
const removed = [];
|
|
481
|
+
const orphaned = [];
|
|
404
482
|
const errors = [];
|
|
405
|
-
const protectedNow = options.apply ? resolveProtection(
|
|
483
|
+
const protectedNow = options.apply ? resolveProtection(protectedTranscriptPaths(plan.cwd, plan.root), options.protectedIds, plan.cwd, plan.root) : /* @__PURE__ */ new Map();
|
|
406
484
|
for (const candidate of plan.candidates) {
|
|
407
|
-
if (protectedNow.has(candidate.
|
|
485
|
+
if (protectedNow.has(candidate.transcript)) continue;
|
|
408
486
|
if (!options.apply) {
|
|
409
|
-
|
|
487
|
+
if (candidate.id === void 0) orphaned.push(candidate.transcript);
|
|
488
|
+
else removed.push(candidate.id);
|
|
410
489
|
continue;
|
|
411
490
|
}
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
|
|
415
|
-
} catch (error) {
|
|
416
|
-
errors.push({
|
|
417
|
-
id: candidate.id,
|
|
418
|
-
message: `registry removal failed, transcript kept: ${error.message}`
|
|
419
|
-
});
|
|
420
|
-
continue;
|
|
421
|
-
}
|
|
422
|
-
}
|
|
491
|
+
const registry = await releaseFromRegistry(candidate, options);
|
|
492
|
+
if (registry.note !== void 0) errors.push(registry.note);
|
|
493
|
+
if (!registry.unlink) continue;
|
|
423
494
|
try {
|
|
424
|
-
rmSync2(
|
|
425
|
-
|
|
495
|
+
rmSync2(candidate.transcript);
|
|
496
|
+
recordRemoval(candidate, removed, orphaned);
|
|
426
497
|
} catch (error) {
|
|
427
498
|
if (error.code === "ENOENT") {
|
|
428
|
-
|
|
499
|
+
recordRemoval(candidate, removed, orphaned);
|
|
429
500
|
continue;
|
|
430
501
|
}
|
|
431
502
|
errors.push({
|
|
@@ -437,6 +508,7 @@ async function runTranscriptGC(plan, options) {
|
|
|
437
508
|
return {
|
|
438
509
|
dryRun: !options.apply,
|
|
439
510
|
removed,
|
|
511
|
+
orphaned,
|
|
440
512
|
errors
|
|
441
513
|
};
|
|
442
514
|
}
|
|
@@ -461,13 +533,13 @@ function transcriptRootHint(found, previousRoot, env = process.env) {
|
|
|
461
533
|
__name(transcriptRootHint, "transcriptRootHint");
|
|
462
534
|
|
|
463
535
|
// src/session/thread-history.ts
|
|
464
|
-
import { loadJsonl as loadJsonl2, transcriptPath as
|
|
536
|
+
import { loadJsonl as loadJsonl2, transcriptPath as transcriptPath2, transcriptRoot as transcriptRoot5 } from "@theokit/sdk/persistence";
|
|
465
537
|
var ABSENT = {
|
|
466
538
|
state: "absent",
|
|
467
539
|
messages: []
|
|
468
540
|
};
|
|
469
541
|
function readThreadHistory(sessionId, options) {
|
|
470
|
-
const path =
|
|
542
|
+
const path = transcriptPath2(options.root ?? transcriptRoot5(), options.cwd, sessionId);
|
|
471
543
|
try {
|
|
472
544
|
return {
|
|
473
545
|
state: "present",
|
|
@@ -686,12 +758,13 @@ export {
|
|
|
686
758
|
projectDirFor,
|
|
687
759
|
projectDirMatches,
|
|
688
760
|
projectsRoot,
|
|
689
|
-
|
|
761
|
+
protectedTranscriptPaths,
|
|
690
762
|
readThreadHistory,
|
|
691
763
|
recordProjectDir,
|
|
692
764
|
resolveProjectDir,
|
|
693
765
|
runTranscriptGC,
|
|
694
766
|
sessionPointerPath,
|
|
767
|
+
transcriptOf,
|
|
695
768
|
transcriptRootHint
|
|
696
769
|
};
|
|
697
770
|
//# sourceMappingURL=session.js.map
|
package/dist/session.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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/thread-history.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","loadJsonl","transcriptPath","transcriptRoot","ABSENT","state","messages","readThreadHistory","sessionId","options","path","transcriptPath","root","transcriptRoot","cwd","loadJsonl","err","isNotFound","reason","messageOf","code","Error","message","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"]}
|
|
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/thread-history.ts","../src/session/liveness-oracle.ts"],"mappings":";;;;;;;;AAKA,SAASA,WAAWC,UAAUC,gBAAAA,eAAcC,aAAaC,UAAUC,QAAQC,gBAAgB;AAC3F,SAASC,QAAAA,aAAY;AAErB,SAASC,qBAAAA,0BAAyB;AAClC,SACEC,yBACAC,gBACAC,WACAC,kBACAC,gBACAC,kBAAAA,uBACK;;;ACEP,SAASC,yBAAyB;AAQ3B,IAAMC,8BAAN,cAA0CC,kBAAAA;EA1BjD,OA0BiDA;;;EAC7BC,OAAO;EAChBC;EAET,YAAYA,WAAmBC,WAAmB;AAChD,UACE,uDAAuDD,SAAAA,yCACpCE,OAAOD,SAAAA,CAAAA,8MAEqB;AAEjD,SAAKD,YAAYA;EACnB;AACF;AAeO,IAAMG,8BAA8B;AAE3C,SAASC,WAAWC,OAAc;AAChC,SAAO,OAAQA,OAAuCC,SAAS;AACjE;AAFSF;AAmBT,eAAsBG,qBACpBC,SACAR,WACAC,YAAgCE,6BAA2B;AAE3D,MAAI,CAACC,WAAWI,OAAAA,KAAY,CAACC,OAAOC,SAAST,SAAAA,EAAY,QAAOO;AAChE,MAAIG;AACJ,MAAI;AACF,WAAO,MAAMC,QAAQC,KAAK;MACxBL;MACA,IAAII,QAAe,CAACE,UAAUC,WAAAA;AAC5BJ,gBAAQK,WAAW,MAAA;AACjBD,iBAAO,IAAIlB,4BAA4BG,WAAWC,SAAAA,CAAAA;QACpD,GAAGA,SAAAA;MACL,CAAA;KACD;EACH,UAAA;AACE,QAAIU,UAAUM,OAAWC,cAAaP,KAAAA;EACxC;AACF;AAnBsBJ;;;ACtEtB,SAASY,cAAcC,qBAAqB;AAC5C,SAASC,YAAY;AAErB,SAASC,kBAAkBC,sBAAsB;AAiCjD,IAAMC,cAAc;AAgBb,SAASC,aAAaC,OAAeC,eAAAA,GAAgB;AAC1D,SAAOC,KAAKF,MAAM,UAAA;AACpB;AAFgBD;AAIT,SAASI,cAAcC,KAAaJ,OAAeC,eAAAA,GAAgB;AACxE,SAAOC,KAAKH,aAAaC,IAAAA,GAAOK,iBAAiBD,GAAAA,CAAAA;AACnD;AAFgBD;AAUT,SAASG,iBAAiBF,KAAaJ,OAAeC,eAAAA,GAAgB;AAC3E,QAAMM,UAAUL,KAAKC,cAAcC,KAAKJ,IAAAA,GAAOF,WAAAA;AAC/C,MAAI;AAQFU,oBAAgBD,OAAAA;AAChBE,kBAAcF,SAAS,GAAGH,GAAAA;GAAS,MAAA;EACrC,QAAQ;EAGR;AACF;AAhBgBE;AAyBT,SAASI,kBACdC,aACAX,OAAeC,eAAAA,GAAgB;AAE/B,MAAI;AACF,UAAMW,MAAMC,aAAaX,KAAKH,aAAaC,IAAAA,GAAOW,aAAab,WAAAA,GAAc,MAAA;AAC7E,UAAMM,MAAMQ,IAAIE,KAAI;AACpB,WAAOV,IAAIW,SAAS,IAAIX,MAAMY;EAChC,QAAQ;AACN,WAAOA;EACT;AACF;AAXgBN;AAqBT,SAASO,kBAAkBN,aAAqBP,KAAW;AAChE,SAAOC,iBAAiBD,GAAAA,MAASO;AACnC;AAFgBM;;;AChHhB,SAASC,gBAAAA,qBAAoB;AAC7B,SAASC,QAAAA,aAAY;AAErB,SAASC,iBAAiBC,kBAAAA,uBAAsB;AA2BhD,IAAMC,UAAU;AAGT,SAASC,mBAAmBC,KAAaC,OAAeC,gBAAAA,GAAgB;AAC7E,SAAOC,MAAKC,cAAcJ,KAAKC,IAAAA,GAAOH,OAAAA;AACxC;AAFgBC;AAeT,SAASM,sBACdL,KACAM,QACAL,OAAeC,gBAAAA,GAAgB;AAE/B,MAAI;AACF,UAAMK,WAAWC,cAAaT,mBAAmBC,KAAKC,IAAAA,GAAO,MAAA,EAAQQ,KAAI;AACzE,QAAIF,SAASG,SAAS,EAAG,QAAO;MAAEC,WAAWJ;MAAUK,SAAS;IAAK;EACvE,QAAQ;EAER;AACA,SAAO;IAAED,WAAWL,OAAAA;IAAUM,SAAS;EAAM;AAC/C;AAZgBP;AAiChB,eAAsBQ,iBACpBb,KACAW,WACAV,OAAeC,gBAAAA,GAAgB;AAE/B,QAAMY,SAASf,mBAAmBC,KAAKC,IAAAA;AACvC,MAAI;AAMFc,oBAAgBD,MAAAA;AAIhB,UAAOE,gBAA+DF,QAAQ,GAAGH,SAAAA;CAAa;AAC9F,WAAO;MAAEM,WAAW;IAAK;EAC3B,QAAQ;AACN,WAAO;MAAEA,WAAW;IAAM;EAC5B;AACF;AArBsBJ;;;AH7Bf,IAAMK,oBAAN,cAAgCC,mBAAAA;EAzDvC,OAyDuCA;;;;;;EACnBC,OAAO;EAEzB,YACWC,WAEAC,QAaAC,iBACT;AACA,UACE,YAAYF,SAAAA,mBAA4BC,MAAAA,yHAEtCE,aAAaD,eAAAA,CAAAA,GAAAA,KApBRF,YAAAA,WAAAA,KAEAC,SAAAA,QAAAA,KAaAC,kBAAAA;EAOX;AACF;AAGA,SAASC,aAAaC,SAAoC;AACxD,MAAIA,YAAY,WAAW;AACzB,WAAO;EACT;AACA,MAAIA,YAAY,eAAe;AAC7B,WAAO;EACT;AACA,SAAO;AACT;AARSD;AAiCF,SAASE,aAAaC,KAAaC,OAAeC,gBAAAA,GAAgB;AACvE,QAAMC,MAAMC,cAAcJ,KAAKC,IAAAA;AAC/B,MAAII;AACJ,MAAI;AACFA,cAAUC,YAAYH,GAAAA;EACxB,QAAQ;AACN,WAAO,CAAA;EACT;AAEA,QAAMI,QAA0B,CAAA;AAChC,aAAWC,SAASH,SAAS;AAC3B,UAAMI,OAAOC,MAAKP,KAAKK,KAAAA;AACvB,QAAIG;AACJ,QAAIC;AACJ,QAAI;AACF,YAAMC,QAAQC,SAASL,IAAAA;AACvBE,oBAAcE,MAAMF,YAAW;AAC/BC,mBAAaC,MAAME;IACrB,QAAQ;AACN;IACF;AAWA,UAAMC,OAAQC,wBACZT,OACAG,WAAAA;AAEF,QAAIK,SAAS,aAAc;AAC3B,UAAME,KAAKC,YAAYV,IAAAA;AACvBF,UAAMa,KAAK;MACTF;MACAG,UAAUH,OAAOI,SAAY,gBAAgB;MAC7CC,YAAYd;MACZG;IACF,CAAA;EACF;AACA,SAAOL,MAAMiB,KAAK,CAACC,GAAGC,MAAMA,EAAEd,WAAWe,QAAO,IAAKF,EAAEb,WAAWe,QAAO,CAAA;AAC3E;AA7CgB5B;AAoEhB,SAASoB,YAAYV,MAAY;AAC/B,MAAImB;AACJ,MAAI;AACFA,SAAKC,SAASpB,MAAM,GAAA;AACpB,UAAMqB,SAASC,OAAOC,MAAMC,kBAAAA;AAC5B,UAAMC,OAAOC,SAASP,IAAIE,QAAQ,GAAGG,oBAAoB,CAAA;AACzD,UAAMG,UAAUN,OAAOO,QAAQ,EAAA;AAC/B,UAAMC,MAAMF,YAAY,MAAMA,UAAUF,OAAOA,OAAOE;AACtD,UAAMG,QAAiBC,KAAKC,MAAMX,OAAOY,SAAS,QAAQ,GAAGJ,GAAAA,CAAAA;AAC7D,QAAI,OAAOC,UAAU,YAAYA,UAAU,MAAM;AAC/C,YAAMrB,KAAMqB,MAAkC7C;AAC9C,UAAI,OAAOwB,OAAO,YAAYA,GAAGyB,SAAS,EAAG,QAAOzB;IACtD;EACF,QAAQ;EAER,UAAA;AACE,QAAIU,OAAON,OAAWsB,WAAUhB,EAAAA;EAClC;AACA,SAAON;AACT;AAnBSH;AAqBT,IAAMc,qBAAqB,KAAK;AAyBzB,SAASY,yBACd7C,KACAC,OAAeC,gBAAAA,GAAgB;AAE/B,QAAM4C,cAAc,oBAAIC,IAAAA;AACxB,QAAMC,WAAWjD,aAAaC,KAAKC,IAAAA;AAEnC,QAAMgD,UAAUC,YAAYlD,KAAKC,IAAAA;AACjC,MAAIgD,YAAY3B,QAAW;AACzBwB,gBAAYK,IAAIC,eAAenD,MAAMD,KAAKiD,OAAAA,GAAU,2BAAA;EACtD;AAIA,MAAID,SAASL,SAAS,KAAK,CAACG,YAAYO,IAAIL,SAAS,CAAA,EAAGzB,UAAU,GAAG;AACnEuB,gBAAYK,IAAIH,SAAS,CAAA,EAAGzB,YAAY,qBAAA;EAC1C;AAEA,aAAW+B,WAAWN,UAAU;AAG9B,UAAMO,YAAaC,iBAA4CF,QAAQ/B,UAAU;AACjF,QAAIgC,UAAWT,aAAYK,IAAIG,QAAQ/B,YAAY,qBAAA;EACrD;AACA,SAAOuB;AACT;AAzBgBD;AAmCT,SAASY,aAAavC,IAAYlB,KAAaC,OAAeC,gBAAAA,GAAgB;AACnF,SAAOkD,eAAenD,MAAMD,KAAKkB,EAAAA;AACnC;AAFgBuC;AAKhB,SAASP,YAAYlD,KAAaC,MAAY;AAC5C,MAAI;AACF,UAAMiB,KAAKwC,cAAaC,mBAAmB3D,KAAKC,IAAAA,GAAO,MAAA,EAAQ2D,KAAI;AACnE,WAAO1C,GAAGyB,SAAS,IAAIzB,KAAKI;EAC9B,QAAQ;AACN,WAAOA;EACT;AACF;AAPS4B;AAmGT,eAAsBW,cACpBnE,WACAoE,SAA6B;AAE7B,QAAM7D,OAAO6D,QAAQ7D,QAAQC,gBAAAA;AAC7B,MAAI4D,QAAQC,UAAU,MAAM;AAG1B,UAAMpE,SAASkD,yBAAyBiB,QAAQ9D,KAAKC,IAAAA,EAAM+D,IACzDP,aAAa/D,WAAWoE,QAAQ9D,KAAKC,IAAAA,CAAAA;AAEvC,QAAIN,WAAW2B,OAAW,OAAM,IAAI/B,kBAAkBG,WAAWC,MAAAA;EACnE;AAsBA,MAAIC,kBAAmC;AACvC,MAAIqE;AACJ,MAAIH,QAAQI,uBAAuB5C,QAAW;AAC5C,QAAI;AAIF,YAAMxB,UAAU,MAAMqE,qBACpBL,QAAQI,mBAAmBxE,SAAAA,GAC3BA,WACAoE,QAAQM,iBAAiB;AAM3B,UAAItE,YAAY,MAAOF,mBAAkB;eAChCE,YAAYwB,OAAW1B,mBAAkB;UAC7CA,mBAAkB;IACzB,SAASyE,OAAO;AAGd,aAAO;QAAEzE,iBAAiB;QAAU0E,mBAAmB;QAAOL,eAAeI;MAAM;IACrF;EACF;AAgBA,MAAIP,QAAQC,UAAU,MAAM;AAC1B,UAAMQ,eAAe1B,yBAAyBiB,QAAQ9D,KAAKC,IAAAA,EAAM+D,IAC/DP,aAAa/D,WAAWoE,QAAQ9D,KAAKC,IAAAA,CAAAA;AAEvC,QAAIsE,iBAAiBjD,QAAW;AAC9B,YAAM,IAAI/B,kBAAkBG,WAAW6E,cAAc3E,eAAAA;IACvD;EACF;AAEA,MAAI0E,oBAAoB;AACxB,MAAI;AACFE,WAAOpB,eAAenD,MAAM6D,QAAQ9D,KAAKN,SAAAA,CAAAA;AACzC4E,wBAAoB;EACtB,QAAQ;EAER;AAEA,SAAO;IAAE1E;IAAiB0E;IAAmBL;EAAc;AAC7D;AA5FsBJ;AAuGf,SAASY,mBACdC,OACAC,OACAC,KACAd,SAAyD;AAEzD,MAAI,CAACe,OAAOC,UAAUF,GAAAA,KAAQA,MAAM,GAAG;AACrC,UAAM,IAAIpF,mBACR,kEAAkEuF,OAAOH,GAAAA,CAAAA,GAAO;EAEpF;AAIA,MAAIF,UAAUC,OAAO;AACnB,UAAM,IAAInF,mBACR,mEAA8DkF,KAAAA,8DAClB;EAEhD;AACA,QAAMzE,OAAO6D,QAAQ7D,QAAQC,gBAAAA;AAC7B,QAAM8E,MAAM5B,eAAenD,MAAM6D,QAAQ9D,KAAK0E,KAAAA;AAC9C,QAAMO,MAAM7B,eAAenD,MAAM6D,QAAQ9D,KAAK2E,KAAAA;AAE9C,QAAMO,QAAQC,mBAAmBH,GAAAA;AAGjC,MAAIJ,MAAMM,MAAMvC,QAAQ;AACtB,UAAM,IAAInD,mBACR,gCAAgCkF,KAAAA,SAAcK,OAAOG,MAAMvC,MAAM,CAAA,oCACpDoC,OAAOH,GAAAA,CAAAA,+LAEuB;EAE/C;AACA,QAAMQ,WAAWF,MAAMN,MAAM,CAAA;AAK7BS,iBAAeL,KAAKC,KAAK;IACvBK,mBAAmBF,SAASG;IAC5BC,kBAAkB;SAAI3C,yBAAyBiB,QAAQ9D,KAAKC,IAAAA,EAAMwF,KAAI;MAAIC,IAAI,CAACxE,OAC7EkC,eAAenD,MAAM6D,QAAQ9D,KAAKkB,EAAAA,CAAAA;EAEtC,CAAA;AAIA,SAAO;IAAEK,YAAY0D;IAAKU,aAAaP,SAASG;IAAOK,cAAcR,SAASS;EAAK;AACrF;AAlDgBpB;AAoEhB,IAAMqB,2BAA2B;AAQjC,SAASC,aAAaC,QAAwB;AAC5C,UAAQA,OAAOC,SAASC,WAAW,CAAA,GAChCC,OAAO,CAACC,UAAUA,MAAMC,SAAS,MAAA,EACjCX,IAAI,CAACU,UAAUA,MAAMP,QAAQ,EAAA,EAC7BnF,KAAK,EAAA;AACV;AALSqF;AAOT,SAASO,kBAAkBN,QAAwB;AACjD,MAAIA,OAAOK,SAAS,OAAQ,QAAO;AACnC,QAAMR,OAAOE,aAAaC,MAAAA;AAC1B,MAAIH,KAAKlD,WAAW,EAAG,QAAO;AAC9B,SAAO,CAACkD,KAAKU,WAAWT,wBAAAA;AAC1B;AALSQ;AAQT,SAASnB,mBAAmBH,KAAW;AAKrC,QAAMwB,UAAUC,UAA4BzB,GAAAA;AAI5C,MAAI0B,QAAQ;AACZ,WAASC,IAAIH,QAAQ7D,SAAS,GAAGgE,KAAK,GAAGA,KAAK,GAAG;AAC/C,QAAIH,QAAQG,CAAAA,GAAIN,SAAS,YAAYG,QAAQG,CAAAA,GAAIC,YAAY,oBAAoB;AAC/EF,cAAQC;AACR;IACF;EACF;AAEA,QAAMzB,QAA2C,CAAA;AACjD,WAASyB,IAAID,QAAQ,GAAGC,IAAIH,QAAQ7D,QAAQgE,KAAK,GAAG;AAClD,UAAMX,SAASQ,QAAQG,CAAAA;AACvB,QAAIL,kBAAkBN,MAAAA,EAASd,OAAM9D,KAAK;MAAEmE,OAAOoB;MAAGd,MAAME,aAAaC,MAAAA;IAAQ,CAAA;EACnF;AACA,SAAOd;AACT;AAvBSC;;;AIvjBT,SAAS0B,UAAAA,eAAc;AAEvB,SAASC,qBAAAA,0BAAyB;AAClC,SAASC,kBAAAA,uBAAsB;AAuC/B,IAAMC,QAAQ;EAAEC,UAAU;EAAGC,YAAY;AAAE;AAWpC,IAAMC,+BAAN,cAA2CC,mBAAAA;EArDlD,OAqDkDA;;;;EAC9BC,OAAO;EAEzB,YAAqBC,QAAiB;AACpC,UACE,qRAGYA,kBAAkBC,QAAQD,OAAOE,UAAUC,OAAOH,MAAAA,CAAAA,IAC9D;MAAEI,MAAM;MAA6BC,aAAa;MAAOC,OAAON;IAAO,CAAA,GAAA,KANtDA,SAAAA;EAQrB;AACF;AAEO,IAAMO,eAAN,cAA2BT,mBAAAA;EAnElC,OAmEkCA;;;;;EACdC,OAAO;EAEzB,YACWS,OACAC,UACT;AACA,UACE,oBAAoBD,KAAAA,uBAA4BL,OAAOT,MAAMc,KAAAA,CAAM,CAAA,cAC9DL,OAAOM,QAAAA,CAAAA,mHACkC,GAAA,KANvCD,QAAAA,OAAAA,KACAC,WAAAA;EAOX;AACF;AAoEA,SAASC,kBACPC,SACAC,UACAC,KACAC,MAAY;AAEZ,MAAIF,aAAaG,OAAW,QAAOJ;AACnC,MAAIK;AACJ,MAAI;AACFA,YAAQJ,SAAAA;EACV,SAASN,OAAO;AACd,UAAM,IAAIT,6BAA6BS,KAAAA;EACzC;AAIA,QAAMW,QAAQ,oBAAIC,IAAAA;AAClB,aAAW,CAACC,IAAInB,MAAAA,KAAWgB,MAAOC,OAAMG,IAAIC,aAAaF,IAAIN,KAAKC,IAAAA,GAAOd,MAAAA;AACzE,aAAW,CAACsB,MAAMtB,MAAAA,KAAWW,QAASM,OAAMG,IAAIE,MAAMtB,MAAAA;AACtD,SAAOiB;AACT;AApBSP;AAsBF,SAASa,iBAAiBC,SAA4B;AAC3D,MAAI,CAACC,OAAOC,SAASF,QAAQ7B,QAAQ,KAAK6B,QAAQ7B,WAAWD,MAAMC,UAAU;AAC3E,UAAM,IAAIY,aAAa,YAAYiB,QAAQ7B,QAAQ;EACrD;AACA,MAAI,CAAC8B,OAAOC,SAASF,QAAQ5B,UAAU,KAAK4B,QAAQ5B,aAAaF,MAAME,YAAY;AACjF,UAAM,IAAIW,aAAa,cAAciB,QAAQ5B,UAAU;EACzD;AAEA,QAAMkB,OAAOU,QAAQV,QAAQa,gBAAAA;AAC7B,QAAMC,MAAMJ,QAAQI,OAAOC,KAAKD,IAAG;AACnC,QAAME,SAASF,MAAMJ,QAAQ5B,aAAa;AAE1C,QAAMmC,WAAWC,aAAaR,QAAQX,KAAKC,IAAAA;AAC3C,QAAMmB,cAAcvB,kBAClBwB,yBAAyBV,QAAQX,KAAKC,IAAAA,GACtCU,QAAQW,cACRX,QAAQX,KACRC,IAAAA;AAGF,QAAMsB,aAA4B,CAAA;AAClC,QAAMC,OAAiB,CAAA;AAEvB,aAAW,CAACC,OAAOC,OAAAA,KAAYR,SAASS,QAAO,GAAI;AACjD,UAAMC,aAAaR,YAAYS,IAAIH,QAAQI,UAAU;AACrD,QAAIF,eAAe1B,QAAW;AAC5BsB,WAAKO,KAAK;QAAEzB,IAAIoB,QAAQpB;QAAInB,QAAQyC;MAAW,CAAA;AAC/C;IACF;AACA,QAAIH,QAAQd,QAAQ7B,UAAU;AAC5B0C,WAAKO,KAAK;QAAEzB,IAAIoB,QAAQpB;QAAInB,QAAQ,qBAAqBG,OAAOqB,QAAQ7B,QAAQ,CAAA;MAAI,CAAA;AACpF;IACF;AAKA,UAAMkD,MAAMN,QAAQO,WAAWC,QAAO;AACtC,QAAItB,OAAOuB,MAAMH,GAAAA,GAAM;AACrBR,WAAKO,KAAK;QAAEzB,IAAIoB,QAAQpB;QAAInB,QAAQ;MAAqD,CAAA;AACzF;IACF;AACA,QAAI6C,OAAOf,QAAQ;AACjBO,WAAKO,KAAK;QAAEzB,IAAIoB,QAAQpB;QAAInB,QAAQ,gBAAgBG,OAAOqB,QAAQ5B,UAAU,CAAA;MAAS,CAAA;AACtF;IACF;AACAwC,eAAWQ,KAAK;MACdzB,IAAIoB,QAAQpB;MACZwB,YAAYJ,QAAQI;MACpBG,YAAYP,QAAQO;IACtB,CAAA;EACF;AAEA,SAAO;IAAEjC,KAAKW,QAAQX;IAAKC;IAAMsB;IAAYC;EAAK;AACpD;AAtDgBd;AAyGhB,eAAe0B,oBACbC,WACA1B,SAGC;AAED,MAAI0B,UAAU/B,OAAOJ,QAAW;AAC9B,WAAO;MAAEoC,MAAM;QAAEhC,IAAIJ;QAAWb,SAASkD;MAAsB;MAAGC,QAAQ;IAAK;EACjF;AACA,MAAI7B,QAAQ8B,uBAAuBvC,OAAW,QAAO;IAAEsC,QAAQ;EAAK;AACpE,MAAI;AAMF,UAAME,qBACJ/B,QAAQ8B,mBAAmBJ,UAAU/B,EAAE,GACvC+B,UAAU/B,IACVK,QAAQgC,iBAAiB;AAE3B,WAAO;MAAEH,QAAQ;IAAK;EACxB,SAASI,OAAO;AACd,WAAO;MACLN,MAAM;QACJhC,IAAI+B,UAAU/B;QACdjB,SAAS,6CAA8CuD,MAAgBvD,OAAO;MAChF;MACAmD,QAAQ;IACV;EACF;AACF;AAhCeJ;AAmCf,IAAMG,wBACJ;AAOF,SAASM,cAAcR,WAAwBS,SAAmBC,UAAkB;AAClF,MAAIV,UAAU/B,OAAOJ,OAAW6C,UAAShB,KAAKM,UAAUP,UAAU;MAC7DgB,SAAQf,KAAKM,UAAU/B,EAAE;AAChC;AAHSuC;AAKT,eAAsBG,gBACpBC,MACAtC,SAsBC;AAED,QAAMmC,UAAoB,CAAA;AAC1B,QAAMC,WAAqB,CAAA;AAC3B,QAAMG,SAAoB,CAAA;AAK1B,QAAMC,eAAexC,QAAQyC,QACzBvD,kBACEwB,yBAAyB4B,KAAKjD,KAAKiD,KAAKhD,IAAI,GAC5CU,QAAQW,cACR2B,KAAKjD,KACLiD,KAAKhD,IAAI,IAEX,oBAAII,IAAAA;AAER,aAAWgC,aAAaY,KAAK1B,YAAY;AACvC,QAAI4B,aAAaE,IAAIhB,UAAUP,UAAU,EAAG;AAE5C,QAAI,CAACnB,QAAQyC,OAAO;AAClB,UAAIf,UAAU/B,OAAOJ,OAAW6C,UAAShB,KAAKM,UAAUP,UAAU;UAC7DgB,SAAQf,KAAKM,UAAU/B,EAAE;AAC9B;IACF;AACA,UAAMgD,WAAW,MAAMlB,oBAAoBC,WAAW1B,OAAAA;AACtD,QAAI2C,SAAShB,SAASpC,OAAWgD,QAAOnB,KAAKuB,SAAShB,IAAI;AAC1D,QAAI,CAACgB,SAASd,OAAQ;AACtB,QAAI;AAIFe,MAAAA,QAAOlB,UAAUP,UAAU;AAC3Be,oBAAcR,WAAWS,SAASC,QAAAA;IACpC,SAASH,OAAO;AACd,UAAKA,MAAgCrD,SAAS,UAAU;AACtDsD,sBAAcR,WAAWS,SAASC,QAAAA;AAClC;MACF;AACAG,aAAOnB,KAAK;QAAEzB,IAAI+B,UAAU/B;QAAIjB,SAAUuD,MAAgBvD;MAAQ,CAAA;IACpE;EACF;AAEA,SAAO;IAAEmE,QAAQ,CAAC7C,QAAQyC;IAAON;IAASC;IAAUG;EAAO;AAC7D;AArEsBF;;;AClTtB,SAASS,eAAAA,oBAAmB;AAgBrB,SAASC,mBACdC,OACAC,cACAC,MAAyBC,QAAQD,KAAG;AAEpC,MAAIF,QAAQ,EAAG,QAAOI;AAEtB,QAAMC,UAAUH,IAAII,cAAcC,KAAAA;AAClC,MAAIF,YAAYD,UAAaC,QAAQG,WAAW,EAAG,QAAOJ;AAC1D,MAAIC,YAAYJ,aAAc,QAAOG;AAErC,MAAIK;AACJ,MAAI;AAKFA,eAAWC,aAAYC,aAAaV,YAAAA,CAAAA;EACtC,QAAQ;AACN,WAAOG;EACT;AACA,MAAIK,SAASD,WAAW,EAAG,QAAOJ;AAElC,SACE,qBAAqBC,OAAAA,oBAClBO,OAAOH,SAASD,MAAM,CAAA,4DACtBP,YAAAA;AAEP;AA5BgBF;;;ACjChB,SAASc,aAAAA,YAAWC,kBAAAA,iBAAgBC,kBAAAA,uBAAsB;AA2D1D,IAAMC,SAAwB;EAAEC,OAAO;EAAUC,UAAU,CAAA;AAAG;AAGvD,SAASC,kBACdC,WACAC,SAAiC;AAEjC,QAAMC,OAAOC,gBAAeF,QAAQG,QAAQC,gBAAAA,GAAkBJ,QAAQK,KAAKN,SAAAA;AAC3E,MAAI;AACF,WAAO;MAAEH,OAAO;MAAWC,UAAUS,WAAUL,IAAAA;IAAM;EACvD,SAASM,KAAK;AAIZ,QAAIC,WAAWD,GAAAA,EAAM,QAAOZ;AAC5B,WAAO;MAAEC,OAAO;MAAcC,UAAU,CAAA;MAAIY,QAAQC,UAAUH,GAAAA;IAAK;EACrE;AACF;AAdgBT;AAgBhB,SAASU,WAAWD,KAAY;AAC9B,SAAQA,KAAmCI,SAAS;AACtD;AAFSH;AAIT,SAASE,UAAUH,KAAY;AAC7B,SAAOA,eAAeK,QAAQL,IAAIM,UAAUC,OAAOP,GAAAA;AACrD;AAFSG;;;AC9CT,SAASK,qBAAAA,0BAAyB;AAmFlC,IAAMC,6BAA6B;AAenC,SAASC,kBAAiBC,KAAW;AACnC,SAAOA,IAAIC,QAAQ,iBAAiB,GAAA;AACtC;AAFSF,OAAAA,mBAAAA;AAwBF,IAAMG,sBAAN,cAAkCC,mBAAAA;EA9JzC,OA8JyCA;;;EACvC,YAAYC,QAAgB;AAC1B,UACE,6CAA6CC,OAAOD,MAAAA,CAAAA,mdAKa;EAErE;AACF;AAOA,SAASE,mBAAmBF,QAAc;AACxC,MAAI,CAACG,OAAOC,UAAUJ,MAAAA,KAAWA,SAAS,EAAG,OAAM,IAAIF,oBAAoBE,MAAAA;AAC7E;AAFSE;AAyBT,SAASG,wBACPC,MACAC,OACAC,YAAyB;AAEzB,MAAIC;AACJ,aAAWb,OAAOU,MAAM;AACtB,QAAI,CAACE,WAAAA,GAAc;AACjBC,sBAAgB;AAChB;IACF;AACA,UAAMC,KAAKH,MAAMX,GAAAA;AACjB,QAAI,WAAWc,IAAI;AACjBD,sBAAgB,kBAAkBb,GAAAA,KAAQc,GAAGC,KAAK;AAClD;IACF;AACA,QAAID,GAAGE,MAAO,QAAO;MAAEC,UAAU;MAASC,QAAQ,gBAAgBlB,GAAAA;MAAcA;IAAI;EACtF;AACA,SAAOa,gBAAgBM,SACnB;IAAEF,UAAU;IAAgBC,QAAQL;EAAY,IAChD;IACEI,UAAU;IACVC,QAAQ,+BAA+BR,KAAKU,KAAK,IAAA,CAAA;;;;IAIjDpB,KAAKU,KAAK,CAAA;EACZ;AACN;AA5BSD;AAkCF,SAASY,iBACdC,SACAC,MAA6B;AAE7BjB,qBAAmBiB,KAAKnB,MAAM;AAE9B,QAAMoB,MAAM,oBAAIC,IAAAA;AAChB,MAAIC,YAAYH,KAAKnB;AAOrB,QAAMO,QAAQ,wBAACgB,SAAAA;AACbD,iBAAa;AACb,QAAI;AACF,YAAME,SAASL,KAAKM,GAAGC,OAAOH,IAAAA;AAI9B,aAAOC,WAAWT,SACd;QAAEJ,OAAO,+BAA+BY,IAAAA;MAAc,IACtD;QAAEX,OAAOY;MAAO;IACtB,SAASb,OAAO;AACd,aAAO;QAAEA,OAAOA,iBAAiBgB,QAAQhB,MAAMiB,UAAU3B,OAAOU,KAAAA;MAAO;IACzE;EACF,GAbc;AA4Bd,QAAMkB,cAAc,wBAACC,SAAAA;AACnB,UAAMC,MAAM,GAAGZ,KAAKa,YAAY,IAAIF,IAAAA;AACpC,QAAIG;AACJX,iBAAa;AACb,QAAI;AACFW,gBAAUd,KAAKM,GAAGS,YAAYH,GAAAA;IAChC,SAASpB,OAAO;AACd,aAAO;QACLwB,MAAM;QACNxB,OAAOA,iBAAiBgB,QAAQhB,MAAMiB,UAAU3B,OAAOU,KAAAA;MACzD;IACF;AACA,UAAMyB,UAAUjB,KAAKkB,qBAAqB3C;AAC1C,UAAMY,OAAiB,CAAA;AACvB,eAAWgC,QAAQL,QAAQM,OAAO,CAACC,MAAMA,EAAEC,SAAS,QAAA,CAAA,EAAWC,MAAM,GAAGN,OAAAA,GAAU;AAChF,UAAId,aAAa,EAAG;AACpBA,mBAAa;AACb,UAAIqB;AACJ,UAAI;AACFA,iBAASC,KAAKC,MAAM1B,KAAKM,GAAGqB,UAAU,GAAGf,GAAAA,IAAOO,IAAAA,EAAM,CAAA;MACxD,QAAQ;AAGN;MACF;AACA,YAAM1C,MAAO+C,QAAqC/C;AAClD,UAAI,OAAOA,QAAQ,YAAYA,IAAImD,WAAW,EAAG;AAKjD,UAAIpD,kBAAiBC,GAAAA,MAASkC,QAAQ,CAACxB,KAAK0C,SAASpD,GAAAA,EAAMU,MAAK2C,KAAKrD,GAAAA;IACvE;AACA,WAAOU,KAAKyC,SAAS,IAAI;MAAEZ,MAAM;MAAS7B;IAAK,IAAI;MAAE6B,MAAM;IAAS;EACtE,GAlCoB;AAoCpB,MAAIe;AACJ,MAAIC;AACJ,QAAMC,YAAY,6BAAA;AAChB,QAAIF,eAAenC,UAAaoC,qBAAqBpC,QAAW;AAC9D,UAAI;AACFmC,qBAAa/B,KAAKkC,eAAc;MAClC,SAAS1C,OAAO;AAGdwC,2BAAmB,2CAA2ClD,OAAOU,KAAAA,CAAAA;AACrEuC,qBAAa,CAAA;MACf;IACF;AACA,WAAOA,cAAc,CAAA;EACvB,GAZkB;AAuBlB,QAAMI,aAAa,wBAACxB,MAAcyB,SAAAA;AAChC,UAAMC,OAAO,oBAAIC,IAAAA;AACjB,eAAWC,aAAaH,MAAM;AAC5B,UAAIjC,aAAa,EAAG,QAAO;QAAET,UAAU;QAAgBC,QAAQ;MAA0B;AACzF,UAAI0C,KAAKG,IAAID,SAAAA,EAAY;AACzBF,WAAKI,IAAIF,SAAAA;AACT,UAAI/D,kBAAiB+D,SAAAA,MAAe5B,KAAM;AAE1C,YAAM+B,MAAMtD,MAAMmD,SAAAA;AAClB,UAAI,WAAWG,KAAK;AAClB,eAAO;UAAEhD,UAAU;UAAgBC,QAAQ,kBAAkB4C,SAAAA,KAAcG,IAAIlD,KAAK;QAAG;MACzF;AACA,UAAIkD,IAAIjD,OAAO;AACb,eAAO;UAAEC,UAAU;UAASC,QAAQ,sBAAsB4C,SAAAA;UAAa9D,KAAK8D;QAAU;MACxF;IACF;AAUA,WAAOpC,aAAa,IAChB;MAAET,UAAU;MAAgBC,QAAQ;IAA0B,IAC9D;MACED,UAAU;MACVC,QAAQ;IACV;EACN,GA/BmB;AAiCnB,aAAWgB,QAAQZ,SAAS;AAC1B,QAAII,aAAa,GAAG;AAClBF,UAAI0C,IAAIhC,MAAM;QAAEjB,UAAU;QAAgBC,QAAQ;MAA0B,CAAA;AAC5E;IACF;AAGA,UAAMiD,WAAWlC,YAAYC,IAAAA;AAC7B,QAAIiC,SAAS5B,SAAS,cAAc;AAElCf,UAAI0C,IAAIhC,MAAM;QACZjB,UAAU;QACVC,QAAQ,kBAAkBK,KAAKa,YAAY,IAAIF,IAAAA,KAASiC,SAASpD,KAAK;MACxE,CAAA;AACA;IACF;AACA,QAAIoD,SAAS5B,SAAS,SAAS;AAC7Bf,UAAI0C,IACFhC,MACAzB,wBAAwB0D,SAASzD,MAAMC,OAAO,MAAMe,YAAY,CAAA,CAAA;AAElE;IACF;AAEA,UAAMiC,OAAOH,UAAAA;AACbhC,QAAI0C,IACFhC,MACAqB,qBAAqBpC,SACjBuC,WAAWxB,MAAMyB,IAAAA,IACjB;MAAE1C,UAAU;MAAgBC,QAAQqC;IAAiB,CAAA;EAE7D;AAEA,SAAO/B;AACT;AA1KgBH;","names":["closeSync","openSync","readFileSync","readdirSync","readSync","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","registryOutcome","registryNote","outcome","listSessions","cwd","root","transcriptRoot","dir","projectDirFor","entries","readdirSync","found","entry","path","join","isDirectory","modifiedAt","stats","statSync","mtime","kind","classifySessionArtifact","id","sessionIdOf","push","idSource","undefined","transcript","sort","a","b","getTime","fd","openSync","buffer","Buffer","alloc","FIRST_RECORD_BYTES","read","readSync","newline","indexOf","end","first","JSON","parse","toString","length","closeSync","protectedTranscriptPaths","protectedBy","Map","sessions","pointer","readPointer","set","transcriptPath","has","session","hasWriter","sessionHasWriter","transcriptOf","readFileSync","sessionPointerPath","trim","deleteSession","options","force","get","registryError","removeFromRegistry","awaitRegistryRemoval","registryTimeoutMs","error","transcriptRemoved","nowProtected","rmSync","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","transcriptRoot","FLOOR","keepLast","maxAgeDays","GCProtectionUnavailableError","TheokitAgentError","name","reason","Error","message","String","code","isRetryable","cause","GCFloorError","field","received","resolveProtection","builtin","provider","cwd","root","undefined","extra","union","Map","id","set","transcriptOf","path","planTranscriptGC","options","Number","isFinite","transcriptRoot","now","Date","cutoff","sessions","listSessions","protectedBy","protectedTranscriptPaths","protectedIds","candidates","kept","index","session","entries","protection","get","transcript","push","age","modifiedAt","getTime","isNaN","releaseFromRegistry","candidate","note","UNNAMEABLE_COLLECTION","unlink","removeFromRegistry","awaitRegistryRemoval","registryTimeoutMs","error","recordRemoval","removed","orphaned","runTranscriptGC","plan","errors","protectedNow","apply","has","registry","rmSync","dryRun","readdirSync","transcriptRootHint","found","previousRoot","env","process","undefined","current","THEOKIT_HOME","trim","length","projects","readdirSync","projectsRoot","String","loadJsonl","transcriptPath","transcriptRoot","ABSENT","state","messages","readThreadHistory","sessionId","options","path","transcriptPath","root","transcriptRoot","cwd","loadJsonl","err","isNotFound","reason","messageOf","code","Error","message","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"]}
|
|
@@ -0,0 +1,181 @@
|
|
|
1
|
+
import { TrustPosture, SettingSource } from '@theokit/sdk';
|
|
2
|
+
import { TheokitAgentError } from '@theokit/sdk/errors';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* M68 — the trust gate for `settingSources`.
|
|
6
|
+
*
|
|
7
|
+
* ## The defect this module closes
|
|
8
|
+
*
|
|
9
|
+
* `settingSources` enables on-disk config discovery. `'user'` reads `~/.theokit/` — the operator's
|
|
10
|
+
* own machine, which no third party controls. `'project'` reads `<cwd>/.theokit/`, **including
|
|
11
|
+
* `hooks.json`, which executes shell**.
|
|
12
|
+
*
|
|
13
|
+
* The previous API took `readonly SettingSource[]`, and its JSDoc justified the risk this way:
|
|
14
|
+
* *"it is opt-in because `.theokit/` is the app's own repo (informed consent)"*. That premise holds
|
|
15
|
+
* for a web app whose `cwd` is its own deploy. It does **not** hold for the class of product this
|
|
16
|
+
* framework addresses — an agent whose `cwd` is a repository the user just cloned. There `.theokit/`
|
|
17
|
+
* is attacker-controlled content, and enabling `'project'` is remote code execution on the first
|
|
18
|
+
* `build()`.
|
|
19
|
+
*
|
|
20
|
+
* Documenting it did not prevent it. The measured consumer (TheoCode) did not trust the API: it
|
|
21
|
+
* gated from the outside, with a `posture.allows` of its own (`chat.ts:386`, comment B-008). It
|
|
22
|
+
* already **had** the right decision and could not pass it through, because the API only accepted
|
|
23
|
+
* strings. The gate existed on its side and evaporated at the boundary.
|
|
24
|
+
*
|
|
25
|
+
* ## The evidence is the SDK's, not one invented here
|
|
26
|
+
*
|
|
27
|
+
* `TrustPosture` is `@theokit/sdk`'s own trust primitive, and `recordWiring`'s doc says *"a posture
|
|
28
|
+
* is the only thing in this package that retains a capability"*. A bespoke type would make two trust
|
|
29
|
+
* grammars coexist and drift apart (ADR 0063).
|
|
30
|
+
*/
|
|
31
|
+
/**
|
|
32
|
+
* The framework's capability vocabulary — deliberately a single name (ADR 0065).
|
|
33
|
+
*
|
|
34
|
+
* `allows` is all-or-nothing in the SDK: every declared `K` gets the same boolean. A finer
|
|
35
|
+
* vocabulary (`hooks`, `skills`, `subagents`, `mcp`) would promise the consumer it can gate one
|
|
36
|
+
* without gating the other, and the primitive does not deliver that. An API that suggests a
|
|
37
|
+
* distinction the runtime does not make teaches the wrong thing, and the error only surfaces when
|
|
38
|
+
* somebody depends on the distinction.
|
|
39
|
+
*/
|
|
40
|
+
type SettingSourceCapability = 'projectSettings';
|
|
41
|
+
/** Authorization to read config from the working directory. Requires the posture, never a claim. */
|
|
42
|
+
interface ProjectSettingsGrant {
|
|
43
|
+
/**
|
|
44
|
+
* Typically the output of `resolveTrustPosture` — which is what gives it `source` (`'env' |
|
|
45
|
+
* 'store' | 'default'`) and therefore a refusal that says WHERE the decision came from instead of
|
|
46
|
+
* merely denying.
|
|
47
|
+
*/
|
|
48
|
+
readonly trustedBy: TrustPosture<SettingSourceCapability>;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Which on-disk config roots the agent may read.
|
|
52
|
+
*
|
|
53
|
+
* The asymmetry is the design: `user` is a boolean because `~/.theokit/` belongs to the operator;
|
|
54
|
+
* `project` requires evidence because `<cwd>/.theokit/` may not. Omitting a root is not enabling it
|
|
55
|
+
* — never "enabling without a gate". The asymmetry is inherited from the SDK itself, whose
|
|
56
|
+
* `TrustPostureInput.envOverride` documents that `false` and `undefined` both mean "the operator did
|
|
57
|
+
* not turn it on", not "turned it off".
|
|
58
|
+
*/
|
|
59
|
+
interface SettingSourcesSelection {
|
|
60
|
+
/** `~/.theokit/` — the operator's machine. No gate: no third party controls it. */
|
|
61
|
+
readonly user?: boolean;
|
|
62
|
+
/** `<cwd>/.theokit/` — controlled by whoever wrote the open repository. Requires evidence. */
|
|
63
|
+
readonly project?: ProjectSettingsGrant;
|
|
64
|
+
/**
|
|
65
|
+
* `<cwd>/.claude/` — a FOREIGN configuration dialect, read only once declared
|
|
66
|
+
* (`usetheokit/theokit-sdk#524`).
|
|
67
|
+
*
|
|
68
|
+
* ## Two questions, and which half of this field answers each
|
|
69
|
+
*
|
|
70
|
+
* The SDK's docblock separates them, and the separation is the whole point of `compatSources`:
|
|
71
|
+
* a trust gate answers *"do I trust the code in this directory?"*; importing another product's
|
|
72
|
+
* configuration answers *"do I want it imported into this one?"*. They come apart in the ordinary
|
|
73
|
+
* case, because `.claude/` is populated in exactly the repository one trusts most — for a
|
|
74
|
+
* different tool, by a teammate who never heard of this runtime.
|
|
75
|
+
*
|
|
76
|
+
* So the two are answered by two different things here, and it matters which:
|
|
77
|
+
*
|
|
78
|
+
* | Question | Answered by |
|
|
79
|
+
* |---|---|
|
|
80
|
+
* | do I want the foreign dialect imported? | **declaring this field at all** — omitting is not enabling |
|
|
81
|
+
* | do I trust this directory's code to run? | the `TrustPosture` inside the grant |
|
|
82
|
+
*
|
|
83
|
+
* ## Why the grant is `ProjectSettingsGrant` and not a vocabulary of its own
|
|
84
|
+
*
|
|
85
|
+
* Not because the two questions are the same — they are not. Because a separate grant could not
|
|
86
|
+
* carry the distinction even if it existed: `TrustPosture.allows` is `Record<K, boolean>` and the
|
|
87
|
+
* SDK documents every value as moving together with the level, so a `'foreignDialects'` capability
|
|
88
|
+
* beside `'projectSettings'` would promise an operator they can grant one and withhold the other,
|
|
89
|
+
* and `resolveTrustPosture` would hand back the same boolean for both. That is precisely the
|
|
90
|
+
* failure ADR 0065 exists to prevent, and inventing the second name would commit it while looking
|
|
91
|
+
* like rigour.
|
|
92
|
+
*
|
|
93
|
+
* The consent half is therefore carried by the declaration, which is a real and sufficient
|
|
94
|
+
* boundary: an operator who trusts a repository completely still reads no `.claude/` until they
|
|
95
|
+
* write this field. What the grant adds on top is stricter than the SDK — there, listing a dialect
|
|
96
|
+
* is enough — and the extra strictness is deliberate: this reads a `hooks.json` that executes
|
|
97
|
+
* shell out of a directory that usually arrived with the clone.
|
|
98
|
+
*/
|
|
99
|
+
readonly claudeCode?: ProjectSettingsGrant & {
|
|
100
|
+
/**
|
|
101
|
+
* #686 — WHICH surfaces of the foreign root to import. Absent means all of them, which is what
|
|
102
|
+
* every caller before this meant and still means.
|
|
103
|
+
*
|
|
104
|
+
* The distinction is the reason the grant exists. `.claude/` usually arrives with the clone and
|
|
105
|
+
* its `hooks.json` executes shell, so "take the skills, refuse the hooks" is the ordinary thing
|
|
106
|
+
* to want — and before this the only choices were all of it or none of it.
|
|
107
|
+
*
|
|
108
|
+
* Requires `@theokit/sdk >= 5.4.0`, which is where the narrowed form landed. On an older SDK the
|
|
109
|
+
* runtime drops an unrecognised shape in SILENCE, so declaring it there would import nothing at
|
|
110
|
+
* all rather than importing less — refused at resolve time instead.
|
|
111
|
+
*/
|
|
112
|
+
readonly import?: readonly CompatSurface[];
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* The surfaces a foreign configuration root can contribute.
|
|
117
|
+
*
|
|
118
|
+
* Written out rather than imported, for the same reason as the `claude-code` literal below:
|
|
119
|
+
* `CompatSurface` does not exist in `@theokit/sdk@4.52.1`, this package's declared floor, and a gate
|
|
120
|
+
* that cannot build against its own minimum dependency is worse than a constant that has been
|
|
121
|
+
* checked. Verified against the published 5.4.0 `.d.ts`, where the union is
|
|
122
|
+
* `"hooks" | "plugins" | "skills" | "subagents"` — note `subagents`, not `agents`.
|
|
123
|
+
*/
|
|
124
|
+
type CompatSurface = 'commands' | 'hooks' | 'plugins' | 'skills' | 'subagents';
|
|
125
|
+
/** What `resolveCompatSources` returns: the whole root, or the root narrowed to some surfaces. */
|
|
126
|
+
type ResolvedCompatSource = 'claude-code' | {
|
|
127
|
+
readonly kind: 'claude-code';
|
|
128
|
+
readonly import: readonly CompatSurface[];
|
|
129
|
+
};
|
|
130
|
+
/**
|
|
131
|
+
* Refusal to read the working directory for lack of trust.
|
|
132
|
+
*
|
|
133
|
+
* Descends from `TheokitAgentError` because typed errors are an unbreakable rule here — and because
|
|
134
|
+
* `isTransientError` only sees this hierarchy. A class extending plain `Error` would be invisible to
|
|
135
|
+
* the predicate that separates recoverable from unrecoverable (the defect M67 fixed in five
|
|
136
|
+
* classes).
|
|
137
|
+
*/
|
|
138
|
+
declare class UntrustedSettingSourceError extends TheokitAgentError {
|
|
139
|
+
/** Where the trust decision came from: `'env' | 'store' | 'default'`. */
|
|
140
|
+
readonly trustSource: string;
|
|
141
|
+
/** The refused capability. */
|
|
142
|
+
readonly capability: SettingSourceCapability;
|
|
143
|
+
readonly name = "UntrustedSettingSourceError";
|
|
144
|
+
constructor(message: string,
|
|
145
|
+
/** Where the trust decision came from: `'env' | 'store' | 'default'`. */
|
|
146
|
+
trustSource: string,
|
|
147
|
+
/** The refused capability. */
|
|
148
|
+
capability: SettingSourceCapability);
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Translate the declared selection into the `SettingSource`s the SDK accepts, refusing what the
|
|
152
|
+
* posture does not authorize.
|
|
153
|
+
*
|
|
154
|
+
* Refuses rather than ignores (ADR 0064). Ignoring would leave the product running in the belief
|
|
155
|
+
* that the repository's hooks are active — a silent failure mode, on the wrong side. The SDK already
|
|
156
|
+
* picked that side for the same problem: `recordWiring` throws `UngatedCapabilityError` when
|
|
157
|
+
* somebody registers a capability the posture does not gate.
|
|
158
|
+
*
|
|
159
|
+
* @throws {UntrustedSettingSourceError} when `project` is requested and the posture does not grant it.
|
|
160
|
+
*/
|
|
161
|
+
declare function resolveSettingSources(selection: SettingSourcesSelection | undefined): readonly SettingSource[];
|
|
162
|
+
/**
|
|
163
|
+
* The foreign configuration dialects this layer forwards, once the posture authorises them.
|
|
164
|
+
*
|
|
165
|
+
* ## Why it is a separate function and the same vocabulary
|
|
166
|
+
*
|
|
167
|
+
* Separate because the SDK takes them on a separate option (`local.compatSources`); the same
|
|
168
|
+
* `ProjectSettingsGrant` because the thing being authorised is identical — reading a `hooks.json`
|
|
169
|
+
* that executes shell out of a directory the operator does not necessarily control.
|
|
170
|
+
*
|
|
171
|
+
* ## What it deliberately does NOT do
|
|
172
|
+
*
|
|
173
|
+
* Validate the source NAME. The SDK DROPS an unrecognised name rather than turning it into
|
|
174
|
+
* `<cwd>/<name>`, so a typo fails closed there; turning that into a throw here would convert a safe
|
|
175
|
+
* default into a crash. This gate decides authorisation, never vocabulary.
|
|
176
|
+
*
|
|
177
|
+
* @throws {UntrustedSettingSourceError} when a source is requested and the posture does not grant it.
|
|
178
|
+
*/
|
|
179
|
+
declare function resolveCompatSources(selection: SettingSourcesSelection | undefined): readonly ResolvedCompatSource[];
|
|
180
|
+
|
|
181
|
+
export { type CompatSurface as C, type ProjectSettingsGrant as P, type ResolvedCompatSource as R, type SettingSourcesSelection as S, UntrustedSettingSourceError as U, type SettingSourceCapability as a, resolveSettingSources as b, resolveCompatSources as r };
|
package/dist/testing.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
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-Dp6e7chT.js';
|
|
4
4
|
import '@theokit/sdk';
|
|
5
5
|
import 'zod';
|
|
6
|
-
import './agent-compiler-
|
|
6
|
+
import './agent-compiler-CvYfM-0t.js';
|
|
7
7
|
import '@theokit/sdk/errors';
|
|
8
8
|
import './types-C16Wuh9E.js';
|
|
9
|
+
import './setting-sources-gate-tadmHT0c.js';
|
|
9
10
|
import './hook-handlers-Cw2FsnE5.js';
|
|
10
11
|
|
|
11
12
|
/**
|
package/dist/testing.js
CHANGED
package/dist/tools.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
export { CatastrophicCommandError, CommandPolicy, ContextMatchError, ContextMatchReason, CreateApplyPatchToolOptions, CreateBraveWebSearchAdapterOptions, CreateCurrentTimeToolOptions, CreateEditFileToolOptions, CreateGenericHttpSearchAdapterOptions, CreateGitDiffToolOptions, CreateGitStatusToolOptions, CreateGlobToolOptions, CreateInteractiveShellToolOptions, CreateListDirToolOptions, CreateReadFileToolOptions, CreateRunVitestToolOptions, CreateSearchTextToolOptions, CreateShellToolOptions, CreateViewImageToolOptions, CreateWebFetchToolOptions, CreateWebSearchToolOptions, CreateWriteFileToolOptions, DEFAULT_MAX_IMAGE_BYTES, 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, createViewImageTool, 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
2
|
import * as _theokit_sdk from '@theokit/sdk';
|
|
3
3
|
import { TheokitAgentError } from '@theokit/sdk/errors';
|
|
4
|
-
import { D as DelegationTarget, a as DelegateOptions } from './delegation-scoring
|
|
4
|
+
import { D as DelegationTarget, a as DelegateOptions } from './delegation-scoring-BZdtCdMN.js';
|
|
5
5
|
import '@theokit/sdk/retry';
|
|
6
|
-
import './agent-compiler-
|
|
6
|
+
import './agent-compiler-CvYfM-0t.js';
|
|
7
7
|
import './types-C16Wuh9E.js';
|
|
8
8
|
import 'zod';
|
|
9
|
+
import './setting-sources-gate-tadmHT0c.js';
|
|
9
10
|
import '@theokit/presenter/wire';
|
|
10
11
|
import './hook-handlers-Cw2FsnE5.js';
|
|
11
12
|
|