@anionex/dsh-turn-rewind 0.3.4 → 0.3.6
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 +17 -6
- package/lib/client.js.map +1 -1
- package/lib/engine.js +25 -1
- package/lib/path-cache.js +137 -0
- package/lib/snapshot.js +33 -1
- package/lib/store.js +9 -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 +31 -2
- package/src/engine.ts +26 -1
- package/src/path-cache.ts +144 -0
- package/src/snapshot.ts +36 -3
- package/src/store.ts +11 -0
package/lib/client.js
CHANGED
|
@@ -51,6 +51,14 @@ const styles = `
|
|
|
51
51
|
.dcl-rewind-backup{box-sizing:border-box;margin:0;padding:10px 12px;border-radius:10px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}
|
|
52
52
|
.dcl-rewind-retry{align-self:flex-start}
|
|
53
53
|
.dcl-trs-card{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0}
|
|
54
|
+
.dcl-trs-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:14px 0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
|
|
55
|
+
.dcl-trs-card-heading{display:flex;flex-direction:column;gap:4px;min-width:0}
|
|
56
|
+
.dcl-trs-card-heading strong{color:var(--dsw-alias-label-primary);font-size:14px}
|
|
57
|
+
.dcl-trs-card-head:hover .dcl-trs-card-heading strong{color:var(--dsw-alias-state-business-primary)}
|
|
58
|
+
.dcl-trs-card-description{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}
|
|
59
|
+
.dcl-trs-card-chevron{flex:none;color:var(--dsw-alias-label-tertiary);transition:transform .12s}
|
|
60
|
+
.dcl-trs-card[data-open="true"] .dcl-trs-card-chevron{transform:rotate(180deg)}
|
|
61
|
+
.dcl-trs-card-body{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0}
|
|
54
62
|
.dcl-trs-section{display:flex;flex-direction:column;gap:10px;min-width:0}
|
|
55
63
|
.dcl-trs-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
|
|
56
64
|
.dcl-trs-section-title strong{color:var(--dsw-alias-label-primary);font-size:14px}
|
|
@@ -442,6 +450,9 @@ function TurnRewindSettingsCard({ scope }) {
|
|
|
442
450
|
const [drafts, setDrafts] = (0, react_1.useState)({});
|
|
443
451
|
const [confirmClearAll, setConfirmClearAll] = (0, react_1.useState)(false);
|
|
444
452
|
const [collapsed, setCollapsed] = (0, react_1.useState)(new Set());
|
|
453
|
+
// Official plugin cards collapse behind a disclosure row; this card keeps the
|
|
454
|
+
// same reading gesture so the settings page stays one row per plugin.
|
|
455
|
+
const [cardOpen, setCardOpen] = (0, react_1.useState)(false);
|
|
445
456
|
const refreshManage = (0, react_1.useCallback)(async () => {
|
|
446
457
|
setManageLoading(true);
|
|
447
458
|
setManageError(null);
|
|
@@ -520,12 +531,12 @@ function TurnRewindSettingsCard({ scope }) {
|
|
|
520
531
|
return next;
|
|
521
532
|
});
|
|
522
533
|
};
|
|
523
|
-
return ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-card", children: [(0, jsx_runtime_1.jsxs)("
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
534
|
+
return ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-card", "data-open": cardOpen, children: [(0, jsx_runtime_1.jsxs)("button", { type: "button", className: "dcl-trs-card-head", "aria-expanded": cardOpen, onClick: () => { setCardOpen(value => !value); }, children: [(0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-card-heading", children: [(0, jsx_runtime_1.jsx)("strong", { children: "Turn Rewind \u56DE\u9000\u8BBE\u7F6E" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-card-description", children: "\u81EA\u52A8\u6587\u4EF6\u68C0\u67E5\u70B9\u3001\u4FE1\u4EFB\u7B56\u7565\u4E0E\u68C0\u67E5\u70B9\u4FDD\u7559\u4E0A\u9650\uFF1B\u56DE\u9000\u6309\u94AE\u5728\u5404\u6761\u7528\u6237\u6D88\u606F\u4E0A" })] }), (0, jsx_runtime_1.jsx)("svg", { className: "dcl-trs-card-chevron", width: "16", height: "16", viewBox: "0 0 16 16", fill: "none", "aria-hidden": "true", children: (0, jsx_runtime_1.jsx)("path", { d: "M4.5 6.5 8 10l3.5-3.5", stroke: "currentColor", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round" }) })] }), cardOpen && ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-card-body", children: [(0, jsx_runtime_1.jsxs)("section", { className: "dcl-trs-section", children: [(0, jsx_runtime_1.jsx)("div", { className: "dcl-trs-section-title", children: (0, jsx_runtime_1.jsx)("strong", { children: "\u81EA\u52A8\u6587\u4EF6\u68C0\u67E5\u70B9" }) }), snapshot.status === 'loading' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-status", children: "\u6B63\u5728\u52A0\u8F7D\u8BBE\u7F6E\u2026" }), snapshot.status === 'unavailable' && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-status", children: "\u5F53\u524D\u90E8\u7F72\u672A\u63D0\u4F9B\u8BBE\u7F6E\u670D\u52A1\uFF0C\u4EE5\u4E0B\u9009\u9879\u4E0D\u53EF\u7528\u3002" }), snapshot.status === 'ready' && !snapshot.writable && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-status", children: "\u8BBE\u7F6E\u4E3A\u53EA\u8BFB\uFF08\u5F53\u524D\u6D4F\u89C8\u5668\u8FDB\u7A0B\u5185\u4FDD\u5B58\uFF09\uFF0C\u4FEE\u6539\u4E0D\u53EF\u7528\u3002" }), value !== undefined && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-field", children: [(0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-label", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u81EA\u52A8\u6587\u4EF6\u68C0\u67E5\u70B9" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-field-desc", children: "\u5173\u95ED\u540E\u4E0D\u518D\u4E3A\u6BCF\u6761\u6D88\u606F\u4FDD\u5B58\u6587\u4EF6\u68C0\u67E5\u70B9\uFF1B\u56DE\u9000\u5F39\u7A97\u4ECD\u53EF\u53EA\u56DE\u6EAF\u6D88\u606F" })] }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-control", children: [(0, jsx_runtime_1.jsx)("select", { value: value.turnCheckpointMode, disabled: !writable || busy !== null, onChange: (event) => { commitEnum('turnCheckpointMode', event.target.value); }, children: Object.keys(CHECKPOINT_MODE_LABELS).map((option) => ((0, jsx_runtime_1.jsx)("option", { value: option, children: CHECKPOINT_MODE_LABELS[option] }, option))) }), userLayer.turnCheckpointMode !== undefined && (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-override", children: "\u5DF2\u8986\u76D6" }), userLayer.turnCheckpointMode !== undefined && ((0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "ghost", size: "sm", disabled: !writable || busy !== null, onClick: () => { setFormError(null); void scope?.unset('turnCheckpointMode').catch((caught) => { setFormError(messageOf(caught)); }); }, children: "\u6062\u590D\u9ED8\u8BA4" }))] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-field", children: [(0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-label", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u68C0\u67E5\u70B9\u4FE1\u4EFB\u7B56\u7565" }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-field-desc", children: "\u5FEB\u901F\u4FE1\u4EFB Git/stat \u5143\u6570\u636E\uFF1B\u4E25\u683C\u4F1A\u9010\u4E00\u91CD\u8BFB\u6587\u4EF6\u5185\u5BB9" })] }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-control", children: [(0, jsx_runtime_1.jsx)("select", { value: value.turnCheckpointTrust, disabled: !writable || busy !== null, onChange: (event) => { commitEnum('turnCheckpointTrust', event.target.value); }, children: Object.keys(TRUST_LABELS).map((option) => ((0, jsx_runtime_1.jsx)("option", { value: option, children: TRUST_LABELS[option] }, option))) }), userLayer.turnCheckpointTrust !== undefined && (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-override", children: "\u5DF2\u8986\u76D6" }), userLayer.turnCheckpointTrust !== undefined && ((0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "ghost", size: "sm", disabled: !writable || busy !== null, onClick: () => { setFormError(null); void scope?.unset('turnCheckpointTrust').catch((caught) => { setFormError(messageOf(caught)); }); }, children: "\u6062\u590D\u9ED8\u8BA4" }))] })] }), NUMBER_FIELDS.map((field) => ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-field", children: [(0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-label", children: [(0, jsx_runtime_1.jsx)("strong", { children: field.label }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-field-desc", children: field.description })] }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-field-control", children: [(0, jsx_runtime_1.jsx)("input", { type: "number", min: 1, step: 1, value: drafts[field.key] ?? String(value[field.key]), disabled: !writable || busy !== null, onChange: (event) => { setDrafts((current) => ({ ...current, [field.key]: event.target.value })); }, onBlur: () => { commitNumber(field.key); }, onKeyDown: (event) => { if (event.key === 'Enter')
|
|
535
|
+
commitNumber(field.key); } }), userLayer[field.key] !== undefined && (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-override", children: "\u5DF2\u8986\u76D6" }), userLayer[field.key] !== undefined && ((0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "ghost", size: "sm", disabled: !writable || busy !== null, onClick: () => { setFormError(null); void scope?.unset(field.key).catch((caught) => { setFormError(messageOf(caught)); }); }, children: "\u6062\u590D\u9ED8\u8BA4" }))] })] }, field.key)))] })), formError !== null && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-error", children: formError }), (0, jsx_runtime_1.jsxs)("p", { className: "dcl-trs-storage", children: ["\u5B58\u50A8\u76EE\u5F55\uFF08\u5728 cordis.patch.yml \u4E2D\u914D\u7F6E\uFF0C\u4E0D\u53EF\u5728\u7EBF\u4FEE\u6539\uFF09\uFF1A", manage?.storageDir ?? '…'] })] }), (0, jsx_runtime_1.jsxs)("section", { className: "dcl-trs-section", children: [(0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-section-title", children: [(0, jsx_runtime_1.jsx)("strong", { children: "\u68C0\u67E5\u70B9\u7BA1\u7406" }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-section-title-actions", children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", size: "sm", onClick: () => { void refreshManage(); }, disabled: manageLoading, children: manageLoading ? '正在刷新…' : '刷新' }), manage !== null && manage.workspaces.length > 0 && (confirmClearAll
|
|
536
|
+
? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", size: "sm", onClick: () => { setConfirmClearAll(false); }, disabled: busy !== null, children: "\u53D6\u6D88" }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "primary", size: "sm", onClick: () => { void runManageAction({ action: 'clear-all' }, 'clear-all'); }, disabled: busy !== null, children: busy === 'clear-all' ? '正在清理…' : '确认清空全部' })] }))
|
|
537
|
+
: (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", size: "sm", onClick: () => { setConfirmClearAll(true); }, disabled: busy !== null, children: "\u4E00\u952E\u6E05\u7A7A\u5168\u90E8" }))] })] }), (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-manage-total", children: manage === null
|
|
538
|
+
? '正在读取检查点占用…'
|
|
539
|
+
: `共 ${String(manage.workspaces.length)} 个工作区,${String(manage.totalBytes >= 0 ? manage.workspaces.reduce((total, workspace) => total + workspace.restorePoints.length, 0) : 0)} 个检查点,约 ${formatBytes(manage.totalBytes)}(Git 原生检查点的实际磁盘占用以 Git 回收为准)。` }), manageNotice !== null && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-notice", "data-warning": manageNotice.warning, children: manageNotice.message }), manageError !== null && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-error", children: manageError }), manage?.workspaces.map((workspace) => ((0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-workspace", children: [(0, jsx_runtime_1.jsxs)("div", { className: "dcl-trs-workspace-head", children: [(0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-workspace-path", title: workspace.workspace, children: workspace.workspace }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-workspace-meta", children: [String(workspace.restorePoints.length), " \u4E2A\u68C0\u67E5\u70B9 \u00B7 ", formatBytes(workspace.totalBytes)] }), workspace.recoveryCount > 0 && (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-badge", children: [String(workspace.recoveryCount), " \u4E2A\u6062\u590D\u5F85\u5904\u7406"] }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "ghost", size: "sm", onClick: () => { toggleWorkspace(workspace.workspace); }, children: collapsed.has(workspace.workspace) ? '展开' : '收起' }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "outline", size: "sm", onClick: () => { void runManageAction({ action: 'clear-workspace', workspace: workspace.workspace }, `clear:${workspace.workspace}`); }, disabled: busy !== null || workspace.restorePoints.length === 0, children: busy === `clear:${workspace.workspace}` ? '正在清理…' : '清空此项目' })] }), !collapsed.has(workspace.workspace) && workspace.restorePoints.length > 0 && ((0, jsx_runtime_1.jsx)("ul", { className: "dcl-trs-points", children: workspace.restorePoints.map((point) => ((0, jsx_runtime_1.jsxs)("li", { className: "dcl-trs-point", children: [(0, jsx_runtime_1.jsx)("time", { children: formatTime(point.createdAt) }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-point-kind", children: POINT_KIND_LABELS[point.kind] ?? point.kind }), (0, jsx_runtime_1.jsx)("span", { className: "dcl-trs-point-size", children: formatBytes(point.totalBytes) }), (0, jsx_runtime_1.jsxs)("span", { className: "dcl-trs-point-files", children: [String(point.fileCount), " \u4E2A\u6587\u4EF6"] }), point.sessionId !== undefined && (0, jsx_runtime_1.jsx)("code", { children: point.sessionId }), (0, jsx_runtime_1.jsx)(dsh_client_ui_primitives_1.Button, { variant: "ghost", size: "sm", onClick: () => { void runManageAction({ action: 'delete', workspace: workspace.workspace, restorePointId: point.id }, `delete:${point.id}`); }, disabled: busy !== null, children: busy === `delete:${point.id}` ? '正在删除…' : '删除' })] }, point.id))) }))] }, workspace.workspace))), manage !== null && manage.workspaces.length === 0 && (0, jsx_runtime_1.jsx)("p", { className: "dcl-trs-status", children: "\u8FD8\u6CA1\u6709\u4EFB\u4F55\u5DF2\u4FDD\u5B58\u7684\u68C0\u67E5\u70B9\u3002" })] })] }))] }));
|
|
529
540
|
}
|
|
530
541
|
function decodeManageOverview(value) {
|
|
531
542
|
const record = recordOf(value);
|
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,7 +16,7 @@ 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,
|
|
@@ -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.
|
|
@@ -85,6 +111,9 @@ 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
118
|
{
|
|
90
119
|
// Reading one file at a time makes a real project directory take minutes, so
|
|
@@ -139,6 +168,8 @@ export async function captureStableTree(options) {
|
|
|
139
168
|
const first = await captureTree({
|
|
140
169
|
cwd: options.cwd,
|
|
141
170
|
config: options.config,
|
|
171
|
+
...(options.store === undefined ? {} : { store: options.store }),
|
|
172
|
+
...(options.pathCache === undefined ? {} : { pathCache: options.pathCache }),
|
|
142
173
|
...(options.gitObjectFormat === undefined ? {} : { gitObjectFormat: options.gitObjectFormat }),
|
|
143
174
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
144
175
|
});
|
|
@@ -263,7 +294,7 @@ async function captureEntry(root, path, maxFileBytes, signal) {
|
|
|
263
294
|
const after = await lstat(target, { bigint: true });
|
|
264
295
|
if (!sameStat(before, after))
|
|
265
296
|
continue;
|
|
266
|
-
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode } };
|
|
297
|
+
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode }, info: after };
|
|
267
298
|
}
|
|
268
299
|
if (!before.isFile()) {
|
|
269
300
|
throw new ChangeLedgerError('UNSUPPORTED_FILE_TYPE', `eligible path is not a regular file or symlink: ${JSON.stringify(path)}`);
|
|
@@ -299,6 +330,7 @@ async function captureEntry(root, path, maxFileBytes, signal) {
|
|
|
299
330
|
kind: 'file',
|
|
300
331
|
snapshot: { kind: 'file', blob, size: content.length, mode },
|
|
301
332
|
content,
|
|
333
|
+
info: { ...before, size: BigInt(content.length) },
|
|
302
334
|
};
|
|
303
335
|
}
|
|
304
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');
|
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
|
@@ -233,6 +233,14 @@ const styles = `
|
|
|
233
233
|
.dcl-rewind-backup{box-sizing:border-box;margin:0;padding:10px 12px;border-radius:10px;background:var(--dsw-alias-bg-layer-2);color:var(--dsw-alias-label-secondary);font-size:12px;line-height:18px}
|
|
234
234
|
.dcl-rewind-retry{align-self:flex-start}
|
|
235
235
|
.dcl-trs-card{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0}
|
|
236
|
+
.dcl-trs-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;width:100%;padding:14px 0;border:0;background:transparent;color:inherit;text-align:left;cursor:pointer}
|
|
237
|
+
.dcl-trs-card-heading{display:flex;flex-direction:column;gap:4px;min-width:0}
|
|
238
|
+
.dcl-trs-card-heading strong{color:var(--dsw-alias-label-primary);font-size:14px}
|
|
239
|
+
.dcl-trs-card-head:hover .dcl-trs-card-heading strong{color:var(--dsw-alias-state-business-primary)}
|
|
240
|
+
.dcl-trs-card-description{color:var(--dsw-alias-label-tertiary);font-size:12px;line-height:18px}
|
|
241
|
+
.dcl-trs-card-chevron{flex:none;color:var(--dsw-alias-label-tertiary);transition:transform .12s}
|
|
242
|
+
.dcl-trs-card[data-open="true"] .dcl-trs-card-chevron{transform:rotate(180deg)}
|
|
243
|
+
.dcl-trs-card-body{display:flex;flex-direction:column;gap:16px;width:100%;min-width:0}
|
|
236
244
|
.dcl-trs-section{display:flex;flex-direction:column;gap:10px;min-width:0}
|
|
237
245
|
.dcl-trs-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px;min-width:0}
|
|
238
246
|
.dcl-trs-section-title strong{color:var(--dsw-alias-label-primary);font-size:14px}
|
|
@@ -725,6 +733,9 @@ export function TurnRewindSettingsCard({ scope }: TurnRewindSettingsCardProps):
|
|
|
725
733
|
const [drafts, setDrafts] = useState<Partial<Record<NumberSettingsField, string>>>({})
|
|
726
734
|
const [confirmClearAll, setConfirmClearAll] = useState(false)
|
|
727
735
|
const [collapsed, setCollapsed] = useState<ReadonlySet<string>>(new Set())
|
|
736
|
+
// Official plugin cards collapse behind a disclosure row; this card keeps the
|
|
737
|
+
// same reading gesture so the settings page stays one row per plugin.
|
|
738
|
+
const [cardOpen, setCardOpen] = useState(false)
|
|
728
739
|
|
|
729
740
|
const refreshManage = useCallback(async (): Promise<void> => {
|
|
730
741
|
setManageLoading(true)
|
|
@@ -801,10 +812,26 @@ export function TurnRewindSettingsCard({ scope }: TurnRewindSettingsCardProps):
|
|
|
801
812
|
}
|
|
802
813
|
|
|
803
814
|
return (
|
|
804
|
-
<div className="dcl-trs-card">
|
|
815
|
+
<div className="dcl-trs-card" data-open={cardOpen}>
|
|
816
|
+
<button
|
|
817
|
+
type="button"
|
|
818
|
+
className="dcl-trs-card-head"
|
|
819
|
+
aria-expanded={cardOpen}
|
|
820
|
+
onClick={() => { setCardOpen(value => !value) }}
|
|
821
|
+
>
|
|
822
|
+
<span className="dcl-trs-card-heading">
|
|
823
|
+
<strong>Turn Rewind 回退设置</strong>
|
|
824
|
+
<span className="dcl-trs-card-description">自动文件检查点、信任策略与检查点保留上限;回退按钮在各条用户消息上</span>
|
|
825
|
+
</span>
|
|
826
|
+
<svg className="dcl-trs-card-chevron" width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true">
|
|
827
|
+
<path d="M4.5 6.5 8 10l3.5-3.5" stroke="currentColor" strokeWidth="1.5" strokeLinecap="round" strokeLinejoin="round" />
|
|
828
|
+
</svg>
|
|
829
|
+
</button>
|
|
830
|
+
{cardOpen && (
|
|
831
|
+
<div className="dcl-trs-card-body">
|
|
805
832
|
<section className="dcl-trs-section">
|
|
806
833
|
<div className="dcl-trs-section-title">
|
|
807
|
-
<strong
|
|
834
|
+
<strong>自动文件检查点</strong>
|
|
808
835
|
</div>
|
|
809
836
|
{snapshot.status === 'loading' && <p className="dcl-trs-status">正在加载设置…</p>}
|
|
810
837
|
{snapshot.status === 'unavailable' && <p className="dcl-trs-status">当前部署未提供设置服务,以下选项不可用。</p>}
|
|
@@ -942,6 +969,8 @@ export function TurnRewindSettingsCard({ scope }: TurnRewindSettingsCardProps):
|
|
|
942
969
|
))}
|
|
943
970
|
{manage !== null && manage.workspaces.length === 0 && <p className="dcl-trs-status">还没有任何已保存的检查点。</p>}
|
|
944
971
|
</section>
|
|
972
|
+
</div>
|
|
973
|
+
)}
|
|
945
974
|
</div>
|
|
946
975
|
)
|
|
947
976
|
}
|
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,7 +54,7 @@ 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,
|
|
@@ -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.
|
|
@@ -115,6 +140,9 @@ 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
147
|
{
|
|
120
148
|
// Reading one file at a time makes a real project directory take minutes, so
|
|
@@ -172,12 +200,16 @@ export async function captureStableTree(options: {
|
|
|
172
200
|
readonly config: ResolvedChangeLedgerConfig
|
|
173
201
|
readonly store?: LedgerStore
|
|
174
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>
|
|
175
205
|
readonly signal?: AbortSignal
|
|
176
206
|
}): Promise<CapturedTree> {
|
|
177
207
|
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
178
208
|
const first = await captureTree({
|
|
179
209
|
cwd: options.cwd,
|
|
180
210
|
config: options.config,
|
|
211
|
+
...(options.store === undefined ? {} : { store: options.store }),
|
|
212
|
+
...(options.pathCache === undefined ? {} : { pathCache: options.pathCache }),
|
|
181
213
|
...(options.gitObjectFormat === undefined ? {} : { gitObjectFormat: options.gitObjectFormat }),
|
|
182
214
|
...(options.signal === undefined ? {} : { signal: options.signal }),
|
|
183
215
|
})
|
|
@@ -303,8 +335,8 @@ async function captureEntry(
|
|
|
303
335
|
path: string,
|
|
304
336
|
maxFileBytes: number,
|
|
305
337
|
signal?: AbortSignal,
|
|
306
|
-
): Promise<{ readonly kind: 'file'; readonly snapshot: SnapshotEntry & { readonly kind: 'file' }; readonly content: Buffer }
|
|
307
|
-
| { 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 }
|
|
308
340
|
| undefined> {
|
|
309
341
|
const target = resolveWorkspacePath(root, path)
|
|
310
342
|
for (let attempt = 0; attempt < 3; attempt += 1) {
|
|
@@ -321,7 +353,7 @@ async function captureEntry(
|
|
|
321
353
|
const linkTarget = await readlink(target)
|
|
322
354
|
const after = await lstat(target, { bigint: true })
|
|
323
355
|
if (!sameStat(before, after)) continue
|
|
324
|
-
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode } }
|
|
356
|
+
return { kind: 'symlink', snapshot: { kind: 'symlink', target: linkTarget, mode }, info: after }
|
|
325
357
|
}
|
|
326
358
|
if (!before.isFile()) {
|
|
327
359
|
throw new ChangeLedgerError('UNSUPPORTED_FILE_TYPE', `eligible path is not a regular file or symlink: ${JSON.stringify(path)}`)
|
|
@@ -355,6 +387,7 @@ async function captureEntry(
|
|
|
355
387
|
kind: 'file',
|
|
356
388
|
snapshot: { kind: 'file', blob, size: content.length, mode },
|
|
357
389
|
content,
|
|
390
|
+
info: { ...before, size: BigInt(content.length) } as BigIntStats,
|
|
358
391
|
}
|
|
359
392
|
}
|
|
360
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')
|