@onlyne/mcp-gateway 3.1.0 → 3.2.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mounts.js","sourceRoot":"","sources":["../src/mounts.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@onlyne/mcp-gateway",
3
- "version": "3.1.0",
3
+ "version": "3.2.0",
4
4
  "description": "Onlyne MCP gateway: one node that hosts MCP servers as resources and exposes their tools as operations",
5
5
  "type": "module",
6
- "main": "./src/index.ts",
7
- "types": "./src/index.ts",
6
+ "main": "./dist/index.js",
7
+ "types": "./dist/index.d.ts",
8
8
  "license": "MIT",
9
9
  "repository": {
10
10
  "type": "git",
@@ -17,21 +17,26 @@
17
17
  "publishConfig": { "access": "public" },
18
18
  "engines": { "bun": ">=1.4.3" },
19
19
  "exports": {
20
- ".": "./src/index.ts"
20
+ ".": {
21
+ "types": "./dist/index.d.ts",
22
+ "default": "./dist/index.js"
23
+ }
21
24
  },
22
- "bin": { "onlyne-mcp-gateway": "src/main.ts" },
23
- "files": ["src", "README.md", "LICENSE"],
25
+ "bin": { "onlyne-mcp-gateway": "dist/main.js" },
26
+ "files": ["dist", "README.md", "LICENSE"],
24
27
  "scripts": {
25
- "check": "tsc --noEmit",
28
+ "build": "tsc",
29
+ "check": "tsc && tsc -p tsconfig.tests.json",
26
30
  "test": "bun tests/verify.ts && bun tests/mounts-verify.ts",
27
31
  "smoke": "bun tests/mounts-smoke.ts",
28
- "smoke:fast": "MOUNT_SMOKE_INTERVAL_MS=3000 bun tests/mounts-smoke.ts"
32
+ "smoke:fast": "MOUNT_SMOKE_INTERVAL_MS=3000 bun tests/mounts-smoke.ts",
33
+ "prepack": "bun run build"
29
34
  },
30
35
  "dependencies": {
31
- "@onlyne/im-gateway": "^3.1.0",
32
- "@onlyne/lib": "^3.1.0",
33
- "@onlyne/mcp-core": "^3.1.0",
34
- "@onlyne/node-host": "^3.1.0"
36
+ "@onlyne/im-gateway": "^3.2.0",
37
+ "@onlyne/lib": "^3.2.0",
38
+ "@onlyne/mcp-core": "^3.2.0",
39
+ "@onlyne/node-host": "^3.2.0"
35
40
  },
36
41
  "devDependencies": {
37
42
  "@types/bun": "^1.3.0",
package/src/config.ts DELETED
@@ -1,182 +0,0 @@
1
- import { OnlyneError, type Json, type NodeId } from '@onlyne/lib';
2
- import type { Locale } from '@onlyne/node-host/i18n';
3
- import { t } from './gateway-text.js';
4
- import { MOUNTS_RESOURCE_PREFIX } from './mounts.js';
5
-
6
- /** One configured MCP server: its resource name, URL and per-call settings. */
7
- export interface ServerConfig {
8
- name: string;
9
- url: string;
10
- /** Extra request headers (an API key, a bank header); never logged. */
11
- headers?: Record<string, string>;
12
- timeout_ms?: number;
13
- /** Who may call this server's tools. Empty means the node owner only. */
14
- controllers?: NodeId[];
15
- }
16
-
17
- /** One locally allowlisted executable a scheduled mount may run: the mount names this id only. */
18
- export interface MountCommandConfig {
19
- id: string;
20
- command: string;
21
- args?: string[];
22
- cwd?: string;
23
- }
24
-
25
- /** One MCP tool a scheduled mount may call; the server's own controller list still applies. */
26
- export interface MountToolConfig { server: string; tool: string }
27
-
28
- export interface MountsConfig {
29
- /** The nodes that may mount, inspect and cancel tasks on their own scheduler resource. */
30
- controllers: NodeId[];
31
- commands: MountCommandConfig[];
32
- tools: MountToolConfig[];
33
- tick_ms: number;
34
- }
35
-
36
- export interface GatewayConfig {
37
- node: { id: NodeId };
38
- server: { bind: string; port: number };
39
- storage_path: string;
40
- servers: ServerConfig[];
41
- /** Scheduled mounts; absent means the gateway serves no scheduler resource at all. */
42
- mounts?: MountsConfig;
43
- /** The language of the gateway's own console text; unset follows `ONLYNE_LANG`. */
44
- language?: Locale;
45
- }
46
-
47
- const requireObject = (value: Json | undefined, field: string): Record<string, Json> => {
48
- if (value === undefined || value === null || typeof value !== 'object' || Array.isArray(value)) {
49
- throw new OnlyneError('invalid_request', t('config.object', { field }));
50
- }
51
- return value as Record<string, Json>;
52
- };
53
-
54
- const requireString = (container: Record<string, unknown>, field: string): string => {
55
- const value = container[field];
56
- if (typeof value !== 'string' || value.length === 0) {
57
- throw new OnlyneError('invalid_request', t('config.string', { field }));
58
- }
59
- return value;
60
- };
61
-
62
- const requireStrings = (value: Json | undefined, field: string): string[] => {
63
- if (value === undefined) return [];
64
- if (!Array.isArray(value) || value.some(item => typeof item !== 'string' || item.length === 0)) {
65
- throw new OnlyneError('invalid_request', t('config.stringList', { field }));
66
- }
67
- return value as string[];
68
- };
69
-
70
- function parseMounts(raw: Json | undefined, owner: NodeId, serverNames: Set<string>): MountsConfig | undefined {
71
- if (raw === undefined) return undefined;
72
- const record = requireObject(raw, 'mounts');
73
- const controllers = [...new Set(requireStrings(record.controllers, 'mounts.controllers'))];
74
- if (controllers.length === 0) {
75
- throw new OnlyneError('invalid_request', t('config.mountsControllers'));
76
- }
77
- if (controllers.includes(owner)) {
78
- throw new OnlyneError('invalid_request', t('config.mountsOwner', { owner }));
79
- }
80
- const commands = (record.commands === undefined ? [] : record.commands);
81
- if (!Array.isArray(commands)) throw new OnlyneError('invalid_request', t('config.mountsCommands'));
82
- const commandIds = new Set<string>();
83
- const parsedCommands = commands.map((entry, index): MountCommandConfig => {
84
- const item = requireObject(entry, `mounts.commands[${index}]`);
85
- const id = requireString(item, 'id');
86
- if (commandIds.has(id)) throw new OnlyneError('invalid_request', t('config.mountsDuplicate', { kind: 'command', id }));
87
- commandIds.add(id);
88
- const args = item.args === undefined ? [] : requireStrings(item.args, `mounts.commands[${index}].args`);
89
- const cwd = item.cwd === undefined ? undefined : requireString(item, 'cwd');
90
- return {
91
- id,
92
- command: requireString(item, 'command'),
93
- ...(args.length === 0 ? {} : { args }),
94
- ...(cwd === undefined ? {} : { cwd }),
95
- };
96
- });
97
- const tools = (record.tools === undefined ? [] : record.tools);
98
- if (!Array.isArray(tools)) throw new OnlyneError('invalid_request', t('config.mountsTools'));
99
- const toolIds = new Set<string>();
100
- const parsedTools = tools.map((entry, index): MountToolConfig => {
101
- const item = requireObject(entry, `mounts.tools[${index}]`);
102
- const server = requireString(item, 'server');
103
- const tool = requireString(item, 'tool');
104
- if (!serverNames.has(server)) {
105
- throw new OnlyneError('invalid_request', t('config.mountsToolServer', { server }));
106
- }
107
- const pair = `${server}\u0000${tool}`;
108
- if (toolIds.has(pair)) throw new OnlyneError('invalid_request', t('config.mountsDuplicate', { kind: 'tool', id: `${server}/${tool}` }));
109
- toolIds.add(pair);
110
- return { server, tool };
111
- });
112
- const tick = record.tick_ms === undefined ? 1_000 : record.tick_ms;
113
- if (typeof tick !== 'number' || !Number.isInteger(tick) || tick < 100 || tick > 60_000) {
114
- throw new OnlyneError('invalid_request', t('config.mountTick'));
115
- }
116
- return { controllers, commands: parsedCommands, tools: parsedTools, tick_ms: tick };
117
- }
118
-
119
- /** `language` is exactly `en` or `zh-CN`: a near miss would silently pick a different console language. */
120
- const parseLanguage = (value: Json | undefined): Locale | undefined => {
121
- if (value === undefined) return undefined;
122
- if (value === 'en' || value === 'zh-CN') return value;
123
- throw new OnlyneError('invalid_request', t('config.language', { value: JSON.stringify(value) }));
124
- };
125
-
126
- /** Loads the gateway configuration from one JSON file; environment retuning comes later. */
127
- export async function loadConfig(path: string): Promise<GatewayConfig> {
128
- let file: Json | undefined;
129
- try {
130
- file = JSON.parse(await Bun.file(path).text()) as Json;
131
- } catch {
132
- throw new OnlyneError('invalid_request', t('config.unreadable', { path }));
133
- }
134
- const raw = requireObject(file, 'the configuration root');
135
- const node = requireObject(raw.node, 'node');
136
- const server = requireObject(raw.server, 'server');
137
- const storage = requireObject(raw.storage, 'storage');
138
- const language = parseLanguage(raw.language);
139
- const owner = requireString(node, 'id') as NodeId;
140
- const rawServers = raw.servers === undefined ? [] : raw.servers;
141
- if (!Array.isArray(rawServers)) {
142
- throw new OnlyneError('invalid_request', t('config.servers'));
143
- }
144
- const servers = rawServers.map((entry, index): ServerConfig => {
145
- const item = requireObject(entry, `servers[${index}]`);
146
- const rawHeaders = item.headers === undefined ? undefined : requireObject(item.headers, `servers[${index}].headers`);
147
- const headers = rawHeaders === undefined
148
- ? undefined
149
- : Object.fromEntries(Object.entries(rawHeaders).filter((pair): pair is [string, string] => typeof pair[1] === 'string'));
150
- const timeout = item.timeout_ms;
151
- const controllers = item.controllers;
152
- return {
153
- name: requireString(item, 'name'),
154
- url: requireString(item, 'url'),
155
- ...(headers === undefined || Object.keys(headers).length === 0 ? {} : { headers }),
156
- ...(typeof timeout === 'number' ? { timeout_ms: timeout } : {}),
157
- ...(Array.isArray(controllers)
158
- ? { controllers: controllers.filter((value): value is NodeId => typeof value === 'string' && value.length > 0) }
159
- : {}),
160
- };
161
- });
162
- const names = new Set<string>();
163
- for (const entry of servers) {
164
- if (names.has(entry.name)) throw new OnlyneError('invalid_request', t('config.duplicateName', { name: entry.name }));
165
- if (entry.name.startsWith(MOUNTS_RESOURCE_PREFIX)) {
166
- throw new OnlyneError('invalid_request', t('config.reservedName', { name: entry.name, prefix: MOUNTS_RESOURCE_PREFIX }));
167
- }
168
- names.add(entry.name);
169
- }
170
- const mounts = parseMounts(raw.mounts, owner, names);
171
- return {
172
- node: { id: owner },
173
- server: {
174
- bind: typeof server.bind === 'string' && server.bind.length > 0 ? server.bind : '127.0.0.1',
175
- port: typeof server.port === 'number' ? server.port : 0,
176
- },
177
- storage_path: requireString(storage, 'path'),
178
- servers,
179
- ...(mounts === undefined ? {} : { mounts }),
180
- ...(language === undefined ? {} : { language }),
181
- };
182
- }
package/src/cron.ts DELETED
@@ -1,122 +0,0 @@
1
- import { OnlyneError } from '@onlyne/lib';
2
-
3
- /**
4
- * A parsed five-field cron expression. Every field becomes a sorted list of the values it
5
- * admits, so matching is a membership test and never a re-parse. Time is UTC: a mounted task
6
- * must fire at the same instant after a restart, in every process, on every host.
7
- */
8
- export interface CronSchedule {
9
- readonly minutes: readonly number[];
10
- readonly hours: readonly number[];
11
- readonly days: readonly number[];
12
- readonly months: readonly number[];
13
- readonly weekdays: readonly number[];
14
- /** Which of the day fields the expression restricts; both restricted match either (Vixie). */
15
- readonly domRestricted: boolean;
16
- readonly dowRestricted: boolean;
17
- }
18
-
19
- const FIELDS = [
20
- { name: 'minute', min: 0, max: 59 },
21
- { name: 'hour', min: 0, max: 23 },
22
- { name: 'day-of-month', min: 1, max: 31 },
23
- { name: 'month', min: 1, max: 12 },
24
- // 7 is Sunday: accepted as an input alias only, and normalized before the schedule is stored.
25
- { name: 'day-of-week', min: 0, max: 7 },
26
- ] as const;
27
-
28
- /** `7` is Sunday in the day-of-week field; the schedule normalizes it to `0`. */
29
- const WEEKDAY_ALIAS: Record<string, number> = { '7': 0 };
30
-
31
- const RANGE = /^(\d+)-(\d+)$/;
32
- const NUMBER = /^\d+$/;
33
-
34
- function parseField(text: string, spec: (typeof FIELDS)[number]): number[] {
35
- if (text.length === 0) throw cronError(`The ${spec.name} field is empty.`);
36
- const values = new Set<number>();
37
- for (const part of text.split(',')) {
38
- if (part.length === 0) throw cronError(`The ${spec.name} field holds an empty list item.`);
39
- const [rangeText = '', stepText, extra] = part.split('/');
40
- if (extra !== undefined) throw cronError(`The ${spec.name} field step has more than one slash.`);
41
- const step = stepText === undefined ? 1 : Number(stepText);
42
- if (!Number.isInteger(step) || step <= 0) throw cronError(`The ${spec.name} field step is a positive integer.`);
43
- let from: number;
44
- let to: number;
45
- if (rangeText === '*') {
46
- from = spec.min;
47
- to = spec.max;
48
- } else if (NUMBER.test(rangeText)) {
49
- from = Number(rangeText);
50
- // A bare number with a step names the range from that number to the field maximum.
51
- to = stepText === undefined ? from : spec.max;
52
- } else {
53
- const range = RANGE.exec(rangeText);
54
- if (range === null) throw cronError(`The ${spec.name} field value ${JSON.stringify(rangeText)} is not a number, range or '*'.`);
55
- from = Number(range[1]);
56
- to = Number(range[2]);
57
- }
58
- const low = from;
59
- const high = to;
60
- if (low < spec.min || low > spec.max || high < spec.min || high > spec.max) {
61
- throw cronError(`The ${spec.name} field allows ${spec.min}..${spec.max}, not ${from}..${to}.`);
62
- }
63
- if (low > high) throw cronError(`The ${spec.name} field range ${from}-${to} runs backwards.`);
64
- for (let value = low; value <= high; value += step) values.add(WEEKDAY_ALIAS[String(value)] ?? value);
65
- }
66
- return [...values].sort((a, b) => a - b);
67
- }
68
-
69
- function cronError(message: string): OnlyneError {
70
- return new OnlyneError('invalid_request', message);
71
- }
72
-
73
- /** Parses one five-field expression; throwing `invalid_request` names the offending field. */
74
- export function parseCron(expression: string): CronSchedule {
75
- if (typeof expression !== 'string') throw cronError('A cron expression is a string.');
76
- const parts = expression.trim().split(/\s+/);
77
- if (parts.length !== FIELDS.length) {
78
- throw cronError(`A cron expression has ${FIELDS.length} fields (minute hour day month weekday), not ${parts.length}.`);
79
- }
80
- const [minutes, hours, days, months, weekdays] = parts.map((part, index) => parseField(part, FIELDS[index]!));
81
- return {
82
- minutes: minutes!, hours: hours!, days: days!, months: months!, weekdays: weekdays!,
83
- domRestricted: parts[2] !== '*',
84
- dowRestricted: parts[4] !== '*',
85
- };
86
- }
87
-
88
- const MINUTE_MS = 60_000;
89
- const HOUR_MS = 3_600_000;
90
- const DAY_MS = 86_400_000;
91
- /** Five years covers every Gregorian recurrence, including 29 February on a weekday. */
92
- const HORIZON_DAYS = 366 * 5;
93
-
94
- /**
95
- * The first instant strictly after `fromMs` that the expression admits, to the minute, in UTC.
96
- * `undefined` means no occurrence inside the five-year horizon (for example `0 0 31 2 *`).
97
- */
98
- export function nextCronTime(schedule: CronSchedule, fromMs: number): number | undefined {
99
- const dayStart = Math.floor(fromMs / DAY_MS) * DAY_MS;
100
- for (let day = 0; day < HORIZON_DAYS; day++) {
101
- const base = dayStart + day * DAY_MS;
102
- const date = new Date(base);
103
- const month = date.getUTCMonth() + 1;
104
- if (!schedule.months.includes(month)) continue;
105
- const dom = date.getUTCDate();
106
- const dow = date.getUTCDay();
107
- const domMatch = schedule.days.includes(dom);
108
- const dowMatch = schedule.weekdays.includes(dow);
109
- // Vixie cron: a restricted day-of-month and a restricted day-of-week combine with OR.
110
- const dayMatch = schedule.domRestricted && schedule.dowRestricted
111
- ? domMatch || dowMatch
112
- : domMatch && dowMatch;
113
- if (!dayMatch) continue;
114
- for (const hour of schedule.hours) {
115
- for (const minute of schedule.minutes) {
116
- const at = base + hour * HOUR_MS + minute * MINUTE_MS;
117
- if (at > fromMs) return at;
118
- }
119
- }
120
- }
121
- return undefined;
122
- }
package/src/exec.ts DELETED
@@ -1,163 +0,0 @@
1
- import { OnlyneError } from '@onlyne/lib';
2
-
3
- /** Output kept per stream: enough for one readable result line, bounded so a chatty script cannot bloat the store. */
4
- export const OUTPUT_CAP = 4_096;
5
- /** How long a cancelled or stopping run gets to exit before the subtree is killed outright. */
6
- const KILL_GRACE_MS = 1_500;
7
-
8
- export interface CommandResult {
9
- exit_code: number | null;
10
- stdout: string;
11
- stderr: string;
12
- output_bytes: number;
13
- }
14
-
15
- export interface CommandTarget {
16
- command: string;
17
- args?: readonly string[];
18
- cwd?: string;
19
- }
20
-
21
- /** A handle the scheduler keeps so it can signal exactly the process it started, never a name match. */
22
- export interface RunningChild {
23
- cancelled: boolean;
24
- pid?: number;
25
- }
26
-
27
- const safeKill = (pid: number, signal: NodeJS.Signals): void => {
28
- // Never signal this process or init: a scheduler cancel must not take the gateway down.
29
- if (pid <= 1 || pid === process.pid) return;
30
- try { process.kill(pid, signal); } catch { /* the process is already gone */ }
31
- };
32
-
33
- /** The parent the kernel currently reports for a pid, used to prove the process is still ours. */
34
- function parentOf(pid: number): number | undefined {
35
- try {
36
- const text = Bun.spawnSync({
37
- cmd: ['ps', '-o', 'ppid=', '-p', String(pid)], stdout: 'pipe', stderr: 'ignore',
38
- }).stdout.toString().trim();
39
- const parent = Number(text);
40
- return Number.isInteger(parent) ? parent : undefined;
41
- } catch {
42
- return undefined;
43
- }
44
- }
45
-
46
- /**
47
- * The live descendants of `pid`, read from `ps` once per signal so the list is the kernel's
48
- * current view and not a stale snapshot from before the parent exited. Every pid is exact;
49
- * nothing is matched by name.
50
- */
51
- async function descendantsOf(pid: number): Promise<number[]> {
52
- let output: string;
53
- try {
54
- output = Bun.spawnSync({
55
- cmd: ['ps', '-axo', 'pid=,ppid='], stdout: 'pipe', stderr: 'ignore',
56
- }).stdout.toString();
57
- } catch {
58
- return [];
59
- }
60
- const children = new Map<number, number[]>();
61
- for (const line of output.split('\n')) {
62
- const [childText, parentText] = line.trim().split(/\s+/);
63
- const child = Number(childText);
64
- const parent = Number(parentText);
65
- if (!Number.isInteger(child) || !Number.isInteger(parent)) continue;
66
- const list = children.get(parent) ?? [];
67
- list.push(child);
68
- children.set(parent, list);
69
- }
70
- const found: number[] = [];
71
- const queue = [...(children.get(pid) ?? [])];
72
- while (queue.length > 0) {
73
- const next = queue.shift()!;
74
- if (next === process.pid || found.includes(next)) continue;
75
- found.push(next);
76
- queue.push(...(children.get(next) ?? []));
77
- }
78
- return found;
79
- }
80
-
81
- /** Signals the process group the scheduler built: the exact child first, then its verified descendants. */
82
- export async function signalTree(child: RunningChild, signal: NodeJS.Signals): Promise<void> {
83
- const pid = child.pid;
84
- if (pid === undefined) return;
85
- // A pid that no longer descends from this process has exited and its number may now belong to
86
- // an unrelated process: drop the handle instead of signalling whatever took the slot.
87
- if (parentOf(pid) !== process.pid) {
88
- child.pid = undefined;
89
- return;
90
- }
91
- const descendants = await descendantsOf(pid);
92
- for (const descendant of descendants.reverse()) safeKill(descendant, signal);
93
- safeKill(pid, signal);
94
- }
95
-
96
- /**
97
- * Stops one run: SIGTERM for a clean exit, then SIGKILL of the same subtree while its root is
98
- * still alive after the grace period. The escalation is not awaited by the caller, so a cancel
99
- * answers as soon as the signal is sent; the run settles when its process actually exits.
100
- */
101
- export function stopChild(child: RunningChild): void {
102
- if (child.cancelled) return;
103
- child.cancelled = true;
104
- const pid = child.pid;
105
- if (pid === undefined) return;
106
- void signalTree(child, 'SIGTERM');
107
- const timer = setTimeout(() => {
108
- // Re-derive from the live root: a dead root's pid may already belong to another process,
109
- // and a reused pid must never receive this run's signal.
110
- if (child.pid === pid) void signalTree(child, 'SIGKILL');
111
- }, KILL_GRACE_MS);
112
- timer.unref?.();
113
- }
114
-
115
- async function drain(stream: ReadableStream<Uint8Array>, cap: number): Promise<{ text: string; bytes: number }> {
116
- const decoder = new TextDecoder();
117
- let text = '';
118
- let bytes = 0;
119
- for await (const chunk of stream as unknown as AsyncIterable<Uint8Array>) {
120
- bytes += chunk.byteLength;
121
- text += decoder.decode(chunk, { stream: true });
122
- if (text.length > cap) text = text.slice(-cap);
123
- }
124
- text += decoder.decode();
125
- if (text.length > cap) text = text.slice(-cap);
126
- return { text, bytes };
127
- }
128
-
129
- /**
130
- * Runs one allowlisted executable with argv directly, never through a shell: no quoting, no
131
- * metacharacters, no remote string ever reaches `/bin/sh`. The child's pid is recorded before
132
- * any output is read so a cancel that arrives first still has a handle to signal.
133
- */
134
- export async function runCommand(target: CommandTarget, child: RunningChild): Promise<CommandResult> {
135
- let proc: ReturnType<typeof Bun.spawn>;
136
- try {
137
- proc = Bun.spawn({
138
- cmd: [target.command, ...(target.args ?? [])],
139
- cwd: target.cwd ?? process.cwd(),
140
- env: process.env,
141
- stdio: ['ignore', 'pipe', 'pipe'],
142
- });
143
- } catch (error) {
144
- throw new OnlyneError('invalid_request', `The command ${target.command} could not be started: ${error instanceof Error ? error.message : String(error)}`);
145
- }
146
- child.pid = proc.pid;
147
- try {
148
- const [stdout, stderr] = await Promise.all([
149
- drain(proc.stdout as ReadableStream<Uint8Array>, OUTPUT_CAP),
150
- drain(proc.stderr as ReadableStream<Uint8Array>, OUTPUT_CAP),
151
- proc.exited,
152
- ]);
153
- return {
154
- exit_code: proc.exitCode ?? null,
155
- stdout: stdout.text,
156
- stderr: stderr.text,
157
- output_bytes: stdout.bytes + stderr.bytes,
158
- };
159
- } finally {
160
- // The child is gone; releasing the handle keeps a late cancel from signalling a reused pid.
161
- if (proc.exitCode !== null) child.pid = undefined;
162
- }
163
- }