@namzu/sdk 62.8.0 → 62.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +26 -0
- package/dist/compaction/plan.d.ts +12 -0
- package/dist/compaction/plan.d.ts.map +1 -1
- package/dist/compaction/plan.js +39 -11
- package/dist/compaction/plan.js.map +1 -1
- package/dist/compaction/salience/minhash.d.ts +9 -0
- package/dist/compaction/salience/minhash.d.ts.map +1 -1
- package/dist/compaction/salience/minhash.js +20 -0
- package/dist/compaction/salience/minhash.js.map +1 -1
- package/dist/compaction/salience/score.d.ts.map +1 -1
- package/dist/compaction/salience/score.js +87 -45
- package/dist/compaction/salience/score.js.map +1 -1
- package/dist/compaction/salience/working-set.d.ts +14 -0
- package/dist/compaction/salience/working-set.d.ts.map +1 -1
- package/dist/compaction/salience/working-set.js +84 -33
- package/dist/compaction/salience/working-set.js.map +1 -1
- package/dist/config/runtime.d.ts +2 -0
- package/dist/config/runtime.d.ts.map +1 -1
- package/dist/config/runtime.js +14 -0
- package/dist/config/runtime.js.map +1 -1
- package/dist/connector/http-operation.d.ts +1 -0
- package/dist/connector/http-operation.d.ts.map +1 -1
- package/dist/connector/http-operation.js +1 -1
- package/dist/connector/http-operation.js.map +1 -1
- package/dist/connector/mcp/adapter.d.ts.map +1 -1
- package/dist/connector/mcp/adapter.js +10 -0
- package/dist/connector/mcp/adapter.js.map +1 -1
- package/dist/connector/mcp/client.d.ts +12 -0
- package/dist/connector/mcp/client.d.ts.map +1 -1
- package/dist/connector/mcp/client.js +59 -10
- package/dist/connector/mcp/client.js.map +1 -1
- package/dist/constants/mcp/index.d.ts +15 -0
- package/dist/constants/mcp/index.d.ts.map +1 -1
- package/dist/constants/mcp/index.js +15 -0
- package/dist/constants/mcp/index.js.map +1 -1
- package/dist/manager/session/turn-recorder.d.ts +25 -0
- package/dist/manager/session/turn-recorder.d.ts.map +1 -1
- package/dist/manager/session/turn-recorder.js +193 -17
- package/dist/manager/session/turn-recorder.js.map +1 -1
- package/dist/public-runtime.d.ts +1 -1
- package/dist/public-runtime.d.ts.map +1 -1
- package/dist/public-runtime.js +1 -1
- package/dist/public-runtime.js.map +1 -1
- package/dist/runtime/query/cancelled-before-start.js +1 -1
- package/dist/runtime/query/cancelled-before-start.js.map +1 -1
- package/dist/runtime/query/checkpoint.js +2 -1
- package/dist/runtime/query/checkpoint.js.map +1 -1
- package/dist/runtime/query/index.d.ts.map +1 -1
- package/dist/runtime/query/index.js +4 -1
- package/dist/runtime/query/index.js.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.d.ts.map +1 -1
- package/dist/runtime/query/iteration/phases/compaction.js +15 -1
- package/dist/runtime/query/iteration/phases/compaction.js.map +1 -1
- package/dist/runtime/query/prepare-turn.js +10 -4
- package/dist/runtime/query/prepare-turn.js.map +1 -1
- package/dist/store/session-log/core.d.ts +31 -1
- package/dist/store/session-log/core.d.ts.map +1 -1
- package/dist/store/session-log/core.js +95 -9
- package/dist/store/session-log/core.js.map +1 -1
- package/dist/store/session-log/disk.d.ts +2 -0
- package/dist/store/session-log/disk.d.ts.map +1 -1
- package/dist/store/session-log/disk.js +37 -0
- package/dist/store/session-log/disk.js.map +1 -1
- package/dist/store/session-log/fold.d.ts +9 -1
- package/dist/store/session-log/fold.d.ts.map +1 -1
- package/dist/store/session-log/fold.js +18 -2
- package/dist/store/session-log/fold.js.map +1 -1
- package/dist/store/session-log/incremental.d.ts +8 -0
- package/dist/store/session-log/incremental.d.ts.map +1 -1
- package/dist/store/session-log/incremental.js +7 -2
- package/dist/store/session-log/incremental.js.map +1 -1
- package/dist/store/session-log/index.d.ts +1 -0
- package/dist/store/session-log/index.d.ts.map +1 -1
- package/dist/store/session-log/index.js +1 -0
- package/dist/store/session-log/index.js.map +1 -1
- package/dist/store/session-log/verified-prefix.d.ts +46 -0
- package/dist/store/session-log/verified-prefix.d.ts.map +1 -0
- package/dist/store/session-log/verified-prefix.js +233 -0
- package/dist/store/session-log/verified-prefix.js.map +1 -0
- package/dist/types/connector/mcp.d.ts +19 -0
- package/dist/types/connector/mcp.d.ts.map +1 -1
- package/dist/types/session/records.d.ts +80 -1
- package/dist/types/session/records.d.ts.map +1 -1
- package/dist/types/session/records.js +22 -0
- package/dist/types/session/records.js.map +1 -1
- package/package.json +1 -1
- package/src/compaction/plan.ts +53 -11
- package/src/compaction/salience/minhash.ts +20 -0
- package/src/compaction/salience/score.ts +112 -43
- package/src/compaction/salience/working-set.ts +102 -31
- package/src/config/runtime.ts +14 -0
- package/src/connector/http-operation.ts +1 -1
- package/src/connector/mcp/adapter.ts +11 -0
- package/src/connector/mcp/client.ts +75 -12
- package/src/constants/mcp/index.ts +17 -0
- package/src/manager/session/turn-recorder.ts +218 -15
- package/src/public-runtime.ts +1 -0
- package/src/runtime/query/cancelled-before-start.ts +1 -1
- package/src/runtime/query/checkpoint.ts +2 -1
- package/src/runtime/query/index.ts +4 -1
- package/src/runtime/query/iteration/phases/compaction.ts +18 -0
- package/src/runtime/query/prepare-turn.ts +10 -3
- package/src/store/session-log/core.ts +129 -10
- package/src/store/session-log/disk.ts +32 -0
- package/src/store/session-log/fold.ts +19 -2
- package/src/store/session-log/incremental.ts +15 -2
- package/src/store/session-log/index.ts +1 -0
- package/src/store/session-log/verified-prefix.ts +243 -0
- package/src/types/connector/mcp.ts +19 -0
- package/src/types/session/records.ts +25 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/session-log/disk.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"disk.js","sourceRoot":"","sources":["../../../src/store/session-log/disk.ts"],"names":[],"mappings":"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"}
|
|
@@ -21,7 +21,10 @@ import type { SpillRef } from './spill.js';
|
|
|
21
21
|
* override or a structured-output answer is what every reader of the fold
|
|
22
22
|
* sees; the model's raw text stays in the log for audit only.
|
|
23
23
|
*
|
|
24
|
-
*
|
|
24
|
+
* `message_edited` is applied the same way as `message_replaced`: a compaction
|
|
25
|
+
* pass's edit of one message, written under the message's own id.
|
|
26
|
+
*
|
|
27
|
+
* Only `message`, `message_replaced`, `message_edited` and `compaction` records move the fold.
|
|
25
28
|
* The live compaction events (`compaction_completed` and the rest) are
|
|
26
29
|
* reports, not instructions.
|
|
27
30
|
*/
|
|
@@ -121,6 +124,11 @@ export declare class TurnRuleError extends Error {
|
|
|
121
124
|
export declare class SessionTurnState {
|
|
122
125
|
#private;
|
|
123
126
|
get active(): ActiveTurnRecord | undefined;
|
|
127
|
+
/**
|
|
128
|
+
* An independent copy at the records applied so far. `apply` replaces the
|
|
129
|
+
* active turn's object rather than editing it, so the copy may share it.
|
|
130
|
+
*/
|
|
131
|
+
clone(): SessionTurnState;
|
|
124
132
|
/** The last turn that started, active or not. */
|
|
125
133
|
get lastTurnId(): TurnId | undefined;
|
|
126
134
|
/** Whether `session_started` has been applied. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/fold.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAA;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,KAAK,EAAmC,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACpG,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AAE1C
|
|
1
|
+
{"version":3,"file":"fold.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,7 +17,10 @@
|
|
|
17
17
|
* override or a structured-output answer is what every reader of the fold
|
|
18
18
|
* sees; the model's raw text stays in the log for audit only.
|
|
19
19
|
*
|
|
20
|
-
*
|
|
20
|
+
* `message_edited` is applied the same way as `message_replaced`: a compaction
|
|
21
|
+
* pass's edit of one message, written under the message's own id.
|
|
22
|
+
*
|
|
23
|
+
* Only `message`, `message_replaced`, `message_edited` and `compaction` records move the fold.
|
|
21
24
|
* The live compaction events (`compaction_completed` and the rest) are
|
|
22
25
|
* reports, not instructions.
|
|
23
26
|
*/
|
|
@@ -79,7 +82,8 @@ export class SessionMessageFold {
|
|
|
79
82
|
case 'message':
|
|
80
83
|
this.#message(record);
|
|
81
84
|
return;
|
|
82
|
-
case 'message_replaced':
|
|
85
|
+
case 'message_replaced':
|
|
86
|
+
case 'message_edited': {
|
|
83
87
|
const spill = record.spill;
|
|
84
88
|
this.#replacements.set(record.targetMessageId, {
|
|
85
89
|
message: record.content,
|
|
@@ -231,6 +235,17 @@ export class SessionTurnState {
|
|
|
231
235
|
get active() {
|
|
232
236
|
return this.#active;
|
|
233
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* An independent copy at the records applied so far. `apply` replaces the
|
|
240
|
+
* active turn's object rather than editing it, so the copy may share it.
|
|
241
|
+
*/
|
|
242
|
+
clone() {
|
|
243
|
+
const copy = new SessionTurnState();
|
|
244
|
+
copy.#active = this.#active;
|
|
245
|
+
copy.#lastTurnId = this.#lastTurnId;
|
|
246
|
+
copy.#started = this.#started;
|
|
247
|
+
return copy;
|
|
248
|
+
}
|
|
234
249
|
/** The last turn that started, active or not. */
|
|
235
250
|
get lastTurnId() {
|
|
236
251
|
return this.#lastTurnId;
|
|
@@ -331,6 +346,7 @@ const CLOSES_OR_DECIDES = new Set([
|
|
|
331
346
|
'audit',
|
|
332
347
|
'log_repaired',
|
|
333
348
|
'message_replaced',
|
|
349
|
+
'message_edited',
|
|
334
350
|
'session_updated',
|
|
335
351
|
]);
|
|
336
352
|
//# sourceMappingURL=fold.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../src/store/session-log/fold.ts"],"names":[],"mappings":"AAKA
|
|
1
|
+
{"version":3,"file":"fold.js","sourceRoot":"","sources":["../../../src/store/session-log/fold.ts"],"names":[],"mappings":"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"}
|
|
@@ -4,6 +4,14 @@ export interface IncrementalFold<S, R> {
|
|
|
4
4
|
/** The reduction's name; one cache slot per name and read mode. */
|
|
5
5
|
readonly name: string;
|
|
6
6
|
readonly mode: 'strict' | 'tolerant';
|
|
7
|
+
/**
|
|
8
|
+
* Strict reductions only: before resuming, hash every byte before the
|
|
9
|
+
* resume point against what this process verified (`read({ reverify })`),
|
|
10
|
+
* so a resumed read refuses a log altered anywhere, as a read from byte 0
|
|
11
|
+
* does, without parsing the prefix again. Off by default: the window the
|
|
12
|
+
* header describes then applies.
|
|
13
|
+
*/
|
|
14
|
+
readonly reverify?: boolean;
|
|
7
15
|
/** A fresh, empty state. */
|
|
8
16
|
create(): S;
|
|
9
17
|
/** Fold one record into the state, in place. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/incremental.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,YAAY,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"incremental.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/incremental.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,eAAe,EAA4B,MAAM,YAAY,CAAA;AAC3E,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,WAAW,CAAA;AAoE3C,MAAM,WAAW,eAAe,CAAC,CAAC,EAAE,CAAC;IACpC,mEAAmE;IACnE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAA;IACrB,QAAQ,CAAC,IAAI,EAAE,QAAQ,GAAG,UAAU,CAAA;IACpC;;;;;;OAMG;IACH,QAAQ,CAAC,QAAQ,CAAC,EAAE,OAAO,CAAA;IAC3B,4BAA4B;IAC5B,MAAM,IAAI,CAAC,CAAA;IACX,gDAAgD;IAChD,KAAK,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,eAAe,GAAG,IAAI,CAAA;IAC7C;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;CAChC;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,CAAC,EACxC,GAAG,EAAE,UAAU,EACf,IAAI,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,CAAC,GACzB,OAAO,CAAC,CAAC,CAAC,CA0DZ"}
|
|
@@ -24,7 +24,8 @@ import { SessionLogIntegrityError } from './chain.js';
|
|
|
24
24
|
*
|
|
25
25
|
* Cost that remains: the state of the "every message ever recorded" reduction
|
|
26
26
|
* holds each message the log ever recorded, superseded and compacted ones
|
|
27
|
-
* included,
|
|
27
|
+
* included, and the earlier texts of an edited message (one per edit, until a
|
|
28
|
+
* replacement clears them), so it grows with the log and not with the live context, and it
|
|
28
29
|
* lives for the life of the process (for the sessions kept). Reading it
|
|
29
30
|
* returns a copy of all of them, which is O(history) per turn. Both are small
|
|
30
31
|
* next to the whole-log walks this file removes, and are left as they are.
|
|
@@ -72,7 +73,11 @@ export async function foldSessionLog(log, fold) {
|
|
|
72
73
|
}
|
|
73
74
|
let moved = false;
|
|
74
75
|
try {
|
|
75
|
-
const walk = log.read({
|
|
76
|
+
const walk = log.read({
|
|
77
|
+
mode: fold.mode,
|
|
78
|
+
...(anchor ? { after: anchor } : {}),
|
|
79
|
+
...(fold.reverify && fold.mode === 'strict' ? { reverify: true } : {}),
|
|
80
|
+
});
|
|
76
81
|
let summary;
|
|
77
82
|
for (;;) {
|
|
78
83
|
summary = await walk.next();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../../src/store/session-log/incremental.ts"],"names":[],"mappings":"AACA,OAAO,EAAwB,wBAAwB,EAAE,MAAM,YAAY,CAAA;AAG3E
|
|
1
|
+
{"version":3,"file":"incremental.js","sourceRoot":"","sources":["../../../src/store/session-log/incremental.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,7 @@ export { type ActiveTurn, type ActiveTurnOptions, type AbandonTurnLogOptions, ty
|
|
|
3
3
|
export { DiskLogMedium, DiskSessionLog, type DiskSessionLogOptions, readSessionLog, streamSessionLog, } from './disk.js';
|
|
4
4
|
export { type ActiveTurnRecord, type FoldSessionMessagesOptions, type FoldedMessage, SessionMessageFold, SessionTurnState, type SpilledSummary, SpillUnavailableError, TurnRuleError, MESSAGES_WITHDRAWN_DETAIL, foldSessionMessages, withMessageId, } from './fold.js';
|
|
5
5
|
export { type TornTailRepair, repairRecordDraft } from './heal.js';
|
|
6
|
+
export { type IncrementalFold, foldSessionLog } from './incremental.js';
|
|
6
7
|
export { foldChildOutcomes, foldTurnOutcomes, parseTurnOutcome, readOutcomeProgress, readTurnOutcome, } from './turn-outcome.js';
|
|
7
8
|
export { type ReleaseHeldSessionLeasesOptions, type ReleaseHeldSessionLeasesResult, SessionLeasesReleasedError, releaseHeldSessionLeases, } from './held-leases.js';
|
|
8
9
|
export { type ClaimSessionOptions, DiskSessionLeaseStore, InMemorySessionLeaseStore, type LeaseClaimContext, type SessionLease, type SessionLeaseStore, StaleSessionLeaseError, isLeaseLive, readSessionLease, } from './lease.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,KAAK,QAAQ,EACb,YAAY,EACZ,eAAe,EACf,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,cAAc,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,aAAa,EACb,cAAc,EACd,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,cAAc,EACnB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,wBAAwB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,yBAAyB,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/index.ts"],"names":[],"mappings":"AAOA,OAAO,EACN,KAAK,QAAQ,EACb,YAAY,EACZ,eAAe,EACf,KAAK,UAAU,EACf,KAAK,qBAAqB,EAC1B,KAAK,eAAe,EACpB,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,qBAAqB,EAC1B,KAAK,gBAAgB,EACrB,6BAA6B,EAC7B,yBAAyB,EACzB,KAAK,SAAS,EACd,KAAK,qBAAqB,EAC1B,KAAK,UAAU,EACf,KAAK,sBAAsB,EAC3B,uBAAuB,EACvB,cAAc,EACd,KAAK,qBAAqB,EAC1B,KAAK,uBAAuB,EAC5B,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,KAAK,qBAAqB,EAC1B,KAAK,kBAAkB,EACvB,uBAAuB,EACvB,KAAK,gBAAgB,EACrB,cAAc,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,aAAa,EACb,cAAc,EACd,KAAK,qBAAqB,EAC1B,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,KAAK,gBAAgB,EACrB,KAAK,0BAA0B,EAC/B,KAAK,aAAa,EAClB,kBAAkB,EAClB,gBAAgB,EAChB,KAAK,cAAc,EACnB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAE,KAAK,cAAc,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAE,KAAK,eAAe,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EACN,KAAK,+BAA+B,EACpC,KAAK,8BAA8B,EACnC,0BAA0B,EAC1B,wBAAwB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EACN,KAAK,mBAAmB,EACxB,qBAAqB,EACrB,yBAAyB,EACzB,KAAK,iBAAiB,EACtB,KAAK,YAAY,EACjB,KAAK,iBAAiB,EACtB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,EAClB,KAAK,yBAAyB,GAC9B,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EACnB,KAAK,aAAa,EAClB,KAAK,gBAAgB,EACrB,KAAK,QAAQ,EACb,KAAK,UAAU,EACf,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAE,KAAK,2BAA2B,EAAE,MAAM,wBAAwB,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA"}
|
|
@@ -9,6 +9,7 @@ export { DEFAULT_DEGRADED_BUFFER_BYTES, InvalidSessionRecordError, SessionLogCon
|
|
|
9
9
|
export { DiskLogMedium, DiskSessionLog, readSessionLog, streamSessionLog, } from './disk.js';
|
|
10
10
|
export { SessionMessageFold, SessionTurnState, SpillUnavailableError, TurnRuleError, MESSAGES_WITHDRAWN_DETAIL, foldSessionMessages, withMessageId, } from './fold.js';
|
|
11
11
|
export { repairRecordDraft } from './heal.js';
|
|
12
|
+
export { foldSessionLog } from './incremental.js';
|
|
12
13
|
export { foldChildOutcomes, foldTurnOutcomes, parseTurnOutcome, readOutcomeProgress, readTurnOutcome, } from './turn-outcome.js';
|
|
13
14
|
export { SessionLeasesReleasedError, releaseHeldSessionLeases, } from './held-leases.js';
|
|
14
15
|
export { DiskSessionLeaseStore, InMemorySessionLeaseStore, StaleSessionLeaseError, isLeaseLive, readSessionLease, } from './lease.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/session-log/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,4EAA4E;AAC5E,kEAAkE;AAClE,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAE/E,OAAO,EAEN,YAAY,EACZ,eAAe,EAIf,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAKN,6BAA6B,EAC7B,yBAAyB,EAKzB,uBAAuB,EACvB,cAAc,EAQd,uBAAuB,EAEvB,cAAc,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,aAAa,EACb,cAAc,EAEd,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EAIN,kBAAkB,EAClB,gBAAgB,EAEhB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAuB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGN,0BAA0B,EAC1B,wBAAwB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAEN,qBAAqB,EACrB,yBAAyB,EAIzB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,GAElB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EAKnB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAoC,MAAM,wBAAwB,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/store/session-log/index.ts"],"names":[],"mappings":"AAAA,wEAAwE;AACxE,4EAA4E;AAC5E,kEAAkE;AAClE,0EAA0E;AAC1E,8EAA8E;AAC9E,+EAA+E;AAE/E,OAAO,EAEN,YAAY,EACZ,eAAe,EAIf,wBAAwB,EACxB,kBAAkB,EAClB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAKN,6BAA6B,EAC7B,yBAAyB,EAKzB,uBAAuB,EACvB,cAAc,EAQd,uBAAuB,EAEvB,cAAc,GACd,MAAM,WAAW,CAAA;AAClB,OAAO,EACN,aAAa,EACb,cAAc,EAEd,cAAc,EACd,gBAAgB,GAChB,MAAM,WAAW,CAAA;AAClB,OAAO,EAIN,kBAAkB,EAClB,gBAAgB,EAEhB,qBAAqB,EACrB,aAAa,EACb,yBAAyB,EACzB,mBAAmB,EACnB,aAAa,GACb,MAAM,WAAW,CAAA;AAClB,OAAO,EAAuB,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClE,OAAO,EAAwB,cAAc,EAAE,MAAM,kBAAkB,CAAA;AACvE,OAAO,EACN,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,mBAAmB,EACnB,eAAe,GACf,MAAM,mBAAmB,CAAA;AAC1B,OAAO,EAGN,0BAA0B,EAC1B,wBAAwB,GACxB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAEN,qBAAqB,EACrB,yBAAyB,EAIzB,sBAAsB,EACtB,WAAW,EACX,gBAAgB,GAChB,MAAM,YAAY,CAAA;AACnB,OAAO,EACN,iBAAiB,EACjB,kBAAkB,GAElB,MAAM,aAAa,CAAA;AACpB,OAAO,EACN,cAAc,EACd,kBAAkB,EAClB,SAAS,EACT,mBAAmB,EAKnB,aAAa,GACb,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,oBAAoB,EAAoC,MAAM,wBAAwB,CAAA;AAC/F,OAAO,EAAE,2BAA2B,EAAE,MAAM,uCAAuC,CAAA"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { SessionId } from '../../types/ids/index.js';
|
|
2
|
+
import type { RecordPointer } from '../../types/session/records.js';
|
|
3
|
+
import { type LogBytes, type SessionLogEntry } from './chain.js';
|
|
4
|
+
import { SessionTurnState } from './fold.js';
|
|
5
|
+
export declare class VerifiedPrefix {
|
|
6
|
+
#private;
|
|
7
|
+
/** Records remembered. */
|
|
8
|
+
get count(): number;
|
|
9
|
+
get head(): RecordPointer | null;
|
|
10
|
+
get gen(): number;
|
|
11
|
+
get sessionId(): SessionId | undefined;
|
|
12
|
+
/** Byte offset just after the last remembered record. */
|
|
13
|
+
get end(): number;
|
|
14
|
+
/** The turn state at the head, as its own copy. */
|
|
15
|
+
turns(): SessionTurnState;
|
|
16
|
+
/** Lengths and digests as they stand now; entries below `count` never change. */
|
|
17
|
+
get lengths(): Uint32Array;
|
|
18
|
+
get digests(): Buffer;
|
|
19
|
+
/** Whether the remembered record `seq` is exactly `pointer` (length and digest). */
|
|
20
|
+
holds(pointer: RecordPointer): boolean;
|
|
21
|
+
/**
|
|
22
|
+
* Remember a record that was verified in full. Ignored unless it continues
|
|
23
|
+
* what is held: the next seq, naming the head by its pointer.
|
|
24
|
+
*/
|
|
25
|
+
append(entry: SessionLogEntry): void;
|
|
26
|
+
}
|
|
27
|
+
/** The ledger of a log, if this process has one; marks it recently used. */
|
|
28
|
+
export declare function verifiedPrefixOf(key: string): VerifiedPrefix | undefined;
|
|
29
|
+
/** Discard what is remembered of a log and start an empty ledger for it. */
|
|
30
|
+
export declare function startVerifiedPrefix(key: string): VerifiedPrefix;
|
|
31
|
+
/** Forget every remembered log: what a process that has not read them yet looks like. For tests. */
|
|
32
|
+
export declare function clearVerifiedPrefixes(): void;
|
|
33
|
+
/** How many logs are remembered. For tests. */
|
|
34
|
+
export declare function verifiedPrefixCount(): number;
|
|
35
|
+
/**
|
|
36
|
+
* Read the first `count` lines of `bytes` and compare each one's length and
|
|
37
|
+
* SHA-256 with the ledger's. Resolves `true` only when every one is equal.
|
|
38
|
+
* Parses nothing and keeps nothing. Any difference, a log that ends sooner,
|
|
39
|
+
* or a fragment no record could be, resolves `false`: the caller then verifies
|
|
40
|
+
* in full, which says what is wrong.
|
|
41
|
+
*/
|
|
42
|
+
export declare function rehashPrefix(bytes: Pick<LogBytes, 'size'> & {
|
|
43
|
+
stream(offset: number): AsyncIterable<Uint8Array>;
|
|
44
|
+
scan?(offset: number, visit: (chunk: Uint8Array) => boolean): Promise<void>;
|
|
45
|
+
}, ledger: VerifiedPrefix, count: number): Promise<boolean>;
|
|
46
|
+
//# sourceMappingURL=verified-prefix.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verified-prefix.d.ts","sourceRoot":"","sources":["../../../src/store/session-log/verified-prefix.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,0BAA0B,CAAA;AACzD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAgB,KAAK,QAAQ,EAAE,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EAAE,gBAAgB,EAAE,MAAM,WAAW,CAAA;AAsD5C,qBAAa,cAAc;;IAW1B,0BAA0B;IAC1B,IAAI,KAAK,IAAI,MAAM,CAElB;IACD,IAAI,IAAI,IAAI,aAAa,GAAG,IAAI,CAE/B;IACD,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAErC;IACD,yDAAyD;IACzD,IAAI,GAAG,IAAI,MAAM,CAEhB;IACD,mDAAmD;IACnD,KAAK,IAAI,gBAAgB;IAGzB,iFAAiF;IACjF,IAAI,OAAO,IAAI,WAAW,CAEzB;IACD,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED,oFAAoF;IACpF,KAAK,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO;IAStC;;;OAGG;IACH,MAAM,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;CA4BpC;AAeD,4EAA4E;AAC5E,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAOxE;AAED,4EAA4E;AAC5E,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,GAAG,cAAc,CAS/D;AAED,oGAAoG;AACpG,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED,+CAA+C;AAC/C,wBAAgB,mBAAmB,IAAI,MAAM,CAE5C;AAED;;;;;;GAMG;AACH,wBAAsB,YAAY,CACjC,KAAK,EAAE,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,GAAG;IAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAAC,UAAU,CAAC,CAAA;IACjD,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;CAC3E,EACD,MAAM,EAAE,cAAc,EACtB,KAAK,EAAE,MAAM,GACX,OAAO,CAAC,OAAO,CAAC,CAmClB"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
import * as crypto from 'node:crypto';
|
|
2
|
+
import { LineSplitter } from './chain.js';
|
|
3
|
+
import { SessionTurnState } from './fold.js';
|
|
4
|
+
/**
|
|
5
|
+
* What this process has already verified of a session log, so that checking
|
|
6
|
+
* it again costs the bytes and not the parsing.
|
|
7
|
+
*
|
|
8
|
+
* A ledger remembers, for every record this process verified IN FULL (schema,
|
|
9
|
+
* parse, hash chain, seq, gen, links: everything `SessionLogChain.accept`
|
|
10
|
+
* checks), the byte length of its line and the SHA-256 of those bytes, plus
|
|
11
|
+
* the head pointer, the `gen`, the session id and the turn state folded to
|
|
12
|
+
* the head. A later claim of the same log reads every byte again and hashes
|
|
13
|
+
* each line; a line whose length and digest equal the remembered ones is
|
|
14
|
+
* byte-identical to a line that already passed every rule, so it passes them
|
|
15
|
+
* again without being parsed. Only what lies after the remembered head is
|
|
16
|
+
* verified in full. Nothing about the file's identity is trusted for
|
|
17
|
+
* soundness: the content is compared. Any difference (a changed byte, a
|
|
18
|
+
* shorter file, a replaced file, a line that no longer splits the same way)
|
|
19
|
+
* makes the caller discard the ledger and verify from byte 0 as before.
|
|
20
|
+
*
|
|
21
|
+
* A ledger is fed only from entries that came out of a full verification and
|
|
22
|
+
* that continue it (`seq` = count + 1 and `prev` equal to the head), so what
|
|
23
|
+
* it holds is a prefix of one valid chain and nothing else. It costs 36 bytes
|
|
24
|
+
* per record.
|
|
25
|
+
*/
|
|
26
|
+
const DIGEST_BYTES = 32;
|
|
27
|
+
/** Logs kept; the least recently used is dropped. */
|
|
28
|
+
const LEDGERS_KEPT = 16;
|
|
29
|
+
/** A log with more records than this is not remembered (about 72 MB of digests). */
|
|
30
|
+
const MAX_RECORDS = 1 << 21;
|
|
31
|
+
/**
|
|
32
|
+
* The digest of one line as lowercase hex. A string, not a Buffer: a Buffer per
|
|
33
|
+
* line (82,000 of them in a long log) is native memory the collector has to
|
|
34
|
+
* chase, and measured about twice the CPU. The one-shot form where Node has it.
|
|
35
|
+
*/
|
|
36
|
+
const hexDigestOf = typeof crypto.hash === 'function'
|
|
37
|
+
? (line) => crypto.hash('sha256', line, 'hex')
|
|
38
|
+
: (line) => crypto.createHash('sha256').update(line).digest('hex');
|
|
39
|
+
/** Whether `hex` (64 lowercase hex characters) spells the 32 bytes at `at` in `bytes`. */
|
|
40
|
+
function hexEqualsBytes(hex, bytes, at) {
|
|
41
|
+
if (hex.length !== DIGEST_BYTES * 2)
|
|
42
|
+
return false;
|
|
43
|
+
for (let i = 0; i < DIGEST_BYTES; i++) {
|
|
44
|
+
const high = hex.charCodeAt(i * 2);
|
|
45
|
+
const low = hex.charCodeAt(i * 2 + 1);
|
|
46
|
+
const value = ((high <= 0x39 ? high - 0x30 : high - 0x57) << 4) | (low <= 0x39 ? low - 0x30 : low - 0x57);
|
|
47
|
+
if (value !== bytes[at + i])
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
return true;
|
|
51
|
+
}
|
|
52
|
+
export class VerifiedPrefix {
|
|
53
|
+
#count = 0;
|
|
54
|
+
#lengths = new Uint32Array(1024);
|
|
55
|
+
#digests = Buffer.allocUnsafe(1024 * DIGEST_BYTES);
|
|
56
|
+
#head = null;
|
|
57
|
+
#gen = 0;
|
|
58
|
+
#sessionId;
|
|
59
|
+
#end = 0;
|
|
60
|
+
#dead = false;
|
|
61
|
+
#turns = new SessionTurnState();
|
|
62
|
+
/** Records remembered. */
|
|
63
|
+
get count() {
|
|
64
|
+
return this.#count;
|
|
65
|
+
}
|
|
66
|
+
get head() {
|
|
67
|
+
return this.#head;
|
|
68
|
+
}
|
|
69
|
+
get gen() {
|
|
70
|
+
return this.#gen;
|
|
71
|
+
}
|
|
72
|
+
get sessionId() {
|
|
73
|
+
return this.#sessionId;
|
|
74
|
+
}
|
|
75
|
+
/** Byte offset just after the last remembered record. */
|
|
76
|
+
get end() {
|
|
77
|
+
return this.#end;
|
|
78
|
+
}
|
|
79
|
+
/** The turn state at the head, as its own copy. */
|
|
80
|
+
turns() {
|
|
81
|
+
return this.#turns.clone();
|
|
82
|
+
}
|
|
83
|
+
/** Lengths and digests as they stand now; entries below `count` never change. */
|
|
84
|
+
get lengths() {
|
|
85
|
+
return this.#lengths;
|
|
86
|
+
}
|
|
87
|
+
get digests() {
|
|
88
|
+
return this.#digests;
|
|
89
|
+
}
|
|
90
|
+
/** Whether the remembered record `seq` is exactly `pointer` (length and digest). */
|
|
91
|
+
holds(pointer) {
|
|
92
|
+
const at = pointer.seq - 1;
|
|
93
|
+
if (at < 0 || at >= this.#count)
|
|
94
|
+
return false;
|
|
95
|
+
if (this.#lengths[at] !== pointer.length)
|
|
96
|
+
return false;
|
|
97
|
+
return (this.#digests.toString('hex', at * DIGEST_BYTES, (at + 1) * DIGEST_BYTES) === pointer.sha256);
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Remember a record that was verified in full. Ignored unless it continues
|
|
101
|
+
* what is held: the next seq, naming the head by its pointer.
|
|
102
|
+
*/
|
|
103
|
+
append(entry) {
|
|
104
|
+
if (this.#dead)
|
|
105
|
+
return;
|
|
106
|
+
const { record, pointer } = entry;
|
|
107
|
+
if (pointer.seq !== this.#count + 1 || pointer.offset !== this.#end)
|
|
108
|
+
return;
|
|
109
|
+
const prev = record.prev;
|
|
110
|
+
if (this.#head === null ? prev !== null : !samePointer(prev, this.#head))
|
|
111
|
+
return;
|
|
112
|
+
if (this.#sessionId !== undefined && record.sessionId !== this.#sessionId)
|
|
113
|
+
return;
|
|
114
|
+
if (this.#count >= MAX_RECORDS) {
|
|
115
|
+
this.#dead = true;
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
if (this.#count === this.#lengths.length) {
|
|
119
|
+
const lengths = new Uint32Array(this.#lengths.length * 2);
|
|
120
|
+
lengths.set(this.#lengths);
|
|
121
|
+
this.#lengths = lengths;
|
|
122
|
+
const digests = Buffer.allocUnsafe(this.#digests.length * 2);
|
|
123
|
+
this.#digests.copy(digests);
|
|
124
|
+
this.#digests = digests;
|
|
125
|
+
}
|
|
126
|
+
this.#lengths[this.#count] = pointer.length;
|
|
127
|
+
this.#digests.write(pointer.sha256, this.#count * DIGEST_BYTES, DIGEST_BYTES, 'hex');
|
|
128
|
+
this.#count += 1;
|
|
129
|
+
this.#head = pointer;
|
|
130
|
+
this.#gen = record.gen;
|
|
131
|
+
this.#end = pointer.offset + pointer.length;
|
|
132
|
+
this.#sessionId ??= record.sessionId;
|
|
133
|
+
this.#turns.apply(record);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
function samePointer(a, b) {
|
|
137
|
+
return (a !== null &&
|
|
138
|
+
a !== undefined &&
|
|
139
|
+
a.seq === b.seq &&
|
|
140
|
+
a.offset === b.offset &&
|
|
141
|
+
a.length === b.length &&
|
|
142
|
+
a.sha256 === b.sha256);
|
|
143
|
+
}
|
|
144
|
+
const ledgers = new Map();
|
|
145
|
+
/** The ledger of a log, if this process has one; marks it recently used. */
|
|
146
|
+
export function verifiedPrefixOf(key) {
|
|
147
|
+
const found = ledgers.get(key);
|
|
148
|
+
if (found !== undefined) {
|
|
149
|
+
ledgers.delete(key);
|
|
150
|
+
ledgers.set(key, found);
|
|
151
|
+
}
|
|
152
|
+
return found;
|
|
153
|
+
}
|
|
154
|
+
/** Discard what is remembered of a log and start an empty ledger for it. */
|
|
155
|
+
export function startVerifiedPrefix(key) {
|
|
156
|
+
ledgers.delete(key);
|
|
157
|
+
if (ledgers.size >= LEDGERS_KEPT) {
|
|
158
|
+
const oldest = ledgers.keys().next().value;
|
|
159
|
+
if (oldest !== undefined)
|
|
160
|
+
ledgers.delete(oldest);
|
|
161
|
+
}
|
|
162
|
+
const fresh = new VerifiedPrefix();
|
|
163
|
+
ledgers.set(key, fresh);
|
|
164
|
+
return fresh;
|
|
165
|
+
}
|
|
166
|
+
/** Forget every remembered log: what a process that has not read them yet looks like. For tests. */
|
|
167
|
+
export function clearVerifiedPrefixes() {
|
|
168
|
+
ledgers.clear();
|
|
169
|
+
}
|
|
170
|
+
/** How many logs are remembered. For tests. */
|
|
171
|
+
export function verifiedPrefixCount() {
|
|
172
|
+
return ledgers.size;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Read the first `count` lines of `bytes` and compare each one's length and
|
|
176
|
+
* SHA-256 with the ledger's. Resolves `true` only when every one is equal.
|
|
177
|
+
* Parses nothing and keeps nothing. Any difference, a log that ends sooner,
|
|
178
|
+
* or a fragment no record could be, resolves `false`: the caller then verifies
|
|
179
|
+
* in full, which says what is wrong.
|
|
180
|
+
*/
|
|
181
|
+
export async function rehashPrefix(bytes, ledger, count) {
|
|
182
|
+
if (count === 0)
|
|
183
|
+
return true;
|
|
184
|
+
if (count > ledger.count)
|
|
185
|
+
return false;
|
|
186
|
+
const lengths = ledger.lengths;
|
|
187
|
+
const digests = ledger.digests;
|
|
188
|
+
if ((await bytes.size()) < endOfLine(lengths, count))
|
|
189
|
+
return false;
|
|
190
|
+
const splitter = new LineSplitter(0);
|
|
191
|
+
let index = 0;
|
|
192
|
+
let matched = false;
|
|
193
|
+
// True once the answer is known. A chunk is read from a buffer the caller of `visit`
|
|
194
|
+
// may reuse, so nothing here keeps a slice of it: a line is hashed where it stands.
|
|
195
|
+
const visit = (chunk) => {
|
|
196
|
+
for (const { line } of splitter.push(chunk)) {
|
|
197
|
+
if (line.byteLength !== lengths[index])
|
|
198
|
+
return true;
|
|
199
|
+
if (!hexEqualsBytes(hexDigestOf(line), digests, index * DIGEST_BYTES))
|
|
200
|
+
return true;
|
|
201
|
+
index += 1;
|
|
202
|
+
if (index === count) {
|
|
203
|
+
matched = true;
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return false;
|
|
208
|
+
};
|
|
209
|
+
try {
|
|
210
|
+
if (bytes.scan !== undefined) {
|
|
211
|
+
await bytes.scan(0, visit);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
for await (const chunk of bytes.stream(0))
|
|
215
|
+
if (visit(chunk))
|
|
216
|
+
break;
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
// A fragment longer than any record can be: not the log that was verified.
|
|
221
|
+
if (error.name === 'SessionLogIntegrityError')
|
|
222
|
+
return false;
|
|
223
|
+
throw error;
|
|
224
|
+
}
|
|
225
|
+
return matched;
|
|
226
|
+
}
|
|
227
|
+
function endOfLine(lengths, count) {
|
|
228
|
+
let total = 0;
|
|
229
|
+
for (let i = 0; i < count; i++)
|
|
230
|
+
total += lengths[i];
|
|
231
|
+
return total;
|
|
232
|
+
}
|
|
233
|
+
//# sourceMappingURL=verified-prefix.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verified-prefix.js","sourceRoot":"","sources":["../../../src/store/session-log/verified-prefix.ts"],"names":[],"mappings":"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"}
|
|
@@ -512,6 +512,25 @@ export interface MCPClientConfig {
|
|
|
512
512
|
* forever — no error, no failure, just a turn that stopped.
|
|
513
513
|
*/
|
|
514
514
|
requestTimeoutMs?: number;
|
|
515
|
+
/**
|
|
516
|
+
* Treat the deadline as an idle deadline for a tool call that reports
|
|
517
|
+
* progress: each accepted `notifications/progress` (one whose value rose)
|
|
518
|
+
* re-arms `requestTimeoutMs` for that call. Off by default, which keeps
|
|
519
|
+
* the single fixed deadline.
|
|
520
|
+
*
|
|
521
|
+
* Only a `tools/call` made with `onProgress` carries a progress token, so
|
|
522
|
+
* only such a call can be extended. The call is still bounded in total by
|
|
523
|
+
* `maxTotalTimeoutMs`, which progress never extends.
|
|
524
|
+
*/
|
|
525
|
+
resetTimeoutOnProgress?: boolean;
|
|
526
|
+
/**
|
|
527
|
+
* The most a progress-extended call may take in total, counted from when
|
|
528
|
+
* the request was issued, in milliseconds. An integer no smaller than
|
|
529
|
+
* `requestTimeoutMs`. Defaults to ten times `requestTimeoutMs`
|
|
530
|
+
* (`DEFAULT_MCP_TOTAL_TIMEOUT_FACTOR`). Applies only with
|
|
531
|
+
* `resetTimeoutOnProgress`.
|
|
532
|
+
*/
|
|
533
|
+
maxTotalTimeoutMs?: number;
|
|
515
534
|
/**
|
|
516
535
|
* How long `connect()`'s era probe waits for an answer before deciding
|
|
517
536
|
* the peer speaks a legacy revision. Defaults to
|