@theokit/agents 9.4.0 → 10.0.0

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