@xioflow/kernel 0.1.5 → 0.3.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 (46) hide show
  1. package/README.md +50 -5
  2. package/dist/domain.d.ts +60 -6
  3. package/dist/domain.d.ts.map +1 -1
  4. package/dist/domain.js +405 -24
  5. package/dist/domain.js.map +1 -1
  6. package/dist/driver/node-driver.d.ts +10 -24
  7. package/dist/driver/node-driver.d.ts.map +1 -1
  8. package/dist/driver/node-driver.js +201 -280
  9. package/dist/driver/node-driver.js.map +1 -1
  10. package/dist/driver/process-facts.d.ts +25 -0
  11. package/dist/driver/process-facts.d.ts.map +1 -0
  12. package/dist/driver/process-facts.js +164 -0
  13. package/dist/driver/process-facts.js.map +1 -0
  14. package/dist/driver/sampler.d.ts +51 -0
  15. package/dist/driver/sampler.d.ts.map +1 -0
  16. package/dist/driver/sampler.js +224 -0
  17. package/dist/driver/sampler.js.map +1 -0
  18. package/dist/driver/types.d.ts +21 -1
  19. package/dist/driver/types.d.ts.map +1 -1
  20. package/dist/index.d.ts +1 -0
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/quick-run.d.ts +27 -0
  25. package/dist/quick-run.d.ts.map +1 -0
  26. package/dist/quick-run.js +82 -0
  27. package/dist/quick-run.js.map +1 -0
  28. package/dist/recovery/engine.d.ts.map +1 -1
  29. package/dist/recovery/engine.js +103 -19
  30. package/dist/recovery/engine.js.map +1 -1
  31. package/dist/store/sqlite.d.ts +15 -0
  32. package/dist/store/sqlite.d.ts.map +1 -1
  33. package/dist/store/sqlite.js +210 -12
  34. package/dist/store/sqlite.js.map +1 -1
  35. package/dist/supervisor/supervisor.d.ts +16 -0
  36. package/dist/supervisor/supervisor.d.ts.map +1 -1
  37. package/dist/supervisor/supervisor.js +820 -308
  38. package/dist/supervisor/supervisor.js.map +1 -1
  39. package/dist/testing/contract-suite.d.ts.map +1 -1
  40. package/dist/testing/contract-suite.js +479 -11
  41. package/dist/testing/contract-suite.js.map +1 -1
  42. package/dist/types.d.ts +54 -0
  43. package/dist/types.d.ts.map +1 -1
  44. package/dist/types.js +59 -0
  45. package/dist/types.js.map +1 -1
  46. package/package.json +2 -2
