agent-tower 0.6.0-beta.11 → 0.6.0-beta.13
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/dist/app.d.ts.map +1 -1
- package/dist/app.js +4 -0
- package/dist/app.js.map +1 -1
- package/dist/cli.js +39 -19
- package/dist/cli.js.map +1 -1
- package/dist/executors/__tests__/base.executor.test.js +133 -1
- package/dist/executors/__tests__/base.executor.test.js.map +1 -1
- package/dist/executors/__tests__/stdin-prompt.executors.test.js +18 -0
- package/dist/executors/__tests__/stdin-prompt.executors.test.js.map +1 -1
- package/dist/executors/base.executor.d.ts +8 -0
- package/dist/executors/base.executor.d.ts.map +1 -1
- package/dist/executors/base.executor.js +336 -56
- package/dist/executors/base.executor.js.map +1 -1
- package/dist/executors/index.d.ts +2 -1
- package/dist/executors/index.d.ts.map +1 -1
- package/dist/executors/index.js +1 -1
- package/dist/executors/index.js.map +1 -1
- package/dist/executors/start-error.d.ts +17 -0
- package/dist/executors/start-error.d.ts.map +1 -1
- package/dist/executors/start-error.js +36 -1
- package/dist/executors/start-error.js.map +1 -1
- package/dist/index.js +39 -29
- package/dist/index.js.map +1 -1
- package/dist/mcp/http-client.test.js +20 -0
- package/dist/mcp/http-client.test.js.map +1 -1
- package/dist/mcp/tools/__tests__/sessions.test.d.ts +2 -0
- package/dist/mcp/tools/__tests__/sessions.test.d.ts.map +1 -0
- package/dist/mcp/tools/__tests__/sessions.test.js +33 -0
- package/dist/mcp/tools/__tests__/sessions.test.js.map +1 -0
- package/dist/routes/__tests__/sessions-runtime.test.js +75 -3
- package/dist/routes/__tests__/sessions-runtime.test.js.map +1 -1
- package/dist/routes/conversations.d.ts.map +1 -1
- package/dist/routes/conversations.js +5 -1
- package/dist/routes/conversations.js.map +1 -1
- package/dist/routes/sessions.d.ts.map +1 -1
- package/dist/routes/sessions.js +13 -2
- package/dist/routes/sessions.js.map +1 -1
- package/dist/routes/team-runs.d.ts.map +1 -1
- package/dist/routes/team-runs.js +13 -1
- package/dist/routes/team-runs.js.map +1 -1
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js +86 -0
- package/dist/runtime/__tests__/acp-driver-lifecycle.test.js.map +1 -1
- package/dist/runtime/__tests__/acp-process-manager.test.js +393 -6
- package/dist/runtime/__tests__/acp-process-manager.test.js.map +1 -1
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.d.ts +2 -0
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js +244 -0
- package/dist/runtime/__tests__/cli-driver-lifecycle.test.js.map +1 -0
- package/dist/runtime/__tests__/launch-cleanup-registry.test.d.ts +2 -0
- package/dist/runtime/__tests__/launch-cleanup-registry.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/launch-cleanup-registry.test.js +154 -0
- package/dist/runtime/__tests__/launch-cleanup-registry.test.js.map +1 -0
- package/dist/runtime/__tests__/runtime-coordinator.test.js +117 -1
- package/dist/runtime/__tests__/runtime-coordinator.test.js.map +1 -1
- package/dist/runtime/__tests__/server-entry-shutdown.test.d.ts +2 -0
- package/dist/runtime/__tests__/server-entry-shutdown.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/server-entry-shutdown.test.js +38 -0
- package/dist/runtime/__tests__/server-entry-shutdown.test.js.map +1 -0
- package/dist/runtime/__tests__/shutdown-coordinator.test.d.ts +2 -0
- package/dist/runtime/__tests__/shutdown-coordinator.test.d.ts.map +1 -0
- package/dist/runtime/__tests__/shutdown-coordinator.test.js +28 -0
- package/dist/runtime/__tests__/shutdown-coordinator.test.js.map +1 -0
- package/dist/runtime/acp/acp-driver.d.ts.map +1 -1
- package/dist/runtime/acp/acp-driver.js +108 -35
- package/dist/runtime/acp/acp-driver.js.map +1 -1
- package/dist/runtime/acp/agents/managed-directory.d.ts.map +1 -1
- package/dist/runtime/acp/agents/managed-directory.js +3 -1
- package/dist/runtime/acp/agents/managed-directory.js.map +1 -1
- package/dist/runtime/acp/agents/managed-directory.test.d.ts +2 -0
- package/dist/runtime/acp/agents/managed-directory.test.d.ts.map +1 -0
- package/dist/runtime/acp/agents/managed-directory.test.js +25 -0
- package/dist/runtime/acp/agents/managed-directory.test.js.map +1 -0
- package/dist/runtime/acp/launch-cleanup-registry.d.ts +32 -0
- package/dist/runtime/acp/launch-cleanup-registry.d.ts.map +1 -0
- package/dist/runtime/acp/launch-cleanup-registry.js +176 -0
- package/dist/runtime/acp/launch-cleanup-registry.js.map +1 -0
- package/dist/runtime/acp/process-manager.d.ts +58 -0
- package/dist/runtime/acp/process-manager.d.ts.map +1 -1
- package/dist/runtime/acp/process-manager.js +489 -33
- package/dist/runtime/acp/process-manager.js.map +1 -1
- package/dist/runtime/cli-driver.d.ts.map +1 -1
- package/dist/runtime/cli-driver.js +230 -46
- package/dist/runtime/cli-driver.js.map +1 -1
- package/dist/runtime/contracts.d.ts +21 -2
- package/dist/runtime/contracts.d.ts.map +1 -1
- package/dist/runtime/index.d.ts +1 -0
- package/dist/runtime/index.d.ts.map +1 -1
- package/dist/runtime/index.js +1 -0
- package/dist/runtime/index.js.map +1 -1
- package/dist/runtime/runtime-coordinator.d.ts +8 -1
- package/dist/runtime/runtime-coordinator.d.ts.map +1 -1
- package/dist/runtime/runtime-coordinator.js +118 -18
- package/dist/runtime/runtime-coordinator.js.map +1 -1
- package/dist/runtime/server-entry-shutdown.d.ts +12 -0
- package/dist/runtime/server-entry-shutdown.d.ts.map +1 -0
- package/dist/runtime/server-entry-shutdown.js +23 -0
- package/dist/runtime/server-entry-shutdown.js.map +1 -0
- package/dist/runtime/shutdown-coordinator.d.ts +17 -0
- package/dist/runtime/shutdown-coordinator.d.ts.map +1 -0
- package/dist/runtime/shutdown-coordinator.js +67 -0
- package/dist/runtime/shutdown-coordinator.js.map +1 -0
- package/dist/services/__tests__/conversation.service.test.js +160 -0
- package/dist/services/__tests__/conversation.service.test.js.map +1 -1
- package/dist/services/__tests__/database-maintenance.service.test.js +97 -0
- package/dist/services/__tests__/database-maintenance.service.test.js.map +1 -1
- package/dist/services/__tests__/member-heartbeat-scheduler.test.js +6 -0
- package/dist/services/__tests__/member-heartbeat-scheduler.test.js.map +1 -1
- package/dist/services/__tests__/member-heartbeat.test.js +7 -11
- package/dist/services/__tests__/member-heartbeat.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.lifecycle.test.js +402 -12
- package/dist/services/__tests__/session-manager.lifecycle.test.js.map +1 -1
- package/dist/services/__tests__/session-manager.team-run.test.js +422 -29
- package/dist/services/__tests__/session-manager.team-run.test.js.map +1 -1
- package/dist/services/__tests__/team-queue-recovery.integration.test.js +1 -0
- package/dist/services/__tests__/team-queue-recovery.integration.test.js.map +1 -1
- package/dist/services/__tests__/team-reconciler.service.test.js +1282 -4
- package/dist/services/__tests__/team-reconciler.service.test.js.map +1 -1
- package/dist/services/__tests__/team-run.service.test.js +161 -1
- package/dist/services/__tests__/team-run.service.test.js.map +1 -1
- package/dist/services/__tests__/team-scheduler.service.test.js +334 -6
- package/dist/services/__tests__/team-scheduler.service.test.js.map +1 -1
- package/dist/services/conversation.service.d.ts.map +1 -1
- package/dist/services/conversation.service.js +21 -2
- package/dist/services/conversation.service.js.map +1 -1
- package/dist/services/database-maintenance.service.d.ts.map +1 -1
- package/dist/services/database-maintenance.service.js +68 -17
- package/dist/services/database-maintenance.service.js.map +1 -1
- package/dist/services/member-heartbeat-scheduler.d.ts +6 -5
- package/dist/services/member-heartbeat-scheduler.d.ts.map +1 -1
- package/dist/services/member-heartbeat-scheduler.js +7 -5
- package/dist/services/member-heartbeat-scheduler.js.map +1 -1
- package/dist/services/session-manager.d.ts +124 -14
- package/dist/services/session-manager.d.ts.map +1 -1
- package/dist/services/session-manager.js +1035 -116
- package/dist/services/session-manager.js.map +1 -1
- package/dist/services/session-runtime-cleanup-gate.d.ts +25 -0
- package/dist/services/session-runtime-cleanup-gate.d.ts.map +1 -0
- package/dist/services/session-runtime-cleanup-gate.js +284 -0
- package/dist/services/session-runtime-cleanup-gate.js.map +1 -0
- package/dist/services/task.service.d.ts +2 -2
- package/dist/services/team-member-admission-barrier.d.ts +3 -0
- package/dist/services/team-member-admission-barrier.d.ts.map +1 -0
- package/dist/services/team-member-admission-barrier.js +26 -0
- package/dist/services/team-member-admission-barrier.js.map +1 -0
- package/dist/services/team-reconciler.service.d.ts +30 -7
- package/dist/services/team-reconciler.service.d.ts.map +1 -1
- package/dist/services/team-reconciler.service.js +528 -111
- package/dist/services/team-reconciler.service.js.map +1 -1
- package/dist/services/team-run.service.d.ts.map +1 -1
- package/dist/services/team-run.service.js +37 -13
- package/dist/services/team-run.service.js.map +1 -1
- package/dist/services/team-scheduler.service.d.ts +8 -6
- package/dist/services/team-scheduler.service.d.ts.map +1 -1
- package/dist/services/team-scheduler.service.js +323 -120
- package/dist/services/team-scheduler.service.js.map +1 -1
- package/dist/services/workspace-background-process-manager.d.ts.map +1 -1
- package/dist/services/workspace-background-process-manager.js +2 -5
- package/dist/services/workspace-background-process-manager.js.map +1 -1
- package/dist/services/workspace.service.d.ts +15 -8
- package/dist/services/workspace.service.d.ts.map +1 -1
- package/dist/socket/index.d.ts.map +1 -1
- package/dist/socket/index.js +27 -14
- package/dist/socket/index.js.map +1 -1
- package/dist/utils/__tests__/unix-process-identity.test.d.ts +2 -0
- package/dist/utils/__tests__/unix-process-identity.test.d.ts.map +1 -0
- package/dist/utils/__tests__/unix-process-identity.test.js +73 -0
- package/dist/utils/__tests__/unix-process-identity.test.js.map +1 -0
- package/dist/utils/error-log.d.ts +2 -0
- package/dist/utils/error-log.d.ts.map +1 -1
- package/dist/utils/error-log.js +40 -3
- package/dist/utils/error-log.js.map +1 -1
- package/dist/utils/error-log.test.js +14 -2
- package/dist/utils/error-log.test.js.map +1 -1
- package/dist/utils/process-launch.d.ts +2 -2
- package/dist/utils/process-launch.d.ts.map +1 -1
- package/dist/utils/process-launch.js +339 -79
- package/dist/utils/process-launch.js.map +1 -1
- package/dist/utils/process-launch.test.js +168 -10
- package/dist/utils/process-launch.test.js.map +1 -1
- package/dist/utils/spawned-process-identity.d.ts +7 -0
- package/dist/utils/spawned-process-identity.d.ts.map +1 -0
- package/dist/utils/spawned-process-identity.js +36 -0
- package/dist/utils/spawned-process-identity.js.map +1 -0
- package/dist/utils/tree-cleanup-channel.d.ts +18 -0
- package/dist/utils/tree-cleanup-channel.d.ts.map +1 -0
- package/dist/utils/tree-cleanup-channel.js +16 -0
- package/dist/utils/tree-cleanup-channel.js.map +1 -0
- package/dist/utils/tree-cleanup-channel.test.d.ts +2 -0
- package/dist/utils/tree-cleanup-channel.test.d.ts.map +1 -0
- package/dist/utils/tree-cleanup-channel.test.js +15 -0
- package/dist/utils/tree-cleanup-channel.test.js.map +1 -0
- package/dist/utils/unix-process-identity.d.ts +13 -1
- package/dist/utils/unix-process-identity.d.ts.map +1 -1
- package/dist/utils/unix-process-identity.js +146 -25
- package/dist/utils/unix-process-identity.js.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.d.ts +1 -0
- package/node_modules/@agent-tower/shared/dist/types.d.ts.map +1 -1
- package/node_modules/@agent-tower/shared/dist/types.js.map +1 -1
- package/package.json +1 -1
- package/prisma/migrations/20260824000000_add_execution_process_ownership/migration.sql +10 -0
- package/prisma/migrations/20260824010000_add_runtime_cleanup_recovery/migration.sql +10 -0
- package/prisma/migrations/20260824020000_add_runtime_launch_admission/migration.sql +72 -0
- package/prisma/migrations/20260826000000_add_conversation_turn_queue/migration.sql +19 -0
- package/prisma/schema.prisma +50 -7
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { execFileSync, spawn, spawnSync } from 'node:child_process';
|
|
2
|
-
import { existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
2
|
+
import { chmodSync, existsSync, mkdirSync, mkdtempSync, rmSync, writeFileSync } from 'node:fs';
|
|
3
|
+
import { randomUUID } from 'node:crypto';
|
|
3
4
|
import os from 'node:os';
|
|
4
5
|
import path from 'node:path';
|
|
5
6
|
import { describe, expect, it } from 'vitest';
|
|
6
7
|
import { buildWindowsCmdShimCommandLine, buildPtyWrapperEnv, buildPtyCommand, buildPtyCommandWithStdin, buildUnixPathWithUserBinFallbacks, buildWindowsPathWithUserBinFallbacks, getDefaultTerminalShell, getNodeRuntimeCommand, normalizeCommandLookupOutput, } from './process-launch.js';
|
|
8
|
+
import { createTreeCleanupChannel } from './tree-cleanup-channel.js';
|
|
7
9
|
function isAlive(pid) {
|
|
8
10
|
try {
|
|
9
11
|
process.kill(pid, 0);
|
|
@@ -25,8 +27,11 @@ async function waitUntil(predicate, timeoutMs) {
|
|
|
25
27
|
/** 启动 wrapper 运行 childScript,等待 child 打印的孙进程 PID */
|
|
26
28
|
function spawnWrapperWithGrandchild(childScript) {
|
|
27
29
|
const invocation = buildPtyCommand(process.execPath, ['-e', childScript]);
|
|
30
|
+
const ownershipToken = randomUUID();
|
|
31
|
+
const env = buildPtyWrapperEnv({ ...process.env }, {}, ownershipToken);
|
|
28
32
|
const wrapper = spawn(invocation.command, invocation.args, {
|
|
29
33
|
stdio: ['ignore', 'pipe', 'inherit'],
|
|
34
|
+
env,
|
|
30
35
|
});
|
|
31
36
|
const grandPid = new Promise((resolve, reject) => {
|
|
32
37
|
let buf = '';
|
|
@@ -38,7 +43,7 @@ function spawnWrapperWithGrandchild(childScript) {
|
|
|
38
43
|
});
|
|
39
44
|
setTimeout(() => reject(new Error('timed out waiting for grandchild pid')), 5000).unref();
|
|
40
45
|
});
|
|
41
|
-
return { wrapper, grandPid };
|
|
46
|
+
return { wrapper, grandPid, ownershipToken };
|
|
42
47
|
}
|
|
43
48
|
describe('process-launch', () => {
|
|
44
49
|
it('should add bundled node runtime env only to the PTY wrapper env', () => {
|
|
@@ -47,6 +52,7 @@ describe('process-launch', () => {
|
|
|
47
52
|
AGENT_TOWER_URL: 'http://127.0.0.1:42232',
|
|
48
53
|
}, {
|
|
49
54
|
AGENT_TOWER_NODE_RUNTIME: 'C:\\Program Files\\Agent Tower\\resources\\runtime\\node\\node.exe',
|
|
55
|
+
ELECTRON_RUN_AS_NODE: '1',
|
|
50
56
|
});
|
|
51
57
|
expect(wrapperEnv).toMatchObject({
|
|
52
58
|
PATH: '/usr/bin',
|
|
@@ -91,6 +97,12 @@ describe('process-launch', () => {
|
|
|
91
97
|
};
|
|
92
98
|
expect(buildPtyWrapperEnv(agentEnv, {})).toEqual(agentEnv);
|
|
93
99
|
});
|
|
100
|
+
it('should keep completion capability out of wrapped child env', () => {
|
|
101
|
+
const wrapperEnv = buildPtyWrapperEnv({ PATH: '/usr/bin' }, { AGENT_TOWER_TREE_CLEANUP_CHANNEL: '127.0.0.1:1234', AGENT_TOWER_TREE_CLEANUP_SECRET: 'parent-secret' }, 'launch-token', { AGENT_TOWER_TREE_CLEANUP_CHANNEL: '127.0.0.1:4321', AGENT_TOWER_TREE_CLEANUP_SECRET: 'launch-secret' });
|
|
102
|
+
expect(wrapperEnv).not.toHaveProperty('AGENT_TOWER_TREE_CLEANUP_CHANNEL');
|
|
103
|
+
expect(wrapperEnv).not.toHaveProperty('AGENT_TOWER_TREE_CLEANUP_SECRET');
|
|
104
|
+
expect(wrapperEnv).not.toHaveProperty('AGENT_TOWER_TREE_CLEANUP_EVIDENCE');
|
|
105
|
+
});
|
|
94
106
|
it('should strip packaged node-mode env before spawning the wrapped child', () => {
|
|
95
107
|
const originalNodeRuntime = process.env.AGENT_TOWER_NODE_RUNTIME;
|
|
96
108
|
delete process.env.AGENT_TOWER_NODE_RUNTIME;
|
|
@@ -220,13 +232,59 @@ describe('process-launch', () => {
|
|
|
220
232
|
const invocation = buildPtyCommand('C:\\Tools\\cursor-agent.cmd', ['--print']);
|
|
221
233
|
expect(invocation.args[1]).toContain('windowsHide: true');
|
|
222
234
|
});
|
|
223
|
-
it('should keep Unix
|
|
235
|
+
it('should keep Unix group signals identity-validated with a handle-bound fallback', () => {
|
|
224
236
|
const invocation = buildPtyCommand(process.execPath, ['-e', 'setTimeout(() => {}, 1000)']);
|
|
225
237
|
const wrapperScript = invocation.args[1] ?? '';
|
|
226
238
|
const directChildSignals = wrapperScript.match(/child\.kill\(signal\)/g) ?? [];
|
|
227
239
|
expect(wrapperScript).toContain('unixIdentityAdapter.signalGroup(signal)');
|
|
240
|
+
expect(wrapperScript).toContain('process.kill(-child.pid, signal)');
|
|
241
|
+
expect(wrapperScript).toContain("child['kill'](signal)");
|
|
228
242
|
expect(directChildSignals).toHaveLength(1);
|
|
229
243
|
});
|
|
244
|
+
it('should use the Windows descendant-tree kill contract', () => {
|
|
245
|
+
const invocation = buildPtyCommand('C:\\Tools\\codex.cmd', ['--print']);
|
|
246
|
+
const wrapperScript = invocation.args[1] ?? '';
|
|
247
|
+
expect(wrapperScript).toContain("spawnSync('taskkill', ['/PID', String(child.pid), '/T', '/F']");
|
|
248
|
+
expect(wrapperScript).toContain('terminateWindowsTree()');
|
|
249
|
+
});
|
|
250
|
+
it('should fail closed for unavailable process probes with bounded backoff', () => {
|
|
251
|
+
const invocation = buildPtyCommand('C:\\Tools\\codex.cmd', ['--print']);
|
|
252
|
+
const wrapperScript = invocation.args[1] ?? '';
|
|
253
|
+
expect(wrapperScript).toContain("'PROBE_UNAVAILABLE'");
|
|
254
|
+
expect(wrapperScript).toContain("'IDENTITY_INCOMPLETE'");
|
|
255
|
+
expect(wrapperScript).toContain("'CLEAN_EMPTY'");
|
|
256
|
+
expect(wrapperScript).toContain('scheduleTreePoll');
|
|
257
|
+
expect(wrapperScript).not.toContain('treeExitPoll = setInterval');
|
|
258
|
+
});
|
|
259
|
+
it('should force a stable C locale for Unix process identity probes', () => {
|
|
260
|
+
const invocation = buildPtyCommand(process.execPath, ['-e', 'process.exit(0)']);
|
|
261
|
+
const wrapperScript = invocation.args[1] ?? '';
|
|
262
|
+
expect(wrapperScript).toContain("probeEnv.LC_ALL = 'C'");
|
|
263
|
+
expect(wrapperScript).toContain("probeEnv.LANG = 'C'");
|
|
264
|
+
});
|
|
265
|
+
it.skipIf(process.platform === 'win32')('should keep the wrapper alive when a process probe returns an empty snapshot', async () => {
|
|
266
|
+
const directory = mkdtempSync(path.join(os.tmpdir(), 'agent-tower-empty-probe-'));
|
|
267
|
+
const fakePs = path.join(directory, 'ps');
|
|
268
|
+
writeFileSync(fakePs, '#!/bin/sh\nexit 0\n');
|
|
269
|
+
chmodSync(fakePs, 0o755);
|
|
270
|
+
const invocation = buildPtyCommand(process.execPath, ['-e', 'process.exit(0)']);
|
|
271
|
+
const wrapper = spawn(invocation.command, invocation.args, {
|
|
272
|
+
stdio: ['ignore', 'ignore', 'ignore'],
|
|
273
|
+
env: buildPtyWrapperEnv({
|
|
274
|
+
...process.env,
|
|
275
|
+
PATH: `${directory}:${process.env.PATH ?? ''}`,
|
|
276
|
+
}, {}, randomUUID()),
|
|
277
|
+
});
|
|
278
|
+
try {
|
|
279
|
+
await new Promise((resolve) => setTimeout(resolve, 400));
|
|
280
|
+
expect(wrapper.exitCode).toBeNull();
|
|
281
|
+
}
|
|
282
|
+
finally {
|
|
283
|
+
wrapper.kill('SIGKILL');
|
|
284
|
+
await new Promise((resolve) => wrapper.once('exit', () => resolve()));
|
|
285
|
+
rmSync(directory, { recursive: true, force: true });
|
|
286
|
+
}
|
|
287
|
+
}, 5_000);
|
|
230
288
|
it('should allow overriding the node-like runtime command', () => {
|
|
231
289
|
const original = process.env.AGENT_TOWER_NODE_RUNTIME;
|
|
232
290
|
process.env.AGENT_TOWER_NODE_RUNTIME = '/tmp/agent-tower-node-runtime';
|
|
@@ -302,21 +360,24 @@ describe('process-launch', () => {
|
|
|
302
360
|
args: [],
|
|
303
361
|
});
|
|
304
362
|
});
|
|
305
|
-
it.skipIf(process.platform === 'win32')('should
|
|
306
|
-
//
|
|
363
|
+
it.skipIf(process.platform === 'win32')('should hard-escalate the verified wrapper tree when the child ignores termination', async () => {
|
|
364
|
+
// The benign helper ignores graceful signals. The wrapper must retain
|
|
365
|
+
// ownership long enough to escalate its known process group, so an
|
|
366
|
+
// identity-failure cleanup cannot mistake wrapper exit for tree exit.
|
|
307
367
|
const { wrapper, grandPid } = spawnWrapperWithGrandchild(`
|
|
308
368
|
const { spawn } = require('node:child_process');
|
|
309
|
-
const grand = spawn(process.execPath, ['-e', '
|
|
369
|
+
const grand = spawn(process.execPath, ['-e', "process.on('SIGINT',()=>{});process.on('SIGTERM',()=>{});setInterval(()=>{},60000)"], { stdio: 'ignore' });
|
|
310
370
|
process.stdout.write('GRAND:' + grand.pid + '\\n');
|
|
371
|
+
process.on('SIGINT', () => {});
|
|
372
|
+
process.on('SIGTERM', () => {});
|
|
311
373
|
setTimeout(() => {}, 60000);
|
|
312
374
|
`);
|
|
313
375
|
const pid = await grandPid;
|
|
314
376
|
expect(isAlive(pid)).toBe(true);
|
|
315
|
-
wrapper.kill('
|
|
377
|
+
wrapper.kill('SIGINT');
|
|
316
378
|
await new Promise((resolve) => wrapper.on('exit', resolve));
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
});
|
|
379
|
+
expect(await waitUntil(() => !isAlive(pid), 8000)).toBe(true);
|
|
380
|
+
}, 15_000);
|
|
320
381
|
it.skipIf(process.platform === 'win32')('should sweep leftover grandchildren after the child exits normally', async () => {
|
|
321
382
|
// child 留下一个后台孙进程后立即正常退出
|
|
322
383
|
const { wrapper, grandPid } = spawnWrapperWithGrandchild(`
|
|
@@ -330,5 +391,102 @@ describe('process-launch', () => {
|
|
|
330
391
|
// exitWithChildResult 应在退出前对 child 进程组发 SIGHUP 清扫残留
|
|
331
392
|
expect(await waitUntil(() => !isAlive(pid), 3000)).toBe(true);
|
|
332
393
|
});
|
|
394
|
+
it.skipIf(process.platform === 'win32')('should discover and clean a detached descendant in a new process group', async () => {
|
|
395
|
+
const { wrapper, grandPid } = spawnWrapperWithGrandchild(`
|
|
396
|
+
const { spawn } = require('node:child_process');
|
|
397
|
+
const grand = spawn(process.execPath, ['-e', "process.on('SIGHUP',()=>{});setInterval(()=>{},60000)"], { stdio: 'ignore', detached: true });
|
|
398
|
+
grand.unref();
|
|
399
|
+
process.stdout.write('GRAND:' + grand.pid + '\\n');
|
|
400
|
+
`);
|
|
401
|
+
const pid = await grandPid;
|
|
402
|
+
await new Promise((resolve) => wrapper.on('exit', resolve));
|
|
403
|
+
expect(await waitUntil(() => !isAlive(pid), 8_000)).toBe(true);
|
|
404
|
+
}, 15_000);
|
|
405
|
+
it.skipIf(process.platform === 'win32')('should clean a descendant that does not inherit the ownership marker', async () => {
|
|
406
|
+
const { wrapper, grandPid } = spawnWrapperWithGrandchild(`
|
|
407
|
+
const { spawn } = require('node:child_process');
|
|
408
|
+
const childEnv = { ...process.env };
|
|
409
|
+
delete childEnv.AGENT_TOWER_PROCESS_IDENTITY;
|
|
410
|
+
const grand = spawn(process.execPath, ['-e', 'setInterval(() => {}, 60000)'], {
|
|
411
|
+
stdio: 'ignore',
|
|
412
|
+
env: childEnv,
|
|
413
|
+
});
|
|
414
|
+
process.stdout.write('GRAND:' + grand.pid + '\\n');
|
|
415
|
+
setTimeout(() => process.exit(0), 250);
|
|
416
|
+
`);
|
|
417
|
+
const pid = await grandPid;
|
|
418
|
+
await new Promise((resolve) => wrapper.on('exit', resolve));
|
|
419
|
+
expect(await waitUntil(() => !isAlive(pid), 3_000)).toBe(true);
|
|
420
|
+
}, 10_000);
|
|
421
|
+
it.skipIf(process.platform === 'win32')('should keep completion parent-owned and hide it from the child', async () => {
|
|
422
|
+
const channel = await createTreeCleanupChannel();
|
|
423
|
+
const invocation = buildPtyCommand(process.execPath, [
|
|
424
|
+
'-e',
|
|
425
|
+
"process.stdout.write(JSON.stringify({ channel: process.env.AGENT_TOWER_TREE_CLEANUP_CHANNEL ?? null, secret: process.env.AGENT_TOWER_TREE_CLEANUP_SECRET ?? null, legacy: process.env.AGENT_TOWER_TREE_CLEANUP_EVIDENCE ?? null }))",
|
|
426
|
+
]);
|
|
427
|
+
const child = spawn(invocation.command, invocation.args, {
|
|
428
|
+
stdio: ['ignore', 'pipe', 'inherit'],
|
|
429
|
+
env: buildPtyWrapperEnv({ ...process.env }, {}, randomUUID(), channel.env),
|
|
430
|
+
});
|
|
431
|
+
let output = '';
|
|
432
|
+
child.stdout.on('data', (chunk) => { output += String(chunk); });
|
|
433
|
+
await new Promise((resolve, reject) => {
|
|
434
|
+
child.once('error', reject);
|
|
435
|
+
child.once('exit', () => resolve());
|
|
436
|
+
});
|
|
437
|
+
expect(JSON.parse(output)).toEqual({ channel: null, secret: null, legacy: null });
|
|
438
|
+
expect(channel.isCompleted()).toBe(false);
|
|
439
|
+
channel.markCompleted();
|
|
440
|
+
expect(channel.isCompleted()).toBe(true);
|
|
441
|
+
channel.close();
|
|
442
|
+
}, 10_000);
|
|
443
|
+
it.skipIf(process.platform === 'win32')('should fail closed on a transient ps probe failure and recover before cleanup', async () => {
|
|
444
|
+
const directory = mkdtempSync(path.join(os.tmpdir(), 'agent-tower-ps-probe-'));
|
|
445
|
+
const modeFile = path.join(directory, 'mode');
|
|
446
|
+
const fakePs = path.join(directory, 'ps');
|
|
447
|
+
writeFileSync(fakePs, '#!/bin/sh\nif test -f "$AGENT_TOWER_TEST_PS_MODE" && grep -q fail "$AGENT_TOWER_TEST_PS_MODE"; then exit 1; fi\nexec /bin/ps "$@"\n');
|
|
448
|
+
chmodSync(fakePs, 0o755);
|
|
449
|
+
writeFileSync(modeFile, 'ok');
|
|
450
|
+
const invocation = buildPtyCommand(process.execPath, [
|
|
451
|
+
'-e',
|
|
452
|
+
[
|
|
453
|
+
"const {spawn}=require('node:child_process');",
|
|
454
|
+
"const grand=spawn(process.execPath,['-e','process.on(\\'SIGHUP\\',()=>{});setInterval(()=>{},60000)'],{stdio:'ignore'});",
|
|
455
|
+
"process.stdout.write('GRAND:'+grand.pid+'\\n');",
|
|
456
|
+
'setTimeout(() => process.exit(0), 250);',
|
|
457
|
+
].join(''),
|
|
458
|
+
]);
|
|
459
|
+
const wrapper = spawn(invocation.command, invocation.args, {
|
|
460
|
+
stdio: ['ignore', 'pipe', 'inherit'],
|
|
461
|
+
env: {
|
|
462
|
+
...buildPtyWrapperEnv({ ...process.env }, {}, randomUUID()),
|
|
463
|
+
PATH: `${directory}:${process.env.PATH ?? ''}`,
|
|
464
|
+
AGENT_TOWER_TEST_PS_MODE: modeFile,
|
|
465
|
+
},
|
|
466
|
+
});
|
|
467
|
+
let output = '';
|
|
468
|
+
wrapper.stdout.on('data', (chunk) => { output += String(chunk); });
|
|
469
|
+
const grandPid = await new Promise((resolve, reject) => {
|
|
470
|
+
const timer = setTimeout(() => reject(new Error('timed out waiting for grandchild')), 5_000);
|
|
471
|
+
wrapper.stdout.on('data', () => {
|
|
472
|
+
const match = output.match(/GRAND:(\d+)/);
|
|
473
|
+
if (match) {
|
|
474
|
+
clearTimeout(timer);
|
|
475
|
+
resolve(Number(match[1]));
|
|
476
|
+
}
|
|
477
|
+
});
|
|
478
|
+
});
|
|
479
|
+
writeFileSync(modeFile, 'fail');
|
|
480
|
+
await new Promise((resolve) => setTimeout(resolve, 350));
|
|
481
|
+
expect(isAlive(wrapper.pid)).toBe(true);
|
|
482
|
+
expect(isAlive(grandPid)).toBe(true);
|
|
483
|
+
writeFileSync(modeFile, 'ok');
|
|
484
|
+
await new Promise((resolve, reject) => {
|
|
485
|
+
wrapper.once('error', reject);
|
|
486
|
+
wrapper.once('exit', () => resolve());
|
|
487
|
+
});
|
|
488
|
+
expect(await waitUntil(() => !isAlive(grandPid), 8_000)).toBe(true);
|
|
489
|
+
rmSync(directory, { recursive: true, force: true });
|
|
490
|
+
}, 20_000);
|
|
333
491
|
});
|
|
334
492
|
//# sourceMappingURL=process-launch.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"process-launch.test.js","sourceRoot":"","sources":["../../src/utils/process-launch.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"process-launch.test.js","sourceRoot":"","sources":["../../src/utils/process-launch.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface SpawnedProcessIdentity {
|
|
2
|
+
processGroupId: string;
|
|
3
|
+
birthMarker: string;
|
|
4
|
+
ownershipToken: string;
|
|
5
|
+
}
|
|
6
|
+
export declare function captureSpawnedProcessIdentity(pid: number, ownershipToken: string, platform?: NodeJS.Platform): Promise<SpawnedProcessIdentity | null>;
|
|
7
|
+
//# sourceMappingURL=spawned-process-identity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawned-process-identity.d.ts","sourceRoot":"","sources":["../../src/utils/spawned-process-identity.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,sBAAsB;IACrC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,wBAAsB,6BAA6B,CACjD,GAAG,EAAE,MAAM,EACX,cAAc,EAAE,MAAM,EACtB,QAAQ,GAAE,MAAM,CAAC,QAA2B,GAC3C,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC,CA8BxC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { promisify } from 'node:util';
|
|
3
|
+
import { createUnixProcessIdentityAdapter } from './unix-process-identity.js';
|
|
4
|
+
const execFileAsync = promisify(execFile);
|
|
5
|
+
export async function captureSpawnedProcessIdentity(pid, ownershipToken, platform = process.platform) {
|
|
6
|
+
if (platform !== 'win32') {
|
|
7
|
+
const identity = await createUnixProcessIdentityAdapter(platform).captureProcess(pid, ownershipToken);
|
|
8
|
+
return identity ? {
|
|
9
|
+
processGroupId: String(identity.pgid),
|
|
10
|
+
birthMarker: identity.birthIdentity,
|
|
11
|
+
ownershipToken,
|
|
12
|
+
} : null;
|
|
13
|
+
}
|
|
14
|
+
const script = [
|
|
15
|
+
`Get-CimInstance Win32_Process -Filter \"ProcessId = ${pid}\"`,
|
|
16
|
+
'Select-Object -ExpandProperty CreationDate',
|
|
17
|
+
].join(' | ');
|
|
18
|
+
try {
|
|
19
|
+
const { stdout } = await execFileAsync('powershell.exe', [
|
|
20
|
+
'-NoProfile',
|
|
21
|
+
'-NonInteractive',
|
|
22
|
+
'-Command',
|
|
23
|
+
script,
|
|
24
|
+
], { encoding: 'utf8', windowsHide: true });
|
|
25
|
+
const birthMarker = stdout.trim();
|
|
26
|
+
return birthMarker ? {
|
|
27
|
+
processGroupId: String(pid),
|
|
28
|
+
birthMarker,
|
|
29
|
+
ownershipToken,
|
|
30
|
+
} : null;
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=spawned-process-identity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spawned-process-identity.js","sourceRoot":"","sources":["../../src/utils/spawned-process-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AACtC,OAAO,EAAE,gCAAgC,EAAE,MAAM,4BAA4B,CAAC;AAE9E,MAAM,aAAa,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;AAQ1C,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,GAAW,EACX,cAAsB,EACtB,WAA4B,OAAO,CAAC,QAAQ;IAE5C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,MAAM,QAAQ,GAAG,MAAM,gCAAgC,CAAC,QAAQ,CAAC,CAAC,cAAc,CAAC,GAAG,EAAE,cAAc,CAAC,CAAC;QACtG,OAAO,QAAQ,CAAC,CAAC,CAAC;YAChB,cAAc,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC;YACrC,WAAW,EAAE,QAAQ,CAAC,aAAa;YACnC,cAAc;SACf,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAED,MAAM,MAAM,GAAG;QACb,uDAAuD,GAAG,IAAI;QAC9D,4CAA4C;KAC7C,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACd,IAAI,CAAC;QACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,gBAAgB,EAAE;YACvD,YAAY;YACZ,iBAAiB;YACjB,UAAU;YACV,MAAM;SACP,EAAE,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC;QAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;QAClC,OAAO,WAAW,CAAC,CAAC,CAAC;YACnB,cAAc,EAAE,MAAM,CAAC,GAAG,CAAC;YAC3B,WAAW;YACX,cAAc;SACf,CAAC,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Parent-owned cleanup completion latch.
|
|
3
|
+
*
|
|
4
|
+
* The previous implementation exposed a TCP endpoint and bearer secret in the
|
|
5
|
+
* wrapper environment. An Agent child can inspect its parent environment on
|
|
6
|
+
* Unix, so that was not an origin proof. Completion is now an in-process
|
|
7
|
+
* capability: only the parent launch owner receives `markCompleted`, and the
|
|
8
|
+
* wrapper has no completion material to inherit or echo.
|
|
9
|
+
*/
|
|
10
|
+
export interface TreeCleanupChannel {
|
|
11
|
+
/** Deliberately empty: no completion endpoint, secret, or evidence path. */
|
|
12
|
+
readonly env: Record<string, string>;
|
|
13
|
+
isCompleted(): boolean;
|
|
14
|
+
markCompleted(): void;
|
|
15
|
+
close(): void;
|
|
16
|
+
}
|
|
17
|
+
export declare function createTreeCleanupChannel(): Promise<TreeCleanupChannel>;
|
|
18
|
+
//# sourceMappingURL=tree-cleanup-channel.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-cleanup-channel.d.ts","sourceRoot":"","sources":["../../src/utils/tree-cleanup-channel.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,WAAW,kBAAkB;IACjC,4EAA4E;IAC5E,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACrC,WAAW,IAAI,OAAO,CAAC;IACvB,aAAa,IAAI,IAAI,CAAC;IACtB,KAAK,IAAI,IAAI,CAAC;CACf;AAED,wBAAsB,wBAAwB,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAa5E"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export async function createTreeCleanupChannel() {
|
|
2
|
+
let completed = false;
|
|
3
|
+
let closed = false;
|
|
4
|
+
return {
|
|
5
|
+
env: {},
|
|
6
|
+
isCompleted: () => completed,
|
|
7
|
+
markCompleted: () => {
|
|
8
|
+
if (!closed)
|
|
9
|
+
completed = true;
|
|
10
|
+
},
|
|
11
|
+
close: () => {
|
|
12
|
+
closed = true;
|
|
13
|
+
},
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=tree-cleanup-channel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-cleanup-channel.js","sourceRoot":"","sources":["../../src/utils/tree-cleanup-channel.ts"],"names":[],"mappings":"AAiBA,MAAM,CAAC,KAAK,UAAU,wBAAwB;IAC5C,IAAI,SAAS,GAAG,KAAK,CAAC;IACtB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,OAAO;QACL,GAAG,EAAE,EAAE;QACP,WAAW,EAAE,GAAG,EAAE,CAAC,SAAS;QAC5B,aAAa,EAAE,GAAG,EAAE;YAClB,IAAI,CAAC,MAAM;gBAAE,SAAS,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,KAAK,EAAE,GAAG,EAAE;YACV,MAAM,GAAG,IAAI,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-cleanup-channel.test.d.ts","sourceRoot":"","sources":["../../src/utils/tree-cleanup-channel.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { describe, expect, it } from 'vitest';
|
|
2
|
+
import { createTreeCleanupChannel } from './tree-cleanup-channel.js';
|
|
3
|
+
describe('tree cleanup completion channel', () => {
|
|
4
|
+
it('does not expose a discoverable or writable child capability', async () => {
|
|
5
|
+
const channel = await createTreeCleanupChannel();
|
|
6
|
+
expect(channel.isCompleted()).toBe(false);
|
|
7
|
+
expect(channel.env).toEqual({});
|
|
8
|
+
channel.markCompleted();
|
|
9
|
+
expect(channel.isCompleted()).toBe(true);
|
|
10
|
+
channel.close();
|
|
11
|
+
channel.markCompleted();
|
|
12
|
+
expect(channel.isCompleted()).toBe(true);
|
|
13
|
+
});
|
|
14
|
+
});
|
|
15
|
+
//# sourceMappingURL=tree-cleanup-channel.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tree-cleanup-channel.test.js","sourceRoot":"","sources":["../../src/utils/tree-cleanup-channel.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,wBAAwB,EAAE,MAAM,2BAA2B,CAAC;AAErE,QAAQ,CAAC,iCAAiC,EAAE,GAAG,EAAE;IAC/C,EAAE,CAAC,6DAA6D,EAAE,KAAK,IAAI,EAAE;QAC3E,MAAM,OAAO,GAAG,MAAM,wBAAwB,EAAE,CAAC;QACjD,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1C,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChC,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,OAAO,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CAAC,aAAa,EAAE,CAAC;QACxB,MAAM,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
import { execFile } from 'node:child_process';
|
|
2
|
+
import { readdir, readFile } from 'node:fs/promises';
|
|
1
3
|
export declare const PROCESS_IDENTITY_ENV = "AGENT_TOWER_PROCESS_IDENTITY";
|
|
2
4
|
export declare const PTY_WRAPPER_IDENTITY_SEED_ENV = "AGENT_TOWER_PTY_IDENTITY_SEED";
|
|
3
5
|
export interface UnixProcessIdentity {
|
|
@@ -13,11 +15,21 @@ export interface UnixProcessGroupIdentity {
|
|
|
13
15
|
export interface UnixProcessIdentityAdapter {
|
|
14
16
|
captureProcess(pid: number, ownershipToken: string): Promise<UnixProcessIdentity | null>;
|
|
15
17
|
captureDescendantGroups(root: UnixProcessIdentity): Promise<UnixProcessGroupIdentity[]>;
|
|
18
|
+
/**
|
|
19
|
+
* Capture all processes carrying an ownership token, including descendants
|
|
20
|
+
* that were re-parented after the launch root exited.
|
|
21
|
+
*/
|
|
22
|
+
captureOwnedGroups?(ownershipToken: string, processGroupId?: number): Promise<UnixProcessGroupIdentity[]>;
|
|
16
23
|
isProcessAlive(identity: UnixProcessIdentity): Promise<boolean>;
|
|
17
24
|
isProcessGroupAlive(identity: UnixProcessGroupIdentity): Promise<boolean>;
|
|
18
25
|
signalProcess(identity: UnixProcessIdentity, signal: NodeJS.Signals): Promise<boolean>;
|
|
19
26
|
signalProcessGroup(identity: UnixProcessGroupIdentity, signal: NodeJS.Signals): Promise<boolean>;
|
|
20
27
|
}
|
|
28
|
+
export interface UnixProcessIdentityAdapterDependencies {
|
|
29
|
+
execFile?: typeof execFile;
|
|
30
|
+
readFile?: typeof readFile;
|
|
31
|
+
readdir?: typeof readdir;
|
|
32
|
+
}
|
|
21
33
|
export declare function unixProcessIdentityMatches(expected: UnixProcessIdentity, current: UnixProcessIdentity | null): boolean;
|
|
22
|
-
export declare function createUnixProcessIdentityAdapter(platform?: NodeJS.Platform): UnixProcessIdentityAdapter;
|
|
34
|
+
export declare function createUnixProcessIdentityAdapter(platform?: NodeJS.Platform, dependencies?: UnixProcessIdentityAdapterDependencies): UnixProcessIdentityAdapter;
|
|
23
35
|
//# sourceMappingURL=unix-process-identity.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"unix-process-identity.d.ts","sourceRoot":"","sources":["../../src/utils/unix-process-identity.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"unix-process-identity.d.ts","sourceRoot":"","sources":["../../src/utils/unix-process-identity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAErD,eAAO,MAAM,oBAAoB,iCAAiC,CAAC;AACnE,eAAO,MAAM,6BAA6B,kCAAkC,CAAC;AAU7E,MAAM,WAAW,mBAAmB;IAClC,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,wBAAwB;IACvC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,mBAAmB,EAAE,CAAC;CAChC;AAED,MAAM,WAAW,0BAA0B;IACzC,cAAc,CAAC,GAAG,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAAC;IACzF,uBAAuB,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACxF;;;OAGG;IACH,kBAAkB,CAAC,CACjB,cAAc,EAAE,MAAM,EACtB,cAAc,CAAC,EAAE,MAAM,GACtB,OAAO,CAAC,wBAAwB,EAAE,CAAC,CAAC;IACvC,cAAc,CAAC,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAChE,mBAAmB,CAAC,QAAQ,EAAE,wBAAwB,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC1E,aAAa,CAAC,QAAQ,EAAE,mBAAmB,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACvF,kBAAkB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,MAAM,EAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAClG;AAED,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC3B,QAAQ,CAAC,EAAE,OAAO,QAAQ,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,OAAO,CAAC;CAC1B;AAED,wBAAgB,0BAA0B,CACxC,QAAQ,EAAE,mBAAmB,EAC7B,OAAO,EAAE,mBAAmB,GAAG,IAAI,GAClC,OAAO,CAMT;AAED,wBAAgB,gCAAgC,CAC9C,QAAQ,GAAE,MAAM,CAAC,QAA2B,EAC5C,YAAY,GAAE,sCAA2C,GACxD,0BAA0B,CAM5B"}
|