@xioflow/kernel 0.3.0 → 0.4.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 (85) hide show
  1. package/README.md +80 -13
  2. package/dist/capability/check.d.ts +32 -0
  3. package/dist/capability/check.d.ts.map +1 -0
  4. package/dist/capability/check.js +136 -0
  5. package/dist/capability/check.js.map +1 -0
  6. package/dist/capability/index.d.ts +3 -0
  7. package/dist/capability/index.d.ts.map +1 -0
  8. package/dist/capability/index.js +3 -0
  9. package/dist/capability/index.js.map +1 -0
  10. package/dist/capability/path-utils.d.ts +11 -0
  11. package/dist/capability/path-utils.d.ts.map +1 -0
  12. package/dist/capability/path-utils.js +46 -0
  13. package/dist/capability/path-utils.js.map +1 -0
  14. package/dist/confinement/bubblewrap.d.ts +8 -0
  15. package/dist/confinement/bubblewrap.d.ts.map +1 -0
  16. package/dist/confinement/bubblewrap.js +45 -0
  17. package/dist/confinement/bubblewrap.js.map +1 -0
  18. package/dist/confinement/detector.d.ts +4 -0
  19. package/dist/confinement/detector.d.ts.map +1 -0
  20. package/dist/confinement/detector.js +35 -0
  21. package/dist/confinement/detector.js.map +1 -0
  22. package/dist/confinement/index.d.ts +5 -0
  23. package/dist/confinement/index.d.ts.map +1 -0
  24. package/dist/confinement/index.js +5 -0
  25. package/dist/confinement/index.js.map +1 -0
  26. package/dist/confinement/sandbox-exec.d.ts +8 -0
  27. package/dist/confinement/sandbox-exec.d.ts.map +1 -0
  28. package/dist/confinement/sandbox-exec.js +30 -0
  29. package/dist/confinement/sandbox-exec.js.map +1 -0
  30. package/dist/confinement/srt.d.ts +8 -0
  31. package/dist/confinement/srt.d.ts.map +1 -0
  32. package/dist/confinement/srt.js +41 -0
  33. package/dist/confinement/srt.js.map +1 -0
  34. package/dist/domain.d.ts +26 -2
  35. package/dist/domain.d.ts.map +1 -1
  36. package/dist/domain.js +192 -18
  37. package/dist/domain.js.map +1 -1
  38. package/dist/driver/node-driver.d.ts.map +1 -1
  39. package/dist/driver/node-driver.js +46 -36
  40. package/dist/driver/node-driver.js.map +1 -1
  41. package/dist/driver/types.d.ts +13 -0
  42. package/dist/driver/types.d.ts.map +1 -1
  43. package/dist/index.d.ts +3 -0
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +3 -0
  46. package/dist/index.js.map +1 -1
  47. package/dist/quick-run.d.ts.map +1 -1
  48. package/dist/quick-run.js +5 -12
  49. package/dist/quick-run.js.map +1 -1
  50. package/dist/recovery/engine.d.ts +7 -0
  51. package/dist/recovery/engine.d.ts.map +1 -1
  52. package/dist/recovery/engine.js +174 -4
  53. package/dist/recovery/engine.js.map +1 -1
  54. package/dist/snapshot/git-shadow.d.ts +49 -0
  55. package/dist/snapshot/git-shadow.d.ts.map +1 -0
  56. package/dist/snapshot/git-shadow.js +359 -0
  57. package/dist/snapshot/git-shadow.js.map +1 -0
  58. package/dist/store/schema.d.ts +1 -1
  59. package/dist/store/schema.d.ts.map +1 -1
  60. package/dist/store/schema.js +31 -0
  61. package/dist/store/schema.js.map +1 -1
  62. package/dist/store/sqlite.d.ts +14 -1
  63. package/dist/store/sqlite.d.ts.map +1 -1
  64. package/dist/store/sqlite.js +145 -58
  65. package/dist/store/sqlite.js.map +1 -1
  66. package/dist/supervisor/drainer.d.ts +17 -0
  67. package/dist/supervisor/drainer.d.ts.map +1 -0
  68. package/dist/supervisor/drainer.js +200 -0
  69. package/dist/supervisor/drainer.js.map +1 -0
  70. package/dist/supervisor/service.d.ts +24 -0
  71. package/dist/supervisor/service.d.ts.map +1 -0
  72. package/dist/supervisor/service.js +588 -0
  73. package/dist/supervisor/service.js.map +1 -0
  74. package/dist/supervisor/supervisor.d.ts +61 -4
  75. package/dist/supervisor/supervisor.d.ts.map +1 -1
  76. package/dist/supervisor/supervisor.js +572 -204
  77. package/dist/supervisor/supervisor.js.map +1 -1
  78. package/dist/testing/contract-suite.d.ts.map +1 -1
  79. package/dist/testing/contract-suite.js +570 -2
  80. package/dist/testing/contract-suite.js.map +1 -1
  81. package/dist/types.d.ts +155 -2
  82. package/dist/types.d.ts.map +1 -1
  83. package/dist/types.js +8 -0
  84. package/dist/types.js.map +1 -1
  85. package/package.json +1 -1
