@anionex/dsh-turn-rewind 0.3.3 → 0.3.5
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/lib/client.js +24 -1
- package/lib/client.js.map +1 -1
- package/lib/engine.js +26 -2
- package/lib/path-cache.js +137 -0
- package/lib/snapshot.js +38 -7
- package/lib/store.js +14 -0
- package/lib/types/client/index.d.ts +10 -0
- package/lib/types/engine.d.ts +8 -0
- package/lib/types/path-cache.d.ts +36 -0
- package/lib/types/snapshot.d.ts +5 -0
- package/lib/types/store.d.ts +4 -0
- package/package.json +1 -1
- package/src/client/index.tsx +24 -1
- package/src/engine.ts +27 -2
- package/src/path-cache.ts +144 -0
- package/src/snapshot.ts +41 -7
- package/src/store.ts +15 -0
package/lib/client.js
CHANGED
|
@@ -14,6 +14,7 @@ exports.selectRewindMessageTarget = selectRewindMessageTarget;
|
|
|
14
14
|
exports.responseJson = responseJson;
|
|
15
15
|
exports.fileRecoveryLabel = fileRecoveryLabel;
|
|
16
16
|
exports.describeCaptureNotice = describeCaptureNotice;
|
|
17
|
+
exports.explainCheckpointSkip = explainCheckpointSkip;
|
|
17
18
|
exports.explainCheckpointFailure = explainCheckpointFailure;
|
|
18
19
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
19
20
|
const react_1 = require("react");
|
|
@@ -395,7 +396,7 @@ function RewindMessageAction({ matched, sessionId, openRestoredSession }) {
|
|
|
395
396
|
const actionLabel = mode === 'both' ? '恢复并从这里继续' : mode === 'code' ? '恢复文件' : '只回溯消息';
|
|
396
397
|
const radioName = `dcl-rewind-${sessionId}-${String(matched.messageSeq)}`;
|
|
397
398
|
const branchChanged = ready !== null && ready.checkpointBranch !== ready.currentBranch;
|
|
398
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-tail", children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Tooltip, { label: "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", side: "bottom", children: (0, jsx_runtime_1.jsx)("button", { type: "button", className: "dcl-rewind-trigger", onClick: show, "aria-label": "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", children: (0, jsx_runtime_1.jsx)(RewindIcon, { size: 16 }) }) }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Modal, { open: open, onClose: close, title: "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", closeLabel: "\u5173\u95ED", description: "\u67E5\u770B\u6062\u590D\u7684\u6587\u4EF6\uFF0C\u9009\u62E9\u9002\u5408\u4F60\u7684\u56DE\u9000\u65B9\u5F0F\u3002\u5F53\u524D\u4F1A\u8BDD\u4E0D\u53D7\u5F71\u54CD\u3002", className: "dcl-rewind-dialog", contentClassName: "dcl-rewind-content", footer: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", onClick: close, disabled: applying, children: "\u53D6\u6D88" }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "primary", onClick: () => { void applyRestore(); }, disabled: !canApply, children: applying ? '正在恢复…' : completed === null ? actionLabel : '已完成' })] })), children: (0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-body", children: [loading && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-status", children: "\u6B63\u5728\u68C0\u67E5\u53EF\u4EE5\u6062\u590D\u7684\u9879\u76EE\u6587\u4EF6\u2026" }), preview?.status === 'pending' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-status", children: "\u8FD9\u6761\u6D88\u606F\u53D1\u9001\u524D\u7684\u6587\u4EF6\u8FD8\u5728\u4FDD\u5B58\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002" }), preview?.status === 'missing' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-error", children: "\u6CA1\u6709\u4FDD\u5B58\u8FD9\u6761\u6D88\u606F\u53D1\u9001\u524D\u7684\u6587\u4EF6\u3002\u53EF\u80FD\u662F\u5F53\u65F6\u8FD8\u6CA1\u542F\u7528\u56DE\u9000\u529F\u80FD\u3001\u8BB0\u5F55\u5DF2\u8D85\u8FC7\u4FDD\u7559\u671F\u9650\uFF0C\u6216\u5DF2\u5173\u95ED\u81EA\u52A8\u68C0\u67E5\u70B9\u3002\u4ECD\u53EF\u53EA\u56DE\u6EAF\u6D88\u606F\u3002" }), preview?.status === 'skipped' && (0, jsx_runtime_1.
|
|
399
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-tail", children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Tooltip, { label: "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", side: "bottom", children: (0, jsx_runtime_1.jsx)("button", { type: "button", className: "dcl-rewind-trigger", onClick: show, "aria-label": "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", children: (0, jsx_runtime_1.jsx)(RewindIcon, { size: 16 }) }) }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Modal, { open: open, onClose: close, title: "\u6062\u590D\u5230\u53D1\u9001\u8FD9\u6761\u6D88\u606F\u4E4B\u524D", closeLabel: "\u5173\u95ED", description: "\u67E5\u770B\u6062\u590D\u7684\u6587\u4EF6\uFF0C\u9009\u62E9\u9002\u5408\u4F60\u7684\u56DE\u9000\u65B9\u5F0F\u3002\u5F53\u524D\u4F1A\u8BDD\u4E0D\u53D7\u5F71\u54CD\u3002", className: "dcl-rewind-dialog", contentClassName: "dcl-rewind-content", footer: ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", onClick: close, disabled: applying, children: "\u53D6\u6D88" }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "primary", onClick: () => { void applyRestore(); }, disabled: !canApply, children: applying ? '正在恢复…' : completed === null ? actionLabel : '已完成' })] })), children: (0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-body", children: [loading && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-status", children: "\u6B63\u5728\u68C0\u67E5\u53EF\u4EE5\u6062\u590D\u7684\u9879\u76EE\u6587\u4EF6\u2026" }), preview?.status === 'pending' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-status", children: "\u8FD9\u6761\u6D88\u606F\u53D1\u9001\u524D\u7684\u6587\u4EF6\u8FD8\u5728\u4FDD\u5B58\uFF0C\u8BF7\u7A0D\u540E\u518D\u8BD5\u3002" }), preview?.status === 'missing' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-error", children: "\u6CA1\u6709\u4FDD\u5B58\u8FD9\u6761\u6D88\u606F\u53D1\u9001\u524D\u7684\u6587\u4EF6\u3002\u53EF\u80FD\u662F\u5F53\u65F6\u8FD8\u6CA1\u542F\u7528\u56DE\u9000\u529F\u80FD\u3001\u8BB0\u5F55\u5DF2\u8D85\u8FC7\u4FDD\u7559\u671F\u9650\uFF0C\u6216\u5DF2\u5173\u95ED\u81EA\u52A8\u68C0\u67E5\u70B9\u3002\u4ECD\u53EF\u53EA\u56DE\u6EAF\u6D88\u606F\u3002" }), preview?.status === 'skipped' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-status", children: explainCheckpointSkip(preview.reason) }), preview?.status === 'failed' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-error", children: explainCheckpointFailure(preview.error) }), preview !== null && ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-options", children: [(0, jsx_runtime_1.jsxs)("label", { className: "dcl-rewind-option", "data-selected": mode === 'both', "data-disabled": applying || !hasFileChanges, children: [(0, jsx_runtime_1.jsx)("input", { type: "radio", name: radioName, checked: mode === 'both', disabled: applying || !hasFileChanges, onChange: () => { chooseMode('both'); } }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-rewind-option-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u6062\u590D\u6587\u4EF6\u5E76\u4ECE\u8FD9\u91CC\u7EE7\u7EED" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-rewind-option-description", children: "\u521B\u5EFA\u4E00\u4E2A\u4ECE\u8FD9\u91CC\u5F00\u59CB\u7684\u65B0\u4F1A\u8BDD\uFF08\u5F53\u524D\u5BF9\u8BDD\u4F1A\u4FDD\u7559\uFF09" })] })] }), (0, jsx_runtime_1.jsxs)("label", { className: "dcl-rewind-option", "data-selected": mode === 'code', "data-disabled": applying || !hasFileChanges, children: [(0, jsx_runtime_1.jsx)("input", { type: "radio", name: radioName, checked: mode === 'code', disabled: applying || !hasFileChanges, onChange: () => { chooseMode('code'); } }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-rewind-option-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u53EA\u6062\u590D\u6587\u4EF6" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-rewind-option-description", children: "\u6062\u590D\u8FD9\u6761\u6D88\u606F\u53D1\u9001\u524D\u7684\u6587\u4EF6\uFF0C\u5F53\u524D\u5BF9\u8BDD\u4FDD\u6301\u4E0D\u53D8\u3002" })] })] }), (0, jsx_runtime_1.jsxs)("label", { className: "dcl-rewind-option", "data-selected": mode === 'messages', "data-disabled": applying, children: [(0, jsx_runtime_1.jsx)("input", { type: "radio", name: radioName, checked: mode === 'messages', disabled: applying, onChange: () => { chooseMode('messages'); } }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-rewind-option-content", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u53EA\u56DE\u6EAF\u6D88\u606F\uFF08\u4E0D\u52A8\u6587\u4EF6\uFF09" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-rewind-option-description", children: "\u521B\u5EFA\u4E00\u4E2A\u4ECE\u8FD9\u91CC\u5F00\u59CB\u7684\u65B0\u4F1A\u8BDD\uFF0C\u9879\u76EE\u6587\u4EF6\u4FDD\u6301\u5F53\u524D\u72B6\u6001\u3002" })] })] })] })), ready !== null && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [captureNotice !== null && (0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-warning", children: captureNotice }), (0, jsx_runtime_1.jsxs)("div", { className: "dcl-rewind-summary", children: [mode === 'messages'
|
|
399
400
|
? (0, jsx_runtime_1.jsx)("strong", { children: "\u9879\u76EE\u6587\u4EF6\u4FDD\u6301\u4E0D\u53D8" })
|
|
400
401
|
: (0, jsx_runtime_1.jsxs)("strong", { children: ["\u5C06\u6062\u590D ", String(ready.totalChanges), " \u4E2A\u6587\u4EF6"] }), (0, jsx_runtime_1.jsx)("span", { children: mode === 'both' ? '恢复后在新对话里继续' : mode === 'code' ? '当前对话保持不变' : '仅创建从这里继续的新对话' })] }), sharedBlocked && ((0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-error", children: "\u8FD9\u4E2A\u9879\u76EE\u76EE\u5F55\u8FD8\u6709\u522B\u7684\u5BF9\u8BDD\u6B63\u5728\u8FD0\u884C\u3002\u6062\u590D\u6587\u4EF6\u4F1A\u5F71\u54CD\u5230\u5B83\u4EEC\uFF0C\u56E0\u6B64\u672C\u6B21\u64CD\u4F5C\u5DF2\u88AB\u963B\u6B62\u3002\u8BF7\u7B49\u90A3\u4E9B\u5BF9\u8BDD\u7ED3\u675F\u6216\u505C\u6B62\u540E\uFF0C\u518D\u91CD\u65B0\u68C0\u67E5\u3002" })), ready.headChanged && !ready.operationChanged && ((0, jsx_runtime_1.jsx)("p", { className: "dcl-rewind-warning", children: branchChanged
|
|
401
402
|
? '当前所在的 Git 分支和发送这条消息时不同。恢复不会切换分支,只会把当时的文件内容恢复到当前分支。'
|
|
@@ -877,6 +878,28 @@ function describeCaptureNotice(ready) {
|
|
|
877
878
|
}
|
|
878
879
|
return null;
|
|
879
880
|
}
|
|
881
|
+
/**
|
|
882
|
+
* Explain one recorded checkpoint skip in user terms.
|
|
883
|
+
*
|
|
884
|
+
* A skip is not a failure of the message: the turn ran normally and only the
|
|
885
|
+
* file snapshot is missing, so the text names the actual cause and the two
|
|
886
|
+
* levers that fix it.
|
|
887
|
+
* @param reason - reason recorded by the Host, usually a `[CODE] detail` line.
|
|
888
|
+
* @returns one user-facing sentence.
|
|
889
|
+
*/
|
|
890
|
+
function explainCheckpointSkip(reason) {
|
|
891
|
+
const code = /^\[([A-Z_]+)\]/.exec(reason)?.[1];
|
|
892
|
+
if (code === 'TURN_CHECKPOINT_TIMEOUT') {
|
|
893
|
+
return '这个项目目录太大,在检查点时间上限内没保存完文件快照,所以本轮没有回退点(消息本身没有受影响)。可以在插件设置里调大「检查点时间上限」,或在目录根用 .dsh-rewindignore 排除大目录(例如 node_modules、构建产物、数据集)。仍可只回溯消息。';
|
|
894
|
+
}
|
|
895
|
+
if (code === 'TURN_CHECKPOINT_DISABLED') {
|
|
896
|
+
return '自动文件检查点已在设置里关闭,本轮没有回退点。仍可只回溯消息。';
|
|
897
|
+
}
|
|
898
|
+
if (code === 'TURN_CHECKPOINT_NEW_CONTENT_LIMIT') {
|
|
899
|
+
return '这一轮新增的内容超过检查点预算,没有保存文件快照。仍可只回溯消息。';
|
|
900
|
+
}
|
|
901
|
+
return `本轮没有保存文件检查点:${reason}仍可只回溯消息。`;
|
|
902
|
+
}
|
|
880
903
|
/**
|
|
881
904
|
* Explain one recorded checkpoint failure in user terms.
|
|
882
905
|
*
|
package/lib/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client/src/client/index.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client/src/client/index.tsx"],"names":[],"mappings":"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"}
|
package/lib/engine.js
CHANGED
|
@@ -7,6 +7,7 @@ import { ChangeLedgerError, errorMessage } from './errors.js';
|
|
|
7
7
|
import { ensureGitWorktreeIdentity, resolveGitWorktreeRoot } from './git.js';
|
|
8
8
|
import { captureGitTurnCheckpoint, deleteGitCheckpoint, deleteGitCheckpointRef, publishGitCheckpoint, readGitBlob, verifyGitCheckpoint, } from './git-checkpoint.js';
|
|
9
9
|
import { assertSafeParents, ensureSafeParents, expandHome, isNodeError, isWithin, pruneEmptyParents, removeRestoreTarget, replaceRegularFile, replaceSymbolicLink, resolveWorkspacePath, validateRelativePath, } from './path-utils.js';
|
|
10
|
+
import { readPathCache, writePathCache } from './path-cache.js';
|
|
10
11
|
import { captureSnapshotEntry, captureStableTree, diffTrees, entriesEqual } from './snapshot.js';
|
|
11
12
|
import { LedgerStore } from './store.js';
|
|
12
13
|
import { discoverWorkspace, discoverWorkspaceIdentity, sameWorkspaceFence } from './workspace.js';
|
|
@@ -15,12 +16,12 @@ const DEFAULTS = {
|
|
|
15
16
|
maxRestorePoints: 50,
|
|
16
17
|
maxTurnCheckpointsPerSession: 30,
|
|
17
18
|
maxFiles: 20_000,
|
|
18
|
-
maxFileBytes:
|
|
19
|
+
maxFileBytes: 64 * 1024 * 1024,
|
|
19
20
|
maxSnapshotBytes: 512 * 1024 * 1024,
|
|
20
21
|
planTtlMs: 15 * 60 * 1_000,
|
|
21
22
|
staleLockMs: 30_000,
|
|
22
23
|
turnCheckpointMode: 'legacy',
|
|
23
|
-
turnCheckpointTimeoutMs:
|
|
24
|
+
turnCheckpointTimeoutMs: 60_000,
|
|
24
25
|
turnCheckpointMaxNewBytes: 32 * 1024 * 1024,
|
|
25
26
|
turnCheckpointTrust: 'fast',
|
|
26
27
|
};
|
|
@@ -66,6 +67,21 @@ export class ChangeLedgerEngine {
|
|
|
66
67
|
* A Git worktree also binds the shared per-worktree lock derived from its Git
|
|
67
68
|
* identity; an ordinary directory owns only the durable directory lock.
|
|
68
69
|
*/
|
|
70
|
+
/** Per-workspace path identity caches, loaded once per process generation. */
|
|
71
|
+
pathCaches = new Map();
|
|
72
|
+
/**
|
|
73
|
+
* Load (once) the identity cache that lets a capture reuse unchanged files.
|
|
74
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
75
|
+
* @returns the mutable cache shared by every capture of this workspace.
|
|
76
|
+
*/
|
|
77
|
+
async pathCacheFor(workspaceDir) {
|
|
78
|
+
const loaded = this.pathCaches.get(workspaceDir);
|
|
79
|
+
if (loaded !== undefined)
|
|
80
|
+
return loaded;
|
|
81
|
+
const cache = await readPathCache(workspaceDir);
|
|
82
|
+
this.pathCaches.set(workspaceDir, cache);
|
|
83
|
+
return cache;
|
|
84
|
+
}
|
|
69
85
|
async acquireWorkspace(workspace, signal) {
|
|
70
86
|
if (workspace.type === 'directory') {
|
|
71
87
|
return this.store.acquire(workspace.root, undefined, undefined, signal);
|
|
@@ -401,6 +417,8 @@ export class ChangeLedgerEngine {
|
|
|
401
417
|
const current = await captureStableTree({
|
|
402
418
|
cwd: source.state.root,
|
|
403
419
|
config: this.config,
|
|
420
|
+
store: this.store,
|
|
421
|
+
pathCache: await this.pathCacheFor(this.store.workspaceDirectory(source.state.root)),
|
|
404
422
|
...(manifest.version === 2 ? { gitObjectFormat: manifest.git.objectFormat } : {}),
|
|
405
423
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
406
424
|
});
|
|
@@ -439,6 +457,8 @@ export class ChangeLedgerEngine {
|
|
|
439
457
|
const current = await captureStableTree({
|
|
440
458
|
cwd: source.state.root,
|
|
441
459
|
config: this.config,
|
|
460
|
+
store: this.store,
|
|
461
|
+
pathCache: await this.pathCacheFor(this.store.workspaceDirectory(source.state.root)),
|
|
442
462
|
...(manifest.version === 2 ? { gitObjectFormat: manifest.git.objectFormat } : {}),
|
|
443
463
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
444
464
|
});
|
|
@@ -799,12 +819,16 @@ export class ChangeLedgerEngine {
|
|
|
799
819
|
await this.store.writeSnapshotCleanup(options.cwd);
|
|
800
820
|
}
|
|
801
821
|
try {
|
|
822
|
+
const workspaceDir = this.store.workspaceDirectory(options.cwd);
|
|
823
|
+
const pathCache = await this.pathCacheFor(workspaceDir);
|
|
802
824
|
const tree = await captureStableTree({
|
|
803
825
|
cwd: options.cwd,
|
|
804
826
|
config: this.config,
|
|
805
827
|
store: this.store,
|
|
828
|
+
pathCache,
|
|
806
829
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
807
830
|
});
|
|
831
|
+
await writePathCache(workspaceDir, pathCache).catch(() => undefined);
|
|
808
832
|
const manifest = {
|
|
809
833
|
version: LEDGER_FORMAT_VERSION,
|
|
810
834
|
id: makeId('rp'),
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { isNodeError, pathExists, writeJsonAtomic } from './path-utils.js';
|
|
4
|
+
const CACHE_FILE = 'path-cache.json';
|
|
5
|
+
const CACHE_VERSION = 1;
|
|
6
|
+
const MAX_ENTRIES = 200_000;
|
|
7
|
+
const MAX_FILE_BYTES = 64 * 1024 * 1024;
|
|
8
|
+
/** Stable identity string for one observed filesystem object. */
|
|
9
|
+
export function pathCacheKey(info) {
|
|
10
|
+
return `${info.dev}:${info.ino}:${info.size}:${info.mtimeNs}:${info.ctimeNs}:${info.mode.toString()}`;
|
|
11
|
+
}
|
|
12
|
+
/** Remember what one unknown does not already describe. */
|
|
13
|
+
export function toPathCacheEntry(info, entry) {
|
|
14
|
+
return {
|
|
15
|
+
dev: info.dev.toString(),
|
|
16
|
+
ino: info.ino.toString(),
|
|
17
|
+
size: info.size.toString(),
|
|
18
|
+
mtimeNs: info.mtimeNs.toString(),
|
|
19
|
+
ctimeNs: info.ctimeNs.toString(),
|
|
20
|
+
mode: Number(info.mode & 511n),
|
|
21
|
+
entry,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
/** Whether a cached record still describes the object the filesystem reports now. */
|
|
25
|
+
export function matchesPathCache(record, info) {
|
|
26
|
+
return record.dev === info.dev.toString()
|
|
27
|
+
&& record.ino === info.ino.toString()
|
|
28
|
+
&& record.size === info.size.toString()
|
|
29
|
+
&& record.mtimeNs === info.mtimeNs.toString()
|
|
30
|
+
&& record.ctimeNs === info.ctimeNs.toString()
|
|
31
|
+
&& record.mode === Number(info.mode & 511n);
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Read the per-workspace path cache.
|
|
35
|
+
*
|
|
36
|
+
* The cache is a pure optimization: any malformed or unreadable record is
|
|
37
|
+
* discarded instead of trusted, and a discarded cache only costs a cold capture.
|
|
38
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
39
|
+
* @returns the cached records, newest read wins.
|
|
40
|
+
*/
|
|
41
|
+
export async function readPathCache(workspaceDir) {
|
|
42
|
+
const cache = new Map();
|
|
43
|
+
let raw;
|
|
44
|
+
try {
|
|
45
|
+
raw = await readFile(join(workspaceDir, CACHE_FILE), 'utf8');
|
|
46
|
+
}
|
|
47
|
+
catch (error) {
|
|
48
|
+
if (isNodeError(error, 'ENOENT'))
|
|
49
|
+
return cache;
|
|
50
|
+
return cache;
|
|
51
|
+
}
|
|
52
|
+
try {
|
|
53
|
+
const parsed = JSON.parse(raw);
|
|
54
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed))
|
|
55
|
+
return cache;
|
|
56
|
+
const record = parsed;
|
|
57
|
+
if (record.version !== CACHE_VERSION || record.paths === null || typeof record.paths !== 'object')
|
|
58
|
+
return cache;
|
|
59
|
+
for (const [path, value] of Object.entries(record.paths)) {
|
|
60
|
+
const entry = parseCacheEntry(value);
|
|
61
|
+
if (entry === undefined)
|
|
62
|
+
continue;
|
|
63
|
+
cache.set(path, entry);
|
|
64
|
+
if (cache.size >= MAX_ENTRIES)
|
|
65
|
+
break;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
return new Map();
|
|
70
|
+
}
|
|
71
|
+
return cache;
|
|
72
|
+
}
|
|
73
|
+
/** Persist the path cache atomically, replacing any previous generation. */
|
|
74
|
+
export async function writePathCache(workspaceDir, cache) {
|
|
75
|
+
const paths = Object.create(null);
|
|
76
|
+
let count = 0;
|
|
77
|
+
for (const [path, entry] of cache) {
|
|
78
|
+
if (count >= MAX_ENTRIES)
|
|
79
|
+
break;
|
|
80
|
+
paths[path] = serializeCacheEntry(entry);
|
|
81
|
+
count += 1;
|
|
82
|
+
}
|
|
83
|
+
await writeJsonAtomic(join(workspaceDir, CACHE_FILE), { version: CACHE_VERSION, paths });
|
|
84
|
+
}
|
|
85
|
+
/** Drop the cache when its file is unreadable or was never written. */
|
|
86
|
+
export async function pathCacheExists(workspaceDir) {
|
|
87
|
+
return pathExists(join(workspaceDir, CACHE_FILE));
|
|
88
|
+
}
|
|
89
|
+
function serializeCacheEntry(record) {
|
|
90
|
+
const entry = record.entry;
|
|
91
|
+
return {
|
|
92
|
+
dev: record.dev, ino: record.ino, size: record.size,
|
|
93
|
+
mtimeNs: record.mtimeNs, ctimeNs: record.ctimeNs, mode: record.mode,
|
|
94
|
+
kind: entry.kind,
|
|
95
|
+
...(entry.kind === 'file' ? { blob: entry.blob, provider: entry.provider } : { target: entry.target }),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
function parseCacheEntry(value) {
|
|
99
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
100
|
+
return undefined;
|
|
101
|
+
const record = value;
|
|
102
|
+
const text = (key) => (typeof record[key] === 'string' ? record[key] : undefined);
|
|
103
|
+
const dev = text('dev');
|
|
104
|
+
const ino = text('ino');
|
|
105
|
+
const size = text('size');
|
|
106
|
+
const mtimeNs = text('mtimeNs');
|
|
107
|
+
const ctimeNs = text('ctimeNs');
|
|
108
|
+
if (dev === undefined || ino === undefined || size === undefined || mtimeNs === undefined || ctimeNs === undefined)
|
|
109
|
+
return undefined;
|
|
110
|
+
if (typeof record.mode !== 'number' || !Number.isInteger(record.mode))
|
|
111
|
+
return undefined;
|
|
112
|
+
let entry;
|
|
113
|
+
if (record.kind === 'file') {
|
|
114
|
+
const blob = text('blob');
|
|
115
|
+
if (blob === undefined || !/^[0-9a-f]{64}$/.test(blob))
|
|
116
|
+
return undefined;
|
|
117
|
+
const provider = record.provider;
|
|
118
|
+
if (provider !== undefined && provider !== 'git')
|
|
119
|
+
return undefined;
|
|
120
|
+
entry = {
|
|
121
|
+
kind: 'file', blob, size: Number(size), mode: record.mode,
|
|
122
|
+
...(provider === undefined ? {} : { provider }),
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
else if (record.kind === 'symlink') {
|
|
126
|
+
const target = text('target');
|
|
127
|
+
if (target === undefined || target.includes('\0'))
|
|
128
|
+
return undefined;
|
|
129
|
+
entry = { kind: 'symlink', target, mode: record.mode };
|
|
130
|
+
}
|
|
131
|
+
else {
|
|
132
|
+
return undefined;
|
|
133
|
+
}
|
|
134
|
+
if (BigInt(size) > BigInt(MAX_FILE_BYTES))
|
|
135
|
+
return undefined;
|
|
136
|
+
return { dev, ino, size, mtimeNs, ctimeNs, mode: record.mode, entry };
|
|
137
|
+
}
|
package/lib/snapshot.js
CHANGED
|
@@ -3,6 +3,7 @@ import { constants } from 'node:fs';
|
|
|
3
3
|
import { lstat, open, readlink } from 'node:fs/promises';
|
|
4
4
|
import { ChangeLedgerError } from './errors.js';
|
|
5
5
|
import { isNodeError, resolveWorkspacePath } from './path-utils.js';
|
|
6
|
+
import { matchesPathCache, toPathCacheEntry } from './path-cache.js';
|
|
6
7
|
import { discoverWorkspace, sameWorkspaceFence } from './workspace.js';
|
|
7
8
|
const COMPARISON_READ_BUDGET_BYTES = 128 * 1024 * 1024;
|
|
8
9
|
const MAX_RECORDED_SKIPS = 50;
|
|
@@ -42,6 +43,31 @@ export async function captureTree(options) {
|
|
|
42
43
|
let budgetSpent = false;
|
|
43
44
|
const capturePath = async (path) => {
|
|
44
45
|
throwIfAborted(options.signal);
|
|
46
|
+
// Reuse is only sound when the identity is unchanged and the stored blob is
|
|
47
|
+
// still present; a garbage-collected blob falls back to a fresh read.
|
|
48
|
+
if (options.pathCache !== undefined && options.store !== undefined && gitCapture === undefined) {
|
|
49
|
+
const cached = options.pathCache.get(path);
|
|
50
|
+
if (cached !== undefined) {
|
|
51
|
+
let info;
|
|
52
|
+
try {
|
|
53
|
+
info = await lstat(resolveWorkspacePath(source.state.root, path), { bigint: true });
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
if (!isNodeError(error, 'ENOENT'))
|
|
57
|
+
throw error;
|
|
58
|
+
}
|
|
59
|
+
if (info !== undefined && matchesPathCache(cached, info)) {
|
|
60
|
+
const reusable = cached.entry.kind === 'symlink'
|
|
61
|
+
|| await options.store.hasBlob(source.state.root, cached.entry.blob);
|
|
62
|
+
if (reusable) {
|
|
63
|
+
entries[path] = cached.entry;
|
|
64
|
+
if (cached.entry.kind === 'file')
|
|
65
|
+
totalBytes += cached.entry.size;
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
45
71
|
if (budgetSpent) {
|
|
46
72
|
// The aggregate budget is gone, but the path is still recorded so a
|
|
47
73
|
// restore can prove this point never observed it.
|
|
@@ -66,7 +92,7 @@ export async function captureTree(options) {
|
|
|
66
92
|
if (entry === undefined)
|
|
67
93
|
return;
|
|
68
94
|
if (entry.kind === 'file') {
|
|
69
|
-
if (totalBytes + entry.content.length > options.config.maxSnapshotBytes) {
|
|
95
|
+
if (budgetSpent || totalBytes + entry.content.length > options.config.maxSnapshotBytes) {
|
|
70
96
|
budgetSpent = true;
|
|
71
97
|
truncated ??= 'snapshot-limit';
|
|
72
98
|
recordSkip(path, 'snapshot-limit');
|
|
@@ -85,12 +111,14 @@ export async function captureTree(options) {
|
|
|
85
111
|
entries[path] = entry.snapshot;
|
|
86
112
|
if (gitCapture !== undefined)
|
|
87
113
|
gitCapture.entries[path] = entry.snapshot;
|
|
114
|
+
if (options.pathCache !== undefined && gitCapture === undefined) {
|
|
115
|
+
options.pathCache.set(path, toPathCacheEntry(entry.info, entry.snapshot));
|
|
116
|
+
}
|
|
88
117
|
};
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
else {
|
|
118
|
+
{
|
|
119
|
+
// Reading one file at a time makes a real project directory take minutes, so
|
|
120
|
+
// every capture runs through a bounded worker pool. Per-file stability stats
|
|
121
|
+
// and the synchronous budget check keep the result identical to a serial run.
|
|
94
122
|
let next = 0;
|
|
95
123
|
let failed = false;
|
|
96
124
|
let firstError = new ChangeLedgerError('WORKSPACE_CHANGED_DURING_CAPTURE', 'parallel comparison capture failed');
|
|
@@ -140,6 +168,8 @@ export async function captureStableTree(options) {
|
|
|
140
168
|
const first = await captureTree({
|
|
141
169
|
cwd: options.cwd,
|
|
142
170
|
config: options.config,
|
|
171
|
+
...(options.store === undefined ? {} : { store: options.store }),
|
|
172
|
+
...(options.pathCache === undefined ? {} : { pathCache: options.pathCache }),
|
|
143
173
|
...(options.gitObjectFormat === undefined ? {} : { gitObjectFormat: options.gitObjectFormat }),
|
|
144
174
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
145
175
|
});
|
|
@@ -264,7 +294,7 @@ async function captureEntry(root, path, maxFileBytes, signal) {
|
|
|
264
294
|
const after = await lstat(target, { bigint: true });
|
|
265
295
|
if (!sameStat(before, after))
|
|
266
296
|
continue;
|
|
267
|
-
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode } };
|
|
297
|
+
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode }, info: after };
|
|
268
298
|
}
|
|
269
299
|
if (!before.isFile()) {
|
|
270
300
|
throw new ChangeLedgerError('UNSUPPORTED_FILE_TYPE', `eligible path is not a regular file or symlink: ${JSON.stringify(path)}`);
|
|
@@ -300,6 +330,7 @@ async function captureEntry(root, path, maxFileBytes, signal) {
|
|
|
300
330
|
kind: 'file',
|
|
301
331
|
snapshot: { kind: 'file', blob, size: content.length, mode },
|
|
302
332
|
content,
|
|
333
|
+
info: { ...before, size: BigInt(content.length) },
|
|
303
334
|
};
|
|
304
335
|
}
|
|
305
336
|
throw new ChangeLedgerError('WORKSPACE_CHANGED_DURING_CAPTURE', `path changed repeatedly while being captured: ${JSON.stringify(path)}`);
|
package/lib/store.js
CHANGED
|
@@ -173,6 +173,15 @@ export class LedgerStore {
|
|
|
173
173
|
throw new ChangeLedgerError('WORKSPACE_LOCKED', `could not acquire change-ledger lock for ${JSON.stringify(workspace)}`);
|
|
174
174
|
}
|
|
175
175
|
/** Persist a blob if it is not already present, and verify existing content. */
|
|
176
|
+
/** Whether one content-addressed blob is already stored for a workspace. */
|
|
177
|
+
async hasBlob(workspace, hash) {
|
|
178
|
+
validateBlobHash(hash);
|
|
179
|
+
return pathExists(this.blobPath(workspace, hash));
|
|
180
|
+
}
|
|
181
|
+
/** Durable directory holding one workspace's manifests, blobs, and caches. */
|
|
182
|
+
workspaceDirectory(workspace) {
|
|
183
|
+
return this.workspaceDir(workspace);
|
|
184
|
+
}
|
|
176
185
|
async putBlob(workspace, hash, content) {
|
|
177
186
|
validateBlobHash(hash);
|
|
178
187
|
const contentHash = createHash('sha256').update(content).digest('hex');
|
|
@@ -180,6 +189,11 @@ export class LedgerStore {
|
|
|
180
189
|
throw new ChangeLedgerError('BLOB_HASH_MISMATCH', `refusing to store content whose SHA-256 does not match ${hash}`);
|
|
181
190
|
}
|
|
182
191
|
const path = this.blobPath(workspace, hash);
|
|
192
|
+
// Content addressing makes an existing blob identical by construction, and
|
|
193
|
+
// re-writing it costs one fsync per file: a full-tree capture of a large
|
|
194
|
+
// workspace otherwise spends minutes proving it already stored the content.
|
|
195
|
+
if (await pathExists(path))
|
|
196
|
+
return;
|
|
183
197
|
const directory = join(this.workspaceDir(workspace), 'blobs', hash.slice(0, 2));
|
|
184
198
|
await mkdir(directory, { recursive: true, mode: 0o700 });
|
|
185
199
|
const temporary = join(directory, `.${randomUUID()}.tmp`);
|
|
@@ -234,6 +234,16 @@ export declare function fileRecoveryLabel(kind: ChangeKind): string;
|
|
|
234
234
|
* @returns the warning text, or null when the checkpoint is complete.
|
|
235
235
|
*/
|
|
236
236
|
export declare function describeCaptureNotice(ready: ReadyPreview | null): string | null;
|
|
237
|
+
/**
|
|
238
|
+
* Explain one recorded checkpoint skip in user terms.
|
|
239
|
+
*
|
|
240
|
+
* A skip is not a failure of the message: the turn ran normally and only the
|
|
241
|
+
* file snapshot is missing, so the text names the actual cause and the two
|
|
242
|
+
* levers that fix it.
|
|
243
|
+
* @param reason - reason recorded by the Host, usually a `[CODE] detail` line.
|
|
244
|
+
* @returns one user-facing sentence.
|
|
245
|
+
*/
|
|
246
|
+
export declare function explainCheckpointSkip(reason: string): string;
|
|
237
247
|
/**
|
|
238
248
|
* Explain one recorded checkpoint failure in user terms.
|
|
239
249
|
*
|
package/lib/types/engine.d.ts
CHANGED
|
@@ -25,6 +25,14 @@ export declare class ChangeLedgerEngine {
|
|
|
25
25
|
* A Git worktree also binds the shared per-worktree lock derived from its Git
|
|
26
26
|
* identity; an ordinary directory owns only the durable directory lock.
|
|
27
27
|
*/
|
|
28
|
+
/** Per-workspace path identity caches, loaded once per process generation. */
|
|
29
|
+
private readonly pathCaches;
|
|
30
|
+
/**
|
|
31
|
+
* Load (once) the identity cache that lets a capture reuse unchanged files.
|
|
32
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
33
|
+
* @returns the mutable cache shared by every capture of this workspace.
|
|
34
|
+
*/
|
|
35
|
+
private pathCacheFor;
|
|
28
36
|
private acquireWorkspace;
|
|
29
37
|
private reconcileGitCheckpointJournals;
|
|
30
38
|
private publishGitManifest;
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import type { BigIntStats } from 'node:fs';
|
|
2
|
+
import type { SnapshotEntry } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* One observed path, keyed by the filesystem identity that proves it is unchanged.
|
|
5
|
+
*
|
|
6
|
+
* `ctimeNs` changes on every write even when size and mtime are restored, so a
|
|
7
|
+
* matching key means the stored content is still exactly what the path holds.
|
|
8
|
+
*/
|
|
9
|
+
export interface PathCacheEntry {
|
|
10
|
+
readonly dev: string;
|
|
11
|
+
readonly ino: string;
|
|
12
|
+
readonly size: string;
|
|
13
|
+
readonly mtimeNs: string;
|
|
14
|
+
readonly ctimeNs: string;
|
|
15
|
+
readonly mode: number;
|
|
16
|
+
readonly entry: SnapshotEntry;
|
|
17
|
+
}
|
|
18
|
+
/** Stable identity string for one observed filesystem object. */
|
|
19
|
+
export declare function pathCacheKey(info: BigIntStats): string;
|
|
20
|
+
/** Remember what one unknown does not already describe. */
|
|
21
|
+
export declare function toPathCacheEntry(info: BigIntStats, entry: SnapshotEntry): PathCacheEntry;
|
|
22
|
+
/** Whether a cached record still describes the object the filesystem reports now. */
|
|
23
|
+
export declare function matchesPathCache(record: PathCacheEntry, info: BigIntStats): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Read the per-workspace path cache.
|
|
26
|
+
*
|
|
27
|
+
* The cache is a pure optimization: any malformed or unreadable record is
|
|
28
|
+
* discarded instead of trusted, and a discarded cache only costs a cold capture.
|
|
29
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
30
|
+
* @returns the cached records, newest read wins.
|
|
31
|
+
*/
|
|
32
|
+
export declare function readPathCache(workspaceDir: string): Promise<Map<string, PathCacheEntry>>;
|
|
33
|
+
/** Persist the path cache atomically, replacing any previous generation. */
|
|
34
|
+
export declare function writePathCache(workspaceDir: string, cache: ReadonlyMap<string, PathCacheEntry>): Promise<void>;
|
|
35
|
+
/** Drop the cache when its file is unreadable or was never written. */
|
|
36
|
+
export declare function pathCacheExists(workspaceDir: string): Promise<boolean>;
|
package/lib/types/snapshot.d.ts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { type PathCacheEntry } from './path-cache.js';
|
|
1
2
|
import type { LedgerStore } from './store.js';
|
|
2
3
|
import { type WorkspaceSnapshotSource } from './workspace.js';
|
|
3
4
|
import type { CaptureSkip, CaptureTruncation, ResolvedChangeLedgerConfig, SnapshotEntry, WorkspaceChange } from './types.js';
|
|
@@ -23,6 +24,8 @@ export declare function captureTree(options: {
|
|
|
23
24
|
readonly config: ResolvedChangeLedgerConfig;
|
|
24
25
|
readonly store?: LedgerStore;
|
|
25
26
|
readonly gitObjectFormat?: 'sha1' | 'sha256';
|
|
27
|
+
/** Per-path identity cache: an unchanged path is reused instead of re-read. */
|
|
28
|
+
readonly pathCache?: Map<string, PathCacheEntry>;
|
|
26
29
|
readonly signal?: AbortSignal;
|
|
27
30
|
}): Promise<CapturedTree>;
|
|
28
31
|
/**
|
|
@@ -35,6 +38,8 @@ export declare function captureStableTree(options: {
|
|
|
35
38
|
readonly config: ResolvedChangeLedgerConfig;
|
|
36
39
|
readonly store?: LedgerStore;
|
|
37
40
|
readonly gitObjectFormat?: 'sha1' | 'sha256';
|
|
41
|
+
/** Per-path identity cache: an unchanged path is reused instead of re-read. */
|
|
42
|
+
readonly pathCache?: Map<string, PathCacheEntry>;
|
|
38
43
|
readonly signal?: AbortSignal;
|
|
39
44
|
}): Promise<CapturedTree>;
|
|
40
45
|
/** Compute stable path-level differences between two captured trees. */
|
package/lib/types/store.d.ts
CHANGED
|
@@ -39,6 +39,10 @@ export declare class LedgerStore {
|
|
|
39
39
|
acquireWorkspaceDir(workspaceDir: string, workspace: string, signal?: AbortSignal): Promise<() => Promise<void>>;
|
|
40
40
|
private acquireOne;
|
|
41
41
|
/** Persist a blob if it is not already present, and verify existing content. */
|
|
42
|
+
/** Whether one content-addressed blob is already stored for a workspace. */
|
|
43
|
+
hasBlob(workspace: string, hash: string): Promise<boolean>;
|
|
44
|
+
/** Durable directory holding one workspace's manifests, blobs, and caches. */
|
|
45
|
+
workspaceDirectory(workspace: string): string;
|
|
42
46
|
putBlob(workspace: string, hash: string, content: Buffer): Promise<void>;
|
|
43
47
|
/** Read and verify one content-addressed blob. */
|
|
44
48
|
readBlob(workspace: string, hash: string): Promise<Buffer>;
|
package/package.json
CHANGED
package/src/client/index.tsx
CHANGED
|
@@ -605,7 +605,7 @@ export function RewindMessageAction({ matched, sessionId, openRestoredSession }:
|
|
|
605
605
|
{loading && <p className="dcl-rewind-status">正在检查可以恢复的项目文件…</p>}
|
|
606
606
|
{preview?.status === 'pending' && <p className="dcl-rewind-status">这条消息发送前的文件还在保存,请稍后再试。</p>}
|
|
607
607
|
{preview?.status === 'missing' && <p className="dcl-rewind-error">没有保存这条消息发送前的文件。可能是当时还没启用回退功能、记录已超过保留期限,或已关闭自动检查点。仍可只回溯消息。</p>}
|
|
608
|
-
{preview?.status === 'skipped' && <p className="dcl-rewind-status"
|
|
608
|
+
{preview?.status === 'skipped' && <p className="dcl-rewind-status">{explainCheckpointSkip(preview.reason)}</p>}
|
|
609
609
|
{preview?.status === 'failed' && <p className="dcl-rewind-error">{explainCheckpointFailure(preview.error)}</p>}
|
|
610
610
|
{preview !== null && (
|
|
611
611
|
<div className="dcl-rewind-options">
|
|
@@ -1309,6 +1309,29 @@ export function describeCaptureNotice(ready: ReadyPreview | null): string | null
|
|
|
1309
1309
|
return null
|
|
1310
1310
|
}
|
|
1311
1311
|
|
|
1312
|
+
/**
|
|
1313
|
+
* Explain one recorded checkpoint skip in user terms.
|
|
1314
|
+
*
|
|
1315
|
+
* A skip is not a failure of the message: the turn ran normally and only the
|
|
1316
|
+
* file snapshot is missing, so the text names the actual cause and the two
|
|
1317
|
+
* levers that fix it.
|
|
1318
|
+
* @param reason - reason recorded by the Host, usually a `[CODE] detail` line.
|
|
1319
|
+
* @returns one user-facing sentence.
|
|
1320
|
+
*/
|
|
1321
|
+
export function explainCheckpointSkip(reason: string): string {
|
|
1322
|
+
const code = /^\[([A-Z_]+)\]/.exec(reason)?.[1]
|
|
1323
|
+
if (code === 'TURN_CHECKPOINT_TIMEOUT') {
|
|
1324
|
+
return '这个项目目录太大,在检查点时间上限内没保存完文件快照,所以本轮没有回退点(消息本身没有受影响)。可以在插件设置里调大「检查点时间上限」,或在目录根用 .dsh-rewindignore 排除大目录(例如 node_modules、构建产物、数据集)。仍可只回溯消息。'
|
|
1325
|
+
}
|
|
1326
|
+
if (code === 'TURN_CHECKPOINT_DISABLED') {
|
|
1327
|
+
return '自动文件检查点已在设置里关闭,本轮没有回退点。仍可只回溯消息。'
|
|
1328
|
+
}
|
|
1329
|
+
if (code === 'TURN_CHECKPOINT_NEW_CONTENT_LIMIT') {
|
|
1330
|
+
return '这一轮新增的内容超过检查点预算,没有保存文件快照。仍可只回溯消息。'
|
|
1331
|
+
}
|
|
1332
|
+
return `本轮没有保存文件检查点:${reason}仍可只回溯消息。`
|
|
1333
|
+
}
|
|
1334
|
+
|
|
1312
1335
|
/**
|
|
1313
1336
|
* Explain one recorded checkpoint failure in user terms.
|
|
1314
1337
|
*
|
package/src/engine.ts
CHANGED
|
@@ -26,6 +26,7 @@ import {
|
|
|
26
26
|
resolveWorkspacePath,
|
|
27
27
|
validateRelativePath,
|
|
28
28
|
} from './path-utils.js'
|
|
29
|
+
import { readPathCache, writePathCache, type PathCacheEntry } from './path-cache.js'
|
|
29
30
|
import { captureSnapshotEntry, captureStableTree, diffTrees, entriesEqual } from './snapshot.js'
|
|
30
31
|
import { LedgerStore, type GitCheckpointJournal } from './store.js'
|
|
31
32
|
import { discoverWorkspace, discoverWorkspaceIdentity, sameWorkspaceFence } from './workspace.js'
|
|
@@ -53,12 +54,12 @@ const DEFAULTS = {
|
|
|
53
54
|
maxRestorePoints: 50,
|
|
54
55
|
maxTurnCheckpointsPerSession: 30,
|
|
55
56
|
maxFiles: 20_000,
|
|
56
|
-
maxFileBytes:
|
|
57
|
+
maxFileBytes: 64 * 1024 * 1024,
|
|
57
58
|
maxSnapshotBytes: 512 * 1024 * 1024,
|
|
58
59
|
planTtlMs: 15 * 60 * 1_000,
|
|
59
60
|
staleLockMs: 30_000,
|
|
60
61
|
turnCheckpointMode: 'legacy',
|
|
61
|
-
turnCheckpointTimeoutMs:
|
|
62
|
+
turnCheckpointTimeoutMs: 60_000,
|
|
62
63
|
turnCheckpointMaxNewBytes: 32 * 1024 * 1024,
|
|
63
64
|
turnCheckpointTrust: 'fast',
|
|
64
65
|
} as const
|
|
@@ -111,6 +112,22 @@ export class ChangeLedgerEngine {
|
|
|
111
112
|
* A Git worktree also binds the shared per-worktree lock derived from its Git
|
|
112
113
|
* identity; an ordinary directory owns only the durable directory lock.
|
|
113
114
|
*/
|
|
115
|
+
/** Per-workspace path identity caches, loaded once per process generation. */
|
|
116
|
+
private readonly pathCaches = new Map<string, Map<string, PathCacheEntry>>()
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Load (once) the identity cache that lets a capture reuse unchanged files.
|
|
120
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
121
|
+
* @returns the mutable cache shared by every capture of this workspace.
|
|
122
|
+
*/
|
|
123
|
+
private async pathCacheFor(workspaceDir: string): Promise<Map<string, PathCacheEntry>> {
|
|
124
|
+
const loaded = this.pathCaches.get(workspaceDir)
|
|
125
|
+
if (loaded !== undefined) return loaded
|
|
126
|
+
const cache = await readPathCache(workspaceDir)
|
|
127
|
+
this.pathCaches.set(workspaceDir, cache)
|
|
128
|
+
return cache
|
|
129
|
+
}
|
|
130
|
+
|
|
114
131
|
private async acquireWorkspace(
|
|
115
132
|
workspace: Pick<WorkspaceState, 'type' | 'root'>,
|
|
116
133
|
signal?: AbortSignal,
|
|
@@ -496,6 +513,8 @@ export class ChangeLedgerEngine {
|
|
|
496
513
|
const current = await captureStableTree({
|
|
497
514
|
cwd: source.state.root,
|
|
498
515
|
config: this.config,
|
|
516
|
+
store: this.store,
|
|
517
|
+
pathCache: await this.pathCacheFor(this.store.workspaceDirectory(source.state.root)),
|
|
499
518
|
...(manifest.version === 2 ? { gitObjectFormat: manifest.git.objectFormat } : {}),
|
|
500
519
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
501
520
|
})
|
|
@@ -541,6 +560,8 @@ export class ChangeLedgerEngine {
|
|
|
541
560
|
const current = await captureStableTree({
|
|
542
561
|
cwd: source.state.root,
|
|
543
562
|
config: this.config,
|
|
563
|
+
store: this.store,
|
|
564
|
+
pathCache: await this.pathCacheFor(this.store.workspaceDirectory(source.state.root)),
|
|
544
565
|
...(manifest.version === 2 ? { gitObjectFormat: manifest.git.objectFormat } : {}),
|
|
545
566
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
546
567
|
})
|
|
@@ -948,12 +969,16 @@ export class ChangeLedgerEngine {
|
|
|
948
969
|
await this.store.writeSnapshotCleanup(options.cwd)
|
|
949
970
|
}
|
|
950
971
|
try {
|
|
972
|
+
const workspaceDir = this.store.workspaceDirectory(options.cwd)
|
|
973
|
+
const pathCache = await this.pathCacheFor(workspaceDir)
|
|
951
974
|
const tree = await captureStableTree({
|
|
952
975
|
cwd: options.cwd,
|
|
953
976
|
config: this.config,
|
|
954
977
|
store: this.store,
|
|
978
|
+
pathCache,
|
|
955
979
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
956
980
|
})
|
|
981
|
+
await writePathCache(workspaceDir, pathCache).catch(() => undefined)
|
|
957
982
|
const manifest: RestorePointManifest = {
|
|
958
983
|
version: LEDGER_FORMAT_VERSION,
|
|
959
984
|
id: makeId('rp'),
|
|
@@ -0,0 +1,144 @@
|
|
|
1
|
+
import { readFile } from 'node:fs/promises'
|
|
2
|
+
import { join } from 'node:path'
|
|
3
|
+
import type { BigIntStats } from 'node:fs'
|
|
4
|
+
import { isNodeError, pathExists, writeJsonAtomic } from './path-utils.js'
|
|
5
|
+
import type { SnapshotEntry } from './types.js'
|
|
6
|
+
|
|
7
|
+
const CACHE_FILE = 'path-cache.json'
|
|
8
|
+
const CACHE_VERSION = 1
|
|
9
|
+
const MAX_ENTRIES = 200_000
|
|
10
|
+
const MAX_FILE_BYTES = 64 * 1024 * 1024
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* One observed path, keyed by the filesystem identity that proves it is unchanged.
|
|
14
|
+
*
|
|
15
|
+
* `ctimeNs` changes on every write even when size and mtime are restored, so a
|
|
16
|
+
* matching key means the stored content is still exactly what the path holds.
|
|
17
|
+
*/
|
|
18
|
+
export interface PathCacheEntry {
|
|
19
|
+
readonly dev: string
|
|
20
|
+
readonly ino: string
|
|
21
|
+
readonly size: string
|
|
22
|
+
readonly mtimeNs: string
|
|
23
|
+
readonly ctimeNs: string
|
|
24
|
+
readonly mode: number
|
|
25
|
+
readonly entry: SnapshotEntry
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
/** Stable identity string for one observed filesystem object. */
|
|
29
|
+
export function pathCacheKey(info: BigIntStats): string {
|
|
30
|
+
return `${info.dev}:${info.ino}:${info.size}:${info.mtimeNs}:${info.ctimeNs}:${info.mode.toString()}`
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
/** Remember what one unknown does not already describe. */
|
|
34
|
+
export function toPathCacheEntry(info: BigIntStats, entry: SnapshotEntry): PathCacheEntry {
|
|
35
|
+
return {
|
|
36
|
+
dev: info.dev.toString(),
|
|
37
|
+
ino: info.ino.toString(),
|
|
38
|
+
size: info.size.toString(),
|
|
39
|
+
mtimeNs: info.mtimeNs.toString(),
|
|
40
|
+
ctimeNs: info.ctimeNs.toString(),
|
|
41
|
+
mode: Number(info.mode & 0o777n),
|
|
42
|
+
entry,
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Whether a cached record still describes the object the filesystem reports now. */
|
|
47
|
+
export function matchesPathCache(record: PathCacheEntry, info: BigIntStats): boolean {
|
|
48
|
+
return record.dev === info.dev.toString()
|
|
49
|
+
&& record.ino === info.ino.toString()
|
|
50
|
+
&& record.size === info.size.toString()
|
|
51
|
+
&& record.mtimeNs === info.mtimeNs.toString()
|
|
52
|
+
&& record.ctimeNs === info.ctimeNs.toString()
|
|
53
|
+
&& record.mode === Number(info.mode & 0o777n)
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/**
|
|
57
|
+
* Read the per-workspace path cache.
|
|
58
|
+
*
|
|
59
|
+
* The cache is a pure optimization: any malformed or unreadable record is
|
|
60
|
+
* discarded instead of trusted, and a discarded cache only costs a cold capture.
|
|
61
|
+
* @param workspaceDir - durable directory of one workspace.
|
|
62
|
+
* @returns the cached records, newest read wins.
|
|
63
|
+
*/
|
|
64
|
+
export async function readPathCache(workspaceDir: string): Promise<Map<string, PathCacheEntry>> {
|
|
65
|
+
const cache = new Map<string, PathCacheEntry>()
|
|
66
|
+
let raw: string
|
|
67
|
+
try {
|
|
68
|
+
raw = await readFile(join(workspaceDir, CACHE_FILE), 'utf8')
|
|
69
|
+
} catch (error) {
|
|
70
|
+
if (isNodeError(error, 'ENOENT')) return cache
|
|
71
|
+
return cache
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
const parsed = JSON.parse(raw) as unknown
|
|
75
|
+
if (parsed === null || typeof parsed !== 'object' || Array.isArray(parsed)) return cache
|
|
76
|
+
const record = parsed as { version?: unknown; paths?: unknown }
|
|
77
|
+
if (record.version !== CACHE_VERSION || record.paths === null || typeof record.paths !== 'object') return cache
|
|
78
|
+
for (const [path, value] of Object.entries(record.paths as Record<string, unknown>)) {
|
|
79
|
+
const entry = parseCacheEntry(value)
|
|
80
|
+
if (entry === undefined) continue
|
|
81
|
+
cache.set(path, entry)
|
|
82
|
+
if (cache.size >= MAX_ENTRIES) break
|
|
83
|
+
}
|
|
84
|
+
} catch {
|
|
85
|
+
return new Map()
|
|
86
|
+
}
|
|
87
|
+
return cache
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
/** Persist the path cache atomically, replacing any previous generation. */
|
|
91
|
+
export async function writePathCache(workspaceDir: string, cache: ReadonlyMap<string, PathCacheEntry>): Promise<void> {
|
|
92
|
+
const paths: Record<string, unknown> = Object.create(null) as Record<string, unknown>
|
|
93
|
+
let count = 0
|
|
94
|
+
for (const [path, entry] of cache) {
|
|
95
|
+
if (count >= MAX_ENTRIES) break
|
|
96
|
+
paths[path] = serializeCacheEntry(entry)
|
|
97
|
+
count += 1
|
|
98
|
+
}
|
|
99
|
+
await writeJsonAtomic(join(workspaceDir, CACHE_FILE), { version: CACHE_VERSION, paths })
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
/** Drop the cache when its file is unreadable or was never written. */
|
|
103
|
+
export async function pathCacheExists(workspaceDir: string): Promise<boolean> {
|
|
104
|
+
return pathExists(join(workspaceDir, CACHE_FILE))
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
function serializeCacheEntry(record: PathCacheEntry): Record<string, unknown> {
|
|
108
|
+
const entry = record.entry
|
|
109
|
+
return {
|
|
110
|
+
dev: record.dev, ino: record.ino, size: record.size,
|
|
111
|
+
mtimeNs: record.mtimeNs, ctimeNs: record.ctimeNs, mode: record.mode,
|
|
112
|
+
kind: entry.kind,
|
|
113
|
+
...(entry.kind === 'file' ? { blob: entry.blob, provider: entry.provider } : { target: entry.target }),
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
function parseCacheEntry(value: unknown): PathCacheEntry | undefined {
|
|
118
|
+
if (value === null || typeof value !== 'object' || Array.isArray(value)) return undefined
|
|
119
|
+
const record = value as Record<string, unknown>
|
|
120
|
+
const text = (key: string): string | undefined => (typeof record[key] === 'string' ? record[key] as string : undefined)
|
|
121
|
+
const dev = text('dev'); const ino = text('ino'); const size = text('size')
|
|
122
|
+
const mtimeNs = text('mtimeNs'); const ctimeNs = text('ctimeNs')
|
|
123
|
+
if (dev === undefined || ino === undefined || size === undefined || mtimeNs === undefined || ctimeNs === undefined) return undefined
|
|
124
|
+
if (typeof record.mode !== 'number' || !Number.isInteger(record.mode)) return undefined
|
|
125
|
+
let entry: SnapshotEntry
|
|
126
|
+
if (record.kind === 'file') {
|
|
127
|
+
const blob = text('blob')
|
|
128
|
+
if (blob === undefined || !/^[0-9a-f]{64}$/.test(blob)) return undefined
|
|
129
|
+
const provider = record.provider
|
|
130
|
+
if (provider !== undefined && provider !== 'git') return undefined
|
|
131
|
+
entry = {
|
|
132
|
+
kind: 'file', blob, size: Number(size), mode: record.mode,
|
|
133
|
+
...(provider === undefined ? {} : { provider }),
|
|
134
|
+
}
|
|
135
|
+
} else if (record.kind === 'symlink') {
|
|
136
|
+
const target = text('target')
|
|
137
|
+
if (target === undefined || target.includes('\0')) return undefined
|
|
138
|
+
entry = { kind: 'symlink', target, mode: record.mode }
|
|
139
|
+
} else {
|
|
140
|
+
return undefined
|
|
141
|
+
}
|
|
142
|
+
if (BigInt(size) > BigInt(MAX_FILE_BYTES)) return undefined
|
|
143
|
+
return { dev, ino, size, mtimeNs, ctimeNs, mode: record.mode, entry }
|
|
144
|
+
}
|
package/src/snapshot.ts
CHANGED
|
@@ -3,6 +3,7 @@ import { constants, type BigIntStats } from 'node:fs'
|
|
|
3
3
|
import { lstat, open, readlink } from 'node:fs/promises'
|
|
4
4
|
import { ChangeLedgerError } from './errors.js'
|
|
5
5
|
import { isNodeError, resolveWorkspacePath } from './path-utils.js'
|
|
6
|
+
import { matchesPathCache, toPathCacheEntry, type PathCacheEntry } from './path-cache.js'
|
|
6
7
|
import type { LedgerStore } from './store.js'
|
|
7
8
|
import { discoverWorkspace, sameWorkspaceFence, type WorkspaceSnapshotSource } from './workspace.js'
|
|
8
9
|
import type {
|
|
@@ -41,6 +42,8 @@ export async function captureTree(options: {
|
|
|
41
42
|
readonly config: ResolvedChangeLedgerConfig
|
|
42
43
|
readonly store?: LedgerStore
|
|
43
44
|
readonly gitObjectFormat?: 'sha1' | 'sha256'
|
|
45
|
+
/** Per-path identity cache: an unchanged path is reused instead of re-read. */
|
|
46
|
+
readonly pathCache?: Map<string, PathCacheEntry>
|
|
44
47
|
readonly signal?: AbortSignal
|
|
45
48
|
}): Promise<CapturedTree> {
|
|
46
49
|
throwIfAborted(options.signal)
|
|
@@ -75,6 +78,28 @@ export async function captureTree(options: {
|
|
|
75
78
|
let budgetSpent = false
|
|
76
79
|
const capturePath = async (path: string): Promise<void> => {
|
|
77
80
|
throwIfAborted(options.signal)
|
|
81
|
+
// Reuse is only sound when the identity is unchanged and the stored blob is
|
|
82
|
+
// still present; a garbage-collected blob falls back to a fresh read.
|
|
83
|
+
if (options.pathCache !== undefined && options.store !== undefined && gitCapture === undefined) {
|
|
84
|
+
const cached = options.pathCache.get(path)
|
|
85
|
+
if (cached !== undefined) {
|
|
86
|
+
let info: BigIntStats | undefined
|
|
87
|
+
try {
|
|
88
|
+
info = await lstat(resolveWorkspacePath(source.state.root, path), { bigint: true })
|
|
89
|
+
} catch (error) {
|
|
90
|
+
if (!isNodeError(error, 'ENOENT')) throw error
|
|
91
|
+
}
|
|
92
|
+
if (info !== undefined && matchesPathCache(cached, info)) {
|
|
93
|
+
const reusable = cached.entry.kind === 'symlink'
|
|
94
|
+
|| await options.store.hasBlob(source.state.root, cached.entry.blob)
|
|
95
|
+
if (reusable) {
|
|
96
|
+
entries[path] = cached.entry
|
|
97
|
+
if (cached.entry.kind === 'file') totalBytes += cached.entry.size
|
|
98
|
+
return
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
78
103
|
if (budgetSpent) {
|
|
79
104
|
// The aggregate budget is gone, but the path is still recorded so a
|
|
80
105
|
// restore can prove this point never observed it.
|
|
@@ -97,7 +122,7 @@ export async function captureTree(options: {
|
|
|
97
122
|
}
|
|
98
123
|
if (entry === undefined) return
|
|
99
124
|
if (entry.kind === 'file') {
|
|
100
|
-
if (totalBytes + entry.content.length > options.config.maxSnapshotBytes) {
|
|
125
|
+
if (budgetSpent || totalBytes + entry.content.length > options.config.maxSnapshotBytes) {
|
|
101
126
|
budgetSpent = true
|
|
102
127
|
truncated ??= 'snapshot-limit'
|
|
103
128
|
recordSkip(path, 'snapshot-limit')
|
|
@@ -115,10 +140,14 @@ export async function captureTree(options: {
|
|
|
115
140
|
}
|
|
116
141
|
entries[path] = entry.snapshot
|
|
117
142
|
if (gitCapture !== undefined) gitCapture.entries[path] = entry.snapshot
|
|
143
|
+
if (options.pathCache !== undefined && gitCapture === undefined) {
|
|
144
|
+
options.pathCache.set(path, toPathCacheEntry(entry.info, entry.snapshot))
|
|
145
|
+
}
|
|
118
146
|
}
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
147
|
+
{
|
|
148
|
+
// Reading one file at a time makes a real project directory take minutes, so
|
|
149
|
+
// every capture runs through a bounded worker pool. Per-file stability stats
|
|
150
|
+
// and the synchronous budget check keep the result identical to a serial run.
|
|
122
151
|
let next = 0
|
|
123
152
|
let failed = false
|
|
124
153
|
let firstError: unknown = new ChangeLedgerError('WORKSPACE_CHANGED_DURING_CAPTURE', 'parallel comparison capture failed')
|
|
@@ -171,12 +200,16 @@ export async function captureStableTree(options: {
|
|
|
171
200
|
readonly config: ResolvedChangeLedgerConfig
|
|
172
201
|
readonly store?: LedgerStore
|
|
173
202
|
readonly gitObjectFormat?: 'sha1' | 'sha256'
|
|
203
|
+
/** Per-path identity cache: an unchanged path is reused instead of re-read. */
|
|
204
|
+
readonly pathCache?: Map<string, PathCacheEntry>
|
|
174
205
|
readonly signal?: AbortSignal
|
|
175
206
|
}): Promise<CapturedTree> {
|
|
176
207
|
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
177
208
|
const first = await captureTree({
|
|
178
209
|
cwd: options.cwd,
|
|
179
210
|
config: options.config,
|
|
211
|
+
...(options.store === undefined ? {} : { store: options.store }),
|
|
212
|
+
...(options.pathCache === undefined ? {} : { pathCache: options.pathCache }),
|
|
180
213
|
...(options.gitObjectFormat === undefined ? {} : { gitObjectFormat: options.gitObjectFormat }),
|
|
181
214
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
182
215
|
})
|
|
@@ -302,8 +335,8 @@ async function captureEntry(
|
|
|
302
335
|
path: string,
|
|
303
336
|
maxFileBytes: number,
|
|
304
337
|
signal?: AbortSignal,
|
|
305
|
-
): Promise<{ readonly kind: 'file'; readonly snapshot: SnapshotEntry & { readonly kind: 'file' }; readonly content: Buffer }
|
|
306
|
-
| { readonly kind: 'symlink'; readonly snapshot: SnapshotEntry & { readonly kind: 'symlink' } }
|
|
338
|
+
): Promise<{ readonly kind: 'file'; readonly snapshot: SnapshotEntry & { readonly kind: 'file' }; readonly content: Buffer; readonly info: BigIntStats }
|
|
339
|
+
| { readonly kind: 'symlink'; readonly snapshot: SnapshotEntry & { readonly kind: 'symlink' }; readonly info: BigIntStats }
|
|
307
340
|
| undefined> {
|
|
308
341
|
const target = resolveWorkspacePath(root, path)
|
|
309
342
|
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
@@ -320,7 +353,7 @@ async function captureEntry(
|
|
|
320
353
|
const linkTarget = await readlink(target)
|
|
321
354
|
const after = await lstat(target, { bigint: true })
|
|
322
355
|
if (!sameStat(before, after)) continue
|
|
323
|
-
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode } }
|
|
356
|
+
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode }, info: after }
|
|
324
357
|
}
|
|
325
358
|
if (!before.isFile()) {
|
|
326
359
|
throw new ChangeLedgerError('UNSUPPORTED_FILE_TYPE', `eligible path is not a regular file or symlink: ${JSON.stringify(path)}`)
|
|
@@ -354,6 +387,7 @@ async function captureEntry(
|
|
|
354
387
|
kind: 'file',
|
|
355
388
|
snapshot: { kind: 'file', blob, size: content.length, mode },
|
|
356
389
|
content,
|
|
390
|
+
info: { ...before, size: BigInt(content.length) } as BigIntStats,
|
|
357
391
|
}
|
|
358
392
|
}
|
|
359
393
|
throw new ChangeLedgerError('WORKSPACE_CHANGED_DURING_CAPTURE', `path changed repeatedly while being captured: ${JSON.stringify(path)}`)
|
package/src/store.ts
CHANGED
|
@@ -263,6 +263,17 @@ export class LedgerStore {
|
|
|
263
263
|
}
|
|
264
264
|
|
|
265
265
|
/** Persist a blob if it is not already present, and verify existing content. */
|
|
266
|
+
/** Whether one content-addressed blob is already stored for a workspace. */
|
|
267
|
+
async hasBlob(workspace: string, hash: string): Promise<boolean> {
|
|
268
|
+
validateBlobHash(hash)
|
|
269
|
+
return pathExists(this.blobPath(workspace, hash))
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/** Durable directory holding one workspace's manifests, blobs, and caches. */
|
|
273
|
+
workspaceDirectory(workspace: string): string {
|
|
274
|
+
return this.workspaceDir(workspace)
|
|
275
|
+
}
|
|
276
|
+
|
|
266
277
|
async putBlob(workspace: string, hash: string, content: Buffer): Promise<void> {
|
|
267
278
|
validateBlobHash(hash)
|
|
268
279
|
const contentHash = createHash('sha256').update(content).digest('hex')
|
|
@@ -270,6 +281,10 @@ export class LedgerStore {
|
|
|
270
281
|
throw new ChangeLedgerError('BLOB_HASH_MISMATCH', `refusing to store content whose SHA-256 does not match ${hash}`)
|
|
271
282
|
}
|
|
272
283
|
const path = this.blobPath(workspace, hash)
|
|
284
|
+
// Content addressing makes an existing blob identical by construction, and
|
|
285
|
+
// re-writing it costs one fsync per file: a full-tree capture of a large
|
|
286
|
+
// workspace otherwise spends minutes proving it already stored the content.
|
|
287
|
+
if (await pathExists(path)) return
|
|
273
288
|
const directory = join(this.workspaceDir(workspace), 'blobs', hash.slice(0, 2))
|
|
274
289
|
await mkdir(directory, { recursive: true, mode: 0o700 })
|
|
275
290
|
const temporary = join(directory, `.${randomUUID()}.tmp`)
|