@xioflow/kernel 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/README.md +63 -4
  2. package/dist/domain.d.ts.map +1 -1
  3. package/dist/domain.js +10 -0
  4. package/dist/domain.js.map +1 -1
  5. package/dist/index.d.ts +2 -1
  6. package/dist/index.d.ts.map +1 -1
  7. package/dist/index.js.map +1 -1
  8. package/dist/mcp/tools.js +2 -2
  9. package/dist/mcp/tools.js.map +1 -1
  10. package/dist/recovery/engine.d.ts.map +1 -1
  11. package/dist/recovery/engine.js +9 -3
  12. package/dist/recovery/engine.js.map +1 -1
  13. package/dist/snapshot/git-shadow.d.ts +7 -1
  14. package/dist/snapshot/git-shadow.d.ts.map +1 -1
  15. package/dist/snapshot/git-shadow.js +152 -43
  16. package/dist/snapshot/git-shadow.js.map +1 -1
  17. package/dist/snapshot/ignored-manifest.d.ts +23 -0
  18. package/dist/snapshot/ignored-manifest.d.ts.map +1 -0
  19. package/dist/snapshot/ignored-manifest.js +121 -0
  20. package/dist/snapshot/ignored-manifest.js.map +1 -0
  21. package/dist/store/schema.d.ts +1 -1
  22. package/dist/store/schema.d.ts.map +1 -1
  23. package/dist/store/schema.js +2 -1
  24. package/dist/store/schema.js.map +1 -1
  25. package/dist/store/sqlite.d.ts.map +1 -1
  26. package/dist/store/sqlite.js +9 -3
  27. package/dist/store/sqlite.js.map +1 -1
  28. package/dist/supervisor/process-monitor.d.ts.map +1 -1
  29. package/dist/supervisor/process-monitor.js +3 -0
  30. package/dist/supervisor/process-monitor.js.map +1 -1
  31. package/dist/supervisor/process-run.d.ts +3 -0
  32. package/dist/supervisor/process-run.d.ts.map +1 -1
  33. package/dist/supervisor/process-run.js +3 -0
  34. package/dist/supervisor/process-run.js.map +1 -1
  35. package/dist/supervisor/read-evidence.d.ts +47 -0
  36. package/dist/supervisor/read-evidence.d.ts.map +1 -0
  37. package/dist/supervisor/read-evidence.js +197 -0
  38. package/dist/supervisor/read-evidence.js.map +1 -0
  39. package/dist/supervisor/rollback.d.ts +15 -1
  40. package/dist/supervisor/rollback.d.ts.map +1 -1
  41. package/dist/supervisor/rollback.js +85 -12
  42. package/dist/supervisor/rollback.js.map +1 -1
  43. package/dist/supervisor/snapshot-ops.d.ts.map +1 -1
  44. package/dist/supervisor/snapshot-ops.js +22 -0
  45. package/dist/supervisor/snapshot-ops.js.map +1 -1
  46. package/dist/supervisor/supervisor.d.ts +9 -3
  47. package/dist/supervisor/supervisor.d.ts.map +1 -1
  48. package/dist/supervisor/supervisor.js +19 -2
  49. package/dist/supervisor/supervisor.js.map +1 -1
  50. package/dist/supervisor/types.d.ts +13 -0
  51. package/dist/supervisor/types.d.ts.map +1 -1
  52. package/dist/testing/contract-suite.d.ts.map +1 -1
  53. package/dist/testing/contract-suite.js +188 -3
  54. package/dist/testing/contract-suite.js.map +1 -1
  55. package/dist/types.d.ts +75 -1
  56. package/dist/types.d.ts.map +1 -1
  57. package/dist/types.js.map +1 -1
  58. package/dist/workspace/transactions.d.ts +61 -2
  59. package/dist/workspace/transactions.d.ts.map +1 -1
  60. package/dist/workspace/transactions.js +159 -16
  61. package/dist/workspace/transactions.js.map +1 -1
  62. package/package.json +1 -1
@@ -13,6 +13,25 @@ async function resolveRealPath(p) {
13
13
  return path.resolve(p);
14
14
  }
15
15
  }
16
+ /**
17
+ * 整个目录都不在快照里时,把其下的新文件折叠成一项(以 `/` 结尾):新装的 node_modules 不必列几万行。
18
+ */
19
+ function collapseNewDirectories(relPaths, isNewDir) {
20
+ const collapsed = new Set();
21
+ for (const rel of relPaths) {
22
+ const parts = rel.split('/');
23
+ let entry = rel;
24
+ for (let i = 1; i < parts.length; i++) {
25
+ const dir = parts.slice(0, i).join('/');
26
+ if (isNewDir(dir)) {
27
+ entry = `${dir}/`;
28
+ break;
29
+ }
30
+ }
31
+ collapsed.add(entry);
32
+ }
33
+ return [...collapsed].sort();
34
+ }
16
35
  export class GitShadowSnapshotDriver {
17
36
  name = 'git-shadow';
18
37
  coverage = 'worktree_non_ignored';
@@ -190,8 +209,9 @@ export class GitShadowSnapshotDriver {
190
209
  }
191
210
  }