@@ -1,3 +1,4 @@
1
+ import { GitShadowSnapshotDriver } from '../snapshot/git-shadow.js';
1
2
  export class RecoveryEngine {
2
3
  domain;
3
4
  driver;
@@ -13,7 +14,101 @@ export class RecoveryEngine {
13
14
  const store = this.domain.getStore();
14
15
  const unfinishedOps = store.getUnfinishedOperations(this.domain.domainId);
15
16
  const report = { recoveredOperations: [] };
17
+ const releaseOpAndServiceResources = (op) => {
18
+ this.domain.internalReleaseResources(op.id, op.requiredResources);
19
+ if (op.kind === 'service' || op.id.includes('#')) {
20
+ const serviceId = op.id.split('#')[0];
21
+ this.domain.internalReleaseResources(`service:${serviceId}`, op.requiredResources);
22
+ }
23
+ };
24
+ const recordServiceStoppedIfNeeded = (op, action) => {
25
+ if (op.kind === 'service' || op.id.includes('#')) {
26
+ const serviceId = op.id.split('#')[0];
27
+ store.recordEventAndTransitionState({
28
+ domainId: this.domain.domainId,
29
+ runId: op.runId,
30
+ operationId: op.id,
31
+ type: 'SERVICE_STOPPED',
32
+ payload: {
33
+ serviceId,
34
+ runId: op.runId,
35
+ instanceOpId: op.id,
36
+ reason: 'recovered_after_crash',
37
+ action,
38
+ },
39
+ timestamp: new Date().toISOString(),
40
+ });
41
+ }
42
+ };
16
43
  for (const op of unfinishedOps) {
44
+ if (op.kind === 'rollback') {
45
+ const snapshotId = op.outputRef || op.name.replace(/^rollback:/, '');
46
+ const snapshot = store.getSnapshot(snapshotId);
47
+ const snapshotDriver = this.domain.getSnapshotDriver?.() || new GitShadowSnapshotDriver();
48
+ const roots = op.mutationRoots || snapshot?.roots || [];
49
+ let isMatch = false;
50
+ if (snapshot && roots.length > 0) {
51
+ try {
52
+ const currentFp = await snapshotDriver.fingerprint(roots, { against: snapshot });
53
+ isMatch = currentFp === snapshot.treeFingerprint;
54
+ }
55
+ catch {
56
+ isMatch = false;
57
+ }
58
+ }
59
+ if (isMatch) {
60
+ const restoredResult = {
61
+ kind: 'rollback',
62
+ status: 'restored',
63
+ snapshotId,
64
+ coverage: 'declared_roots',
65
+ outOfScopeEffects: 'possible',
66
+ durationMs: 0,
67
+ completedAt: new Date().toISOString(),
68
+ };
69
+ store.recordOperationResult(op.id, restoredResult, true);
70
+ releaseOpAndServiceResources(op);
71
+ report.recoveredOperations.push({
72
+ opId: op.id,
73
+ action: 'cleaned_unspawned',
74
+ resourcesReleased: true,
75
+ });
76
+ }
77
+ else {
78
+ const indetResult = {
79
+ kind: 'indeterminate',
80
+ status: 'indeterminate',
81
+ reason: 'Rollback interrupted by crash and tree fingerprint does not match target snapshot',
82
+ recoveryGuidance: 'Workspace tree may be dirty or partially restored. Inspect files and retry rollback.',
83
+ durationMs: 0,
84
+ completedAt: new Date().toISOString(),
85
+ };
86
+ store.recordOperationResult(op.id, indetResult, false);
87
+ report.recoveredOperations.push({
88
+ opId: op.id,
89
+ action: 'isolated_indeterminate',
90
+ resourcesReleased: false,
91
+ });
92
+ }
93
+ continue;
94
+ }
95
+ if (op.kind === 'snapshot') {
96
+ const failResult = {
97
+ kind: 'snapshot',
98
+ status: 'failed',
99
+ errorMessage: 'Snapshot interrupted by crash before completion',
100
+ durationMs: 0,
101
+ completedAt: new Date().toISOString(),
102
+ };
103
+ store.recordOperationResult(op.id, failResult, true);
104
+ releaseOpAndServiceResources(op);
105
+ report.recoveredOperations.push({
106
+ opId: op.id,
107
+ action: 'cleaned_unspawned',
108
+ resourcesReleased: true,
109
+ });
110
+ continue;
111
+ }
17
112
  if (op.status === 'intent_registered' && !op.processIdentity) {
18
113
  // 场景 1:意图登记后崩溃,驱动未启动(无进程身份)
19
114
  // 安全清理资源,推进至失败终态
@@ -30,7 +125,8 @@ export class RecoveryEngine {
30
125
  completedAt: new Date().toISOString(),
31
126
  };
32
127
  store.recordOperationResult(op.id, failResult, true);
33
- this.domain.internalReleaseResources(op.id, op.requiredResources);
128
+ releaseOpAndServiceResources(op);
129
+ recordServiceStoppedIfNeeded(op, 'cleaned_unspawned');
34
130
  report.recoveredOperations.push({
35
131
  opId: op.id,
36
132
  action: 'cleaned_unspawned',
@@ -63,7 +159,8 @@ export class RecoveryEngine {
63
159
  completedAt: new Date().toISOString(),
64
160
  };
65
161
  store.recordOperationResult(op.id, cancelResult, true);
66
- this.domain.internalReleaseResources(op.id, op.requiredResources);
162
+ releaseOpAndServiceResources(op);
163
+ recordServiceStoppedIfNeeded(op, 'stopped_alive_process');
67
164
  report.recoveredOperations.push({
68
165
  opId: op.id,
69
166
  action: 'stopped_alive_process',
@@ -81,6 +178,7 @@ export class RecoveryEngine {
81
178
  completedAt: new Date().toISOString(),
82
179
  };
83
180
  store.recordOperationResult(op.id, indetResult, false);
181
+ recordServiceStoppedIfNeeded(op, 'isolated_indeterminate');
84
182
  report.recoveredOperations.push({
85
183
  opId: op.id,
86
184
  action: 'isolated_indeterminate',
@@ -122,7 +220,8 @@ export class RecoveryEngine {
122
220
  if (this.driver.getGroupEvidence) {
123
221
  const members = await this.driver.getGroupEvidence(pgid);
124
222
  if (members.length > 0) {
125
- const opSpawnMs = Date.parse(op.processIdentity.spawnTime);
223
+ // 下界优先用 OS 登记的 leader 创建时间;旧记录没有 osStartTime 时才退回宿主 spawnTime
224
+ const opSpawnMs = Date.parse(op.processIdentity.osStartTime ?? op.processIdentity.spawnTime);
126
225
  if (!isNaN(opSpawnMs)) {
127
226
  let hasEarlierProcess = false;
128
227
  for (const m of members) {
@@ -189,7 +288,8 @@ export class RecoveryEngine {
189
288
  completedAt: new Date().toISOString(),
190
289
  };
191
290
  store.recordOperationResult(op.id, deadResult, true);
192
- this.domain.internalReleaseResources(op.id, op.requiredResources);
291
+ releaseOpAndServiceResources(op);
292
+ recordServiceStoppedIfNeeded(op, 'marked_dead');
193
293
  report.recoveredOperations.push({
194
294
  opId: op.id,
195
295
  action: 'marked_dead',
@@ -207,6 +307,7 @@ export class RecoveryEngine {
207
307
  completedAt: new Date().toISOString(),
208
308
  };
209
309
  store.recordOperationResult(op.id, indetResult, false);
310
+ recordServiceStoppedIfNeeded(op, 'isolated_indeterminate');
210
311
  report.recoveredOperations.push({
211
312
  opId: op.id,
212
313
  action: 'isolated_indeterminate',
@@ -233,6 +334,75 @@ export class RecoveryEngine {
233
334
  }
234
335
  }
235
336
  }
337
+ // 6. [Service 维度聚合] (ARCHITECTURE §3.8 / Step 5)
338
+ const serviceMap = new Map();
339
+ for (const rec of report.recoveredOperations) {
340
+ const op = unfinishedOps.find((o) => o.id === rec.opId);
341
+ const isService = op?.kind === 'service' || rec.opId.includes('#');
342
+ if (isService) {
343
+ const serviceId = rec.opId.split('#')[0];
344
+ let entry = serviceMap.get(serviceId);
345
+ if (!entry) {
346
+ entry = {
347
+ instanceOpIds: [],
348
+ actions: new Set(),
349
+ resourcesReleased: true,
350
+ };
351
+ serviceMap.set(serviceId, entry);
352
+ }
353
+ entry.instanceOpIds.push(rec.opId);
354
+ entry.actions.add(rec.action);
355
+ if (!rec.resourcesReleased) {
356
+ entry.resourcesReleased = false;
357
+ }
358
+ }
359
+ }
360
+ // 检查并释放处于重启 backoff 间隙遗留的 service 租约(无活跃 op)
361
+ const persistedLeases = store.getPersistedResourceLeases(this.domain.domainId);
362
+ for (const lease of persistedLeases) {
363
+ if (lease.operationId.startsWith('service:')) {
364
+ const serviceId = lease.operationId.slice('service:'.length);
365
+ this.domain.internalReleaseResources(lease.operationId, [lease.resourceId]);
366
+ if (!serviceMap.has(serviceId)) {
367
+ serviceMap.set(serviceId, {
368
+ instanceOpIds: [],
369
+ actions: new Set(['stopped_alive_process']),
370
+ resourcesReleased: true,
371
+ });
372
+ store.recordEventAndTransitionState({
373
+ domainId: this.domain.domainId,
374
+ type: 'SERVICE_STOPPED',
375
+ payload: {
376
+ serviceId,
377
+ reason: 'recovered_after_crash',
378
+ action: 'cleared_backoff_lease',
379
+ },
380
+ timestamp: new Date().toISOString(),
381
+ });
382
+ }
383
+ }
384
+ }
385
+ report.recoveredServices = Array.from(serviceMap.entries()).map(([serviceId, entry]) => {
386
+ let action;
387
+ if (entry.actions.has('isolated_indeterminate')) {
388
+ action = 'isolated_indeterminate';
389
+ }
390
+ else if (entry.actions.has('stopped_alive_process')) {
391
+ action = 'stopped_alive_process';
392
+ }
393
+ else if (entry.actions.has('marked_dead')) {
394
+ action = 'marked_dead';
395
+ }
396
+ else {
397
+ action = 'cleaned_unspawned';
398
+ }
399
+ return {
400
+ serviceId,
401
+ instanceOpIds: entry.instanceOpIds,
402
+ action,
403
+ resourcesReleased: entry.resourcesReleased,
404
+ };
405
+ });
236
406
  return report;
237
407
  }
238
408
  /** 进程组是否仍存在(僵尸也算存在;具体是否"能工作"由驱动的 terminateGroup 判定)。 */
@@ -1 +1 @@
1
- {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/recovery/engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../../src/recovery/engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,49 @@
1
+ import { SnapshotDriver, SnapshotRef } from '../types.js';
2
+ export interface GitShadowDriverOptions {
3
+ execGitTimeoutMs?: number;
4
+ }
5
+ export declare class GitShadowSnapshotDriver implements SnapshotDriver {
6
+ readonly name = "git-shadow";
7
+ readonly coverage = "worktree_non_ignored";
8
+ private readonly timeoutMs;
9
+ private readonly snapshotRepos;
10
+ private readonly worktreeRepos;
11
+ constructor(options?: GitShadowDriverOptions);
12
+ private git;
13
+ assertGitRepo(cwd: string): Promise<{
14
+ repoRoot: string;
15
+ commonDir: string;
16
+ }>;
17
+ capture(roots: string[], options?: {
18
+ id?: string;
19
+ domainId?: string;
20
+ opId?: string;
21
+ includeIgnored?: boolean;
22
+ maxTreeSizeBytes?: number;
23
+ }): Promise<SnapshotRef>;
24
+ fingerprint(roots: string[], options?: {
25
+ against?: SnapshotRef;
26
+ }): Promise<string>;
27
+ restore(snapshot: SnapshotRef, _options?: {
28
+ force?: boolean;
29
+ }): Promise<{
30
+ unrestoredPaths: string[];
31
+ }>;
32
+ prune(snapshotIds: string[], options?: {
33
+ repoRoot?: string;
34
+ }): Promise<void>;
35
+ /**
36
+ * 从 linked worktree 自身反查所属仓库的 git common dir(不依赖进程内存映射,宿主重启后仍可用)
37
+ */
38
+ private resolveWorktreeCommonDir;
39
+ materialize(snapshotId: string, newRoot: string, options?: {
40
+ repoRoot?: string;
41
+ }): Promise<{
42
+ worktreePath: string;
43
+ }>;
44
+ dematerialize(newRoot: string, options?: {
45
+ force?: boolean;
46
+ repoRoot?: string;
47
+ }): Promise<void>;
48
+ }
49
+ //# sourceMappingURL=git-shadow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-shadow.d.ts","sourceRoot":"","sources":["../../src/snapshot/git-shadow.ts"],"names":[],"mappings":"AAKA,OAAO,EACL,cAAc,EACd,WAAW,EAEZ,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,sBAAsB;IACrC,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAUD,qBAAa,uBAAwB,YAAW,cAAc;IAC5D,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,QAAQ,0BAA0B;IAClD,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAChE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAkC;IAEhE,YAAY,OAAO,CAAC,EAAE,sBAAsB,EAE3C;YAEa,GAAG;IAmBJ,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAcxF;IAEY,OAAO,CAClB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,CAAC,EAAE;QACR,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,cAAc,CAAC,EAAE,OAAO,CAAC;QACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;KAC3B,GACA,OAAO,CAAC,WAAW,CAAC,CA+GtB;IAEY,WAAW,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,WAAW,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CA6C9F;IAEY,OAAO,CAClB,QAAQ,EAAE,WAAW,EACrB,QAAQ,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,GAC7B,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAyGxC;IAEY,KAAK,CAAC,WAAW,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBxF;IAED;;OAEG;YACW,wBAAwB;IAMzB,WAAW,CACtB,UAAU,EAAE,MAAM,EAClB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9B,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAYnC;IAEY,aAAa,CACxB,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,OAAO,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/C,OAAO,CAAC,IAAI,CAAC,CA2Bf;CACF"}