@xioflow/kernel 0.4.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.
- package/README.md +95 -3
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +94 -0
- package/dist/cli.js.map +1 -0
- package/dist/driver/node-driver.d.ts.map +1 -1
- package/dist/driver/node-driver.js +1 -30
- package/dist/driver/node-driver.js.map +1 -1
- package/dist/driver/reaper-driver.d.ts +62 -0
- package/dist/driver/reaper-driver.d.ts.map +1 -0
- package/dist/driver/reaper-driver.js +371 -0
- package/dist/driver/reaper-driver.js.map +1 -0
- package/dist/driver/spawn-support.d.ts +4 -0
- package/dist/driver/spawn-support.d.ts.map +1 -0
- package/dist/driver/spawn-support.js +31 -0
- package/dist/driver/spawn-support.js.map +1 -0
- package/dist/driver/types.d.ts +6 -2
- package/dist/driver/types.d.ts.map +1 -1
- package/dist/fault/crashpoint.d.ts +8 -0
- package/dist/fault/crashpoint.d.ts.map +1 -0
- package/dist/fault/crashpoint.js +37 -0
- package/dist/fault/crashpoint.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/mcp/server.d.ts +49 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +233 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/tools.d.ts +32 -0
- package/dist/mcp/tools.d.ts.map +1 -0
- package/dist/mcp/tools.js +255 -0
- package/dist/mcp/tools.js.map +1 -0
- package/dist/native/darwin-arm64/xioflow-reaper +0 -0
- package/dist/native/darwin-x64/xioflow-reaper +0 -0
- package/dist/native/linux-arm64/xioflow-reaper +0 -0
- package/dist/native/linux-x64/xioflow-reaper +0 -0
- package/dist/otel/otlp.d.ts +37 -0
- package/dist/otel/otlp.d.ts.map +1 -0
- package/dist/otel/otlp.js +224 -0
- package/dist/otel/otlp.js.map +1 -0
- package/dist/recovery/engine.d.ts.map +1 -1
- package/dist/recovery/engine.js +2 -0
- package/dist/recovery/engine.js.map +1 -1
- package/dist/snapshot/git-shadow.d.ts +8 -0
- package/dist/snapshot/git-shadow.d.ts.map +1 -1
- package/dist/snapshot/git-shadow.js +24 -19
- package/dist/snapshot/git-shadow.js.map +1 -1
- package/dist/store/sqlite.d.ts.map +1 -1
- package/dist/store/sqlite.js +5 -0
- package/dist/store/sqlite.js.map +1 -1
- package/dist/supervisor/admission.d.ts +26 -0
- package/dist/supervisor/admission.d.ts.map +1 -0
- package/dist/supervisor/admission.js +98 -0
- package/dist/supervisor/admission.js.map +1 -0
- package/dist/supervisor/finalize.d.ts +21 -0
- package/dist/supervisor/finalize.d.ts.map +1 -0
- package/dist/supervisor/finalize.js +66 -0
- package/dist/supervisor/finalize.js.map +1 -0
- package/dist/supervisor/fingerprint.d.ts +8 -0
- package/dist/supervisor/fingerprint.d.ts.map +1 -0
- package/dist/supervisor/fingerprint.js +54 -0
- package/dist/supervisor/fingerprint.js.map +1 -0
- package/dist/supervisor/process-monitor.d.ts +9 -0
- package/dist/supervisor/process-monitor.d.ts.map +1 -0
- package/dist/supervisor/process-monitor.js +230 -0
- package/dist/supervisor/process-monitor.js.map +1 -0
- package/dist/supervisor/process-output.d.ts +27 -0
- package/dist/supervisor/process-output.d.ts.map +1 -0
- package/dist/supervisor/process-output.js +102 -0
- package/dist/supervisor/process-output.js.map +1 -0
- package/dist/supervisor/process-run.d.ts +30 -0
- package/dist/supervisor/process-run.d.ts.map +1 -0
- package/dist/supervisor/process-run.js +191 -0
- package/dist/supervisor/process-run.js.map +1 -0
- package/dist/supervisor/replay.d.ts +14 -0
- package/dist/supervisor/replay.d.ts.map +1 -0
- package/dist/supervisor/replay.js +70 -0
- package/dist/supervisor/replay.js.map +1 -0
- package/dist/supervisor/rollback.d.ts +8 -0
- package/dist/supervisor/rollback.d.ts.map +1 -0
- package/dist/supervisor/rollback.js +153 -0
- package/dist/supervisor/rollback.js.map +1 -0
- package/dist/supervisor/snapshot-ops.d.ts +36 -0
- package/dist/supervisor/snapshot-ops.d.ts.map +1 -0
- package/dist/supervisor/snapshot-ops.js +243 -0
- package/dist/supervisor/snapshot-ops.js.map +1 -0
- package/dist/supervisor/supervisor.d.ts +26 -51
- package/dist/supervisor/supervisor.d.ts.map +1 -1
- package/dist/supervisor/supervisor.js +112 -1158
- package/dist/supervisor/supervisor.js.map +1 -1
- package/dist/supervisor/types.d.ts +64 -0
- package/dist/supervisor/types.d.ts.map +1 -0
- package/dist/supervisor/types.js +2 -0
- package/dist/supervisor/types.js.map +1 -0
- package/dist/testing/contract-suite.d.ts.map +1 -1
- package/dist/testing/contract-suite.js +49 -10
- package/dist/testing/contract-suite.js.map +1 -1
- package/dist/types.d.ts +6 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/dist/workspace/read-tracking.d.ts +23 -0
- package/dist/workspace/read-tracking.d.ts.map +1 -0
- package/dist/workspace/read-tracking.js +66 -0
- package/dist/workspace/read-tracking.js.map +1 -0
- package/dist/workspace/transactions.d.ts +89 -0
- package/dist/workspace/transactions.d.ts.map +1 -0
- package/dist/workspace/transactions.js +277 -0
- package/dist/workspace/transactions.js.map +1 -0
- package/package.json +8 -2
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ Besides one-shot commands, the kernel supervises long-running services (MCP stdi
|
|
|
32
32
|
## Requirements
|
|
33
33
|
|
|
34
34
|
- Node.js >= 22.13 (`node:sqlite` without a flag). CI covers Node 22.13 and 24 on Ubuntu and macOS. `node:sqlite` is still marked experimental upstream, so Node prints an `ExperimentalWarning`; that is expected.
|
|
35
|
-
- Linux and macOS.
|
|
35
|
+
- Linux and macOS. The default driver enumerates descendants with `ps(1)` and terminates POSIX process groups; the optional native reaper holds the whole tree instead (see [Holding the process tree](#holding-the-process-tree)).
|
|
36
36
|
- Snapshots need `git` on `PATH` and a git working tree. Confinement is optional and uses `sandbox-exec` (macOS), `bubblewrap` (Linux) or `srt` when available.
|
|
37
37
|
- Windows is not supported. There the driver reports `processGroupKill: false` and `descendantEnumeration: 'none'` rather than pretending it can contain processes.
|
|
38
38
|
|
|
@@ -128,6 +128,70 @@ To cancel, call `await supervisor.cancelOperation('op-1', graceMs)`. It returns
|
|
|
128
128
|
> **Note on In-Flight Join and Cancellation**:
|
|
129
129
|
> When an in-flight operation with the same `opId` and fingerprint is joined concurrently, passing an `abortSignal` to the secondary caller only cancels the secondary caller's own wait promise—it never aborts the underlying process or the primary caller's execution. To deliberately terminate the underlying process, explicitly call `supervisor.cancelOperation(opId)`.
|
|
130
130
|
|
|
131
|
+
## Holding the process tree
|
|
132
|
+
|
|
133
|
+
`NodePlatformDriver` observes a process tree from the outside, so a descendant that calls `setsid()` and loses its parent can outlive a stop; the kernel then reports `indeterminate` instead of lying. `ReaperPlatformDriver` runs each operation under a small native helper (`xioflow-reaper`, shipped prebuilt in the package) that holds the tree:
|
|
134
|
+
|
|
135
|
+
```js
|
|
136
|
+
import { ExecutionDomain, ProcessSupervisor, ReaperPlatformDriver } from '@xioflow/kernel';
|
|
137
|
+
|
|
138
|
+
const supervisor = new ProcessSupervisor(domain, new ReaperPlatformDriver());
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
| | Linux | macOS |
|
|
142
|
+
| --- | --- | --- |
|
|
143
|
+
| How the tree is held | child subreaper: orphans are reparented to the helper | kqueue `NOTE_FORK`, session membership, µs start times |
|
|
144
|
+
| Stop signals | `pidfd_send_signal` after re-checking the start time | `kill` after re-checking the start time |
|
|
145
|
+
| `confirmed_stopped` means | `waitpid` returned `ECHILD` (`scope: 'subreaper_tree'`) | every tracked process is gone (`scope: 'tracked_tree'`) |
|
|
146
|
+
| Supervisor process dies | helper stops the whole tree | helper stops the whole tree |
|
|
147
|
+
|
|
148
|
+
`ReaperPlatformDriver.isAvailable()` tells whether this platform's helper is present; the constructor throws rather than falling back to another driver. Build one from source with `node scripts/build-native.mjs`, or point `XIOFLOW_REAPER_PATH` at a binary.
|
|
149
|
+
|
|
150
|
+
## Use it from any agent: MCP server
|
|
151
|
+
|
|
152
|
+
The package ships a `xioflow` command that serves the kernel over MCP (stdio), so an agent that speaks MCP can run commands under supervision without writing an integration:
|
|
153
|
+
|
|
154
|
+
```json
|
|
155
|
+
{
|
|
156
|
+
"mcpServers": {
|
|
157
|
+
"xioflow": { "command": "npx", "args": ["-y", "@xioflow/kernel", "mcp", "--domain", "/path/to/repo/.xioflow-kernel"] }
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
The server acquires the domain and runs crash recovery before it answers anything. It then offers these tools:
|
|
163
|
+
|
|
164
|
+
- `run_command`: supervised execution; reusing an `opId` replays the recorded result instead of running again.
|
|
165
|
+
- `operation_status` and `cancel_operation`.
|
|
166
|
+
- `snapshot_workspace` and `rollback_workspace`.
|
|
167
|
+
- `begin_transaction`, `commit_transaction` and `abort_transaction`.
|
|
168
|
+
|
|
169
|
+
Client features map onto kernel semantics:
|
|
170
|
+
|
|
171
|
+
- A request with a `progressToken` streams stdout/stderr as progress notifications.
|
|
172
|
+
- `notifications/cancelled` stops the operation through the stop pipeline.
|
|
173
|
+
- A result that is `indeterminate` is presented as "stop and ask a human".
|
|
174
|
+
|
|
175
|
+
Adjudication is intentionally not exposed to the model. `--driver auto` (the default) uses the native reaper when its helper is present and says which driver it chose in the server instructions and in every result.
|
|
176
|
+
|
|
177
|
+
## OpenTelemetry
|
|
178
|
+
|
|
179
|
+
The journal exports as OTLP/HTTP JSON traces, with no dependencies:
|
|
180
|
+
|
|
181
|
+
- One trace per Run.
|
|
182
|
+
- One span per settled operation, with status transitions, replays, capability use and adjudication as span events.
|
|
183
|
+
- One span per workspace transaction.
|
|
184
|
+
- `indeterminate` and `failed` are `ERROR`.
|
|
185
|
+
|
|
186
|
+
Ids are derived deterministically, so exporting the same journal twice produces the same spans.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
xioflow mcp --otlp-endpoint http://localhost:4318 # export every 5s while serving
|
|
190
|
+
xioflow otel-export --otlp-endpoint http://localhost:4318 # one-shot, read-only, works next to a running server
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
From code: `exportJournalToOtlp(domain, { endpoint, fromSeq })` returns the cursor for the next incremental export; `journalToOtlpTraces(...)` builds the payload without sending it.
|
|
194
|
+
|
|
131
195
|
## Crash recovery
|
|
132
196
|
|
|
133
197
|
After a restart, reacquire the domain and run the recovery engine:
|
|
@@ -144,7 +208,7 @@ For every unfinished operation, recovery verifies the recorded process identity
|
|
|
144
208
|
| Observed state | Action | Leases |
|
|
145
209
|
| --- | --- | --- |
|
|
146
210
|
| Intent persisted, never spawned | cleaned up as failed | released |
|
|
147
|
-
| Process confirmed dead
|
|
211
|
+
| Process confirmed dead, exit never observed | `failed` with `terminationReason: 'exit_unobserved'`: the outcome is unknown, so do not retry under a new `opId` | released |
|
|
148
212
|
| Process alive and identity confirmed | stopped through the stop pipeline | released |
|
|
149
213
|
| Identity cannot be determined | left `indeterminate` | retained, manual decision required |
|
|
150
214
|
|
|
@@ -212,6 +276,32 @@ await supervisor.executeProcess({
|
|
|
212
276
|
|
|
213
277
|
A capability can be narrowed with `domain.attenuate`, and revoked with `domain.revokeCapability`. Confinement exists so the rollback coverage claim is true. It is not a security boundary.
|
|
214
278
|
|
|
279
|
+
## Parallel agents: workspace transactions
|
|
280
|
+
|
|
281
|
+
Locks make parallel agents wait for each other. Workspace transactions let them work at the same time and check for conflicts when they commit, the way optimistic concurrency control works in a database:
|
|
282
|
+
|
|
283
|
+
```js
|
|
284
|
+
const tx = await supervisor.beginWorkspaceTransaction({
|
|
285
|
+
txId: 'agent-a-1',
|
|
286
|
+
runId: 'run-a',
|
|
287
|
+
root: '/path/to/repo',
|
|
288
|
+
forkPath: '/tmp/forks/agent-a-1',
|
|
289
|
+
});
|
|
290
|
+
// the agent works in its own fork
|
|
291
|
+
await supervisor.executeProcess({ runId: 'run-a', opId: 'a-edit', name: 'edit', command: { execPath: 'node', args: ['edit.mjs'], cwd: tx.forkRoot } });
|
|
292
|
+
|
|
293
|
+
const res = await supervisor.commitWorkspaceTransaction('agent-a-1');
|
|
294
|
+
if (res.status === 'conflict') {
|
|
295
|
+
// e.g. [{ path: 'config.json', kind: 'read_write', otherTxId: 'agent-b-7' }]
|
|
296
|
+
await supervisor.abortWorkspaceTransaction('agent-a-1');
|
|
297
|
+
}
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
- **Write set**: the exact per-file diff between the base snapshot and the fork.
|
|
301
|
+
- **Read set**: observed without privileges through access times. Each entry in the fork gets an atime just before its mtime, so any later read (file contents or directory listings) moves the atime past the mtime on both Linux (`relatime`) and macOS (APFS only updates an atime that is older than the mtime). On a `noatime` filesystem the result says `readTracking: 'unobserved'` and `readSet: null`.
|
|
302
|
+
- **Validation**: a commit fails with `write_write` if a transaction committed since this one began wrote the same file, and with `read_write` if it changed something this one read. A listed directory only conflicts when entries were added to it or removed from it. A write that bypassed transactions and went straight to the workspace fails with `external_write`.
|
|
303
|
+
- **Apply**: only a validated transaction is applied to the workspace. `TX_COMMITTING` is journaled first, so a commit interrupted by a crash finishes when it is called again after restart.
|
|
304
|
+
|
|
215
305
|
## Design notes
|
|
216
306
|
|
|
217
307
|
### Verify your own runtime
|
|
@@ -233,6 +323,8 @@ defineContractTestSuite('My Agent Runtime', async () => ({
|
|
|
233
323
|
|
|
234
324
|
`vitest` is an optional peer dependency, and the subpath is only loaded if you import it.
|
|
235
325
|
|
|
326
|
+
Beyond the contracts, the repository kills its own supervisor at every durable step (before and after each store commit, and while the process runs), recovers in a fresh process and checks the invariants again (`tests/fault/crash-matrix.test.ts`), and model-checks the same invariants for every interleaving of launch, stop, crash and recovery with TLA+ (`spec/tla/`, `pnpm check:tla`).
|
|
327
|
+
|
|
236
328
|
- Persistence is SQLite with WAL and `synchronous = FULL`, so committed facts survive power loss.
|
|
237
329
|
- One execution domain is one workspace-scoped store plus one active owner. Isolation is rebuilt from the store before any new operation is admitted.
|
|
238
330
|
- When the root process exits while a descendant still holds its pipes, the supervisor reaps the process group and reports the root's real exit facts with `residualProcessesReaped: true`, instead of blocking the operation until its timeout.
|
|
@@ -243,7 +335,7 @@ defineContractTestSuite('My Agent Runtime', async () => ({
|
|
|
243
335
|
|
|
244
336
|
## Status
|
|
245
337
|
|
|
246
|
-
0.
|
|
338
|
+
0.5.0 on npm (native tree-holding reaper, workspace transactions for parallel agents, MCP server, OpenTelemetry export, crash-point matrix and TLA+ model; see [`CHANGELOG.md`](./CHANGELOG.md)), pre-1.0: the API may change. Not implemented yet: Linux cgroup v2 backend (hard memory/CPU/PID enforcement), enforced domain-wide memory budgets, artifact retrieval helpers, daemon mode and non-TypeScript bindings. Remaining gaps are tracked in [`ROADMAP.md`](./ROADMAP.md).
|
|
247
339
|
|
|
248
340
|
## Releasing
|
|
249
341
|
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import fs from 'node:fs';
|
|
3
|
+
import path from 'node:path';
|
|
4
|
+
import { parseArgs } from 'node:util';
|
|
5
|
+
import { SqliteStore } from './store/sqlite.js';
|
|
6
|
+
import { KernelMcpServer } from './mcp/server.js';
|
|
7
|
+
import { exportJournalToOtlp } from './otel/otlp.js';
|
|
8
|
+
const USAGE = `usage:
|
|
9
|
+
xioflow mcp [--domain <dir>] [--domain-id <id>] [--driver auto|node|reaper]
|
|
10
|
+
[--otlp-endpoint <url>] [--otlp-header k=v ...] [--otlp-interval-ms <n>]
|
|
11
|
+
Serve the kernel as an MCP server on stdio (recovers the domain first).
|
|
12
|
+
xioflow otel-export --otlp-endpoint <url> [--domain <dir>] [--domain-id <id>] [--from-seq <n>]
|
|
13
|
+
[--otlp-header k=v ...] [--service-name <name>]
|
|
14
|
+
Export the domain journal as OTLP traces once (read-only; works while a server holds the domain).
|
|
15
|
+
|
|
16
|
+
--domain defaults to ./.xioflow-kernel`;
|
|
17
|
+
function headers(values) {
|
|
18
|
+
const out = {};
|
|
19
|
+
for (const v of values ?? []) {
|
|
20
|
+
const i = v.indexOf('=');
|
|
21
|
+
if (i <= 0)
|
|
22
|
+
throw new Error(`--otlp-header expects key=value, got "${v}"`);
|
|
23
|
+
out[v.slice(0, i)] = v.slice(i + 1);
|
|
24
|
+
}
|
|
25
|
+
return out;
|
|
26
|
+
}
|
|
27
|
+
async function main() {
|
|
28
|
+
const [command, ...rest] = process.argv.slice(2);
|
|
29
|
+
const { values } = parseArgs({
|
|
30
|
+
args: rest,
|
|
31
|
+
options: {
|
|
32
|
+
domain: { type: 'string' },
|
|
33
|
+
'domain-id': { type: 'string' },
|
|
34
|
+
driver: { type: 'string' },
|
|
35
|
+
'otlp-endpoint': { type: 'string' },
|
|
36
|
+
'otlp-header': { type: 'string', multiple: true },
|
|
37
|
+
'otlp-interval-ms': { type: 'string' },
|
|
38
|
+
'from-seq': { type: 'string' },
|
|
39
|
+
'service-name': { type: 'string' },
|
|
40
|
+
},
|
|
41
|
+
strict: true,
|
|
42
|
+
});
|
|
43
|
+
const domainPath = path.resolve(values.domain ?? '.xioflow-kernel');
|
|
44
|
+
const domainId = values['domain-id'] ?? 'default';
|
|
45
|
+
if (command === 'mcp') {
|
|
46
|
+
const driver = values.driver ?? 'auto';
|
|
47
|
+
if (driver !== 'auto' && driver !== 'node' && driver !== 'reaper')
|
|
48
|
+
throw new Error(`--driver must be auto, node or reaper`);
|
|
49
|
+
const endpoint = values['otlp-endpoint'];
|
|
50
|
+
await new KernelMcpServer({
|
|
51
|
+
domainPath,
|
|
52
|
+
domainId,
|
|
53
|
+
driver,
|
|
54
|
+
otlp: endpoint
|
|
55
|
+
? {
|
|
56
|
+
endpoint,
|
|
57
|
+
headers: headers(values['otlp-header']),
|
|
58
|
+
intervalMs: values['otlp-interval-ms'] ? Number(values['otlp-interval-ms']) : undefined,
|
|
59
|
+
serviceName: values['service-name'],
|
|
60
|
+
}
|
|
61
|
+
: undefined,
|
|
62
|
+
}).serve();
|
|
63
|
+
return;
|
|
64
|
+
}
|
|
65
|
+
if (command === 'otel-export') {
|
|
66
|
+
const endpoint = values['otlp-endpoint'];
|
|
67
|
+
if (!endpoint)
|
|
68
|
+
throw new Error('otel-export needs --otlp-endpoint');
|
|
69
|
+
const dbPath = path.join(domainPath, 'domain.db');
|
|
70
|
+
if (!fs.existsSync(dbPath))
|
|
71
|
+
throw new Error(`no kernel domain at ${domainPath} (missing domain.db)`);
|
|
72
|
+
const store = new SqliteStore(dbPath);
|
|
73
|
+
try {
|
|
74
|
+
const res = await exportJournalToOtlp({ domainId, getStore: () => store }, {
|
|
75
|
+
endpoint,
|
|
76
|
+
headers: headers(values['otlp-header']),
|
|
77
|
+
fromSeq: values['from-seq'] ? Number(values['from-seq']) : 0,
|
|
78
|
+
serviceName: values['service-name'],
|
|
79
|
+
});
|
|
80
|
+
process.stdout.write(`${JSON.stringify(res)}\n`);
|
|
81
|
+
}
|
|
82
|
+
finally {
|
|
83
|
+
store.close();
|
|
84
|
+
}
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
process.stderr.write(`${USAGE}\n`);
|
|
88
|
+
process.exitCode = command ? 64 : 0;
|
|
89
|
+
}
|
|
90
|
+
main().catch((err) => {
|
|
91
|
+
process.stderr.write(`xioflow: ${err?.message ?? err}\n`);
|
|
92
|
+
process.exitCode = 1;
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-driver.d.ts","sourceRoot":"","sources":["../../src/driver/node-driver.ts"],"names":[],"mappings":"
|
|
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;AAMzD,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,CAchD;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,CAyK5E;IAED,OAAO,CAAC,kBAAkB;IAoB1B,OAAO,CAAC,gBAAgB;IAOX,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CA2C1F;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"}
|
|
@@ -1,37 +1,8 @@
|
|
|
1
1
|
import { spawn } from 'node:child_process';
|
|
2
|
-
import { createHash } from 'node:crypto';
|
|
3
|
-
import fs from 'node:fs';
|
|
4
|
-
import path from 'node:path';
|
|
5
2
|
import { readBootId, readStartTime, getGroupMembers } from './process-facts.js';
|
|
6
3
|
import { ProcessSampler } from './sampler.js';
|
|
7
4
|
import { detectAvailableConfinementDrivers } from '../confinement/detector.js';
|
|
8
|
-
|
|
9
|
-
function computeCommandFingerprint(execPath, args) {
|
|
10
|
-
return createHash('sha256').update(JSON.stringify([execPath, ...args])).digest('hex');
|
|
11
|
-
}
|
|
12
|
-
function resolveExecutable(bin, envPath) {
|
|
13
|
-
if (bin.includes(path.sep)) {
|
|
14
|
-
try {
|
|
15
|
-
fs.accessSync(bin, fs.constants.X_OK);
|
|
16
|
-
return bin;
|
|
17
|
-
}
|
|
18
|
-
catch {
|
|
19
|
-
return null;
|
|
20
|
-
}
|
|
21
|
-
}
|
|
22
|
-
const dirs = (envPath || process.env.PATH || '').split(path.delimiter);
|
|
23
|
-
for (const dir of dirs) {
|
|
24
|
-
if (!dir)
|
|
25
|
-
continue;
|
|
26
|
-
const full = path.join(dir, bin);
|
|
27
|
-
try {
|
|
28
|
-
fs.accessSync(full, fs.constants.X_OK);
|
|
29
|
-
return full;
|
|
30
|
-
}
|
|
31
|
-
catch { }
|
|
32
|
-
}
|
|
33
|
-
return null;
|
|
34
|
-
}
|
|
5
|
+
import { computeCommandFingerprint, resolveExecutable } from './spawn-support.js';
|
|
35
6
|
export class NodePlatformDriver {
|
|
36
7
|
name = 'node-default';
|
|
37
8
|
cachedBootId = readBootId();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-driver.js","sourceRoot":"","sources":["../../src/driver/node-driver.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"node-driver.js","sourceRoot":"","sources":["../../src/driver/node-driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { PlatformDriver, PlatformCapabilities, StructuredCommand, ManagedProcessHandle, ProcessIdentity, StopProcessResult } from './types.js';
|
|
2
|
+
import { IdentityVerificationResult } from '../types.js';
|
|
3
|
+
/**
|
|
4
|
+
* 解析当前平台的 reaper helper:`XIOFLOW_REAPER_PATH` 优先,否则取包内
|
|
5
|
+
* `dist/native/<platform>-<arch>/xioflow-reaper`。找不到或不可执行时返回 null。
|
|
6
|
+
*/
|
|
7
|
+
export declare function locateReaperHelper(): string | null;
|
|
8
|
+
export interface ReaperDriverOptions {
|
|
9
|
+
/** helper 可执行文件路径;缺省按 locateReaperHelper() 解析。 */
|
|
10
|
+
helperPath?: string;
|
|
11
|
+
/** stop 应答的额外等待上限(在 grace + 3s 信号阶梯之外),超过即判 cannot_determine。 */
|
|
12
|
+
stopReplyMarginMs?: number;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* 以原生 helper 持有进程树的平台驱动(Linux / macOS)。
|
|
16
|
+
*
|
|
17
|
+
* - Linux:helper 是子收割者,孤儿(setsid、双 fork)必然回到它名下;停止经 pidfd 发信号,
|
|
18
|
+
* 以 waitpid ECHILD 证明整棵树已空(scope `subreaper_tree`)。
|
|
19
|
+
* - macOS:没有子收割者,helper 用 kqueue NOTE_FORK + 会话成员跟踪后代(scope `tracked_tree`);
|
|
20
|
+
* 已脱离会话又失去父链的逃逸者仍可能漏掉,输出管道持有检测继续兜底。
|
|
21
|
+
* - 监督进程消失(控制通道 EOF)时 helper 停掉整棵树,不留无人监督的进程。
|
|
22
|
+
*
|
|
23
|
+
* 崩溃恢复所需的身份核验、进程组清场与指标采样沿用操作系统事实(与 NodePlatformDriver 同源),
|
|
24
|
+
* 因此两种驱动写下的身份可以互相裁决。
|
|
25
|
+
*/
|
|
26
|
+
export declare class ReaperPlatformDriver implements PlatformDriver {
|
|
27
|
+
readonly name = "reaper";
|
|
28
|
+
readonly capabilities: PlatformCapabilities;
|
|
29
|
+
private readonly helperPath;
|
|
30
|
+
private readonly stopReplyMarginMs;
|
|
31
|
+
private readonly facts;
|
|
32
|
+
private readonly sessions;
|
|
33
|
+
static isAvailable(): boolean;
|
|
34
|
+
constructor(options?: ReaperDriverOptions);
|
|
35
|
+
readBootId(): Promise<string | null>;
|
|
36
|
+
getGroupEvidence(pgid: number): Promise<{
|
|
37
|
+
pid: number;
|
|
38
|
+
startTimeMs: number | null;
|
|
39
|
+
}[]>;
|
|
40
|
+
terminateGroup(pgid: number, graceMs?: number): Promise<StopProcessResult>;
|
|
41
|
+
sampleMetrics(identity: ProcessIdentity): Promise<{
|
|
42
|
+
rssBytes: number;
|
|
43
|
+
pidsCount: number;
|
|
44
|
+
cpuTimeMs: number;
|
|
45
|
+
}>;
|
|
46
|
+
spawn(command: StructuredCommand): Promise<ManagedProcessHandle>;
|
|
47
|
+
verifyIdentity(identity: ProcessIdentity): Promise<IdentityVerificationResult>;
|
|
48
|
+
terminate(identity: ProcessIdentity, graceMs?: number): Promise<StopProcessResult>;
|
|
49
|
+
private treeScope;
|
|
50
|
+
private requestStop;
|
|
51
|
+
/** 等待第一条 `spawned <pid>`;helper 启动失败或先报错都显式拒绝。 */
|
|
52
|
+
private awaitSpawned;
|
|
53
|
+
private openSession;
|
|
54
|
+
private onLine;
|
|
55
|
+
private rootExitPromise;
|
|
56
|
+
/** helper 丢失而 root 退出事实未知:不编造退出码,只观察 root 何时不再存活。 */
|
|
57
|
+
private watchOrphanedRoot;
|
|
58
|
+
private awaitStopReply;
|
|
59
|
+
private send;
|
|
60
|
+
private writeStdin;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=reaper-driver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"reaper-driver.d.ts","sourceRoot":"","sources":["../../src/driver/reaper-driver.ts"],"names":[],"mappings":"AAMA,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;AASzD;;;GAGG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAalD;AAED,MAAM,WAAW,mBAAmB;IAClC,kDAAkD;IAClD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,iEAAiE;IACjE,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAoBD;;;;;;;;;;;GAWG;AACH,qBAAa,oBAAqB,YAAW,cAAc;IACzD,SAAgB,IAAI,YAAY;IAChC,SAAgB,YAAY,EAAE,oBAAoB,CAAC;IACnD,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAS;IAC3C,OAAO,CAAC,QAAQ,CAAC,KAAK,CAA4B;IAClD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAoC;IAE7D,OAAc,WAAW,IAAI,OAAO,CAEnC;IAED,YAAY,OAAO,GAAE,mBAAwB,EAmB5C;IAEY,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;IAEY,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAE5F;IAEY,aAAa,CAAC,QAAQ,EAAE,eAAe;;;;OAEnD;IAEY,KAAK,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAyE5E;IAEY,cAAc,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,0BAA0B,CAAC,CAO1F;IAEY,SAAS,CAAC,QAAQ,EAAE,eAAe,EAAE,OAAO,GAAE,MAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAWpG;IAED,OAAO,CAAC,SAAS;YAIH,WAAW;IA+BzB,kDAAkD;IAClD,OAAO,CAAC,YAAY;IAsCpB,OAAO,CAAC,WAAW;IAgCnB,OAAO,CAAC,MAAM;IAqBd,OAAO,CAAC,eAAe;IAOvB,qDAAqD;IACrD,OAAO,CAAC,iBAAiB;IAUzB,OAAO,CAAC,cAAc;IAgBtB,OAAO,CAAC,IAAI;IAOZ,OAAO,CAAC,UAAU;CAUnB"}
|