@iworkforces/tracelattice 2.1.2 → 2.2.1
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/README.md +45 -10
- package/dist/ServerConfig.d.ts +9 -5
- package/dist/ServerConfig.d.ts.map +1 -1
- package/dist/ServerConfig.js.map +1 -1
- package/dist/config/ConfigLoader.d.ts +20 -7
- package/dist/config/ConfigLoader.d.ts.map +1 -1
- package/dist/config/ConfigLoader.js.map +1 -1
- package/dist/contracts/PersistenceBackend.d.ts +10 -1
- package/dist/contracts/PersistenceBackend.d.ts.map +1 -1
- package/dist/contracts/calibrator.d.ts +9 -6
- package/dist/contracts/calibrator.d.ts.map +1 -1
- package/dist/contracts/interfaces.d.ts +6 -0
- package/dist/contracts/interfaces.d.ts.map +1 -1
- package/dist/contracts/persistence-work.d.ts +13 -1
- package/dist/contracts/persistence-work.d.ts.map +1 -1
- package/dist/contracts/strategy.d.ts +14 -9
- package/dist/contracts/strategy.d.ts.map +1 -1
- package/dist/core/DurableThoughtIdentityIndex.d.ts +35 -0
- package/dist/core/DurableThoughtIdentityIndex.d.ts.map +1 -0
- package/dist/core/DurableThoughtIdentityIndex.js +94 -0
- package/dist/core/DurableThoughtIdentityIndex.js.map +1 -0
- package/dist/core/HistoryManager.d.ts +5 -0
- package/dist/core/HistoryManager.d.ts.map +1 -1
- package/dist/core/HistoryManager.js +37 -4
- package/dist/core/HistoryManager.js.map +1 -1
- package/dist/core/IHistoryManager.d.ts +2 -0
- package/dist/core/IHistoryManager.d.ts.map +1 -1
- package/dist/core/PersistenceBuffer.d.ts +7 -1
- package/dist/core/PersistenceBuffer.d.ts.map +1 -1
- package/dist/core/PersistenceBuffer.js +13 -1
- package/dist/core/PersistenceBuffer.js.map +1 -1
- package/dist/core/PersistenceRestore.d.ts.map +1 -1
- package/dist/core/PersistenceRestore.js +11 -3
- package/dist/core/PersistenceRestore.js.map +1 -1
- package/dist/core/PersistenceWorkQueue.d.ts +13 -1
- package/dist/core/PersistenceWorkQueue.d.ts.map +1 -1
- package/dist/core/PersistenceWorkQueue.js +86 -11
- package/dist/core/PersistenceWorkQueue.js.map +1 -1
- package/dist/core/PersistenceWriter.d.ts.map +1 -1
- package/dist/core/PersistenceWriter.js +3 -0
- package/dist/core/PersistenceWriter.js.map +1 -1
- package/dist/core/ThoughtEvaluator.d.ts +7 -4
- package/dist/core/ThoughtEvaluator.d.ts.map +1 -1
- package/dist/core/ThoughtEvaluator.js +15 -7
- package/dist/core/ThoughtEvaluator.js.map +1 -1
- package/dist/core/ThoughtProcessor.d.ts.map +1 -1
- package/dist/core/ThoughtProcessor.js +19 -7
- package/dist/core/ThoughtProcessor.js.map +1 -1
- package/dist/core/ThoughtReferenceIndex.d.ts +4 -0
- package/dist/core/ThoughtReferenceIndex.d.ts.map +1 -1
- package/dist/core/ThoughtReferenceIndex.js +28 -1
- package/dist/core/ThoughtReferenceIndex.js.map +1 -1
- package/dist/core/VerificationOutcomeAdmission.d.ts +8 -1
- package/dist/core/VerificationOutcomeAdmission.d.ts.map +1 -1
- package/dist/core/VerificationOutcomeAdmission.js.map +1 -1
- package/dist/core/VerificationTargetRestore.d.ts +5 -0
- package/dist/core/VerificationTargetRestore.d.ts.map +1 -0
- package/dist/core/VerificationTargetRestore.js +61 -0
- package/dist/core/VerificationTargetRestore.js.map +1 -0
- package/dist/core/evaluator/Aggregator.d.ts +2 -1
- package/dist/core/evaluator/Aggregator.d.ts.map +1 -1
- package/dist/core/evaluator/Aggregator.js +4 -12
- package/dist/core/evaluator/Aggregator.js.map +1 -1
- package/dist/core/evaluator/Calibrator.d.ts +13 -9
- package/dist/core/evaluator/Calibrator.d.ts.map +1 -1
- package/dist/core/evaluator/Calibrator.js +25 -11
- package/dist/core/evaluator/Calibrator.js.map +1 -1
- package/dist/core/evaluator/PatternDetector.d.ts +2 -1
- package/dist/core/evaluator/PatternDetector.d.ts.map +1 -1
- package/dist/core/evaluator/PatternDetector.js +13 -12
- package/dist/core/evaluator/PatternDetector.js.map +1 -1
- package/dist/core/evaluator/SignalComputer.d.ts +3 -2
- package/dist/core/evaluator/SignalComputer.d.ts.map +1 -1
- package/dist/core/evaluator/SignalComputer.js +4 -9
- package/dist/core/evaluator/SignalComputer.js.map +1 -1
- package/dist/core/evaluator/VerificationLinks.d.ts +19 -0
- package/dist/core/evaluator/VerificationLinks.d.ts.map +1 -0
- package/dist/core/evaluator/VerificationLinks.js +113 -0
- package/dist/core/evaluator/VerificationLinks.js.map +1 -0
- package/dist/core/evaluator/calibration-math.d.ts +12 -2
- package/dist/core/evaluator/calibration-math.d.ts.map +1 -1
- package/dist/core/evaluator/calibration-math.js +11 -2
- package/dist/core/evaluator/calibration-math.js.map +1 -1
- package/dist/core/graph/EdgeEmitter.d.ts.map +1 -1
- package/dist/core/graph/EdgeEmitter.js +2 -1
- package/dist/core/graph/EdgeEmitter.js.map +1 -1
- package/dist/core/graph/GraphView.d.ts +5 -5
- package/dist/core/graph/GraphView.d.ts.map +1 -1
- package/dist/core/graph/GraphView.js +11 -11
- package/dist/core/graph/GraphView.js.map +1 -1
- package/dist/core/reasoning/ActiveEvidenceProjection.d.ts +20 -0
- package/dist/core/reasoning/ActiveEvidenceProjection.d.ts.map +1 -0
- package/dist/core/reasoning/ActiveEvidenceProjection.js +100 -0
- package/dist/core/reasoning/ActiveEvidenceProjection.js.map +1 -0
- package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts +5 -4
- package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.d.ts.map +1 -1
- package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js +24 -14
- package/dist/core/reasoning/strategies/TreeOfThoughtStrategy.js.map +1 -1
- package/dist/lib.d.ts.map +1 -1
- package/dist/lib.js +3 -1
- package/dist/lib.js.map +1 -1
- package/dist/metrics/metrics.impl.d.ts.map +1 -1
- package/dist/metrics/metrics.impl.js +19 -7
- package/dist/metrics/metrics.impl.js.map +1 -1
- package/dist/persistence/BacktrackPersistence.d.ts +13 -0
- package/dist/persistence/BacktrackPersistence.d.ts.map +1 -0
- package/dist/persistence/BacktrackPersistence.js +90 -0
- package/dist/persistence/BacktrackPersistence.js.map +1 -0
- package/dist/persistence/FilePersistence.d.ts +2 -1
- package/dist/persistence/FilePersistence.d.ts.map +1 -1
- package/dist/persistence/FilePersistence.js +28 -0
- package/dist/persistence/FilePersistence.js.map +1 -1
- package/dist/persistence/FileSnapshotV2.d.ts +2 -0
- package/dist/persistence/FileSnapshotV2.d.ts.map +1 -1
- package/dist/persistence/FileSnapshotV2.js +6 -2
- package/dist/persistence/FileSnapshotV2.js.map +1 -1
- package/dist/persistence/MemoryPersistence.d.ts +2 -1
- package/dist/persistence/MemoryPersistence.d.ts.map +1 -1
- package/dist/persistence/MemoryPersistence.js +21 -1
- package/dist/persistence/MemoryPersistence.js.map +1 -1
- package/dist/persistence/PersistenceCodec.d.ts.map +1 -1
- package/dist/persistence/PersistenceCodec.js +5 -0
- package/dist/persistence/PersistenceCodec.js.map +1 -1
- package/dist/persistence/PersistenceErrors.d.ts +1 -1
- package/dist/persistence/PersistenceErrors.d.ts.map +1 -1
- package/dist/persistence/PersistenceErrors.js.map +1 -1
- package/dist/persistence/PersistenceScope.d.ts +1 -1
- package/dist/persistence/PersistenceScope.d.ts.map +1 -1
- package/dist/persistence/PersistenceScope.js.map +1 -1
- package/dist/persistence/SqlitePersistence.d.ts +2 -1
- package/dist/persistence/SqlitePersistence.d.ts.map +1 -1
- package/dist/persistence/SqlitePersistence.js +18 -0
- package/dist/persistence/SqlitePersistence.js.map +1 -1
- package/package.json +12 -11
|
@@ -2,7 +2,8 @@
|
|
|
2
2
|
* Calibrator contracts — interfaces for confidence calibration.
|
|
3
3
|
*
|
|
4
4
|
* Defines the shape of calibration metrics, results, and the calibrator
|
|
5
|
-
* service that maps raw model confidence to calibrated probabilities.
|
|
5
|
+
* service that maps raw model confidence to calibrated probabilities. It does not guarantee
|
|
6
|
+
* factuality, universal improvement, or monotonic change for each example.
|
|
6
7
|
*
|
|
7
8
|
* @module contracts/calibrator
|
|
8
9
|
*/
|
|
@@ -18,9 +19,9 @@ import type { ThoughtType } from './reasoning-types.js';
|
|
|
18
19
|
* ```
|
|
19
20
|
*/
|
|
20
21
|
export interface CalibrationMetrics {
|
|
21
|
-
/** Brier score across
|
|
22
|
+
/** Brier score across stored raw predictions and outcomes (lower is better). `null` if empty. */
|
|
22
23
|
readonly brierScore: number | null;
|
|
23
|
-
/**
|
|
24
|
+
/** ECE across stored raw predictions and outcomes (lower is better). `null` if empty. */
|
|
24
25
|
readonly ece: number | null;
|
|
25
26
|
/** Number of (prediction, outcome) samples backing the metrics. */
|
|
26
27
|
readonly sampleCount: number;
|
|
@@ -43,7 +44,7 @@ export interface CalibrationResult {
|
|
|
43
44
|
readonly calibrated: number;
|
|
44
45
|
/** Temperature used in the calibration mapping (1.0 = identity). */
|
|
45
46
|
readonly temperature: number;
|
|
46
|
-
/** Weight applied to the prior when blending with
|
|
47
|
+
/** Weight applied to the raw confidence prior when blending with empirical evidence. */
|
|
47
48
|
readonly priorWeight: number;
|
|
48
49
|
}
|
|
49
50
|
/**
|
|
@@ -51,7 +52,9 @@ export interface CalibrationResult {
|
|
|
51
52
|
* probabilities and reports calibration quality.
|
|
52
53
|
*
|
|
53
54
|
* Implementations should be deterministic for the same `(raw, type, sessionId)`
|
|
54
|
-
* triple given a fixed internal state.
|
|
55
|
+
* triple given a fixed internal state. They blend raw confidence with the per-type empirical
|
|
56
|
+
* outcome mean using `priorWeight = 10 / (10 + n)`. At `n = 0`, the empirical component has
|
|
57
|
+
* zero weight and the result is raw exactly. Temperature, when fitted, is applied after blending.
|
|
55
58
|
*
|
|
56
59
|
* @example
|
|
57
60
|
* ```typescript
|
|
@@ -61,7 +64,7 @@ export interface CalibrationResult {
|
|
|
61
64
|
* ```
|
|
62
65
|
*/
|
|
63
66
|
export interface ICalibrator {
|
|
64
|
-
/** Whether calibration is enabled. When `false`, `calibrate()` returns
|
|
67
|
+
/** Whether calibration is enabled. When `false`, `calibrate()` returns raw unchanged. */
|
|
65
68
|
readonly enabled: boolean;
|
|
66
69
|
/**
|
|
67
70
|
* Map a raw confidence value to a calibrated value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"calibrator.d.ts","sourceRoot":"","sources":["../../src/contracts/calibrator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"calibrator.d.ts","sourceRoot":"","sources":["../../src/contracts/calibrator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAExD;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IAClC,iGAAiG;IACjG,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,yFAAyF;IACzF,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,mEAAmE;IACnE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,0EAA0E;IAC1E,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC,CAAC;CAC1D;AAED;;;;;;;;GAQG;AACH,MAAM,WAAW,iBAAiB;IACjC,2CAA2C;IAC3C,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,yCAAyC;IACzC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,oEAAoE;IACpE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,wFAAwF;IACxF,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC7B;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,WAAW;IAC3B,yFAAyF;IACzF,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B;;;;;;;OAOG;IACH,SAAS,CAAC,aAAa,EAAE,MAAM,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,SAAS,GAAG,iBAAiB,CAAC;IAC7F;;;;;OAKG;IACH,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,kBAAkB,CAAC;IACnD;;;;OAIG;IACH,KAAK,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IAClC;;;;OAIG;IACH,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI,CAAC;IACzC,8CAA8C;IAC9C,QAAQ,IAAI,IAAI,CAAC;CACjB"}
|
|
@@ -205,6 +205,12 @@ export interface IEdgeStore {
|
|
|
205
205
|
*/
|
|
206
206
|
size(sessionId?: SessionId): number;
|
|
207
207
|
}
|
|
208
|
+
export interface IGraphViewStore {
|
|
209
|
+
outgoing(sessionId: SessionId, from: ThoughtId): readonly Edge[];
|
|
210
|
+
incoming(sessionId: SessionId, to: ThoughtId): readonly Edge[];
|
|
211
|
+
edgesForSession(sessionId: SessionId): readonly Edge[];
|
|
212
|
+
nodesForSession?(sessionId: SessionId): readonly ThoughtId[];
|
|
213
|
+
}
|
|
208
214
|
/**
|
|
209
215
|
* Tool registry interface used for tool_name allowlisting in ThoughtProcessor.
|
|
210
216
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/contracts/interfaces.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/contracts/interfaces.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
import type { Summary } from '../core/compression/Summary.js';
|
|
7
7
|
import type { Edge } from '../core/graph/Edge.js';
|
|
8
8
|
import type { ThoughtData } from '../core/thought.js';
|
|
9
|
-
import type { BranchId, SessionId } from './ids.js';
|
|
9
|
+
import type { BranchId, SessionId, ThoughtId } from './ids.js';
|
|
10
10
|
/** Stable queue-assigned identity for one accepted persistence unit. */
|
|
11
11
|
export type PersistenceWorkToken = string;
|
|
12
12
|
/**
|
|
@@ -20,6 +20,12 @@ export type PersistenceWork = {
|
|
|
20
20
|
readonly token: PersistenceWorkToken;
|
|
21
21
|
readonly sessionId: SessionId;
|
|
22
22
|
readonly thought: ThoughtData;
|
|
23
|
+
} | {
|
|
24
|
+
readonly kind: 'backtrack';
|
|
25
|
+
readonly token: PersistenceWorkToken;
|
|
26
|
+
readonly sessionId: SessionId;
|
|
27
|
+
readonly thought: ThoughtData;
|
|
28
|
+
readonly targetThoughtId: ThoughtId;
|
|
23
29
|
} | {
|
|
24
30
|
readonly kind: 'branch';
|
|
25
31
|
readonly operation: 'save';
|
|
@@ -62,6 +68,12 @@ export type PersistenceWorkFailure = {
|
|
|
62
68
|
readonly sessionId: SessionId;
|
|
63
69
|
readonly attempts: number;
|
|
64
70
|
readonly cause: unknown;
|
|
71
|
+
} | {
|
|
72
|
+
readonly kind: 'backtrack';
|
|
73
|
+
readonly token: PersistenceWorkToken;
|
|
74
|
+
readonly sessionId: SessionId;
|
|
75
|
+
readonly attempts: number;
|
|
76
|
+
readonly cause: unknown;
|
|
65
77
|
} | {
|
|
66
78
|
readonly kind: 'branch';
|
|
67
79
|
readonly operation: 'save' | 'delete';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"persistence-work.d.ts","sourceRoot":"","sources":["../../src/contracts/persistence-work.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAC9D,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"persistence-work.d.ts","sourceRoot":"","sources":["../../src/contracts/persistence-work.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,18 +12,26 @@ import type { SessionId } from './ids.js';
|
|
|
12
12
|
import type { ThoughtData } from '../core/thought.js';
|
|
13
13
|
import type { ReasoningStats } from '../core/reasoning.js';
|
|
14
14
|
import type { GraphView } from '../core/graph/GraphView.js';
|
|
15
|
+
export interface ActiveEvidenceProjection {
|
|
16
|
+
/** Active, immutable deep-copied main-history evidence in retained main order. */
|
|
17
|
+
readonly mainHistory: readonly ThoughtData[];
|
|
18
|
+
/** Active, immutable deep-copied thoughts, including branch-only retained evidence. */
|
|
19
|
+
readonly activeThoughts: readonly ThoughtData[];
|
|
20
|
+
/** Graph induced only by active endpoints, without path contraction or audit-store mutation. */
|
|
21
|
+
readonly graph: GraphView | undefined;
|
|
22
|
+
}
|
|
15
23
|
/**
|
|
16
24
|
* Read-only snapshot of session state passed to a reasoning strategy.
|
|
17
25
|
*
|
|
18
|
-
*
|
|
19
|
-
*
|
|
26
|
+
* Evidence is a first-class active projection. Its thoughts and graph are immutable deep copies;
|
|
27
|
+
* `mainHistory` preserves retained main order, `activeThoughts` permits branch-only lookup, and
|
|
28
|
+
* its graph includes only active endpoints. It never contracts paths or mutates the audit store.
|
|
20
29
|
*
|
|
21
30
|
* @example
|
|
22
31
|
* ```ts
|
|
23
32
|
* const ctx: StrategyContext = {
|
|
24
33
|
* sessionId: 'sess_42',
|
|
25
|
-
*
|
|
26
|
-
* graph: new GraphView(edgeStore, 'sess_42'),
|
|
34
|
+
* evidence: buildActiveEvidenceProjection(...),
|
|
27
35
|
* stats: evaluator.computeStats(history),
|
|
28
36
|
* currentThought: latestThought,
|
|
29
37
|
* };
|
|
@@ -33,10 +41,7 @@ import type { GraphView } from '../core/graph/GraphView.js';
|
|
|
33
41
|
export interface StrategyContext {
|
|
34
42
|
/** Session identifier this context belongs to. */
|
|
35
43
|
readonly sessionId: SessionId;
|
|
36
|
-
|
|
37
|
-
readonly history: readonly ThoughtData[];
|
|
38
|
-
/** Read-only graph view for traversal (ancestors, descendants, etc.). Undefined when DAG edges are disabled. */
|
|
39
|
-
readonly graph: GraphView | undefined;
|
|
44
|
+
readonly evidence: ActiveEvidenceProjection;
|
|
40
45
|
/** Aggregated reasoning analytics for the session. */
|
|
41
46
|
readonly stats: ReasoningStats;
|
|
42
47
|
/** The thought that just triggered the strategy decision. */
|
|
@@ -89,7 +94,7 @@ export type StrategyDecision = {
|
|
|
89
94
|
* }
|
|
90
95
|
* shouldBranch(_ctx: StrategyContext): boolean { return false; }
|
|
91
96
|
* shouldTerminate(ctx: StrategyContext): boolean {
|
|
92
|
-
* return ctx.
|
|
97
|
+
* return ctx.evidence.mainHistory.length >= 50;
|
|
93
98
|
* }
|
|
94
99
|
* }
|
|
95
100
|
* ```
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/contracts/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"strategy.d.ts","sourceRoot":"","sources":["../../src/contracts/strategy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,4BAA4B,CAAC;AAE5D,MAAM,WAAW,wBAAwB;IACxC,kFAAkF;IAClF,QAAQ,CAAC,WAAW,EAAE,SAAS,WAAW,EAAE,CAAC;IAC7C,uFAAuF;IACvF,QAAQ,CAAC,cAAc,EAAE,SAAS,WAAW,EAAE,CAAC;IAChD,gGAAgG;IAChG,QAAQ,CAAC,KAAK,EAAE,SAAS,GAAG,SAAS,CAAC;CACtC;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,eAAe;IAC/B,kDAAkD;IAClD,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,QAAQ,EAAE,wBAAwB,CAAC;IAC5C,sDAAsD;IACtD,QAAQ,CAAC,KAAK,EAAE,cAAc,CAAC;IAC/B,6DAA6D;IAC7D,QAAQ,CAAC,cAAc,EAAE,WAAW,CAAC;CACrC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,gBAAgB,GACzB;IAAE,MAAM,EAAE,UAAU,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,MAAM,EAAE,QAAQ,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,GAC5E;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACvC;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,MAAM,WAAW,kBAAkB;IAClC,iEAAiE;IACjE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,gEAAgE;IAChE,MAAM,CAAC,GAAG,EAAE,eAAe,GAAG,gBAAgB,CAAC;IAC/C,oDAAoD;IACpD,YAAY,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;IAC5C,uDAAuD;IACvD,eAAe,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;CAC/C"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import type { BranchId, SessionId, ThoughtId } from '../contracts/ids.js';
|
|
2
|
+
import type { ThoughtData } from './thought.js';
|
|
3
|
+
export type DurableHistoryRetention = {
|
|
4
|
+
readonly kind: 'bounded';
|
|
5
|
+
readonly maxHistorySize: number;
|
|
6
|
+
} | {
|
|
7
|
+
readonly kind: 'unlimited';
|
|
8
|
+
};
|
|
9
|
+
export declare function normalizeDurableHistoryRetention(maxHistorySize: number): DurableHistoryRetention;
|
|
10
|
+
export type DurableIdentityBranch = {
|
|
11
|
+
readonly branchId: BranchId;
|
|
12
|
+
readonly thoughts: readonly ThoughtData[];
|
|
13
|
+
};
|
|
14
|
+
export type DurableIdentitySession = {
|
|
15
|
+
readonly sessionId: SessionId;
|
|
16
|
+
readonly history: readonly ThoughtData[];
|
|
17
|
+
readonly branches: readonly DurableIdentityBranch[];
|
|
18
|
+
};
|
|
19
|
+
export declare class DurableThoughtIdentityIndex {
|
|
20
|
+
private readonly _historyRetention;
|
|
21
|
+
private readonly _sessions;
|
|
22
|
+
constructor(_historyRetention: DurableHistoryRetention);
|
|
23
|
+
has(sessionId: SessionId, thoughtId: ThoughtId): boolean;
|
|
24
|
+
appendThought(sessionId: SessionId, thought: ThoughtData): void;
|
|
25
|
+
replaceBranch(sessionId: SessionId, branchId: BranchId, thoughts: readonly ThoughtData[]): void;
|
|
26
|
+
deleteBranch(sessionId: SessionId, branchId: BranchId): void;
|
|
27
|
+
replaceAll(sessions: readonly DurableIdentitySession[]): void;
|
|
28
|
+
clearSession(sessionId: SessionId): void;
|
|
29
|
+
clearAll(): void;
|
|
30
|
+
private _session;
|
|
31
|
+
private _add;
|
|
32
|
+
private _remove;
|
|
33
|
+
private _deleteEmptySession;
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=DurableThoughtIdentityIndex.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DurableThoughtIdentityIndex.d.ts","sourceRoot":"","sources":["../../src/core/DurableThoughtIdentityIndex.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAE1E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,MAAM,MAAM,uBAAuB,GAClC;IAAE,QAAQ,CAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,CAAC;AAEhG,wBAAgB,gCAAgC,CAAC,cAAc,EAAE,MAAM,GAAG,uBAAuB,CAEhG;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,WAAW,EAAE,CAAC;CAC1C,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC;IAC9B,QAAQ,CAAC,OAAO,EAAE,SAAS,WAAW,EAAE,CAAC;IACzC,QAAQ,CAAC,QAAQ,EAAE,SAAS,qBAAqB,EAAE,CAAC;CACpD,CAAC;AAQF,qBAAa,2BAA2B;IAGpB,OAAO,CAAC,QAAQ,CAAC,iBAAiB;IAFrD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA2C;gBAEjC,iBAAiB,EAAE,uBAAuB;IAEvE,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,OAAO;IAIxD,aAAa,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAmB/D,aAAa,CACnB,SAAS,EAAE,SAAS,EACpB,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,SAAS,WAAW,EAAE,GAC9B,IAAI;IAYA,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAQ5D,UAAU,CAAC,QAAQ,EAAE,SAAS,sBAAsB,EAAE,GAAG,IAAI;IAU7D,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAIxC,QAAQ,IAAI,IAAI;IAIvB,OAAO,CAAC,QAAQ;IAYhB,OAAO,CAAC,IAAI;IAIZ,OAAO,CAAC,OAAO;IAOf,OAAO,CAAC,mBAAmB;CAK3B"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { assertNever } from "../utils.js";
|
|
2
|
+
function normalizeDurableHistoryRetention(maxHistorySize) {
|
|
3
|
+
return maxHistorySize > 0 ? {
|
|
4
|
+
kind: 'bounded',
|
|
5
|
+
maxHistorySize
|
|
6
|
+
} : {
|
|
7
|
+
kind: 'unlimited'
|
|
8
|
+
};
|
|
9
|
+
}
|
|
10
|
+
class DurableThoughtIdentityIndex {
|
|
11
|
+
_historyRetention;
|
|
12
|
+
_sessions = new Map();
|
|
13
|
+
constructor(_historyRetention){
|
|
14
|
+
this._historyRetention = _historyRetention;
|
|
15
|
+
}
|
|
16
|
+
has(sessionId, thoughtId) {
|
|
17
|
+
return this._sessions.get(sessionId)?.counts.has(thoughtId) === true;
|
|
18
|
+
}
|
|
19
|
+
appendThought(sessionId, thought) {
|
|
20
|
+
if (void 0 === thought.id) return;
|
|
21
|
+
const session = this._session(sessionId);
|
|
22
|
+
session.history.push(thought.id);
|
|
23
|
+
this._add(session, thought.id);
|
|
24
|
+
switch(this._historyRetention.kind){
|
|
25
|
+
case 'unlimited':
|
|
26
|
+
return;
|
|
27
|
+
case 'bounded':
|
|
28
|
+
while(session.history.length > this._historyRetention.maxHistorySize){
|
|
29
|
+
const removed = session.history.shift();
|
|
30
|
+
if (void 0 !== removed) this._remove(session, removed);
|
|
31
|
+
}
|
|
32
|
+
return;
|
|
33
|
+
default:
|
|
34
|
+
assertNever(this._historyRetention);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
replaceBranch(sessionId, branchId, thoughts) {
|
|
38
|
+
const session = this._session(sessionId);
|
|
39
|
+
for (const thoughtId of session.branches.get(branchId) ?? [])this._remove(session, thoughtId);
|
|
40
|
+
const replacement = thoughts.flatMap((thought)=>void 0 === thought.id ? [] : [
|
|
41
|
+
thought.id
|
|
42
|
+
]);
|
|
43
|
+
if (0 === replacement.length) session.branches.delete(branchId);
|
|
44
|
+
else session.branches.set(branchId, replacement);
|
|
45
|
+
for (const thoughtId of replacement)this._add(session, thoughtId);
|
|
46
|
+
this._deleteEmptySession(sessionId, session);
|
|
47
|
+
}
|
|
48
|
+
deleteBranch(sessionId, branchId) {
|
|
49
|
+
const session = this._sessions.get(sessionId);
|
|
50
|
+
if (void 0 === session) return;
|
|
51
|
+
for (const thoughtId of session.branches.get(branchId) ?? [])this._remove(session, thoughtId);
|
|
52
|
+
session.branches.delete(branchId);
|
|
53
|
+
this._deleteEmptySession(sessionId, session);
|
|
54
|
+
}
|
|
55
|
+
replaceAll(sessions) {
|
|
56
|
+
this._sessions.clear();
|
|
57
|
+
for (const session of sessions){
|
|
58
|
+
for (const thought of session.history)this.appendThought(session.sessionId, thought);
|
|
59
|
+
for (const branch of session.branches)this.replaceBranch(session.sessionId, branch.branchId, branch.thoughts);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
clearSession(sessionId) {
|
|
63
|
+
this._sessions.delete(sessionId);
|
|
64
|
+
}
|
|
65
|
+
clearAll() {
|
|
66
|
+
this._sessions.clear();
|
|
67
|
+
}
|
|
68
|
+
_session(sessionId) {
|
|
69
|
+
const existing = this._sessions.get(sessionId);
|
|
70
|
+
if (void 0 !== existing) return existing;
|
|
71
|
+
const created = {
|
|
72
|
+
history: [],
|
|
73
|
+
branches: new Map(),
|
|
74
|
+
counts: new Map()
|
|
75
|
+
};
|
|
76
|
+
this._sessions.set(sessionId, created);
|
|
77
|
+
return created;
|
|
78
|
+
}
|
|
79
|
+
_add(session, thoughtId) {
|
|
80
|
+
session.counts.set(thoughtId, (session.counts.get(thoughtId) ?? 0) + 1);
|
|
81
|
+
}
|
|
82
|
+
_remove(session, thoughtId) {
|
|
83
|
+
const count = session.counts.get(thoughtId);
|
|
84
|
+
if (void 0 === count) return;
|
|
85
|
+
if (count > 1) session.counts.set(thoughtId, count - 1);
|
|
86
|
+
else session.counts.delete(thoughtId);
|
|
87
|
+
}
|
|
88
|
+
_deleteEmptySession(sessionId, session) {
|
|
89
|
+
if (0 === session.history.length && 0 === session.branches.size) this._sessions.delete(sessionId);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export { DurableThoughtIdentityIndex, normalizeDurableHistoryRetention };
|
|
93
|
+
|
|
94
|
+
//# sourceMappingURL=DurableThoughtIdentityIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"core/DurableThoughtIdentityIndex.js","sources":["../../src/core/DurableThoughtIdentityIndex.ts"],"sourcesContent":["import type { BranchId, SessionId, ThoughtId } from '../contracts/ids.js';\nimport { assertNever } from '../utils.js';\nimport type { ThoughtData } from './thought.js';\n\nexport type DurableHistoryRetention =\n\t{ readonly kind: 'bounded'; readonly maxHistorySize: number } | { readonly kind: 'unlimited' };\n\nexport function normalizeDurableHistoryRetention(maxHistorySize: number): DurableHistoryRetention {\n\treturn maxHistorySize > 0 ? { kind: 'bounded', maxHistorySize } : { kind: 'unlimited' };\n}\n\nexport type DurableIdentityBranch = {\n\treadonly branchId: BranchId;\n\treadonly thoughts: readonly ThoughtData[];\n};\n\nexport type DurableIdentitySession = {\n\treadonly sessionId: SessionId;\n\treadonly history: readonly ThoughtData[];\n\treadonly branches: readonly DurableIdentityBranch[];\n};\n\ntype SessionIdentities = {\n\treadonly history: ThoughtId[];\n\treadonly branches: Map<BranchId, readonly ThoughtId[]>;\n\treadonly counts: Map<ThoughtId, number>;\n};\n\nexport class DurableThoughtIdentityIndex {\n\tprivate readonly _sessions = new Map<SessionId, SessionIdentities>();\n\n\tpublic constructor(private readonly _historyRetention: DurableHistoryRetention) {}\n\n\tpublic has(sessionId: SessionId, thoughtId: ThoughtId): boolean {\n\t\treturn this._sessions.get(sessionId)?.counts.has(thoughtId) === true;\n\t}\n\n\tpublic appendThought(sessionId: SessionId, thought: ThoughtData): void {\n\t\tif (thought.id === undefined) return;\n\t\tconst session = this._session(sessionId);\n\t\tsession.history.push(thought.id);\n\t\tthis._add(session, thought.id);\n\t\tswitch (this._historyRetention.kind) {\n\t\t\tcase 'unlimited':\n\t\t\t\treturn;\n\t\t\tcase 'bounded':\n\t\t\t\twhile (session.history.length > this._historyRetention.maxHistorySize) {\n\t\t\t\t\tconst removed = session.history.shift();\n\t\t\t\t\tif (removed !== undefined) this._remove(session, removed);\n\t\t\t\t}\n\t\t\t\treturn;\n\t\t\tdefault:\n\t\t\t\tassertNever(this._historyRetention);\n\t\t}\n\t}\n\n\tpublic replaceBranch(\n\t\tsessionId: SessionId,\n\t\tbranchId: BranchId,\n\t\tthoughts: readonly ThoughtData[]\n\t): void {\n\t\tconst session = this._session(sessionId);\n\t\tfor (const thoughtId of session.branches.get(branchId) ?? []) this._remove(session, thoughtId);\n\t\tconst replacement = thoughts.flatMap((thought) =>\n\t\t\tthought.id === undefined ? [] : [thought.id]\n\t\t);\n\t\tif (replacement.length === 0) session.branches.delete(branchId);\n\t\telse session.branches.set(branchId, replacement);\n\t\tfor (const thoughtId of replacement) this._add(session, thoughtId);\n\t\tthis._deleteEmptySession(sessionId, session);\n\t}\n\n\tpublic deleteBranch(sessionId: SessionId, branchId: BranchId): void {\n\t\tconst session = this._sessions.get(sessionId);\n\t\tif (session === undefined) return;\n\t\tfor (const thoughtId of session.branches.get(branchId) ?? []) this._remove(session, thoughtId);\n\t\tsession.branches.delete(branchId);\n\t\tthis._deleteEmptySession(sessionId, session);\n\t}\n\n\tpublic replaceAll(sessions: readonly DurableIdentitySession[]): void {\n\t\tthis._sessions.clear();\n\t\tfor (const session of sessions) {\n\t\t\tfor (const thought of session.history) this.appendThought(session.sessionId, thought);\n\t\t\tfor (const branch of session.branches) {\n\t\t\t\tthis.replaceBranch(session.sessionId, branch.branchId, branch.thoughts);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic clearSession(sessionId: SessionId): void {\n\t\tthis._sessions.delete(sessionId);\n\t}\n\n\tpublic clearAll(): void {\n\t\tthis._sessions.clear();\n\t}\n\n\tprivate _session(sessionId: SessionId): SessionIdentities {\n\t\tconst existing = this._sessions.get(sessionId);\n\t\tif (existing !== undefined) return existing;\n\t\tconst created: SessionIdentities = {\n\t\t\thistory: [],\n\t\t\tbranches: new Map(),\n\t\t\tcounts: new Map(),\n\t\t};\n\t\tthis._sessions.set(sessionId, created);\n\t\treturn created;\n\t}\n\n\tprivate _add(session: SessionIdentities, thoughtId: ThoughtId): void {\n\t\tsession.counts.set(thoughtId, (session.counts.get(thoughtId) ?? 0) + 1);\n\t}\n\n\tprivate _remove(session: SessionIdentities, thoughtId: ThoughtId): void {\n\t\tconst count = session.counts.get(thoughtId);\n\t\tif (count === undefined) return;\n\t\tif (count > 1) session.counts.set(thoughtId, count - 1);\n\t\telse session.counts.delete(thoughtId);\n\t}\n\n\tprivate _deleteEmptySession(sessionId: SessionId, session: SessionIdentities): void {\n\t\tif (session.history.length === 0 && session.branches.size === 0) {\n\t\t\tthis._sessions.delete(sessionId);\n\t\t}\n\t}\n}\n"],"names":["normalizeDurableHistoryRetention","maxHistorySize","DurableThoughtIdentityIndex","Map","_historyRetention","sessionId","thoughtId","thought","undefined","session","removed","assertNever","branchId","thoughts","replacement","sessions","branch","existing","created","count"],"mappings":";AAOO,SAASA,iCAAiCC,cAAsB;IACtE,OAAOA,iBAAiB,IAAI;QAAE,MAAM;QAAWA;IAAe,IAAI;QAAE,MAAM;IAAY;AACvF;AAmBO,MAAMC;;IACK,YAAY,IAAIC,MAAoC;IAErE,YAAoCC,iBAA0C,CAAE;aAA5CA,iBAAiB,GAAjBA;IAA6C;IAE1E,IAAIC,SAAoB,EAAEC,SAAoB,EAAW;QAC/D,OAAO,IAAI,CAAC,SAAS,CAAC,GAAG,CAACD,YAAY,OAAO,IAAIC,eAAe;IACjE;IAEO,cAAcD,SAAoB,EAAEE,OAAoB,EAAQ;QACtE,IAAIA,AAAeC,WAAfD,QAAQ,EAAE,EAAgB;QAC9B,MAAME,UAAU,IAAI,CAAC,QAAQ,CAACJ;QAC9BI,QAAQ,OAAO,CAAC,IAAI,CAACF,QAAQ,EAAE;QAC/B,IAAI,CAAC,IAAI,CAACE,SAASF,QAAQ,EAAE;QAC7B,OAAQ,IAAI,CAAC,iBAAiB,CAAC,IAAI;YAClC,KAAK;gBACJ;YACD,KAAK;gBACJ,MAAOE,QAAQ,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAE;oBACtE,MAAMC,UAAUD,QAAQ,OAAO,CAAC,KAAK;oBACrC,IAAIC,AAAYF,WAAZE,SAAuB,IAAI,CAAC,OAAO,CAACD,SAASC;gBAClD;gBACA;YACD;gBACCC,YAAY,IAAI,CAAC,iBAAiB;QACpC;IACD;IAEO,cACNN,SAAoB,EACpBO,QAAkB,EAClBC,QAAgC,EACzB;QACP,MAAMJ,UAAU,IAAI,CAAC,QAAQ,CAACJ;QAC9B,KAAK,MAAMC,aAAaG,QAAQ,QAAQ,CAAC,GAAG,CAACG,aAAa,EAAE,CAAE,IAAI,CAAC,OAAO,CAACH,SAASH;QACpF,MAAMQ,cAAcD,SAAS,OAAO,CAAC,CAACN,UACrCA,AAAeC,WAAfD,QAAQ,EAAE,GAAiB,EAAE,GAAG;gBAACA,QAAQ,EAAE;aAAC;QAE7C,IAAIO,AAAuB,MAAvBA,YAAY,MAAM,EAAQL,QAAQ,QAAQ,CAAC,MAAM,CAACG;aACjDH,QAAQ,QAAQ,CAAC,GAAG,CAACG,UAAUE;QACpC,KAAK,MAAMR,aAAaQ,YAAa,IAAI,CAAC,IAAI,CAACL,SAASH;QACxD,IAAI,CAAC,mBAAmB,CAACD,WAAWI;IACrC;IAEO,aAAaJ,SAAoB,EAAEO,QAAkB,EAAQ;QACnE,MAAMH,UAAU,IAAI,CAAC,SAAS,CAAC,GAAG,CAACJ;QACnC,IAAII,AAAYD,WAAZC,SAAuB;QAC3B,KAAK,MAAMH,aAAaG,QAAQ,QAAQ,CAAC,GAAG,CAACG,aAAa,EAAE,CAAE,IAAI,CAAC,OAAO,CAACH,SAASH;QACpFG,QAAQ,QAAQ,CAAC,MAAM,CAACG;QACxB,IAAI,CAAC,mBAAmB,CAACP,WAAWI;IACrC;IAEO,WAAWM,QAA2C,EAAQ;QACpE,IAAI,CAAC,SAAS,CAAC,KAAK;QACpB,KAAK,MAAMN,WAAWM,SAAU;YAC/B,KAAK,MAAMR,WAAWE,QAAQ,OAAO,CAAE,IAAI,CAAC,aAAa,CAACA,QAAQ,SAAS,EAAEF;YAC7E,KAAK,MAAMS,UAAUP,QAAQ,QAAQ,CACpC,IAAI,CAAC,aAAa,CAACA,QAAQ,SAAS,EAAEO,OAAO,QAAQ,EAAEA,OAAO,QAAQ;QAExE;IACD;IAEO,aAAaX,SAAoB,EAAQ;QAC/C,IAAI,CAAC,SAAS,CAAC,MAAM,CAACA;IACvB;IAEO,WAAiB;QACvB,IAAI,CAAC,SAAS,CAAC,KAAK;IACrB;IAEQ,SAASA,SAAoB,EAAqB;QACzD,MAAMY,WAAW,IAAI,CAAC,SAAS,CAAC,GAAG,CAACZ;QACpC,IAAIY,AAAaT,WAAbS,UAAwB,OAAOA;QACnC,MAAMC,UAA6B;YAClC,SAAS,EAAE;YACX,UAAU,IAAIf;YACd,QAAQ,IAAIA;QACb;QACA,IAAI,CAAC,SAAS,CAAC,GAAG,CAACE,WAAWa;QAC9B,OAAOA;IACR;IAEQ,KAAKT,OAA0B,EAAEH,SAAoB,EAAQ;QACpEG,QAAQ,MAAM,CAAC,GAAG,CAACH,WAAYG,AAAAA,CAAAA,QAAQ,MAAM,CAAC,GAAG,CAACH,cAAc,KAAK;IACtE;IAEQ,QAAQG,OAA0B,EAAEH,SAAoB,EAAQ;QACvE,MAAMa,QAAQV,QAAQ,MAAM,CAAC,GAAG,CAACH;QACjC,IAAIa,AAAUX,WAAVW,OAAqB;QACzB,IAAIA,QAAQ,GAAGV,QAAQ,MAAM,CAAC,GAAG,CAACH,WAAWa,QAAQ;aAChDV,QAAQ,MAAM,CAAC,MAAM,CAACH;IAC5B;IAEQ,oBAAoBD,SAAoB,EAAEI,OAA0B,EAAQ;QACnF,IAAIA,AAA2B,MAA3BA,QAAQ,OAAO,CAAC,MAAM,IAAUA,AAA0B,MAA1BA,QAAQ,QAAQ,CAAC,IAAI,EACxD,IAAI,CAAC,SAAS,CAAC,MAAM,CAACJ;IAExB;AACD"}
|
|
@@ -41,6 +41,8 @@ export interface HistoryManagerConfig {
|
|
|
41
41
|
persistenceFlushInterval?: number;
|
|
42
42
|
/** Max retries for failed persistence flushes. @default 3 */
|
|
43
43
|
persistenceMaxRetries?: number;
|
|
44
|
+
persistenceHistorySize?: number;
|
|
45
|
+
persistBranches?: boolean;
|
|
44
46
|
eventEmitter?: PersistenceEventEmitter;
|
|
45
47
|
edgeStore?: IEdgeStore;
|
|
46
48
|
summaryStore?: ISummaryStore;
|
|
@@ -142,9 +144,12 @@ export declare class HistoryManager implements IHistoryManager {
|
|
|
142
144
|
* caches tools/skills, trims, branches, emits DAG edges, and buffers for persistence.
|
|
143
145
|
*/
|
|
144
146
|
addThought(thought: ThoughtData, context?: ThoughtAdmissionContext): void;
|
|
147
|
+
assertThoughtIdentityAvailable(thought: ThoughtData): void;
|
|
145
148
|
private _addThoughtWithinOperation;
|
|
146
149
|
private _resolveAdmissionReferences;
|
|
147
150
|
private _enforceRetention;
|
|
151
|
+
private _recordVerificationTarget;
|
|
152
|
+
private _pruneVerificationTargets;
|
|
148
153
|
private _pruneUnretainedEdges;
|
|
149
154
|
private _bufferRetainedState;
|
|
150
155
|
private _stageAllRestoreBranchReconciliation;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HistoryManager.d.ts","sourceRoot":"","sources":["../../src/core/HistoryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAS7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EACX,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"HistoryManager.d.ts","sourceRoot":"","sources":["../../src/core/HistoryManager.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AACrF,OAAO,EAAe,KAAK,QAAQ,EAAE,KAAK,SAAS,EAAkB,MAAM,qBAAqB,CAAC;AACjG,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAS7D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAC5D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAC7E,OAAO,EAEN,KAAK,kBAAkB,EACvB,KAAK,aAAa,EAClB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAC;AAGxD,OAAO,KAAK,EACX,sBAAsB,EACtB,eAAe,EACf,uBAAuB,EACvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAqB,KAAK,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AAIzF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAEhD,OAAO,EAAyB,KAAK,0BAA0B,EAAE,MAAM,4BAA4B,CAAC;AAEpG,OAAO,EAAE,2BAA2B,EAAE,MAAM,kCAAkC,CAAC;AAI/E,kFAAkF;AAClF,eAAO,MAAM,yBAAyB,QAAS,CAAC;AAiBhD,MAAM,WAAW,oBAAoB;IACpC,wEAAwE;IACxE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,0DAA0D;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,gDAAgD;IAChD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACxC,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,yEAAyE;IACzE,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,mDAAmD;IACnD,wBAAwB,CAAC,EAAE,MAAM,CAAC;IAClC,6DAA6D;IAC7D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,YAAY,CAAC,EAAE,uBAAuB,CAAC;IACvC,SAAS,CAAC,EAAE,UAAU,CAAC;IACvB,YAAY,CAAC,EAAE,aAAa,CAAC;IAC7B,mFAAmF;IACnF,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,qEAAqE;IACrE,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,8DAA8D;IAC9D,WAAW,CAAC,EAAE,YAAY,CAAC;IAC3B,4DAA4D;IAC5D,oBAAoB,CAAC,EAAE,2BAA2B,CAAC;IACnD,wEAAwE;IACxE,0BAA0B,CAAC,EAAE,CAAC,SAAS,EAAE,SAAS,KAAK,IAAI,CAAC;IAC5D,sFAAsF;IACtF,sBAAsB,CAAC,EAAE,MAAM,IAAI,CAAC;CACpC;AAED;;;;;;;GAOG;AACH,qBAAa,cAAe,YAAW,eAAe;IACrD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAkB;IACxD,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAO;IAC3C,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAS;IAC/B,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,YAAY,CAA4B;IAChD,OAAO,CAAC,mBAAmB,CAAU;IACrC,OAAO,CAAC,QAAQ,CAAC,CAAW;IAE5B,OAAO,CAAC,UAAU,CAAC,CAAa;IAChC,OAAO,CAAC,aAAa,CAAC,CAAgB;IACtC,OAAO,CAAC,SAAS,CAAU;IAE3B,OAAO,CAAC,aAAa,CAAiC;IAEtD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAc;IAC3C,OAAO,CAAC,eAAe,CAA+B;IACtD,OAAO,CAAC,kBAAkB,CAA2B;IACrD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA+B;IAC/D,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAwC;IAC1E,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAe;IAC7C,OAAO,CAAC,QAAQ,CAAC,UAAU,CAA8B;IACzD,OAAO,CAAC,cAAc,CAAsC;IAC5D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAC,CAAiC;IAC9E,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC,CAAa;gBAE1C,MAAM,GAAE,oBAAyB;IA2E7C,OAAO,KAAK,WAAW,GAEtB;IAED,OAAO,CAAC,gBAAgB;IAIxB,OAAO,CAAC,eAAe;IAKvB,0CAA0C;IACnC,YAAY,IAAI,OAAO,CAAC,IAAI,CAAC;IAKpC;;;;;OAKG;IACI,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAMxD;;;;;OAKG;IACI,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,OAAO,EAAE,GAAG,IAAI;IAQjF,uFAAuF;IAChF,YAAY,IAAI,UAAU,GAAG,SAAS;IAI7C,OAAO,CAAC,GAAG;IAIX,yFAAyF;IACzF,OAAO,CAAC,gBAAgB;IAIxB;;;;;;;;OAQG;IACH,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,0BAA0B;IAalC,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,2BAA2B;IAInC,OAAO,CAAC,sBAAsB;IAU9B,OAAO,CAAC,uBAAuB;YAMjB,cAAc;IAU5B,OAAO,CAAC,aAAa;IAcrB,OAAO,CAAC,kBAAkB;IAS1B,OAAO,CAAC,mBAAmB;IAe3B,OAAO,CAAC,yBAAyB;IAcjC,OAAO,CAAC,wBAAwB;IAahC;;;OAGG;IACI,UAAU,CAAC,OAAO,EAAE,WAAW,EAAE,OAAO,CAAC,EAAE,uBAAuB,GAAG,IAAI;IAOzE,8BAA8B,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAYjE,OAAO,CAAC,0BAA0B;IAmElC,OAAO,CAAC,2BAA2B;IAsBnC,OAAO,CAAC,iBAAiB;IAczB,OAAO,CAAC,yBAAyB;IAWjC,OAAO,CAAC,yBAAyB;IAajC,OAAO,CAAC,qBAAqB;IAa7B,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,oCAAoC;IAM5C,OAAO,CAAC,iCAAiC;IAKzC,OAAO,CAAC,uBAAuB;IAkB/B,uEAAuE;IACvE,OAAO,CAAC,gBAAgB;IAWxB,OAAO,CAAC,sBAAsB;IAKvB,uBAAuB,CAC7B,SAAS,EAAE,SAAS,EACpB,aAAa,EAAE,MAAM,GACnB,0BAA0B;IAK7B,OAAO,CAAC,mBAAmB;IAY3B,OAAO,CAAC,uBAAuB;IAiB/B,OAAO,CAAC,sBAAsB;IAYvB,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE;IAInD;;;OAGG;IACI,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,kBAAkB,GAAG,aAAa,EAAE;IASjF,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAI3C,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAAC,QAAQ,EAAE,WAAW,EAAE,CAAC;IAI/D,YAAY,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,EAAE;IAIlD,mGAAmG;IAC5F,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,sBAAsB;IA4BhE,wEAAwE;IACjE,cAAc,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IA4B3D,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO;IAK5D,oBAAoB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI7D,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,SAAS;IAI3D,SAAS,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,GAAG,WAAW,EAAE,GAAG,SAAS;IAIlF,0FAA0F;IAC7E,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAW7F,iFAAiF;IACpE,2BAA2B,CACvC,SAAS,EAAE,SAAS,EACpB,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAC9B,OAAO,CAAC,IAAI,CAAC;IAahB,iFAAiF;IACpE,QAAQ,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtE,iFAAiF;IACpE,uBAAuB,CAAC,mBAAmB,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;IAM9E,aAAa,IAAI,MAAM,EAAE;IAIzB,eAAe,IAAI,MAAM;IAIhC,OAAO,CAAC,cAAc;IAgCtB,4FAA4F;IAC/E,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAiD1C,oBAAoB,IAAI,OAAO;IAI/B,qBAAqB,IAAI,kBAAkB,GAAG,IAAI;IAIzD,sFAAsF;IAC/E,eAAe,CAAC,OAAO,EAAE,uBAAuB,GAAG,IAAI;IAK9D;;;;;;OAMG;IACI,iBAAiB,CAAC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI;IAO1D,kGAAkG;IAC3F,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAQhC,4EAA4E;IAC/D,uBAAuB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMrD,sFAAsF;IAC/E,2BAA2B,IAAI,IAAI;IAW1C,kFAAkF;IAC3E,oBAAoB,IAAI,MAAM;CAGrC"}
|
|
@@ -12,6 +12,8 @@ import { getOwner } from "../context/RequestContext.js";
|
|
|
12
12
|
import { ThoughtReferenceIndex } from "./ThoughtReferenceIndex.js";
|
|
13
13
|
import { resolveThoughtReferencesForAdmission } from "./CrossReferenceValidator.js";
|
|
14
14
|
import { SessionLifecycleCoordinator } from "./SessionLifecycleCoordinator.js";
|
|
15
|
+
import { resolvedVerificationTarget } from "./evaluator/VerificationLinks.js";
|
|
16
|
+
import { reconstructVerificationTargets } from "./VerificationTargetRestore.js";
|
|
15
17
|
const ABSOLUTE_MAX_HISTORY_SIZE = 10000;
|
|
16
18
|
class HistoryManager {
|
|
17
19
|
static SESSION_TTL_MS = 1800000;
|
|
@@ -78,6 +80,8 @@ class HistoryManager {
|
|
|
78
80
|
bufferSize: config.persistenceBufferSize ?? 100,
|
|
79
81
|
flushInterval: config.persistenceFlushInterval ?? 1000,
|
|
80
82
|
maxRetries: config.persistenceMaxRetries ?? 3,
|
|
83
|
+
durableHistorySize: config.persistenceHistorySize ?? ABSOLUTE_MAX_HISTORY_SIZE,
|
|
84
|
+
persistBranches: config.persistBranches ?? true,
|
|
81
85
|
eventEmitter: this._eventEmitter,
|
|
82
86
|
logger: this._logger
|
|
83
87
|
});
|
|
@@ -211,6 +215,7 @@ class HistoryManager {
|
|
|
211
215
|
return {
|
|
212
216
|
thought_history: [],
|
|
213
217
|
branches: {},
|
|
218
|
+
verificationTargets: new Map(),
|
|
214
219
|
availableMcpTools: void 0,
|
|
215
220
|
availableSkills: void 0,
|
|
216
221
|
lastAccessedAt: Date.now(),
|
|
@@ -237,14 +242,22 @@ class HistoryManager {
|
|
|
237
242
|
const sessionId = asSessionId(thought.session_id);
|
|
238
243
|
this._lifecycle.runMutation(sessionId, ()=>this._addThoughtWithinOperation(sessionId, thought, context));
|
|
239
244
|
}
|
|
245
|
+
assertThoughtIdentityAvailable(thought) {
|
|
246
|
+
if (void 0 === thought.id) return;
|
|
247
|
+
const sessionId = asSessionId(thought.session_id);
|
|
248
|
+
this._authorizeExistingSession(sessionId, this._getCurrentOwner());
|
|
249
|
+
if (this._referenceIndex.has(sessionId, thought.id) || this._persistenceBuffer?.hasThoughtIdentity(sessionId, thought.id) === true) throw new ValidationError('id', `Thought id already exists in session: ${thought.id}`);
|
|
250
|
+
}
|
|
240
251
|
_addThoughtWithinOperation(sessionId, thought, context) {
|
|
241
252
|
this._persistenceBuffer?.assertSessionAdmissionOpen(sessionId);
|
|
242
253
|
const owner = this._getCurrentOwner();
|
|
243
254
|
this._authorizeExistingSession(sessionId, owner);
|
|
255
|
+
this.assertThoughtIdentityAvailable(thought);
|
|
244
256
|
const resolvedReferences = this._resolveAdmissionReferences(sessionId, thought, context);
|
|
245
257
|
const session = this._getSessionWithinOperation(sessionId, owner);
|
|
246
258
|
this._metrics?.counter('thought_requests_total', 1, {}, 'Total thought requests added to history');
|
|
247
259
|
session.thought_history.push(thought);
|
|
260
|
+
this._recordVerificationTarget(session, thought, resolvedReferences);
|
|
248
261
|
if (void 0 !== resolvedReferences.backtrackTargetThoughtId) this._applyRetraction(session, resolvedReferences.backtrackTargetThoughtId);
|
|
249
262
|
if (thought.available_mcp_tools) session.availableMcpTools = thought.available_mcp_tools;
|
|
250
263
|
if (thought.available_skills) session.availableSkills = thought.available_skills;
|
|
@@ -255,9 +268,10 @@ class HistoryManager {
|
|
|
255
268
|
resolvedReferences
|
|
256
269
|
});
|
|
257
270
|
const evictedBranchIds = this._enforceRetention(session, thought.branch_id);
|
|
271
|
+
this._pruneVerificationTargets(session);
|
|
258
272
|
this._rebuildReferenceIndex(sessionId, session);
|
|
259
273
|
const prunedEdges = this._pruneUnretainedEdges(sessionId, session);
|
|
260
|
-
this._bufferRetainedState(sessionId, session, thought, evictedBranchIds, edgeAdded, prunedEdges);
|
|
274
|
+
this._bufferRetainedState(sessionId, session, thought, evictedBranchIds, edgeAdded, prunedEdges, resolvedReferences.backtrackTargetThoughtId);
|
|
261
275
|
}
|
|
262
276
|
_resolveAdmissionReferences(sessionId, thought, context) {
|
|
263
277
|
const resolved = context?.resolvedReferences ?? resolveThoughtReferencesForAdmission(thought, (thoughtNumber)=>this._referenceIndex.resolve(sessionId, thoughtNumber));
|
|
@@ -274,6 +288,19 @@ class HistoryManager {
|
|
|
274
288
|
if (void 0 !== branchId) this._trimSessionBranchSize(session, branchId);
|
|
275
289
|
return this._cleanupSessionBranches(session);
|
|
276
290
|
}
|
|
291
|
+
_recordVerificationTarget(session, thought, references) {
|
|
292
|
+
const targetId = resolvedVerificationTarget(thought, references);
|
|
293
|
+
if (void 0 !== thought.id && void 0 !== targetId) session.verificationTargets.set(thought.id, targetId);
|
|
294
|
+
}
|
|
295
|
+
_pruneVerificationTargets(session) {
|
|
296
|
+
const retainedIds = new Set([
|
|
297
|
+
session.thought_history,
|
|
298
|
+
...Object.values(session.branches)
|
|
299
|
+
].flat().flatMap((thought)=>void 0 === thought.id ? [] : [
|
|
300
|
+
thought.id
|
|
301
|
+
]));
|
|
302
|
+
for (const [verifierId, targetId] of session.verificationTargets)if (!retainedIds.has(verifierId) || !retainedIds.has(targetId)) session.verificationTargets.delete(verifierId);
|
|
303
|
+
}
|
|
277
304
|
_pruneUnretainedEdges(sessionId, session) {
|
|
278
305
|
if (void 0 === this._edgeStore) return 0;
|
|
279
306
|
const retainedIds = new Set();
|
|
@@ -285,11 +312,12 @@ class HistoryManager {
|
|
|
285
312
|
for (const thought of Object.values(session.branches).flat())if (void 0 !== thought.id) retainedBranchThoughtIds.add(thought.id);
|
|
286
313
|
return this._edgeStore.pruneSession(sessionId, retainedIds, retainedBranchThoughtIds);
|
|
287
314
|
}
|
|
288
|
-
_bufferRetainedState(sessionId, session, thought, evictedBranchIds, edgeAdded, prunedEdges) {
|
|
315
|
+
_bufferRetainedState(sessionId, session, thought, evictedBranchIds, edgeAdded, prunedEdges, backtrackTargetThoughtId) {
|
|
289
316
|
const buffer = this._persistenceBuffer;
|
|
290
317
|
if (null === buffer) return;
|
|
291
|
-
buffer.bufferThought(sessionId, thought);
|
|
292
|
-
|
|
318
|
+
if (void 0 === backtrackTargetThoughtId) buffer.bufferThought(sessionId, thought);
|
|
319
|
+
else buffer.bufferBacktrack(sessionId, thought, backtrackTargetThoughtId);
|
|
320
|
+
if (void 0 !== thought.branch_id || void 0 !== backtrackTargetThoughtId || evictedBranchIds.length > 0 || session.pendingRestoreBranchDeletes.size > 0) this._stageBranchPersistence(sessionId, session, evictedBranchIds);
|
|
293
321
|
if (void 0 !== this._edgeStore && (edgeAdded || prunedEdges > 0)) buffer.bufferEdges(sessionId, this._edgeStore.edgesForSession(sessionId));
|
|
294
322
|
}
|
|
295
323
|
_stageAllRestoreBranchReconciliation() {
|
|
@@ -384,6 +412,7 @@ class HistoryManager {
|
|
|
384
412
|
if (void 0 === session) return {
|
|
385
413
|
history: [],
|
|
386
414
|
branches: {},
|
|
415
|
+
verificationTargets: new Map(),
|
|
387
416
|
branchIds: [],
|
|
388
417
|
availableMcpTools: void 0,
|
|
389
418
|
availableSkills: void 0
|
|
@@ -398,6 +427,7 @@ class HistoryManager {
|
|
|
398
427
|
...thoughts
|
|
399
428
|
]
|
|
400
429
|
])),
|
|
430
|
+
verificationTargets: new Map(session.verificationTargets),
|
|
401
431
|
branchIds: Array.from(session.branchIdentities),
|
|
402
432
|
availableMcpTools: void 0 === session.availableMcpTools ? void 0 : [
|
|
403
433
|
...session.availableMcpTools
|
|
@@ -470,6 +500,7 @@ class HistoryManager {
|
|
|
470
500
|
}
|
|
471
501
|
_restoredState(restored) {
|
|
472
502
|
const session = this._createSessionState(void 0, 'restored');
|
|
503
|
+
session.verificationTargets = reconstructVerificationTargets(restored.sessionId, restored.history, restored.branches);
|
|
473
504
|
for(let index = restored.history.length - 1; index >= 0; index--){
|
|
474
505
|
const thought = restored.history[index];
|
|
475
506
|
if (void 0 !== thought) {
|
|
@@ -490,6 +521,7 @@ class HistoryManager {
|
|
|
490
521
|
session.branchIdentities.add(branch.branchId);
|
|
491
522
|
session.branches[branch.branchId] = branch.thoughts.slice(-this._maxBranchSize);
|
|
492
523
|
}
|
|
524
|
+
this._pruneVerificationTargets(session);
|
|
493
525
|
return session;
|
|
494
526
|
}
|
|
495
527
|
async loadFromPersistence() {
|
|
@@ -515,6 +547,7 @@ class HistoryManager {
|
|
|
515
547
|
thought.id
|
|
516
548
|
]))));
|
|
517
549
|
}
|
|
550
|
+
this._persistenceBuffer?.replaceDurableThoughtIdentities(restored.sessions);
|
|
518
551
|
this._edgeStore?.clearAll();
|
|
519
552
|
this._summaryStore?.clearAll();
|
|
520
553
|
this._sessions.clear();
|