@xioflow/kernel 0.3.0 → 0.5.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 (165) hide show
  1. package/README.md +174 -15
  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/cli.d.ts +3 -0
  15. package/dist/cli.d.ts.map +1 -0
  16. package/dist/cli.js +94 -0
  17. package/dist/cli.js.map +1 -0
  18. package/dist/confinement/bubblewrap.d.ts +8 -0
  19. package/dist/confinement/bubblewrap.d.ts.map +1 -0
  20. package/dist/confinement/bubblewrap.js +45 -0
  21. package/dist/confinement/bubblewrap.js.map +1 -0
  22. package/dist/confinement/detector.d.ts +4 -0
  23. package/dist/confinement/detector.d.ts.map +1 -0
  24. package/dist/confinement/detector.js +35 -0
  25. package/dist/confinement/detector.js.map +1 -0
  26. package/dist/confinement/index.d.ts +5 -0
  27. package/dist/confinement/index.d.ts.map +1 -0
  28. package/dist/confinement/index.js +5 -0
  29. package/dist/confinement/index.js.map +1 -0
  30. package/dist/confinement/sandbox-exec.d.ts +8 -0
  31. package/dist/confinement/sandbox-exec.d.ts.map +1 -0
  32. package/dist/confinement/sandbox-exec.js +30 -0
  33. package/dist/confinement/sandbox-exec.js.map +1 -0
  34. package/dist/confinement/srt.d.ts +8 -0
  35. package/dist/confinement/srt.d.ts.map +1 -0
  36. package/dist/confinement/srt.js +41 -0
  37. package/dist/confinement/srt.js.map +1 -0
  38. package/dist/domain.d.ts +26 -2
  39. package/dist/domain.d.ts.map +1 -1
  40. package/dist/domain.js +192 -18
  41. package/dist/domain.js.map +1 -1
  42. package/dist/driver/node-driver.d.ts.map +1 -1
  43. package/dist/driver/node-driver.js +42 -61
  44. package/dist/driver/node-driver.js.map +1 -1
  45. package/dist/driver/reaper-driver.d.ts +62 -0
  46. package/dist/driver/reaper-driver.d.ts.map +1 -0
  47. package/dist/driver/reaper-driver.js +371 -0
  48. package/dist/driver/reaper-driver.js.map +1 -0
  49. package/dist/driver/spawn-support.d.ts +4 -0
  50. package/dist/driver/spawn-support.d.ts.map +1 -0
  51. package/dist/driver/spawn-support.js +31 -0
  52. package/dist/driver/spawn-support.js.map +1 -0
  53. package/dist/driver/types.d.ts +19 -2
  54. package/dist/driver/types.d.ts.map +1 -1
  55. package/dist/fault/crashpoint.d.ts +8 -0
  56. package/dist/fault/crashpoint.d.ts.map +1 -0
  57. package/dist/fault/crashpoint.js +37 -0
  58. package/dist/fault/crashpoint.js.map +1 -0
  59. package/dist/index.d.ts +9 -0
  60. package/dist/index.d.ts.map +1 -1
  61. package/dist/index.js +6 -0
  62. package/dist/index.js.map +1 -1
  63. package/dist/mcp/server.d.ts +49 -0
  64. package/dist/mcp/server.d.ts.map +1 -0
  65. package/dist/mcp/server.js +233 -0
  66. package/dist/mcp/server.js.map +1 -0
  67. package/dist/mcp/tools.d.ts +32 -0
  68. package/dist/mcp/tools.d.ts.map +1 -0
  69. package/dist/mcp/tools.js +255 -0
  70. package/dist/mcp/tools.js.map +1 -0
  71. package/dist/native/darwin-arm64/xioflow-reaper +0 -0
  72. package/dist/native/darwin-x64/xioflow-reaper +0 -0
  73. package/dist/native/linux-arm64/xioflow-reaper +0 -0
  74. package/dist/native/linux-x64/xioflow-reaper +0 -0
  75. package/dist/otel/otlp.d.ts +37 -0
  76. package/dist/otel/otlp.d.ts.map +1 -0
  77. package/dist/otel/otlp.js +224 -0
  78. package/dist/otel/otlp.js.map +1 -0
  79. package/dist/quick-run.d.ts.map +1 -1
  80. package/dist/quick-run.js +5 -12
  81. package/dist/quick-run.js.map +1 -1
  82. package/dist/recovery/engine.d.ts +7 -0
  83. package/dist/recovery/engine.d.ts.map +1 -1
  84. package/dist/recovery/engine.js +176 -4
  85. package/dist/recovery/engine.js.map +1 -1
  86. package/dist/snapshot/git-shadow.d.ts +57 -0
  87. package/dist/snapshot/git-shadow.d.ts.map +1 -0
  88. package/dist/snapshot/git-shadow.js +364 -0
  89. package/dist/snapshot/git-shadow.js.map +1 -0
  90. package/dist/store/schema.d.ts +1 -1
  91. package/dist/store/schema.d.ts.map +1 -1
  92. package/dist/store/schema.js +31 -0
  93. package/dist/store/schema.js.map +1 -1
  94. package/dist/store/sqlite.d.ts +14 -1
  95. package/dist/store/sqlite.d.ts.map +1 -1
  96. package/dist/store/sqlite.js +150 -58
  97. package/dist/store/sqlite.js.map +1 -1
  98. package/dist/supervisor/admission.d.ts +26 -0
  99. package/dist/supervisor/admission.d.ts.map +1 -0
  100. package/dist/supervisor/admission.js +98 -0
  101. package/dist/supervisor/admission.js.map +1 -0
  102. package/dist/supervisor/drainer.d.ts +17 -0
  103. package/dist/supervisor/drainer.d.ts.map +1 -0
  104. package/dist/supervisor/drainer.js +200 -0
  105. package/dist/supervisor/drainer.js.map +1 -0
  106. package/dist/supervisor/finalize.d.ts +21 -0
  107. package/dist/supervisor/finalize.d.ts.map +1 -0
  108. package/dist/supervisor/finalize.js +66 -0
  109. package/dist/supervisor/finalize.js.map +1 -0
  110. package/dist/supervisor/fingerprint.d.ts +8 -0
  111. package/dist/supervisor/fingerprint.d.ts.map +1 -0
  112. package/dist/supervisor/fingerprint.js +54 -0
  113. package/dist/supervisor/fingerprint.js.map +1 -0
  114. package/dist/supervisor/process-monitor.d.ts +9 -0
  115. package/dist/supervisor/process-monitor.d.ts.map +1 -0
  116. package/dist/supervisor/process-monitor.js +230 -0
  117. package/dist/supervisor/process-monitor.js.map +1 -0
  118. package/dist/supervisor/process-output.d.ts +27 -0
  119. package/dist/supervisor/process-output.d.ts.map +1 -0
  120. package/dist/supervisor/process-output.js +102 -0
  121. package/dist/supervisor/process-output.js.map +1 -0
  122. package/dist/supervisor/process-run.d.ts +30 -0
  123. package/dist/supervisor/process-run.d.ts.map +1 -0
  124. package/dist/supervisor/process-run.js +191 -0
  125. package/dist/supervisor/process-run.js.map +1 -0
  126. package/dist/supervisor/replay.d.ts +14 -0
  127. package/dist/supervisor/replay.d.ts.map +1 -0
  128. package/dist/supervisor/replay.js +70 -0
  129. package/dist/supervisor/replay.js.map +1 -0
  130. package/dist/supervisor/rollback.d.ts +8 -0
  131. package/dist/supervisor/rollback.d.ts.map +1 -0
  132. package/dist/supervisor/rollback.js +153 -0
  133. package/dist/supervisor/rollback.js.map +1 -0
  134. package/dist/supervisor/service.d.ts +24 -0
  135. package/dist/supervisor/service.d.ts.map +1 -0
  136. package/dist/supervisor/service.js +588 -0
  137. package/dist/supervisor/service.js.map +1 -0
  138. package/dist/supervisor/snapshot-ops.d.ts +36 -0
  139. package/dist/supervisor/snapshot-ops.d.ts.map +1 -0
  140. package/dist/supervisor/snapshot-ops.js +243 -0
  141. package/dist/supervisor/snapshot-ops.js.map +1 -0
  142. package/dist/supervisor/supervisor.d.ts +62 -30
  143. package/dist/supervisor/supervisor.d.ts.map +1 -1
  144. package/dist/supervisor/supervisor.js +164 -842
  145. package/dist/supervisor/supervisor.js.map +1 -1
  146. package/dist/supervisor/types.d.ts +64 -0
  147. package/dist/supervisor/types.d.ts.map +1 -0
  148. package/dist/supervisor/types.js +2 -0
  149. package/dist/supervisor/types.js.map +1 -0
  150. package/dist/testing/contract-suite.d.ts.map +1 -1
  151. package/dist/testing/contract-suite.js +619 -12
  152. package/dist/testing/contract-suite.js.map +1 -1
  153. package/dist/types.d.ts +161 -3
  154. package/dist/types.d.ts.map +1 -1
  155. package/dist/types.js +8 -0
  156. package/dist/types.js.map +1 -1
  157. package/dist/workspace/read-tracking.d.ts +23 -0
  158. package/dist/workspace/read-tracking.d.ts.map +1 -0
  159. package/dist/workspace/read-tracking.js +66 -0
  160. package/dist/workspace/read-tracking.js.map +1 -0
  161. package/dist/workspace/transactions.d.ts +89 -0
  162. package/dist/workspace/transactions.d.ts.map +1 -0
  163. package/dist/workspace/transactions.js +277 -0
  164. package/dist/workspace/transactions.js.map +1 -0
  165. package/package.json +8 -2
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/driver/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/driver/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const crashpointsEnabled: boolean;
2
+ export declare function crashpoint(label: string): void;
3
+ /**
4
+ * 以调用栈里开启事务的函数名作为崩溃点标签(仅在启用时解析调用栈)。
5
+ * 例如 `SqliteStore.recordOperationResult`、`captureSnapshot`。
6
+ */
7
+ export declare function callerLabel(depth: number): string;
8
+ //# sourceMappingURL=crashpoint.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crashpoint.d.ts","sourceRoot":"","sources":["../../src/fault/crashpoint.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,kBAAkB,SAA+B,CAAC;AAE/D,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAO9C;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAKjD"}
@@ -0,0 +1,37 @@
1
+ import fs from 'node:fs';
2
+ /**
3
+ * 崩溃点故障注入(测试专用)。
4
+ *
5
+ * 只在设置了以下环境变量之一时生效,否则 crashpoint() 是一次布尔判断:
6
+ * - XIOFLOW_TEST_CRASHPOINT_TRACE=<file>:把经过的每个崩溃点 id 逐行追加到文件(发现阶段);
7
+ * - XIOFLOW_TEST_CRASHPOINT=<id>:到达该 id 时向自身发送 SIGKILL(注入阶段)。
8
+ *
9
+ * id 形如 `<label>#<第几次到达>`。SIGKILL 不执行任何 finally / exit 钩子,与真实崩溃等价;
10
+ * 故障注入矩阵见 tests/fault/crash-matrix.test.ts。
11
+ */
12
+ const target = process.env.XIOFLOW_TEST_CRASHPOINT;
13
+ const tracePath = process.env.XIOFLOW_TEST_CRASHPOINT_TRACE;
14
+ const seen = new Map();
15
+ export const crashpointsEnabled = Boolean(target || tracePath);
16
+ export function crashpoint(label) {
17
+ if (!crashpointsEnabled)
18
+ return;
19
+ const n = (seen.get(label) ?? 0) + 1;
20
+ seen.set(label, n);
21
+ const id = `${label}#${n}`;
22
+ if (tracePath)
23
+ fs.appendFileSync(tracePath, `${id}\n`);
24
+ if (id === target)
25
+ process.kill(process.pid, 'SIGKILL');
26
+ }
27
+ /**
28
+ * 以调用栈里开启事务的函数名作为崩溃点标签(仅在启用时解析调用栈)。
29
+ * 例如 `SqliteStore.recordOperationResult`、`captureSnapshot`。
30
+ */
31
+ export function callerLabel(depth) {
32
+ const frames = (new Error().stack ?? '').split('\n').slice(1);
33
+ const frame = frames[depth] ?? '';
34
+ const match = /at (?:async )?([^\s(]+)/.exec(frame);
35
+ return match ? match[1] : 'unknown';
36
+ }
37
+ //# sourceMappingURL=crashpoint.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"crashpoint.js","sourceRoot":"","sources":["../../src/fault/crashpoint.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAEzB;;;;;;;;;GASG;AACH,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;AACnD,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,6BAA6B,CAAC;AAC5D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAkB,CAAC;AAEvC,MAAM,CAAC,MAAM,kBAAkB,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,CAAC;AAE/D,MAAM,UAAU,UAAU,CAAC,KAAa;IACtC,IAAI,CAAC,kBAAkB;QAAE,OAAO;IAChC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;IACnB,MAAM,EAAE,GAAG,GAAG,KAAK,IAAI,CAAC,EAAE,CAAC;IAC3B,IAAI,SAAS;QAAE,EAAE,CAAC,cAAc,CAAC,SAAS,EAAE,GAAG,EAAE,IAAI,CAAC,CAAC;IACvD,IAAI,EAAE,KAAK,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC1D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,KAAa;IACvC,MAAM,MAAM,GAAG,CAAC,IAAI,KAAK,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,yBAAyB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACtC,CAAC"}
package/dist/index.d.ts CHANGED
@@ -4,7 +4,16 @@ export * from './store/schema.js';
4
4
  export * from './store/sqlite.js';
5
5
  export * from './driver/types.js';
6
6
  export * from './driver/node-driver.js';
7
+ export * from './driver/reaper-driver.js';
7
8
  export * from './supervisor/supervisor.js';
8
9
  export * from './recovery/engine.js';
9
10
  export * from './quick-run.js';
11
+ export * from './snapshot/git-shadow.js';
12
+ export type { CommitResult, TransactionConflict, TransactionEffects, WorkspaceTransaction, WriteEntry, } from './workspace/transactions.js';
13
+ export type { ReadTracking } from './workspace/read-tracking.js';
14
+ export * from './capability/index.js';
15
+ export * from './confinement/index.js';
16
+ export * from './otel/otlp.js';
17
+ export { KernelMcpServer, SUPPORTED_PROTOCOL_VERSIONS } from './mcp/server.js';
18
+ export type { KernelMcpServerOptions } from './mcp/server.js';
10
19
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AACzC,YAAY,EACV,YAAY,EACZ,mBAAmB,EACnB,kBAAkB,EAClB,oBAAoB,EACpB,UAAU,GACX,MAAM,6BAA6B,CAAC;AACrC,YAAY,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AACjE,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC;AAC/E,YAAY,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC"}
package/dist/index.js CHANGED
@@ -4,7 +4,13 @@ export * from './store/schema.js';
4
4
  export * from './store/sqlite.js';
5
5
  export * from './driver/types.js';
6
6
  export * from './driver/node-driver.js';
7
+ export * from './driver/reaper-driver.js';
7
8
  export * from './supervisor/supervisor.js';
8
9
  export * from './recovery/engine.js';
9
10
  export * from './quick-run.js';
11
+ export * from './snapshot/git-shadow.js';
12
+ export * from './capability/index.js';
13
+ export * from './confinement/index.js';
14
+ export * from './otel/otlp.js';
15
+ export { KernelMcpServer, SUPPORTED_PROTOCOL_VERSIONS } from './mcp/server.js';
10
16
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,yBAAyB,CAAC;AACxC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,0BAA0B,CAAC;AASzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,wBAAwB,CAAC;AACvC,cAAc,gBAAgB,CAAC;AAC/B,OAAO,EAAE,eAAe,EAAE,2BAA2B,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,49 @@
1
+ /**
2
+ * MCP server(stdio,JSON-RPC 2.0,每行一条消息),零依赖。
3
+ *
4
+ * 启动顺序遵循「先恢复、再执行」(ARCHITECTURE §3.2):获取域、运行恢复引擎,然后才响应请求。
5
+ * stdout 只写协议消息;日志写 stderr。支持 progress 通知(请求带 progressToken 时转发输出块)
6
+ * 与 notifications/cancelled(取消对应的 run_command 操作,走标准停止流水线)。
7
+ */
8
+ export declare const SUPPORTED_PROTOCOL_VERSIONS: string[];
9
+ export interface KernelMcpServerOptions {
10
+ domainPath: string;
11
+ domainId?: string;
12
+ /** 'auto':helper 可用时用 ReaperPlatformDriver,否则 NodePlatformDriver;实际选择写进 instructions 与每个结果。 */
13
+ driver?: 'auto' | 'node' | 'reaper';
14
+ input?: NodeJS.ReadableStream;
15
+ output?: NodeJS.WritableStream;
16
+ log?: (message: string) => void;
17
+ /** 工具结果中保留的 stdout / stderr 尾部字符数(完整输出见 stdoutRef / stderrRef)。 */
18
+ maxOutputChars?: number;
19
+ /** 周期性把 journal 导出为 OTLP traces;失败写日志且游标不前进,下个周期重试。 */
20
+ otlp?: {
21
+ endpoint: string;
22
+ headers?: Record<string, string>;
23
+ intervalMs?: number;
24
+ serviceName?: string;
25
+ };
26
+ }
27
+ export declare class KernelMcpServer {
28
+ private readonly options;
29
+ private readonly log;
30
+ private readonly output;
31
+ private domain?;
32
+ private supervisor?;
33
+ private driver?;
34
+ private instructions;
35
+ private readonly sessionTaskId;
36
+ /** requestId → 该请求启动的操作,用于 notifications/cancelled */
37
+ private readonly inFlight;
38
+ private readonly pending;
39
+ constructor(options: KernelMcpServerOptions);
40
+ /** 获取域并完成恢复后开始服务;输入流结束时等待在途请求、关闭域后返回。 */
41
+ serve(): Promise<void>;
42
+ /** 启动周期导出,返回「停止并最后导出一次」的函数;未配置时为空操作。 */
43
+ private startOtlpExport;
44
+ private handleLine;
45
+ private dispatch;
46
+ private callTool;
47
+ private send;
48
+ }
49
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AAEH,eAAO,MAAM,2BAA2B,UAA2D,CAAC;AAEpG,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,+FAA+F;IAC/F,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC,cAAc,CAAC;IAC/B,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAChC,mEAAmE;IACnE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,uDAAuD;IACvD,IAAI,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1G;AAkCD,qBAAa,eAAe;IAYd,OAAO,CAAC,QAAQ,CAAC,OAAO;IAXpC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAA4B;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAwB;IAC/C,OAAO,CAAC,MAAM,CAAC,CAAkB;IACjC,OAAO,CAAC,UAAU,CAAC,CAAoB;IACvC,OAAO,CAAC,MAAM,CAAC,CAAiB;IAChC,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAwC;IACtE,sDAAsD;IACtD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAA6B;IACtD,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA4B;IAEpD,YAA6B,OAAO,EAAE,sBAAsB,EAG3D;IAED,yCAAyC;IAC5B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CA2BlC;IAED,wCAAwC;IACxC,OAAO,CAAC,eAAe;YAuBT,UAAU;YA0BV,QAAQ;YAwCR,QAAQ;IA0CtB,OAAO,CAAC,IAAI;CAGb"}
@@ -0,0 +1,233 @@
1
+ import crypto from 'node:crypto';
2
+ import fs from 'node:fs';
3
+ import path from 'node:path';
4
+ import readline from 'node:readline';
5
+ import { fileURLToPath } from 'node:url';
6
+ import { ExecutionDomain } from '../domain.js';
7
+ import { NodePlatformDriver } from '../driver/node-driver.js';
8
+ import { ReaperPlatformDriver } from '../driver/reaper-driver.js';
9
+ import { RecoveryEngine } from '../recovery/engine.js';
10
+ import { exportJournalToOtlp } from '../otel/otlp.js';
11
+ import { ProcessSupervisor } from '../supervisor/supervisor.js';
12
+ import { TOOLS } from './tools.js';
13
+ /**
14
+ * MCP server(stdio,JSON-RPC 2.0,每行一条消息),零依赖。
15
+ *
16
+ * 启动顺序遵循「先恢复、再执行」(ARCHITECTURE §3.2):获取域、运行恢复引擎,然后才响应请求。
17
+ * stdout 只写协议消息;日志写 stderr。支持 progress 通知(请求带 progressToken 时转发输出块)
18
+ * 与 notifications/cancelled(取消对应的 run_command 操作,走标准停止流水线)。
19
+ */
20
+ export const SUPPORTED_PROTOCOL_VERSIONS = ['2025-11-25', '2025-06-18', '2025-03-26', '2024-11-05'];
21
+ class RpcError extends Error {
22
+ code;
23
+ constructor(code, message) {
24
+ super(message);
25
+ this.code = code;
26
+ }
27
+ }
28
+ function packageVersion() {
29
+ try {
30
+ const pkg = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '../../package.json');
31
+ return JSON.parse(fs.readFileSync(pkg, 'utf8')).version ?? 'unknown';
32
+ }
33
+ catch {
34
+ return 'unknown';
35
+ }
36
+ }
37
+ function selectDriver(choice) {
38
+ if (choice === 'node')
39
+ return new NodePlatformDriver();
40
+ if (choice === 'reaper')
41
+ return new ReaperPlatformDriver();
42
+ return ReaperPlatformDriver.isAvailable() ? new ReaperPlatformDriver() : new NodePlatformDriver();
43
+ }
44
+ export class KernelMcpServer {
45
+ options;
46
+ log;
47
+ output;
48
+ domain;
49
+ supervisor;
50
+ driver;
51
+ instructions = '';
52
+ sessionTaskId = `mcp-session-${crypto.randomUUID()}`;
53
+ /** requestId → 该请求启动的操作,用于 notifications/cancelled */
54
+ inFlight = new Map();
55
+ pending = new Set();
56
+ constructor(options) {
57
+ this.options = options;
58
+ this.log = options.log ?? ((m) => process.stderr.write(`[xioflow-mcp] ${m}\n`));
59
+ this.output = options.output ?? process.stdout;
60
+ }
61
+ /** 获取域并完成恢复后开始服务;输入流结束时等待在途请求、关闭域后返回。 */
62
+ async serve() {
63
+ this.driver = selectDriver(this.options.driver);
64
+ this.domain = ExecutionDomain.acquire(this.options.domainPath, this.options.domainId ?? 'default');
65
+ try {
66
+ const report = await new RecoveryEngine(this.domain, this.driver).recover();
67
+ const isolated = report.recoveredOperations.filter((r) => r.action === 'isolated_indeterminate').length;
68
+ this.log(`domain ${this.options.domainPath} recovered ${report.recoveredOperations.length} operation(s), ${isolated} isolated as indeterminate`);
69
+ this.supervisor = new ProcessSupervisor(this.domain, this.driver);
70
+ this.instructions =
71
+ `xioflow kernel ${packageVersion()} with the ${this.driver.name} driver. ` +
72
+ 'Use run_command instead of a plain shell when you need to know for sure what happened: reuse an opId to retry without running twice, ' +
73
+ 'and treat "indeterminate" as "stop and ask a human", never as success or failure. ' +
74
+ 'Use begin_transaction / commit_transaction when several agents edit the same repository.';
75
+ const stopExport = this.startOtlpExport();
76
+ const lines = readline.createInterface({ input: this.options.input ?? process.stdin, crlfDelay: Infinity });
77
+ for await (const line of lines) {
78
+ if (!line.trim())
79
+ continue;
80
+ const work = this.handleLine(line).catch((err) => this.log(`unhandled: ${err?.stack ?? err}`));
81
+ this.pending.add(work);
82
+ void work.finally(() => this.pending.delete(work));
83
+ }
84
+ await Promise.allSettled([...this.pending]);
85
+ await stopExport();
86
+ }
87
+ finally {
88
+ this.domain.close();
89
+ }
90
+ }
91
+ /** 启动周期导出,返回「停止并最后导出一次」的函数;未配置时为空操作。 */
92
+ startOtlpExport() {
93
+ const otlp = this.options.otlp;
94
+ if (!otlp)
95
+ return async () => { };
96
+ let fromSeq = 0;
97
+ let running = Promise.resolve();
98
+ const exportOnce = () => (running = running.then(async () => {
99
+ try {
100
+ const res = await exportJournalToOtlp(this.domain, { ...otlp, fromSeq });
101
+ fromSeq = res.nextSeq;
102
+ if (res.spanCount > 0)
103
+ this.log(`exported ${res.spanCount} span(s) to ${otlp.endpoint}`);
104
+ }
105
+ catch (err) {
106
+ this.log(`OTLP export failed (will retry): ${err?.message ?? err}`);
107
+ }
108
+ }));
109
+ const timer = setInterval(exportOnce, otlp.intervalMs ?? 5000);
110
+ timer.unref();
111
+ return async () => {
112
+ clearInterval(timer);
113
+ await exportOnce();
114
+ };
115
+ }
116
+ async handleLine(line) {
117
+ let msg;
118
+ try {
119
+ msg = JSON.parse(line);
120
+ }
121
+ catch {
122
+ this.send({ jsonrpc: '2.0', id: null, error: { code: -32700, message: 'Parse error' } });
123
+ return;
124
+ }
125
+ if (typeof msg.method !== 'string') {
126
+ if (msg.id !== undefined)
127
+ this.log(`ignoring response to request ${String(msg.id)}`);
128
+ return;
129
+ }
130
+ const isNotification = msg.id === undefined || msg.id === null;
131
+ try {
132
+ const result = await this.dispatch(msg.method, msg.params ?? {}, msg.id ?? undefined);
133
+ if (!isNotification)
134
+ this.send({ jsonrpc: '2.0', id: msg.id, result });
135
+ }
136
+ catch (err) {
137
+ if (isNotification) {
138
+ this.log(`notification ${msg.method} failed: ${err?.message ?? err}`);
139
+ return;
140
+ }
141
+ const code = err instanceof RpcError ? err.code : -32603;
142
+ this.send({ jsonrpc: '2.0', id: msg.id, error: { code, message: err?.message ?? String(err) } });
143
+ }
144
+ }
145
+ async dispatch(method, params, id) {
146
+ switch (method) {
147
+ case 'initialize': {
148
+ const requested = typeof params.protocolVersion === 'string' ? params.protocolVersion : '';
149
+ return {
150
+ protocolVersion: SUPPORTED_PROTOCOL_VERSIONS.includes(requested) ? requested : SUPPORTED_PROTOCOL_VERSIONS[0],
151
+ capabilities: { tools: { listChanged: false } },
152
+ serverInfo: { name: 'xioflow-kernel', title: 'xioflow supervised execution kernel', version: packageVersion() },
153
+ instructions: this.instructions,
154
+ };
155
+ }
156
+ case 'notifications/initialized':
157
+ return undefined;
158
+ case 'ping':
159
+ return {};
160
+ case 'tools/list':
161
+ return {
162
+ tools: TOOLS.map(({ name, title, description, inputSchema, annotations }) => ({
163
+ name,
164
+ title,
165
+ description,
166
+ inputSchema,
167
+ annotations,
168
+ })),
169
+ };
170
+ case 'tools/call':
171
+ return this.callTool(params, id);
172
+ case 'notifications/cancelled': {
173
+ const opId = this.inFlight.get(String(params.requestId));
174
+ if (opId) {
175
+ this.log(`request ${params.requestId} cancelled by client (${params.reason ?? 'no reason'}), stopping ${opId}`);
176
+ await this.supervisor.cancelOperation(opId).catch((err) => this.log(`cancel ${opId}: ${err.message}`));
177
+ }
178
+ return undefined;
179
+ }
180
+ default:
181
+ throw new RpcError(-32601, `Method not found: ${method}`);
182
+ }
183
+ }
184
+ async callTool(params, id) {
185
+ const tool = TOOLS.find((t) => t.name === params?.name);
186
+ if (!tool)
187
+ throw new RpcError(-32602, `Unknown tool: ${params?.name}`);
188
+ const args = params.arguments ?? {};
189
+ const missing = (tool.inputSchema.required ?? []).filter((k) => args[k] === undefined);
190
+ if (missing.length > 0)
191
+ throw new RpcError(-32602, `${tool.name}: missing required argument(s) ${missing.join(', ')}`);
192
+ const progressToken = params._meta?.progressToken;
193
+ let progress = 0;
194
+ const ctx = {
195
+ domain: this.domain,
196
+ supervisor: this.supervisor,
197
+ driverName: this.driver.name,
198
+ sessionTaskId: this.sessionTaskId,
199
+ maxOutputChars: this.options.maxOutputChars ?? 16_000,
200
+ bindOperation: (opId) => {
201
+ if (id !== undefined)
202
+ this.inFlight.set(String(id), opId);
203
+ },
204
+ onChunk: progressToken === undefined
205
+ ? undefined
206
+ : (stream, chunk) => {
207
+ progress += chunk.length;
208
+ this.send({
209
+ jsonrpc: '2.0',
210
+ method: 'notifications/progress',
211
+ params: { progressToken, progress, message: `[${stream}] ${chunk.toString('utf8').slice(0, 2000)}` },
212
+ });
213
+ },
214
+ };
215
+ try {
216
+ const result = await tool.call(ctx, args);
217
+ return { content: [{ type: 'text', text: JSON.stringify(result, null, 2) }], structuredContent: result, isError: false };
218
+ }
219
+ catch (err) {
220
+ // 工具执行失败是结果的一部分(MCP 约定),让模型看到原因而不是协议错误
221
+ const error = { error: err?.name ?? 'Error', message: err?.message ?? String(err) };
222
+ return { content: [{ type: 'text', text: JSON.stringify(error, null, 2) }], structuredContent: error, isError: true };
223
+ }
224
+ finally {
225
+ if (id !== undefined)
226
+ this.inFlight.delete(String(id));
227
+ }
228
+ }
229
+ send(message) {
230
+ this.output.write(`${JSON.stringify(message)}\n`);
231
+ }
232
+ }
233
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ import { ExecutionDomain } from '../domain.js';
2
+ import { ProcessSupervisor } from '../supervisor/supervisor.js';
3
+ /**
4
+ * MCP 工具:把内核原语暴露给任意 MCP 客户端(agent 框架、IDE、CLI agent)。
5
+ * 刻意不暴露 adjudicate:indeterminate 的出口是人工裁决,不交给模型。
6
+ */
7
+ export interface ToolContext {
8
+ domain: ExecutionDomain;
9
+ supervisor: ProcessSupervisor;
10
+ driverName: string;
11
+ sessionTaskId: string;
12
+ maxOutputChars: number;
13
+ /** 当前请求的流式输出回调(客户端带 progressToken 时才有)。 */
14
+ onChunk?: (stream: 'stdout' | 'stderr', chunk: Buffer) => void;
15
+ /** 把 opId 绑定到当前请求,使 notifications/cancelled 能取消它。 */
16
+ bindOperation(opId: string): void;
17
+ }
18
+ export interface ToolDefinition {
19
+ name: string;
20
+ title: string;
21
+ description: string;
22
+ inputSchema: Record<string, unknown>;
23
+ annotations: {
24
+ readOnlyHint?: boolean;
25
+ destructiveHint?: boolean;
26
+ idempotentHint?: boolean;
27
+ openWorldHint?: boolean;
28
+ };
29
+ call(ctx: ToolContext, args: Record<string, any>): Promise<Record<string, unknown>>;
30
+ }
31
+ export declare const TOOLS: ToolDefinition[];
32
+ //# sourceMappingURL=tools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAGhE;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,eAAe,CAAC;IACxB,UAAU,EAAE,iBAAiB,CAAC;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;IACvB,2CAA2C;IAC3C,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,KAAK,EAAE,MAAM,KAAK,IAAI,CAAC;IAC/D,qDAAqD;IACrD,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,WAAW,EAAE;QAAE,YAAY,CAAC,EAAE,OAAO,CAAC;QAAC,eAAe,CAAC,EAAE,OAAO,CAAC;QAAC,cAAc,CAAC,EAAE,OAAO,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;IACtH,IAAI,CAAC,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;CACrF;AA4ED,eAAO,MAAM,KAAK,EAAE,cAAc,EA4LjC,CAAC"}