@caupulican/pi-agent-core 0.93.3 → 0.93.4
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/agent-loop.d.ts.map +1 -1
- package/dist/agent-loop.js +6 -4
- package/dist/agent-loop.js.map +1 -1
- package/dist/session/session-manager.d.ts +4 -1
- package/dist/session/session-manager.d.ts.map +1 -1
- package/dist/session/session-manager.js +45 -4
- package/dist/session/session-manager.js.map +1 -1
- package/dist/tool-failure-memory.d.ts +5 -1
- package/dist/tool-failure-memory.d.ts.map +1 -1
- package/dist/tool-failure-memory.js +48 -34
- package/dist/tool-failure-memory.js.map +1 -1
- package/dist/tool-failure-recovery-gate.d.ts +4 -2
- package/dist/tool-failure-recovery-gate.d.ts.map +1 -1
- package/dist/tool-failure-recovery-gate.js +33 -7
- package/dist/tool-failure-recovery-gate.js.map +1 -1
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,EAAE,KAAK,EAAE,MAAM,yBAAyB,CAAC;AACzF,OAAO,EACN,KAAK,oBAAoB,EACzB,KAAK,aAAa,EAIlB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAKhD,eAAO,MAAM,uBAAuB,IAAI,CAAC;AACzC,iFAAiF;AACjF,eAAO,MAAM,6BAA6B,OAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"session-manager.d.ts","sourceRoot":"","sources":["../../src/session/session-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,7 @@ import { compactToolResultDetailsForRetention } from "./message-retention.js";
|
|
|
12
12
|
export const CURRENT_SESSION_VERSION = 3;
|
|
13
13
|
/** Maximum borrowed entries one non-copying SessionManager visit may inspect. */
|
|
14
14
|
export const MAX_SESSION_ENTRY_VISIT_COUNT = 1_024;
|
|
15
|
+
const MAX_SESSION_LINEAGE_DEPTH = 64;
|
|
15
16
|
function invalidSessionParentCycle(entryId) {
|
|
16
17
|
return new Error(`Invalid session entry graph: parent cycle detected at entry "${entryId}".`);
|
|
17
18
|
}
|
|
@@ -276,6 +277,7 @@ export function getDefaultSessionDir(cwd, agentDir) {
|
|
|
276
277
|
const SESSION_READ_BUFFER_SIZE = 1024 * 1024;
|
|
277
278
|
// One line must fit comfortably under V8's max string length (~512MiB chars).
|
|
278
279
|
const MAX_SESSION_LINE_CHARS = 256 * 1024 * 1024;
|
|
280
|
+
const MAX_SESSION_HEADER_BYTES = 64 * 1024;
|
|
279
281
|
function parseSessionEntryLine(line) {
|
|
280
282
|
if (!line.trim())
|
|
281
283
|
return null;
|
|
@@ -454,10 +456,18 @@ function retainedStringChars(value, stopAfter) {
|
|
|
454
456
|
function readSessionHeader(filePath) {
|
|
455
457
|
try {
|
|
456
458
|
const fd = openSync(filePath, "r");
|
|
457
|
-
const buffer = Buffer.alloc(
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
459
|
+
const buffer = Buffer.alloc(MAX_SESSION_HEADER_BYTES + 1);
|
|
460
|
+
let bytesRead;
|
|
461
|
+
try {
|
|
462
|
+
bytesRead = readSync(fd, buffer, 0, buffer.length, 0);
|
|
463
|
+
}
|
|
464
|
+
finally {
|
|
465
|
+
closeSync(fd);
|
|
466
|
+
}
|
|
467
|
+
const newlineIndex = buffer.indexOf(0x0a, 0);
|
|
468
|
+
if (newlineIndex < 0 && bytesRead > MAX_SESSION_HEADER_BYTES)
|
|
469
|
+
return null;
|
|
470
|
+
const firstLine = buffer.toString("utf8", 0, newlineIndex >= 0 ? newlineIndex : bytesRead);
|
|
461
471
|
if (!firstLine)
|
|
462
472
|
return null;
|
|
463
473
|
const header = JSON.parse(firstLine);
|
|
@@ -470,6 +480,28 @@ function readSessionHeader(filePath) {
|
|
|
470
480
|
return null;
|
|
471
481
|
}
|
|
472
482
|
}
|
|
483
|
+
/** Resolve the bounded parent-file chain that authoritatively defines a fork's session lineage. */
|
|
484
|
+
function collectParentSessionIds(parentSession, relativeToDir) {
|
|
485
|
+
const sessionIds = new Set();
|
|
486
|
+
const visitedPaths = new Set();
|
|
487
|
+
let nextPath = typeof parentSession === "string" && parentSession.length > 0
|
|
488
|
+
? normalizePath(resolve(relativeToDir, parentSession))
|
|
489
|
+
: undefined;
|
|
490
|
+
for (let depth = 0; nextPath && depth < MAX_SESSION_LINEAGE_DEPTH; depth++) {
|
|
491
|
+
if (visitedPaths.has(nextPath))
|
|
492
|
+
break;
|
|
493
|
+
visitedPaths.add(nextPath);
|
|
494
|
+
const header = readSessionHeader(nextPath);
|
|
495
|
+
if (!header || header.id.length === 0)
|
|
496
|
+
break;
|
|
497
|
+
sessionIds.add(header.id);
|
|
498
|
+
nextPath =
|
|
499
|
+
typeof header.parentSession === "string" && header.parentSession.length > 0
|
|
500
|
+
? normalizePath(resolve(dirname(nextPath), header.parentSession))
|
|
501
|
+
: undefined;
|
|
502
|
+
}
|
|
503
|
+
return sessionIds;
|
|
504
|
+
}
|
|
473
505
|
function getSessionHeaderCwd(header) {
|
|
474
506
|
const cwd = header.cwd;
|
|
475
507
|
return typeof cwd === "string" ? cwd : undefined;
|
|
@@ -728,6 +760,7 @@ export class SessionManager {
|
|
|
728
760
|
this.coldPayloadEntryIds = new Set();
|
|
729
761
|
this.indexedSessionFileBytes = 0;
|
|
730
762
|
this.persistenceStateUncertain = false;
|
|
763
|
+
this.inheritedSessionIds = new Set();
|
|
731
764
|
this.cwd = resolvePath(cwd);
|
|
732
765
|
this.sessionDir = normalizePath(sessionDir);
|
|
733
766
|
this.agentDir = agentDir;
|
|
@@ -811,6 +844,7 @@ export class SessionManager {
|
|
|
811
844
|
}
|
|
812
845
|
const header = this.fileEntries.find((e) => e.type === "session");
|
|
813
846
|
this.sessionId = header?.id ?? createSessionId();
|
|
847
|
+
this.inheritedSessionIds = collectParentSessionIds(header?.parentSession, dirname(this.sessionFile));
|
|
814
848
|
this._ensureEntryFileLocations(this.coldPayloadEntryIds);
|
|
815
849
|
const migrated = migrateToCurrentVersion(this.fileEntries);
|
|
816
850
|
// Validate and index the complete parent graph before a migration rewrite can
|
|
@@ -838,6 +872,7 @@ export class SessionManager {
|
|
|
838
872
|
assertValidSessionId(options.id);
|
|
839
873
|
}
|
|
840
874
|
this.sessionId = options?.id ?? createSessionId();
|
|
875
|
+
this.inheritedSessionIds = collectParentSessionIds(options?.parentSession, this.sessionDir || this.cwd);
|
|
841
876
|
const timestamp = new Date().toISOString();
|
|
842
877
|
const header = {
|
|
843
878
|
type: "session",
|
|
@@ -971,6 +1006,10 @@ export class SessionManager {
|
|
|
971
1006
|
getSessionId() {
|
|
972
1007
|
return this.sessionId;
|
|
973
1008
|
}
|
|
1009
|
+
/** Current session id followed by the bounded, de-duplicated ids of sessions it was forked from. */
|
|
1010
|
+
getSessionLineageIds() {
|
|
1011
|
+
return [this.sessionId, ...[...this.inheritedSessionIds].filter((id) => id !== this.sessionId)];
|
|
1012
|
+
}
|
|
974
1013
|
getSessionFile() {
|
|
975
1014
|
return this.sessionFile;
|
|
976
1015
|
}
|
|
@@ -1763,6 +1802,7 @@ export class SessionManager {
|
|
|
1763
1802
|
const branched = new SessionManager(this.cwd, this.sessionDir, undefined, this.persist, this.agentDir);
|
|
1764
1803
|
branched.fileEntries = [header, ...pathWithoutLabels, ...labelEntries];
|
|
1765
1804
|
branched.sessionId = newSessionId;
|
|
1805
|
+
branched.inheritedSessionIds = new Set(this.getSessionLineageIds());
|
|
1766
1806
|
branched.sessionFile = this.persist ? newSessionFile : undefined;
|
|
1767
1807
|
branched.coldPayloadEntryIds.clear();
|
|
1768
1808
|
for (const id of this.coldPayloadEntryIds) {
|
|
@@ -1804,6 +1844,7 @@ export class SessionManager {
|
|
|
1804
1844
|
this.labelTimestampsById = branched.labelTimestampsById;
|
|
1805
1845
|
this.leafId = branched.leafId;
|
|
1806
1846
|
this.persistenceStateUncertain = branched.persistenceStateUncertain;
|
|
1847
|
+
this.inheritedSessionIds = new Set(branched.inheritedSessionIds);
|
|
1807
1848
|
this.coldPayloadEntryIds.clear();
|
|
1808
1849
|
for (const id of branched.coldPayloadEntryIds)
|
|
1809
1850
|
this.coldPayloadEntryIds.add(id);
|