192
211
  const addArgs = ['add', '-A'];
193
- if (against?.coverage === 'full_tree') {
194
- // 与 capture(includeIgnored: true) 同口径
212
+ if (against?.coverage === 'full_tree' && !options?.excludeNewIgnored) {
213
+ // 与 capture(includeIgnored: true) 同口径。不带 -f 时,快照里已有的被忽略文件在临时 index 中
214
+ // 是已跟踪条目,照常更新;只有快照之后新出现的被忽略文件不进指纹。
195
215
  addArgs.push('-f');
196
216
  }
197
217
  addArgs.push('--');
@@ -207,7 +227,7 @@ export class GitShadowSnapshotDriver {
207
227
  await fs.promises.rm(tempDir, { recursive: true, force: true }).catch(() => { });
208
228
  }
209
229
  }
210
- async restore(snapshot, _options) {
230
+ async restore(snapshot, options) {
211
231
  const unrestoredPaths = [];
212
232
  if (!snapshot.roots || snapshot.roots.length === 0) {
213
233
  throw new Error('Snapshot contains no root paths');
@@ -225,22 +245,27 @@ export class GitShadowSnapshotDriver {
225
245
  // 因此所有读取与写回都必须限定在 roots 内,否则会把用户在 roots 之外未提交的改动覆盖回 HEAD。
226
246
  const rootPathspecs = realRoots.map((r) => path.relative(repoRoot, r) || '.');
227
247
  const splitZ = (out) => out.split('\0').filter(Boolean);
228
- // 2. 以快照口径算出 roots 当前的树,只处理与快照有差异的路径:
248
+ const inScope = (absPath) => realRoots.some((root) => absPath === root || absPath.startsWith(root + path.sep));
249
+ // 以快照口径算出 roots 当前的树,只处理与快照有差异的路径:
229
250
  // 全量 checkout-index 会在 roots=仓库根时重写整个仓库(mtime 全变,触发 watcher / 增量构建)。
230
- const currentTree = await this.fingerprint(snapshot.roots, { against: snapshot });
231
- const toCheckout = [];
232
- const toDelete = [];
233
- for (const change of await this.diffTrees(repoRoot, currentTree, snapshot.treeFingerprint, rootPathspecs)) {
234
- // current → snapshot 方向:D 表示快照里没有、当前有
235
- if (change.status === 'D')
236
- toDelete.push(change.path);
237
- else
238
- toCheckout.push(change.path);
239
- }
240
- // 3. 删除候选只能是未被忽略的文件(tracked + untracked):
251
+ const diffAgainstSnapshot = async () => {
252
+ const currentTree = await this.fingerprint(snapshot.roots, { against: snapshot });
253
+ const toCheckout = [];
254
+ const toDelete = [];
255
+ for (const change of await this.diffTrees(repoRoot, currentTree, snapshot.treeFingerprint, rootPathspecs)) {
256
+ // current → snapshot 方向:D 表示快照里没有、当前有
257
+ if (change.status === 'D')
258
+ toDelete.push(change.path);
259
+ else
260
+ toCheckout.push(change.path);
261
+ }
262
+ return { toCheckout, toDelete };
263
+ };
264
+ // 删除候选只能是未被忽略的文件(tracked + untracked):
241
265
  // 严格尊重 .gitignore,绝不能动被忽略文件(如 .env, node_modules),full_tree 快照也一样
242
- let deletable = toDelete;
243
- if (toDelete.length > 0 && snapshot.coverage === 'full_tree') {
266
+ const deletableOf = async (toDelete) => {
267
+ if (toDelete.length === 0 || snapshot.coverage !== 'full_tree')
268
+ return toDelete;
244
269
  const { stdout: liveFilesOut } = await this.git(repoRoot, [
245
270
  'ls-files',
246
271
  '-z',
@@ -251,13 +276,14 @@ export class GitShadowSnapshotDriver {
251
276
  ...rootPathspecs,
252
277
  ]);
253
278
  const liveFiles = new Set(splitZ(liveFilesOut));
254
- deletable = toDelete.filter((rel) => liveFiles.has(rel));
255
- }
256
- // 4. 清理「在工作区中未被忽略、但不在快照中」的文件
257
- for (const liveRel of deletable) {
258
- const absPath = path.resolve(repoRoot, liveRel);
259
- const inScope = realRoots.some((root) => absPath === root || absPath.startsWith(root + path.sep));
260
- if (inScope) {
279
+ return toDelete.filter((rel) => liveFiles.has(rel));
280
+ };
281
+ // 清理「在工作区中未被忽略、但不在快照中」的文件
282
+ const unlinkAll = async (rels) => {
283
+ for (const liveRel of rels) {
284
+ const absPath = path.resolve(repoRoot, liveRel);
285
+ if (!inScope(absPath))
286
+ continue;
261
287
  try {
262
288
  await fs.promises.access(absPath, fs.constants.W_OK);
263
289
  await fs.promises.unlink(absPath);
@@ -266,34 +292,117 @@ export class GitShadowSnapshotDriver {
266
292
  unrestoredPaths.push(absPath);
267
293
  }
268
294
  }
269
- }
270
- // 5. 通过临时 index 只检出与快照有差异的文件(分批传参,避免超长 argv)
271
- const CHECKOUT_BATCH = 500;
272
- for (let i = 0; i < toCheckout.length; i += CHECKOUT_BATCH) {
273
- const batch = toCheckout.slice(i, i + CHECKOUT_BATCH);
274
- try {
275
- await this.git(repoRoot, ['checkout-index', '-f', '--', ...batch], env);
276
- }
277
- catch (checkoutErr) {
278
- const before = unrestoredPaths.length;
279
- const lines = (checkoutErr.message || '').split('\n');
280
- for (const line of lines) {
281
- const match = line.match(/unable to (?:create|unlink|write) file '?([^':]+)'?/i);
282
- if (match) {
283
- unrestoredPaths.push(path.resolve(repoRoot, match[1].trim()));
284
- }
295
+ };
296
+ // 通过临时 index 只检出与快照有差异的文件(分批传参,避免超长 argv)
297
+ const checkout = async (rels) => {
298
+ const CHECKOUT_BATCH = 500;
299
+ for (let i = 0; i < rels.length; i += CHECKOUT_BATCH) {
300
+ const batch = rels.slice(i, i + CHECKOUT_BATCH);
301
+ try {
302
+ await this.git(repoRoot, ['checkout-index', '-f', '--', ...batch], env);
285
303
  }
286
- if (unrestoredPaths.length === before) {
287
- throw checkoutErr;
304
+ catch (checkoutErr) {
305
+ const before = unrestoredPaths.length;
306
+ const lines = (checkoutErr.message || '').split('\n');
307
+ for (const line of lines) {
308
+ const match = line.match(/unable to (?:create|unlink|write) file '?([^':]+)'?/i);
309
+ if (match) {
310
+ unrestoredPaths.push(path.resolve(repoRoot, match[1].trim()));
311
+ }
312
+ }
313
+ if (unrestoredPaths.length === before) {
314
+ throw checkoutErr;
315
+ }
288
316
  }
289
317
  }
318
+ };
319
+ // 2. 先把忽略规则本身恢复到快照时的样子,再重新算差异。「哪些文件未被忽略、可以删」必须按快照时的
320
+ // 规则判断:快照之后 .gitignore 少了一行,当时被忽略、不在快照里的文件(.env)会以「不在快照里的
321
+ // 新文件」的身份出现在差异里并被删掉;多了一行,该清除的新文件则被藏起来。恢复一个规则文件可能让
322
+ // 另一个规则文件显形,所以循环到差异里不再有没处理过的规则文件为止。
323
+ let changes = await diffAgainstSnapshot();
324
+ const isIgnoreRules = (rel) => path.posix.basename(rel) === '.gitignore';
325
+ const syncedRules = new Set();
326
+ for (;;) {
327
+ const ruleCheckout = changes.toCheckout.filter((rel) => isIgnoreRules(rel) && !syncedRules.has(rel));
328
+ const ruleDelete = changes.toDelete.filter((rel) => isIgnoreRules(rel) && !syncedRules.has(rel));
329
+ if (ruleCheckout.length + ruleDelete.length === 0)
330
+ break;
331
+ await unlinkAll(await deletableOf(ruleDelete));
332
+ await checkout(ruleCheckout);
333
+ for (const rel of [...ruleCheckout, ...ruleDelete])
334
+ syncedRules.add(rel);
335
+ changes = await diffAgainstSnapshot();
336
+ }
337
+ const { toCheckout, toDelete } = changes;
338
+ // 3. 清理不在快照中的未被忽略文件
339
+ const deletable = await deletableOf(toDelete);
340
+ await unlinkAll(deletable);
341
+ // 4. 快照之后才出现的被忽略文件:默认原样保留并如实上报,调用方明确要求时才删除
342
+ const deletableSet = new Set(deletable);
343
+ const newIgnored = toDelete.filter((rel) => !deletableSet.has(rel) && inScope(path.resolve(repoRoot, rel)));
344
+ let newIgnoredPaths = [];
345
+ if (newIgnored.length > 0) {
346
+ const { stdout: dirsOut } = await this.git(repoRoot, [
347
+ 'ls-tree', '-r', '-d', '-z', '--name-only', snapshot.treeFingerprint,
348
+ ]);
349
+ const snapshotDirs = new Set(splitZ(dirsOut));
350
+ // 根目录自身及其上级不算「新目录」
351
+ const isNewDir = (rel) => !snapshotDirs.has(rel) && realRoots.some((root) => path.resolve(repoRoot, rel).startsWith(root + path.sep));
352
+ if (options?.removeNewIgnored) {
353
+ unrestoredPaths.push(...(await this.removeNewIgnored(repoRoot, newIgnored, isNewDir)));
354
+ }
355
+ else {
356
+ newIgnoredPaths = collapseNewDirectories(newIgnored, isNewDir).map((rel) => rel.endsWith('/') ? path.resolve(repoRoot, rel) + path.sep : path.resolve(repoRoot, rel));
357
+ }
290
358
  }
291
- return { unrestoredPaths };
359
+ // 5. 检出与快照有差异的文件
360
+ await checkout(toCheckout);
361
+ return { unrestoredPaths, newIgnoredPaths };
292
362
  }
293
363
  finally {
294
364
  await fs.promises.rm(tempDir, { recursive: true, force: true }).catch(() => { });
295
365
  }
296
366
  }
367
+ /** 删除快照之后新出现的被忽略文件,以及因此变空的新目录;返回没删掉的路径。 */
368
+ async removeNewIgnored(repoRoot, relPaths, isNewDir) {
369
+ const failed = [];
370
+ const emptied = new Set();
371
+ for (const rel of relPaths) {
372
+ try {
373
+ await fs.promises.unlink(path.resolve(repoRoot, rel));
374
+ }
375
+ catch {
376
+ failed.push(path.resolve(repoRoot, rel));
377
+ continue;
378
+ }
379
+ for (let dir = path.posix.dirname(rel); dir !== '.' && isNewDir(dir); dir = path.posix.dirname(dir)) {
380
+ emptied.add(dir);
381
+ }
382
+ }
383
+ // 深的先删;目录不进 git 树,非空(里面还有没删掉的东西)不算失败,那些路径已在 failed 里
384
+ for (const dir of [...emptied].sort((a, b) => b.length - a.length)) {
385
+ try {
386
+ await fs.promises.rmdir(path.resolve(repoRoot, dir));
387
+ }
388
+ catch (err) {
389
+ if (err?.code !== 'ENOTEMPTY' && err?.code !== 'EEXIST' && err?.code !== 'ENOENT') {
390
+ failed.push(path.resolve(repoRoot, dir) + path.sep);
391
+ }
392
+ }
393
+ }
394
+ return failed;
395
+ }
396
+ async listIgnored(roots) {
397
+ const realRoots = await Promise.all(roots.map((r) => resolveRealPath(r)));
398
+ const { repoRoot } = await this.assertGitRepo(realRoots[0]);
399
+ // 不带 --directory:折叠成目录后就看不到目录内部的变化
400
+ const { stdout } = await this.git(repoRoot, [
401
+ 'ls-files', '-z', '--others', '--ignored', '--exclude-standard', '--',
402
+ ...realRoots.map((r) => path.relative(repoRoot, r) || '.'),
403
+ ]);
404
+ return stdout.split('\0').filter(Boolean).map((rel) => path.resolve(repoRoot, rel));
405
+ }
297
406
  async prune(snapshotIds, options) {
298
407
  for (const id of snapshotIds) {
299
408
  // 内存映射在宿主重启后为空;此时必须由调用方给出 repoRoot,不能静默跳过让快照 ref 永久残留
@@ -1 +1 @@
1
- {"version":3,"file":"git-shadow.js","sourceRoot":"","sources":["../../src/snapshot/git-shadow.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"git-shadow.js","sourceRoot":"","sources":["../../src/snapshot/git-shadow.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ import { IgnoredChanges } from '../types.js';
2
+ export interface IgnoredManifestEntry {
3
+ path: string;
4
+ size: string;
5
+ mtimeNs: string;
6
+ ctimeNs: string;
7
+ mode: number;
8
+ }
9
+ /** 回滚结果里每类最多列出的路径数;总数在 counts 里。 */
10
+ export declare const IGNORED_CHANGES_LIMIT = 50;
11
+ export type IgnoredManifestVerdict = 'unchanged' | 'changed' | 'inconclusive';
12
+ export declare function ignoredManifestPath(domainPath: string, snapshotId: string): string;
13
+ /** 逐项 lstat。列举与 lstat 之间消失的文件直接略过:它不在这一刻的清单里,比较时自然表现为增 / 删。 */
14
+ export declare function collectIgnoredEntries(paths: string[]): IgnoredManifestEntry[];
15
+ /** 写清单并 fsync,返回内容的 sha256。清单含路径名(可能敏感),权限收紧到属主。 */
16
+ export declare function writeIgnoredManifest(file: string, entries: IgnoredManifestEntry[]): string;
17
+ /** 读回清单;文件不在或内容与登记的摘要不符时返回 null(调用方据此不给出「未变」的结论)。 */
18
+ export declare function readIgnoredManifest(file: string, digest: string): IgnoredManifestEntry[] | null;
19
+ export declare function diffIgnoredEntries(before: IgnoredManifestEntry[], after: IgnoredManifestEntry[]): {
20
+ verdict: IgnoredManifestVerdict;
21
+ changes?: IgnoredChanges;
22
+ };
23
+ //# sourceMappingURL=ignored-manifest.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignored-manifest.d.ts","sourceRoot":"","sources":["../../src/snapshot/ignored-manifest.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAkB7C,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,oCAAoC;AACpC,eAAO,MAAM,qBAAqB,KAAK,CAAC;AAExC,MAAM,MAAM,sBAAsB,GAAG,WAAW,GAAG,SAAS,GAAG,cAAc,CAAC;AAE9E,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAElF;AAED,+DAA+D;AAC/D,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,oBAAoB,EAAE,CAoB7E;AAED,oDAAoD;AACpD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,EAAE,GAAG,MAAM,CAc1F;AAED,qDAAqD;AACrD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,oBAAoB,EAAE,GAAG,IAAI,CAW/F;AAED,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,oBAAoB,EAAE,EAC9B,KAAK,EAAE,oBAAoB,EAAE,GAC5B;IAAE,OAAO,EAAE,sBAAsB,CAAC;IAAC,OAAO,CAAC,EAAE,cAAc,CAAA;CAAE,CAsC/D"}
@@ -0,0 +1,121 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import crypto from 'node:crypto';
4
+ /**
5
+ * 被忽略文件清单:不复制内容,只记每个文件的元数据,用来证明「回滚时它们和拍快照时一样」。
6
+ *
7
+ * 证据强度:内容改写必然推进 ctime,而非特权进程无法把 ctime 改回过去,所以四项全等 ⇒ 内容未变。
8
+ * 反过来不成立:只有 ctime 变了(chmod 来回、utimes、内核自己的读集归一)不代表内容变了,
9
+ * 这种条目单独归为 `metadataOnly`,结论是「无法证明」,既不算未变也不算已变。
10
+ * utimes 经由双精度秒传时间戳,把 mtime 写回原值时会丢掉亚微秒位(实测读集归一之后 mtime 差几百纳秒),
11
+ * 所以 mtime 相差不到 1 微秒也按「只动了元数据」处理,而不是报成已修改。
12
+ */
13
+ const UTIMES_PRECISION_NS = 1000n;
14
+ function sameMtime(a, b) {
15
+ const delta = BigInt(a) - BigInt(b);
16
+ return (delta < 0n ? -delta : delta) < UTIMES_PRECISION_NS;
17
+ }
18
+ /** 回滚结果里每类最多列出的路径数;总数在 counts 里。 */
19
+ export const IGNORED_CHANGES_LIMIT = 50;
20
+ export function ignoredManifestPath(domainPath, snapshotId) {
21
+ return path.join(domainPath, 'artifacts', `${snapshotId}-ignored.manifest`);
22
+ }
23
+ /** 逐项 lstat。列举与 lstat 之间消失的文件直接略过:它不在这一刻的清单里,比较时自然表现为增 / 删。 */
24
+ export function collectIgnoredEntries(paths) {
25
+ const entries = [];
26
+ for (const p of paths) {
27
+ let st;
28
+ try {
29
+ st = fs.lstatSync(p, { bigint: true });
30
+ }
31
+ catch (err) {
32
+ if (err?.code === 'ENOENT')
33
+ continue;
34
+ throw err;
35
+ }
36
+ entries.push({
37
+ path: p,
38
+ size: st.size.toString(),
39
+ mtimeNs: st.mtimeNs.toString(),
40
+ ctimeNs: st.ctimeNs.toString(),
41
+ mode: Number(st.mode),
42
+ });
43
+ }
44
+ // 按码点排序,不用 localeCompare:清单比较不做大小写或区域归一
45
+ return entries.sort((a, b) => (a.path < b.path ? -1 : a.path > b.path ? 1 : 0));
46
+ }
47
+ /** 写清单并 fsync,返回内容的 sha256。清单含路径名(可能敏感),权限收紧到属主。 */
48
+ export function writeIgnoredManifest(file, entries) {
49
+ const body = JSON.stringify({
50
+ version: 1,
51
+ entries: entries.map((e) => [e.path, e.size, e.mtimeNs, e.ctimeNs, e.mode]),
52
+ });
53
+ fs.mkdirSync(path.dirname(file), { recursive: true });
54
+ const fd = fs.openSync(file, 'w', 0o600);
55
+ try {
56
+ fs.writeSync(fd, body);
57
+ fs.fsyncSync(fd);
58
+ }
59
+ finally {
60
+ fs.closeSync(fd);
61
+ }
62
+ return crypto.createHash('sha256').update(body).digest('hex');
63
+ }
64
+ /** 读回清单;文件不在或内容与登记的摘要不符时返回 null(调用方据此不给出「未变」的结论)。 */
65
+ export function readIgnoredManifest(file, digest) {
66
+ let body;
67
+ try {
68
+ body = fs.readFileSync(file, 'utf8');
69
+ }
70
+ catch (err) {
71
+ if (err?.code === 'ENOENT')
72
+ return null;
73
+ throw err;
74
+ }
75
+ if (crypto.createHash('sha256').update(body).digest('hex') !== digest)
76
+ return null;
77
+ const parsed = JSON.parse(body);
78
+ return parsed.entries.map(([p, size, mtimeNs, ctimeNs, mode]) => ({ path: p, size, mtimeNs, ctimeNs, mode }));
79
+ }
80
+ export function diffIgnoredEntries(before, after) {
81
+ const added = [];
82
+ const removed = [];
83
+ const modified = [];
84
+ const metadataOnly = [];
85
+ const current = new Map(after.map((e) => [e.path, e]));
86
+ for (const old of before) {
87
+ const now = current.get(old.path);
88
+ if (!now) {
89
+ removed.push(old.path);
90
+ continue;
91
+ }
92
+ current.delete(old.path);
93
+ if (now.size !== old.size || now.mode !== old.mode || !sameMtime(now.mtimeNs, old.mtimeNs))
94
+ modified.push(old.path);
95
+ else if (now.ctimeNs !== old.ctimeNs)
96
+ metadataOnly.push(old.path);
97
+ }
98
+ added.push(...current.keys());
99
+ const counts = {
100
+ added: added.length,
101
+ removed: removed.length,
102
+ modified: modified.length,
103
+ metadataOnly: metadataOnly.length,
104
+ };
105
+ const definite = counts.added + counts.removed + counts.modified;
106
+ if (definite === 0 && counts.metadataOnly === 0)
107
+ return { verdict: 'unchanged' };
108
+ const cut = (list) => list.slice(0, IGNORED_CHANGES_LIMIT);
109
+ return {
110
+ verdict: definite > 0 ? 'changed' : 'inconclusive',
111
+ changes: {
112
+ added: cut(added),
113
+ removed: cut(removed),
114
+ modified: cut(modified),
115
+ metadataOnly: cut(metadataOnly),
116
+ truncated: Object.values(counts).some((n) => n > IGNORED_CHANGES_LIMIT),
117
+ counts,
118
+ },
119
+ };
120
+ }
121
+ //# sourceMappingURL=ignored-manifest.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ignored-manifest.js","sourceRoot":"","sources":["../../src/snapshot/ignored-manifest.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  /**
2
2
  * xioflow 数据库 Schema 定义与初始化迁移
3
3
  */
4
- export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS owners (\n domain_id TEXT PRIMARY KEY,\n owner_id TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n heartbeat_at TEXT NOT NULL,\n expires_at TEXT NOT NULL,\n hostname TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS tasks (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n name TEXT NOT NULL,\n created_at TEXT NOT NULL,\n meta TEXT\n);\n\nCREATE TABLE IF NOT EXISTS runs (\n id TEXT PRIMARY KEY,\n task_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n owner TEXT NOT NULL,\n status TEXT NOT NULL,\n termination_reason TEXT,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n config_snapshot TEXT,\n FOREIGN KEY(task_id) REFERENCES tasks(id)\n);\n\nCREATE TABLE IF NOT EXISTS operations (\n id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n kind TEXT NOT NULL,\n name TEXT NOT NULL,\n input_fingerprint TEXT NOT NULL,\n status TEXT NOT NULL,\n required_resources TEXT NOT NULL,\n mutation_roots TEXT,\n capability_id TEXT,\n timeout_ms INTEGER,\n resource_budget TEXT,\n output_ref TEXT,\n process_identity TEXT,\n result TEXT,\n FOREIGN KEY(run_id) REFERENCES runs(id)\n);\n\nCREATE TABLE IF NOT EXISTS resource_leases (\n resource_id TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n acquired_at TEXT NOT NULL,\n budget TEXT,\n PRIMARY KEY (resource_id, operation_id)\n);\n\nCREATE TABLE IF NOT EXISTS journal_events (\n seq INTEGER PRIMARY KEY AUTOINCREMENT,\n domain_id TEXT NOT NULL,\n run_id TEXT,\n operation_id TEXT,\n type TEXT NOT NULL,\n payload TEXT NOT NULL,\n timestamp TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS snapshots (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n op_id TEXT NOT NULL,\n driver TEXT NOT NULL,\n roots TEXT NOT NULL,\n coverage TEXT NOT NULL,\n tree_fingerprint TEXT NOT NULL,\n commit_hash TEXT,\n journal_seq INTEGER,\n created_at TEXT NOT NULL,\n tree_size_bytes INTEGER\n);\n\nCREATE TABLE IF NOT EXISTS capabilities (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n parent_id TEXT,\n issued_by TEXT NOT NULL,\n scope TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n expires_at TEXT NOT NULL,\n created_at TEXT NOT NULL,\n revoked_at TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_runs_task_id ON runs(task_id);\nCREATE INDEX IF NOT EXISTS idx_runs_status ON runs(status);\nCREATE INDEX IF NOT EXISTS idx_operations_run_id ON operations(run_id);\nCREATE INDEX IF NOT EXISTS idx_operations_status ON operations(status);\nCREATE INDEX IF NOT EXISTS idx_resource_leases_op ON resource_leases(operation_id);\nCREATE INDEX IF NOT EXISTS idx_journal_events_domain ON journal_events(domain_id);\nCREATE INDEX IF NOT EXISTS idx_snapshots_domain ON snapshots(domain_id);\nCREATE INDEX IF NOT EXISTS idx_snapshots_journal_seq ON snapshots(journal_seq);\nCREATE INDEX IF NOT EXISTS idx_capabilities_domain ON capabilities(domain_id);\n";
4
+ export declare const SCHEMA_SQL = "\nCREATE TABLE IF NOT EXISTS owners (\n domain_id TEXT PRIMARY KEY,\n owner_id TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n heartbeat_at TEXT NOT NULL,\n expires_at TEXT NOT NULL,\n hostname TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS tasks (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n name TEXT NOT NULL,\n created_at TEXT NOT NULL,\n meta TEXT\n);\n\nCREATE TABLE IF NOT EXISTS runs (\n id TEXT PRIMARY KEY,\n task_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n owner TEXT NOT NULL,\n status TEXT NOT NULL,\n termination_reason TEXT,\n started_at TEXT NOT NULL,\n ended_at TEXT,\n config_snapshot TEXT,\n FOREIGN KEY(task_id) REFERENCES tasks(id)\n);\n\nCREATE TABLE IF NOT EXISTS operations (\n id TEXT PRIMARY KEY,\n run_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n kind TEXT NOT NULL,\n name TEXT NOT NULL,\n input_fingerprint TEXT NOT NULL,\n status TEXT NOT NULL,\n required_resources TEXT NOT NULL,\n mutation_roots TEXT,\n capability_id TEXT,\n timeout_ms INTEGER,\n resource_budget TEXT,\n output_ref TEXT,\n process_identity TEXT,\n result TEXT,\n FOREIGN KEY(run_id) REFERENCES runs(id)\n);\n\nCREATE TABLE IF NOT EXISTS resource_leases (\n resource_id TEXT NOT NULL,\n operation_id TEXT NOT NULL,\n domain_id TEXT NOT NULL,\n acquired_at TEXT NOT NULL,\n budget TEXT,\n PRIMARY KEY (resource_id, operation_id)\n);\n\nCREATE TABLE IF NOT EXISTS journal_events (\n seq INTEGER PRIMARY KEY AUTOINCREMENT,\n domain_id TEXT NOT NULL,\n run_id TEXT,\n operation_id TEXT,\n type TEXT NOT NULL,\n payload TEXT NOT NULL,\n timestamp TEXT NOT NULL\n);\n\nCREATE TABLE IF NOT EXISTS snapshots (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n op_id TEXT NOT NULL,\n driver TEXT NOT NULL,\n roots TEXT NOT NULL,\n coverage TEXT NOT NULL,\n tree_fingerprint TEXT NOT NULL,\n commit_hash TEXT,\n journal_seq INTEGER,\n created_at TEXT NOT NULL,\n tree_size_bytes INTEGER,\n ignored_manifest_digest TEXT\n);\n\nCREATE TABLE IF NOT EXISTS capabilities (\n id TEXT PRIMARY KEY,\n domain_id TEXT NOT NULL,\n parent_id TEXT,\n issued_by TEXT NOT NULL,\n scope TEXT NOT NULL,\n epoch INTEGER NOT NULL,\n expires_at TEXT NOT NULL,\n created_at TEXT NOT NULL,\n revoked_at TEXT\n);\n\nCREATE INDEX IF NOT EXISTS idx_runs_task_id ON runs(task_id);\nCREATE INDEX IF NOT EXISTS idx_runs_status ON runs(status);\nCREATE INDEX IF NOT EXISTS idx_operations_run_id ON operations(run_id);\nCREATE INDEX IF NOT EXISTS idx_operations_status ON operations(status);\nCREATE INDEX IF NOT EXISTS idx_resource_leases_op ON resource_leases(operation_id);\nCREATE INDEX IF NOT EXISTS idx_journal_events_domain ON journal_events(domain_id);\nCREATE INDEX IF NOT EXISTS idx_snapshots_domain ON snapshots(domain_id);\nCREATE INDEX IF NOT EXISTS idx_snapshots_journal_seq ON snapshots(journal_seq);\nCREATE INDEX IF NOT EXISTS idx_capabilities_domain ON capabilities(domain_id);\n";
5
5
  //# sourceMappingURL=schema.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,UAAU,81FAwGtB,CAAC"}
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,eAAO,MAAM,UAAU,+3FAyGtB,CAAC"}
@@ -81,7 +81,8 @@ CREATE TABLE IF NOT EXISTS snapshots (
81
81
  commit_hash TEXT,
82
82
  journal_seq INTEGER,
83
83
  created_at TEXT NOT NULL,
84
- tree_size_bytes INTEGER
84
+ tree_size_bytes INTEGER,
85
+ ignored_manifest_digest TEXT
85
86
  );
86
87
 
87
88
  CREATE TABLE IF NOT EXISTS capabilities (
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwGzB,CAAC"}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/store/schema.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyGzB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/store/sqlite.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../src/store/sqlite.ts"],"names":[],"mappings":"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"}
@@ -26,6 +26,10 @@ export class SqliteStore {
26
26
  if (!existing.has('capability_id')) {
27
27
  this.db.exec('ALTER TABLE operations ADD COLUMN capability_id TEXT;');
28
28
  }
29
+ const snapshotColumns = new Set(this.db.prepare('PRAGMA table_info(snapshots)').all().map((c) => c.name));
30
+ if (!snapshotColumns.has('ignored_manifest_digest')) {
31
+ this.db.exec('ALTER TABLE snapshots ADD COLUMN ignored_manifest_digest TEXT;');
32
+ }
29
33
  }
30
34
  inTransaction = false;
31
35
  transaction(fn) {
@@ -650,10 +654,11 @@ export class SqliteStore {
650
654
  this.verifyEpochFencing(snapshot.domainId);
651
655
  const stmt = this.db.prepare(`
652
656
  INSERT OR REPLACE INTO snapshots (
653
- id, domain_id, op_id, driver, roots, coverage, tree_fingerprint, commit_hash, journal_seq, created_at, tree_size_bytes
654
- ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
657
+ id, domain_id, op_id, driver, roots, coverage, tree_fingerprint, commit_hash, journal_seq, created_at, tree_size_bytes,
658
+ ignored_manifest_digest
659
+ ) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
655
660
  `);
656
- stmt.run(snapshot.id, snapshot.domainId, snapshot.opId, snapshot.driver, JSON.stringify(snapshot.roots), snapshot.coverage, snapshot.treeFingerprint, snapshot.commitHash ?? null, snapshot.journalSeq ?? null, snapshot.createdAt, snapshot.treeSizeBytes ?? null);
661
+ stmt.run(snapshot.id, snapshot.domainId, snapshot.opId, snapshot.driver, JSON.stringify(snapshot.roots), snapshot.coverage, snapshot.treeFingerprint, snapshot.commitHash ?? null, snapshot.journalSeq ?? null, snapshot.createdAt, snapshot.treeSizeBytes ?? null, snapshot.ignoredManifestDigest ?? null);
657
662
  }
658
663
  getSnapshot(id) {
659
664
  const stmt = this.db.prepare(`SELECT * FROM snapshots WHERE id = ?`);
@@ -700,6 +705,7 @@ export class SqliteStore {
700
705
  journalSeq: row.journal_seq !== null ? Number(row.journal_seq) : undefined,
701
706
  createdAt: row.created_at,
702
707
  treeSizeBytes: row.tree_size_bytes !== null ? Number(row.tree_size_bytes) : undefined,
708
+ ignoredManifestDigest: row.ignored_manifest_digest || undefined,
703
709
  };
704
710
  }
705
711
  recordCapability(capability) {