@@ -2,44 +2,30 @@ import { PlatformDriver, PlatformCapabilities, StructuredCommand, ManagedProcess
2
2
  import { IdentityVerificationResult } from '../types.js';
3
3
  export declare class NodePlatformDriver implements PlatformDriver {
4
4
  readonly name = "node-default";
5
+ private cachedBootId;
6
+ private sampler;
7
+ readBootId(): Promise<string | null>;
8
+ getGroupEvidence(pgid: number): Promise<{
9
+ pid: number;
10
+ startTimeMs: number | null;
11
+ }[]>;
5
12
  readonly capabilities: PlatformCapabilities;
6
13
  private activeHandles;
7
14
  private cumulativeDescendantsMap;
8
- private descendantPollers;
15
+ private pollerTimer;
9
16
  spawn(command: StructuredCommand): Promise<ManagedProcessHandle>;
17
+ private ensureSharedPoller;
18
+ private stopSharedPoller;
10
19
  verifyIdentity(identity: ProcessIdentity): Promise<IdentityVerificationResult>;
11
20
  terminate(identity: ProcessIdentity, graceMs?: number): Promise<StopProcessResult>;
12
- /**
13
- * 崩溃恢复专用:leader 已经死了(通常是 SIGKILL 后的僵尸),但组里可能还有后代
14
- * 进程活着。这些进程没有任何 owner,唯一诚实的处置是按 pgid 定向清场,并在返回前
15
- * 确认组已经空了——否则残留进程会被继续留在这个域里。
16
- */
17
21
  terminateGroup(pgid: number, graceMs?: number): Promise<StopProcessResult>;
18
22
  sampleMetrics(identity: ProcessIdentity): Promise<{
19
23
  rssBytes: number;
20
24
  pidsCount: number;
21
25
  cpuTimeMs: number;
22
26
  }>;
23
- getProcessTree(leaderPid: number): {
24
- allDescendants: number[];
25
- inGroupDescendants: number[];
26
- escapedDescendants: number[];
27
- };
28
- private getAllProcesses;
29
27
  private isPidAlive;
30
- /**
31
- * 崩溃恢复的判定依据:进程组里是否还有**真正能工作**的进程。
32
- *
33
- * SIGKILL 掉的 leader 会以僵尸形态留在组里,`kill(-pgid, 0)` 因此永远为真。
34
- * 只按 PID 存在与否判断会让恢复永远无法确认"组已清空",孤儿进程也就永远得不到
35
- * 处置。这里按 ps 的进程状态把僵尸排除掉。
36
- */
37
- private isGroupAlive;
38
- /** pid → { pid, pgid, state } snapshot from `ps -A`; state is one letter (R/S/T/Z/…). */
39
- private processTable;
40
- private isZombie;
41
28
  private sendSignalToGroup;
42
29
  private waitForGroupAndPids;
43
- private parseCpuTimeToMs;
44
30
  }
45
31
  //# sourceMappingURL=node-driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"node-driver.d.ts","sourceRoot":"","sources":["../../src/driver/node-driver.ts"],"names":[],"mappings":"AACA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAEzD,qBAAa,kBAAmB,YAAW,cAAc;IACvD,SAAgB,IAAI,kBAAkB;IACtC,SAAgB,YAAY,EAAE,oBAAoB,CAUhD;IAGF,OAAO,CAAC,aAAa,CACT;IAEZ,OAAO,CAAC,wBAAwB,CAAuC;IAEvE,OAAO,CAAC,iBAAiB,CAA0C;IAEtD,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyH5E;IAEY,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAqC1F;IAEY,SAAS,CACpB,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,iBAAiB,CAAC,CA8D5B;IAED;;;;OAIG;IACU,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAgC5F;IAEY,aAAa,CACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAwCrE;IAEM,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG;QACxC,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,kBAAkB,EAAE,MAAM,EAAE,CAAC;QAC7B,kBAAkB,EAAE,MAAM,EAAE,CAAC;KAC9B,CA2EA;IAED,OAAO,CAAC,eAAe;IA2BvB,OAAO,CAAC,UAAU;IASlB;;;;;;OAMG;IACH,OAAO,CAAC,YAAY;IAcpB,yFAAyF;IACzF,OAAO,CAAC,YAAY;IAmBpB,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,iBAAiB;YAUX,mBAAmB;IAuBjC,OAAO,CAAC,gBAAgB;CAgCzB"}
1
+ {"version":3,"file":"node-driver.d.ts","sourceRoot":"","sources":["../../src/driver/node-driver.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,cAAc,EACd,oBAAoB,EACpB,iBAAiB,EACjB,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAyBzD,qBAAa,kBAAmB,YAAW,cAAc;IACvD,SAAgB,IAAI,kBAAkB;IACtC,OAAO,CAAC,YAAY,CAAwC;IAC5D,OAAO,CAAC,OAAO,CAAgD;IAElD,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAEhD;IAEY,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,EAAE,CAAC,CAElG;IAED,SAAgB,YAAY,EAAE,oBAAoB,CAahD;IAGF,OAAO,CAAC,aAAa,CACT;IAEZ,OAAO,CAAC,wBAAwB,CAAuC;IACvE,OAAO,CAAC,WAAW,CAA+B;IAErC,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA4J5E;IAED,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IAOX,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAyD1F;IAEY,SAAS,CACpB,QAAQ,EAAE,eAAe,EACzB,OAAO,GAAE,MAAa,GACrB,OAAO,CAAC,iBAAiB,CAAC,CAsE5B;IAEY,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAkC5F;IAEY,aAAa,CACxB,QAAQ,EAAE,eAAe,GACxB,OAAO,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAWrE;IAED,OAAO,CAAC,UAAU;IASlB,OAAO,CAAC,iBAAiB;YAaX,mBAAmB;CAwBlC"}