@provos/ironcurtain 0.3.0 → 0.4.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/LICENSE +0 -1
- package/README.md +20 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.d.ts +1 -0
- package/dist/config/config-command.js +138 -34
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/constitution-user-base.md +2 -0
- package/dist/config/first-start.js +31 -3
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/generated/compiled-policy.json +158 -64
- package/dist/config/generated/test-scenarios.json +144 -293
- package/dist/config/generated/tool-annotations.json +17 -3
- package/dist/config/index.js +49 -17
- package/dist/config/index.js.map +1 -1
- package/dist/config/paths.js +9 -4
- package/dist/config/paths.js.map +1 -1
- package/dist/config/user-config.d.ts +47 -0
- package/dist/config/user-config.js +97 -4
- package/dist/config/user-config.js.map +1 -1
- package/dist/docker/adapters/claude-code.js +14 -3
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +2 -0
- package/dist/docker/audit-log-tailer.d.ts +4 -3
- package/dist/docker/audit-log-tailer.js +9 -7
- package/dist/docker/audit-log-tailer.js.map +1 -1
- package/dist/docker/docker-agent-session.d.ts +11 -0
- package/dist/docker/docker-agent-session.js +103 -22
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-manager.js +82 -15
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/managed-proxy.d.ts +7 -3
- package/dist/docker/managed-proxy.js +98 -8
- package/dist/docker/managed-proxy.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +7 -4
- package/dist/docker/mitm-proxy.js +152 -62
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/orientation.d.ts +1 -1
- package/dist/docker/orientation.js +5 -2
- package/dist/docker/orientation.js.map +1 -1
- package/dist/docker/platform.d.ts +20 -0
- package/dist/docker/platform.js +24 -0
- package/dist/docker/platform.js.map +1 -0
- package/dist/docker/provider-config.d.ts +38 -2
- package/dist/docker/provider-config.js +61 -0
- package/dist/docker/provider-config.js.map +1 -1
- package/dist/docker/types.d.ts +48 -6
- package/dist/pipeline/compile.js +2 -2
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.js +5 -2
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/handwritten-scenarios.js +9 -10
- package/dist/pipeline/handwritten-scenarios.js.map +1 -1
- package/dist/pipeline/policy-verifier.d.ts +1 -1
- package/dist/pipeline/policy-verifier.js +7 -4
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/types.d.ts +7 -1
- package/dist/servers/fetch-server.d.ts +4 -3
- package/dist/servers/fetch-server.js +72 -10
- package/dist/servers/fetch-server.js.map +1 -1
- package/dist/servers/search-providers.d.ts +29 -0
- package/dist/servers/search-providers.js +156 -0
- package/dist/servers/search-providers.js.map +1 -0
- package/dist/session/index.js +16 -6
- package/dist/session/index.js.map +1 -1
- package/dist/signal/bot-command.d.ts +13 -0
- package/dist/signal/bot-command.js +54 -0
- package/dist/signal/bot-command.js.map +1 -0
- package/dist/signal/format.d.ts +31 -0
- package/dist/signal/format.js +101 -0
- package/dist/signal/format.js.map +1 -0
- package/dist/signal/index.d.ts +16 -0
- package/dist/signal/index.js +13 -0
- package/dist/signal/index.js.map +1 -0
- package/dist/signal/markdown-to-signal.d.ts +29 -0
- package/dist/signal/markdown-to-signal.js +154 -0
- package/dist/signal/markdown-to-signal.js.map +1 -0
- package/dist/signal/setup-signal.d.ts +48 -0
- package/dist/signal/setup-signal.js +443 -0
- package/dist/signal/setup-signal.js.map +1 -0
- package/dist/signal/signal-bot-daemon.d.ts +142 -0
- package/dist/signal/signal-bot-daemon.js +504 -0
- package/dist/signal/signal-bot-daemon.js.map +1 -0
- package/dist/signal/signal-config.d.ts +64 -0
- package/dist/signal/signal-config.js +53 -0
- package/dist/signal/signal-config.js.map +1 -0
- package/dist/signal/signal-container.d.ts +37 -0
- package/dist/signal/signal-container.js +112 -0
- package/dist/signal/signal-container.js.map +1 -0
- package/dist/signal/signal-transport.d.ts +34 -0
- package/dist/signal/signal-transport.js +70 -0
- package/dist/signal/signal-transport.js.map +1 -0
- package/dist/trusted-process/mcp-proxy-server.js +34 -3
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/path-utils.d.ts +5 -1
- package/dist/trusted-process/path-utils.js +47 -4
- package/dist/trusted-process/path-utils.js.map +1 -1
- package/dist/trusted-process/tcp-server-transport.d.ts +43 -0
- package/dist/trusted-process/tcp-server-transport.js +119 -0
- package/dist/trusted-process/tcp-server-transport.js.map +1 -0
- package/dist/types/argument-roles.js +20 -5
- package/dist/types/argument-roles.js.map +1 -1
- package/docker/Dockerfile.base.arm64 +23 -0
- package/package.json +6 -3
- package/src/config/constitution-user-base.md +2 -0
- package/src/config/generated/compiled-policy.json +158 -64
- package/src/config/generated/test-scenarios.json +144 -293
- package/src/config/generated/tool-annotations.json +17 -3
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tails a JSONL audit log file and emits DiagnosticEvent callbacks
|
|
3
|
-
* for each new entry. Uses fs.
|
|
3
|
+
* for each new entry. Uses fs.watchFile() for change notification and
|
|
4
4
|
* tracks the file read offset to parse only new lines.
|
|
5
5
|
*/
|
|
6
|
-
import { openSync, readSync, fstatSync, closeSync,
|
|
6
|
+
import { openSync, readSync, fstatSync, closeSync, watchFile, unwatchFile } from 'node:fs';
|
|
7
7
|
export class AuditLogTailer {
|
|
8
8
|
offset = 0;
|
|
9
|
-
|
|
9
|
+
watching = false;
|
|
10
10
|
auditLogPath;
|
|
11
11
|
onDiagnostic;
|
|
12
12
|
constructor(auditLogPath, onDiagnostic) {
|
|
@@ -14,14 +14,16 @@ export class AuditLogTailer {
|
|
|
14
14
|
this.onDiagnostic = onDiagnostic;
|
|
15
15
|
}
|
|
16
16
|
start() {
|
|
17
|
-
this.
|
|
17
|
+
this.watching = true;
|
|
18
|
+
watchFile(this.auditLogPath, { interval: 100 }, () => this.readNewEntries());
|
|
18
19
|
}
|
|
19
20
|
stop() {
|
|
20
|
-
if (this.
|
|
21
|
-
this.
|
|
22
|
-
this.
|
|
21
|
+
if (this.watching) {
|
|
22
|
+
unwatchFile(this.auditLogPath);
|
|
23
|
+
this.watching = false;
|
|
23
24
|
}
|
|
24
25
|
}
|
|
26
|
+
/** Read and process any new entries appended since the last read. */
|
|
25
27
|
readNewEntries() {
|
|
26
28
|
let fd;
|
|
27
29
|
try {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audit-log-tailer.js","sourceRoot":"","sources":["../../src/docker/audit-log-tailer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,
|
|
1
|
+
{"version":3,"file":"audit-log-tailer.js","sourceRoot":"","sources":["../../src/docker/audit-log-tailer.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAI3F,MAAM,OAAO,cAAc;IACjB,MAAM,GAAG,CAAC,CAAC;IACX,QAAQ,GAAG,KAAK,CAAC;IACR,YAAY,CAAS;IACrB,YAAY,CAAmC;IAEhE,YAAY,YAAoB,EAAE,YAA8C;QAC9E,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED,KAAK;QACH,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC;QACrB,SAAS,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClB,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC/B,IAAI,CAAC,QAAQ,GAAG,KAAK,CAAC;QACxB,CAAC;IACH,CAAC;IAED,qEAAqE;IACrE,cAAc;QACZ,IAAI,EAAU,CAAC;QACf,IAAI,CAAC;YACH,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,YAAY,EAAE,GAAG,CAAC,CAAC;QACxC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,CAAC,yBAAyB;QACnC,CAAC;QAED,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM;gBAAE,OAAO;YAErC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;YAClD,QAAQ,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAC9C,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC;YAExB,MAAM,KAAK,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;YACzD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACzB,IAAI,CAAC;oBACH,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAe,CAAC;oBAC7C,IAAI,CAAC,YAAY,CAAC;wBAChB,IAAI,EAAE,WAAW;wBACjB,QAAQ,EAAE,GAAG,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,QAAQ,EAAE;wBACjD,OAAO,EAAE,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC;qBAClC,CAAC,CAAC;gBACL,CAAC;gBAAC,MAAM,CAAC;oBACP,0CAA0C;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;gBAAS,CAAC;YACT,SAAS,CAAC,EAAE,CAAC,CAAC;QAChB,CAAC;IACH,CAAC;IAEO,YAAY,CAAC,KAAiB;QACpC,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;QACnC,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QACxE,OAAO,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;IAClC,CAAC;CACF"}
|
|
@@ -31,6 +31,8 @@ export interface DockerAgentSessionDeps {
|
|
|
31
31
|
readonly sandboxDir: string;
|
|
32
32
|
readonly escalationDir: string;
|
|
33
33
|
readonly auditLogPath: string;
|
|
34
|
+
/** Use TCP transport instead of UDS (macOS Docker Desktop). */
|
|
35
|
+
readonly useTcp?: boolean;
|
|
34
36
|
readonly onEscalation?: (request: EscalationRequest) => void;
|
|
35
37
|
readonly onEscalationExpired?: () => void;
|
|
36
38
|
readonly onDiagnostic?: (event: DiagnosticEvent) => void;
|
|
@@ -48,9 +50,11 @@ export declare class DockerAgentSession implements Session {
|
|
|
48
50
|
private readonly sandboxDir;
|
|
49
51
|
private readonly escalationDir;
|
|
50
52
|
private readonly auditLogPath;
|
|
53
|
+
private readonly useTcp;
|
|
51
54
|
private status;
|
|
52
55
|
private readonly createdAt;
|
|
53
56
|
private containerId;
|
|
57
|
+
private networkName;
|
|
54
58
|
private systemPrompt;
|
|
55
59
|
private turns;
|
|
56
60
|
private diagnosticLog;
|
|
@@ -79,11 +83,18 @@ export declare class DockerAgentSession implements Session {
|
|
|
79
83
|
sendMessage(userMessage: string): Promise<string>;
|
|
80
84
|
getHistory(): readonly ConversationTurn[];
|
|
81
85
|
getDiagnosticLog(): readonly DiagnosticEvent[];
|
|
86
|
+
/** Process any new audit log entries immediately (useful for tests). */
|
|
87
|
+
flushAuditLog(): void;
|
|
82
88
|
getPendingEscalation(): EscalationRequest | undefined;
|
|
83
89
|
getBudgetStatus(): BudgetStatus;
|
|
84
90
|
resolveEscalation(escalationId: string, decision: 'approved' | 'denied'): Promise<void>;
|
|
85
91
|
close(): Promise<void>;
|
|
86
92
|
private emitDiagnostic;
|
|
93
|
+
/**
|
|
94
|
+
* Checks whether the container can reach host-side proxies via the
|
|
95
|
+
* internal Docker network. Throws if connectivity fails.
|
|
96
|
+
*/
|
|
97
|
+
private checkInternalNetworkConnectivity;
|
|
87
98
|
private startEscalationWatcher;
|
|
88
99
|
private stopEscalationWatcher;
|
|
89
100
|
private pollEscalationDirectory;
|
|
@@ -14,11 +14,12 @@
|
|
|
14
14
|
import { mkdirSync, readdirSync, readFileSync, writeFileSync, existsSync, copyFileSync, rmSync } from 'node:fs';
|
|
15
15
|
import { resolve, dirname } from 'node:path';
|
|
16
16
|
import { mkdtempSync } from 'node:fs';
|
|
17
|
-
import { tmpdir } from 'node:os';
|
|
17
|
+
import { tmpdir, arch } from 'node:os';
|
|
18
18
|
import { createHash } from 'node:crypto';
|
|
19
19
|
import { fileURLToPath } from 'node:url';
|
|
20
20
|
import { AuditLogTailer } from './audit-log-tailer.js';
|
|
21
21
|
import { prepareSession } from './orientation.js';
|
|
22
|
+
import { INTERNAL_NETWORK_NAME, INTERNAL_NETWORK_SUBNET, INTERNAL_NETWORK_GATEWAY } from './platform.js';
|
|
22
23
|
import { SessionNotReadyError, SessionClosedError } from '../session/errors.js';
|
|
23
24
|
import * as logger from '../logger.js';
|
|
24
25
|
const ESCALATION_POLL_INTERVAL_MS = 300;
|
|
@@ -35,9 +36,11 @@ export class DockerAgentSession {
|
|
|
35
36
|
sandboxDir;
|
|
36
37
|
escalationDir;
|
|
37
38
|
auditLogPath;
|
|
39
|
+
useTcp;
|
|
38
40
|
status = 'initializing';
|
|
39
41
|
createdAt;
|
|
40
42
|
containerId = null;
|
|
43
|
+
networkName = null;
|
|
41
44
|
systemPrompt = '';
|
|
42
45
|
turns = [];
|
|
43
46
|
diagnosticLog = [];
|
|
@@ -63,6 +66,7 @@ export class DockerAgentSession {
|
|
|
63
66
|
this.sandboxDir = deps.sandboxDir;
|
|
64
67
|
this.escalationDir = deps.escalationDir;
|
|
65
68
|
this.auditLogPath = deps.auditLogPath;
|
|
69
|
+
this.useTcp = deps.useTcp ?? false;
|
|
66
70
|
this.onEscalation = deps.onEscalation;
|
|
67
71
|
this.onEscalationExpired = deps.onEscalationExpired;
|
|
68
72
|
this.onDiagnostic = deps.onDiagnostic;
|
|
@@ -84,44 +88,96 @@ export class DockerAgentSession {
|
|
|
84
88
|
mkdirSync(this.escalationDir, { recursive: true });
|
|
85
89
|
// 1. Start MCP proxy
|
|
86
90
|
await this.proxy.start();
|
|
87
|
-
|
|
88
|
-
|
|
91
|
+
if (this.useTcp && this.proxy.port !== undefined) {
|
|
92
|
+
logger.info(`MCP proxy listening on 127.0.0.1:${this.proxy.port}`);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
logger.info(`MCP proxy listening on ${this.proxy.socketPath}`);
|
|
96
|
+
}
|
|
97
|
+
// 2. Start MITM proxy
|
|
89
98
|
const mitmAddr = await this.mitmProxy.start();
|
|
90
|
-
|
|
99
|
+
if (mitmAddr.port !== undefined) {
|
|
100
|
+
logger.info(`MITM proxy listening on 127.0.0.1:${mitmAddr.port}`);
|
|
101
|
+
}
|
|
102
|
+
else {
|
|
103
|
+
logger.info(`MITM proxy listening on ${mitmAddr.socketPath}`);
|
|
104
|
+
}
|
|
91
105
|
// 3. Query proxy for available tools
|
|
92
106
|
const tools = await this.proxy.listTools();
|
|
93
107
|
logger.info(`Available tools: ${tools.map((t) => t.name).join(', ')}`);
|
|
94
108
|
// 4. Generate orientation
|
|
95
|
-
|
|
109
|
+
// In TCP mode, the container reaches the MCP proxy via host.docker.internal
|
|
110
|
+
const proxyAddress = this.useTcp && this.proxy.port !== undefined ? `host.docker.internal:${this.proxy.port}` : undefined;
|
|
111
|
+
const { systemPrompt } = prepareSession(this.adapter, tools, this.sessionDir, this.config, this.sandboxDir, proxyAddress);
|
|
96
112
|
this.systemPrompt = systemPrompt;
|
|
97
113
|
// 5. Ensure Docker image exists (build if needed, with CA cert)
|
|
98
114
|
const image = await this.adapter.getImage();
|
|
99
115
|
await this.ensureImage(image);
|
|
100
|
-
// 6. Create and start container
|
|
116
|
+
// 6. Create and start container
|
|
101
117
|
const shortId = this.sessionId.substring(0, 12);
|
|
102
|
-
const env = {
|
|
103
|
-
...this.adapter.buildEnv(this.config, this.fakeKeys),
|
|
104
|
-
HTTPS_PROXY: 'http://127.0.0.1:18080',
|
|
105
|
-
HTTP_PROXY: 'http://127.0.0.1:18080',
|
|
106
|
-
};
|
|
107
118
|
const orientationDir = resolve(this.sessionDir, 'orientation');
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
119
|
+
let env;
|
|
120
|
+
let network;
|
|
121
|
+
let mounts;
|
|
122
|
+
let extraHosts;
|
|
123
|
+
if (this.useTcp && mitmAddr.port !== undefined) {
|
|
124
|
+
// macOS TCP mode: internal bridge network blocks egress,
|
|
125
|
+
// container reaches host proxies via gateway IP
|
|
126
|
+
env = {
|
|
127
|
+
...this.adapter.buildEnv(this.config, this.fakeKeys),
|
|
128
|
+
HTTPS_PROXY: `http://host.docker.internal:${mitmAddr.port}`,
|
|
129
|
+
HTTP_PROXY: `http://host.docker.internal:${mitmAddr.port}`,
|
|
130
|
+
};
|
|
131
|
+
// Create an --internal Docker network that blocks internet egress
|
|
132
|
+
// but allows container-to-gateway (host) connectivity for the proxies.
|
|
133
|
+
await this.docker.createNetwork(INTERNAL_NETWORK_NAME, {
|
|
134
|
+
internal: true,
|
|
135
|
+
subnet: INTERNAL_NETWORK_SUBNET,
|
|
136
|
+
gateway: INTERNAL_NETWORK_GATEWAY,
|
|
137
|
+
});
|
|
138
|
+
network = INTERNAL_NETWORK_NAME;
|
|
139
|
+
extraHosts = [`host.docker.internal:${INTERNAL_NETWORK_GATEWAY}`];
|
|
140
|
+
mounts = [
|
|
141
|
+
{ source: this.sandboxDir, target: '/workspace', readonly: false },
|
|
142
|
+
// No session dir mount needed -- sockets are replaced by TCP
|
|
143
|
+
{ source: orientationDir, target: '/etc/ironcurtain', readonly: true },
|
|
144
|
+
];
|
|
145
|
+
}
|
|
146
|
+
else {
|
|
147
|
+
// Linux UDS mode: --network=none, session dir with sockets mounted
|
|
148
|
+
env = {
|
|
149
|
+
...this.adapter.buildEnv(this.config, this.fakeKeys),
|
|
150
|
+
HTTPS_PROXY: 'http://127.0.0.1:18080',
|
|
151
|
+
HTTP_PROXY: 'http://127.0.0.1:18080',
|
|
152
|
+
};
|
|
153
|
+
network = 'none';
|
|
154
|
+
mounts = [
|
|
113
155
|
{ source: this.sandboxDir, target: '/workspace', readonly: false },
|
|
156
|
+
// Session dir contains proxy.sock and mitm-proxy.sock -- directory mount
|
|
157
|
+
// exposes both to the container (file mounts for UDS don't work on macOS Docker Desktop).
|
|
114
158
|
{ source: this.sessionDir, target: '/run/ironcurtain', readonly: false },
|
|
115
159
|
{ source: orientationDir, target: '/etc/ironcurtain', readonly: true },
|
|
116
|
-
|
|
117
|
-
|
|
160
|
+
];
|
|
161
|
+
}
|
|
162
|
+
this.containerId = await this.docker.create({
|
|
163
|
+
image,
|
|
164
|
+
name: `ironcurtain-${shortId}`,
|
|
165
|
+
network,
|
|
166
|
+
mounts,
|
|
118
167
|
env,
|
|
119
168
|
command: ['sleep', 'infinity'],
|
|
120
169
|
sessionLabel: this.sessionId,
|
|
121
170
|
resources: { memoryMb: 4096, cpus: 2 },
|
|
171
|
+
extraHosts,
|
|
122
172
|
});
|
|
123
173
|
await this.docker.start(this.containerId);
|
|
174
|
+
this.networkName = network;
|
|
124
175
|
logger.info(`Container started: ${this.containerId.substring(0, 12)}`);
|
|
176
|
+
// Connectivity check: verify the container can reach host proxies
|
|
177
|
+
// through the internal network. Abort if unreachable.
|
|
178
|
+
if (this.useTcp && network === INTERNAL_NETWORK_NAME && this.proxy.port !== undefined) {
|
|
179
|
+
await this.checkInternalNetworkConnectivity(this.containerId, this.proxy.port);
|
|
180
|
+
}
|
|
125
181
|
// 7. Start watchers
|
|
126
182
|
this.startEscalationWatcher();
|
|
127
183
|
// Create the audit log file so fs.watch() can attach to it.
|
|
@@ -194,6 +250,10 @@ export class DockerAgentSession {
|
|
|
194
250
|
getDiagnosticLog() {
|
|
195
251
|
return this.diagnosticLog;
|
|
196
252
|
}
|
|
253
|
+
/** Process any new audit log entries immediately (useful for tests). */
|
|
254
|
+
flushAuditLog() {
|
|
255
|
+
this.auditTailer?.readNewEntries();
|
|
256
|
+
}
|
|
197
257
|
getPendingEscalation() {
|
|
198
258
|
return this.pendingEscalation;
|
|
199
259
|
}
|
|
@@ -238,6 +298,10 @@ export class DockerAgentSession {
|
|
|
238
298
|
await this.docker.stop(this.containerId);
|
|
239
299
|
await this.docker.remove(this.containerId);
|
|
240
300
|
}
|
|
301
|
+
// Remove internal network (ignore errors -- other sessions may use it)
|
|
302
|
+
if (this.networkName === INTERNAL_NETWORK_NAME) {
|
|
303
|
+
await this.docker.removeNetwork(INTERNAL_NETWORK_NAME);
|
|
304
|
+
}
|
|
241
305
|
// Stop proxies
|
|
242
306
|
await this.mitmProxy.stop();
|
|
243
307
|
await this.proxy.stop();
|
|
@@ -247,6 +311,18 @@ export class DockerAgentSession {
|
|
|
247
311
|
this.diagnosticLog.push(event);
|
|
248
312
|
this.onDiagnostic?.(event);
|
|
249
313
|
}
|
|
314
|
+
/**
|
|
315
|
+
* Checks whether the container can reach host-side proxies via the
|
|
316
|
+
* internal Docker network. Throws if connectivity fails.
|
|
317
|
+
*/
|
|
318
|
+
async checkInternalNetworkConnectivity(containerId, mcpPort) {
|
|
319
|
+
const result = await this.docker.exec(containerId, ['socat', '-u', '/dev/null', `TCP:host.docker.internal:${mcpPort},connect-timeout=5`], 10_000);
|
|
320
|
+
if (result.exitCode !== 0) {
|
|
321
|
+
throw new Error(`Internal network connectivity check failed (exit=${result.exitCode}). ` +
|
|
322
|
+
`The container cannot reach host-side proxies on the --internal Docker network. ` +
|
|
323
|
+
`This may indicate that Docker Desktop does not forward bridge gateway traffic to the host.`);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
250
326
|
startEscalationWatcher() {
|
|
251
327
|
this.escalationPollInterval = setInterval(() => {
|
|
252
328
|
this.pollEscalationDirectory();
|
|
@@ -312,10 +388,15 @@ export class DockerAgentSession {
|
|
|
312
388
|
async ensureImage(image) {
|
|
313
389
|
const packageRoot = resolve(dirname(fileURLToPath(import.meta.url)), '..', '..');
|
|
314
390
|
const dockerDir = resolve(packageRoot, 'docker');
|
|
391
|
+
// On arm64 hosts (Apple Silicon), use the lightweight arm64-native Dockerfile
|
|
392
|
+
// instead of the amd64-only devcontainers/universal image.
|
|
393
|
+
const baseDockerfile = arch() === 'arm64' && existsSync(resolve(dockerDir, 'Dockerfile.base.arm64'))
|
|
394
|
+
? 'Dockerfile.base.arm64'
|
|
395
|
+
: 'Dockerfile.base';
|
|
315
396
|
// Build base image with CA cert baked in (if stale or missing)
|
|
316
397
|
const baseImage = 'ironcurtain-base:latest';
|
|
317
|
-
const baseBuildHash = this.computeBuildHash(dockerDir, [
|
|
318
|
-
const baseRebuilt = await this.ensureBaseImage(baseImage, dockerDir, baseBuildHash);
|
|
398
|
+
const baseBuildHash = this.computeBuildHash(dockerDir, [baseDockerfile]);
|
|
399
|
+
const baseRebuilt = await this.ensureBaseImage(baseImage, dockerDir, baseDockerfile, baseBuildHash);
|
|
319
400
|
// Build the agent-specific image (if stale, missing, or base was rebuilt)
|
|
320
401
|
const agentName = image.replace('ironcurtain-', '').replace(':latest', '');
|
|
321
402
|
const dockerfile = `Dockerfile.${agentName}`;
|
|
@@ -337,7 +418,7 @@ export class DockerAgentSession {
|
|
|
337
418
|
* Ensures the base image exists and is up-to-date.
|
|
338
419
|
* Returns true if the base image was (re)built.
|
|
339
420
|
*/
|
|
340
|
-
async ensureBaseImage(baseImage, dockerDir, buildHash) {
|
|
421
|
+
async ensureBaseImage(baseImage, dockerDir, dockerfile, buildHash) {
|
|
341
422
|
if (!(await this.isImageStale(baseImage, buildHash)))
|
|
342
423
|
return false;
|
|
343
424
|
logger.info('Building base Docker image (this may take a while on first run)...');
|
|
@@ -350,7 +431,7 @@ export class DockerAgentSession {
|
|
|
350
431
|
}
|
|
351
432
|
// Copy CA cert into build context
|
|
352
433
|
copyFileSync(this.ca.certPath, resolve(tmpContext, 'ironcurtain-ca-cert.pem'));
|
|
353
|
-
await this.docker.buildImage(baseImage, resolve(tmpContext,
|
|
434
|
+
await this.docker.buildImage(baseImage, resolve(tmpContext, dockerfile), tmpContext, {
|
|
354
435
|
'ironcurtain.build-hash': buildHash,
|
|
355
436
|
});
|
|
356
437
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-agent-session.js","sourceRoot":"","sources":["../../src/docker/docker-agent-session.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAChH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AACtC,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAiBzC,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAChF,OAAO,KAAK,MAAM,MAAM,cAAc,CAAC;AAEvC,MAAM,2BAA2B,GAAG,GAAG,CAAC;AAoBxC,MAAM,OAAO,kBAAkB;IACZ,SAAS,CAAY;IACrB,MAAM,CAAoB;IAC1B,OAAO,CAAe;IACtB,MAAM,CAAgB;IACtB,KAAK,CAAe;IACpB,SAAS,CAAY;IACrB,EAAE,CAAuB;IACzB,QAAQ,CAA8B;IACtC,UAAU,CAAS;IACnB,UAAU,CAAS;IACnB,aAAa,CAAS;IACtB,YAAY,CAAS;IAE9B,MAAM,GAAkB,cAAc,CAAC;IAC9B,SAAS,CAAS;IAE3B,WAAW,GAAkB,IAAI,CAAC;IAClC,YAAY,GAAG,EAAE,CAAC;IAElB,KAAK,GAAuB,EAAE,CAAC;IAC/B,aAAa,GAAsB,EAAE,CAAC;IACtC,iBAAiB,CAAgC;IACjD,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;IACtC,sBAAsB,GAA0C,IAAI,CAAC;IAErE,WAAW,GAA0B,IAAI,CAAC;IAC1C,kBAAkB,GAAG,CAAC,CAAC;IACvB,iBAAiB,GAAG,CAAC,CAAC;IAEb,YAAY,CAAwC;IACpD,mBAAmB,CAAc;IACjC,YAAY,CAAoC;IAEjE,YAAY,IAA4B;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;QAChC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAClB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC;QAC9B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC,aAAa,CAAC;QACxC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,mBAAmB,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACpD,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC;QACtC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC5C,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,UAAU;QACd,2BAA2B;QAC3B,SAAS,CAAC,IAAI,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAChD,SAAS,CAAC,IAAI,CAAC,aAAa,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAEnD,qBAAqB;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACzB,MAAM,CAAC,IAAI,CAAC,0BAA0B,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;QAE/D,4BAA4B;QAC5B,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;QAC9C,MAAM,CAAC,IAAI,CAAC,2BAA2B,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAE9D,qCAAqC;QACrC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QAC3C,MAAM,CAAC,IAAI,CAAC,oBAAoB,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAEvE,0BAA0B;QAC1B,MAAM,EAAE,YAAY,EAAE,GAAG,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,UAAU,CAAC,CAAC;QAC5G,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QAEjC,gEAAgE;QAChE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC5C,MAAM,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAE9B,sEAAsE;QACtE,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAEhD,MAAM,GAAG,GAAG;YACV,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC;YACpD,WAAW,EAAE,wBAAwB;YACrC,UAAU,EAAE,wBAAwB;SACrC,CAAC;QAEF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAC/D,IAAI,CAAC,WAAW,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC1C,KAAK;YACL,IAAI,EAAE,eAAe,OAAO,EAAE;YAC9B,OAAO,EAAE,MAAM;YACf,MAAM,EAAE;gBACN,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE;gBAClE,EAAE,MAAM,EAAE,IAAI,CAAC,UAAU,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,KAAK,EAAE;gBACxE,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAE;gBACtE,EAAE,MAAM,EAAE,QAAQ,CAAC,UAAU,EAAE,MAAM,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI,EAAE;aAC5F;YACD,GAAG;YACH,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,CAAC;YAC9B,YAAY,EAAE,IAAI,CAAC,SAAS;YAC5B,SAAS,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,EAAE;SACvC,CAAC,CAAC;QAEH,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC1C,MAAM,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC;QAEvE,oBAAoB;QACpB,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAE9B,4DAA4D;QAC5D,uEAAuE;QACvE,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,YAAY,CAAC,EAAE,CAAC;YACnC,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,IAAI,CAAC,WAAW,GAAG,IAAI,cAAc,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;QAEzB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;IACxB,CAAC;IAED,OAAO;QACL,OAAO;YACL,EAAE,EAAE,IAAI,CAAC,SAAS;YAClB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC5B,SAAS,EAAE,IAAI,CAAC,SAAS;SAC1B,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,WAAmB;QACnC,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,MAAM,IAAI,kBAAkB,EAAE,CAAC;QAC7D,IAAI,IAAI,CAAC,MAAM,KAAK,OAAO;YAAE,MAAM,IAAI,oBAAoB,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,GAAG,YAAY,CAAC;QAE3B,kEAAkE;QAClE,mEAAmE;QACnE,mEAAmE;QACnE,uDAAuD;QACvD,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc,CAAC,iBAAiB,CAAC;QAC3E,MAAM,WAAW,GAAG,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,UAAU,GAAG,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAEvE,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC/B,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,WAAW,CAAC,CAAC,WAAW,EAAE,CAAC;QAEtD,2CAA2C;QAC3C,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;QAEnC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,WAAW,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC;QAC1E,MAAM,CAAC,IAAI,CAAC,wBAAwB,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAE9D,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,CAAC;QACpG,MAAM,CAAC,IAAI,CAAC,uBAAuB,QAAQ,WAAW,MAAM,CAAC,MAAM,YAAY,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QAEjG,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,CAAC,IAAI,CAAC,0BAA0B,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,kBAAkB,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,WAAW,CAAC;QAEpD,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAEhE,IAAI,QAAQ,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC;QAC5C,CAAC;QAED,MAAM,IAAI,GAAqB;YAC7B,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;YACjC,WAAW;YACX,iBAAiB,EAAE,QAAQ,CAAC,IAAI;YAChC,KAAK,EAAE;gBACL,YAAY,EAAE,CAAC;gBACf,gBAAgB,EAAE,CAAC;gBACnB,WAAW,EAAE,CAAC;gBACd,eAAe,EAAE,CAAC;gBAClB,gBAAgB,EAAE,CAAC;aACpB;YACD,SAAS,EAAE,SAAS;SACrB,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEtB,IAAI,CAAC,MAAM,GAAG,OAAO,CAAC;QACtB,OAAO,QAAQ,CAAC,IAAI,CAAC;IACvB,CAAC;IAED,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC;IACpB,CAAC;IAED,gBAAgB;QACd,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,oBAAoB;QAClB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAChC,CAAC;IAED,eAAe;QACb,MAAM,cAAc,GAAG,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QAEtD,OAAO;YACL,gBAAgB,EAAE,CAAC;YACnB,iBAAiB,EAAE,CAAC;YACpB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;YAC5B,cAAc;YACd,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;YACxC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,cAAc;YAC7C,UAAU,EAAE;gBACV,gBAAgB,EAAE,CAAC;gBACnB,iBAAiB,EAAE,CAAC;gBACpB,WAAW,EAAE,CAAC;gBACd,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;gBAC5B,aAAa,EAAE,cAAc;gBAC7B,gBAAgB,EAAE,IAAI,CAAC,iBAAiB;aACzC;YACD,sBAAsB,EAAE,KAAK;SAC9B,CAAC;IACJ,CAAC;IAED,0GAA0G;IAC1G,KAAK,CAAC,iBAAiB,CAAC,YAAoB,EAAE,QAA+B;QAC3E,IAAI,CAAC,IAAI,CAAC,iBAAiB,IAAI,IAAI,CAAC,iBAAiB,CAAC,YAAY,KAAK,YAAY,EAAE,CAAC;YACpF,MAAM,IAAI,KAAK,CAAC,kCAAkC,YAAY,EAAE,CAAC,CAAC;QACpE,CAAC;QAED,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,YAAY,OAAO,CAAC,CAAC;QAClF,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QAC1D,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;IACrC,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,MAAM,KAAK,QAAQ;YAAE,OAAO;QACrC,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QAEvB,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAC7B,IAAI,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC;QAEzB,4BAA4B;QAC5B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YACrB,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAC7C,CAAC;QAED,eAAe;QACf,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;IAED,0BAA0B;IAElB,cAAc,CAAC,KAAsB;QAC3C,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,CAAC;IAC7B,CAAC;IAEO,sBAAsB;QAC5B,IAAI,CAAC,sBAAsB,GAAG,WAAW,CAAC,GAAG,EAAE;YAC7C,IAAI,CAAC,uBAAuB,EAAE,CAAC;QACjC,CAAC,EAAE,2BAA2B,CAAC,CAAC;IAClC,CAAC;IAEO,qBAAqB;QAC3B,IAAI,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAChC,aAAa,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAC3C,IAAI,CAAC,sBAAsB,GAAG,IAAI,CAAC;QACrC,CAAC;IACH,CAAC;IAEO,uBAAuB;QAC7B,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,IAAI,CAAC,qBAAqB,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC9C,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,CAC5B,CAAC,CAAC,EAAE,EAAE,CACJ,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,CAAC,CAAC,CAC9G,CAAC;YACF,IAAI,CAAC,WAAW;gBAAE,OAAO;YAEzB,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,CAAC,CAAC;YAC7D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,WAAW,EAAE,OAAO,CAAC,CAAsB,CAAC;YACpF,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;YACjD,IAAI,CAAC,iBAAiB,GAAG,OAAO,CAAC;YACjC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC,CAAC;QAC/B,CAAC;QAAC,MAAM,CAAC;YACP,0CAA0C;QAC5C,CAAC;IACH,CAAC;IAEO,qBAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,iBAAiB;YAAE,OAAO;QACpC,MAAM,YAAY,GAAG,IAAI,CAAC,iBAAiB,CAAC,YAAY,CAAC;QACzD,MAAM,aAAa,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,YAAY,OAAO,CAAC,CAAC,CAAC;QAC9F,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,YAAY,YAAY,OAAO,CAAC,CAAC,CAAC;QAChG,IAAI,CAAC,aAAa,IAAI,CAAC,cAAc,EAAE,CAAC;YACtC,IAAI,CAAC,iBAAiB,GAAG,SAAS,CAAC;YACnC,IAAI,CAAC,mBAAmB,EAAE,EAAE,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,gBAAgB,CAAC,WAAmB;QAC1C,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;YACrE,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC;QAC9D,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;IACH,CAAC;IAEO,mBAAmB,CAAC,QAAgB;QAC1C,OAAO,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,WAAW,CAAC,KAAa;QACrC,MAAM,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;QACjF,MAAM,SAAS,GAAG,OAAO,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAEjD,+DAA+D;QAC/D,MAAM,SAAS,GAAG,yBAAyB,CAAC;QAC5C,MAAM,aAAa,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,iBAAiB,CAAC,CAAC,CAAC;QAC5E,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,SAAS,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;QAEpF,0EAA0E;QAC1E,MAAM,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;QAC3E,MAAM,UAAU,GAAG,cAAc,SAAS,EAAE,CAAC;QAC7C,MAAM,mBAAmB,GAAG,OAAO,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;QAC3D,IAAI,CAAC,UAAU,CAAC,mBAAmB,CAAC,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,mCAAmC,SAAS,MAAM,mBAAmB,EAAE,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,CAAC,UAAU,CAAC,EAAE,aAAa,CAAC,CAAC;QACrF,MAAM,eAAe,GAAG,WAAW,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC,CAAC;QAExF,IAAI,eAAe,EAAE,CAAC;YACpB,MAAM,CAAC,IAAI,CAAC,yBAAyB,KAAK,KAAK,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE;gBAClE,wBAAwB,EAAE,cAAc;aACzC,CAAC,CAAC;YACH,MAAM,CAAC,IAAI,CAAC,gBAAgB,KAAK,qBAAqB,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,eAAe,CAAC,SAAiB,EAAE,SAAiB,EAAE,SAAiB;QACnF,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAEnE,MAAM,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;QAElF,8CAA8C;QAC9C,MAAM,UAAU,GAAG,WAAW,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC;YACH,yCAAyC;YACzC,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,SAAS,CAAC,EAAE,CAAC;gBAC1C,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,EAAE,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;YACpE,CAAC;YACD,kCAAkC;YAClC,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,EAAE,yBAAyB,CAAC,CAAC,CAAC;YAE/E,MAAM,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,SAAS,EAAE,OAAO,CAAC,UAAU,EAAE,iBAAiB,CAAC,EAAE,UAAU,EAAE;gBAC1F,wBAAwB,EAAE,SAAS;aACpC,CAAC,CAAC;QACL,CAAC;gBAAS,CAAC;YACT,MAAM,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY,CAAC,KAAa,EAAE,YAAoB;QAC5D,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACzD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,wBAAwB,CAAC,CAAC;QACpF,OAAO,UAAU,KAAK,YAAY,CAAC;IACrC,CAAC;IAED;;;;OAIG;IACK,gBAAgB,CAAC,SAAiB,EAAE,WAAqB,EAAE,UAAmB;QACpF,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;QAElC,wDAAwD;QACxD,MAAM,KAAK,GAAG,WAAW,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC;QAC5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,gEAAgE;YAChE,IAAI,WAAW,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,IAAI,CAAC,MAAM,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAC;gBAC9B,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC;YACtD,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;QACzB,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC;QAE7B,8EAA8E;QAC9E,IAAI,UAAU,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,UAAU,UAAU,IAAI,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5B,CAAC;CACF;AAED,sEAAsE;AACtE,SAAS,aAAa,CAAC,IAAuB;IAC5C,MAAM,WAAW,GAAG,EAAE,CAAC;IACvB,OAAO,IAAI;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACT,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QACjF,OAAO,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC,CAAC;SACD,IAAI,CAAC,GAAG,CAAC,CAAC;AACf,CAAC"}
|
|
1
|
+
{"version":3,"file":"docker-agent-session.js","sourceRoot":"","sources":["../../src/docker/docker-agent-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,12 +23,29 @@ export function buildCreateArgs(config) {
|
|
|
23
23
|
const args = ['create'];
|
|
24
24
|
args.push('--name', config.name);
|
|
25
25
|
args.push('--network', config.network);
|
|
26
|
-
//
|
|
27
|
-
if (config.
|
|
26
|
+
// Custom host mappings override the default host-gateway mapping
|
|
27
|
+
if (config.extraHosts && config.extraHosts.length > 0) {
|
|
28
|
+
for (const entry of config.extraHosts) {
|
|
29
|
+
args.push(`--add-host=${entry}`);
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
else if (config.network !== 'none') {
|
|
33
|
+
// Linux needs explicit host.docker.internal mapping (useless with --network=none)
|
|
28
34
|
args.push('--add-host=host.docker.internal:host-gateway');
|
|
29
35
|
}
|
|
30
|
-
// Security: drop all capabilities
|
|
36
|
+
// Security: drop all capabilities, then selectively re-add
|
|
31
37
|
args.push('--cap-drop=ALL');
|
|
38
|
+
for (const cap of config.capAdd ?? []) {
|
|
39
|
+
args.push('--cap-add', cap);
|
|
40
|
+
}
|
|
41
|
+
// Port bindings (service containers only)
|
|
42
|
+
for (const port of config.ports ?? []) {
|
|
43
|
+
args.push('-p', port);
|
|
44
|
+
}
|
|
45
|
+
// Restart policy (service containers only)
|
|
46
|
+
if (config.restartPolicy) {
|
|
47
|
+
args.push('--restart', config.restartPolicy);
|
|
48
|
+
}
|
|
32
49
|
if (config.sessionLabel) {
|
|
33
50
|
args.push('--label', `ironcurtain.session=${config.sessionLabel}`);
|
|
34
51
|
}
|
|
@@ -71,13 +88,13 @@ export function createDockerManager(execFileFn) {
|
|
|
71
88
|
const { stdout } = await exec('docker', args, { timeout: 30_000 });
|
|
72
89
|
return stdout.trim();
|
|
73
90
|
},
|
|
74
|
-
async start(
|
|
75
|
-
await exec('docker', ['start',
|
|
91
|
+
async start(nameOrId) {
|
|
92
|
+
await exec('docker', ['start', nameOrId], { timeout: 30_000 });
|
|
76
93
|
},
|
|
77
|
-
async exec(
|
|
94
|
+
async exec(nameOrId, command, timeoutMs) {
|
|
78
95
|
const timeout = timeoutMs ?? DEFAULT_EXEC_TIMEOUT_MS;
|
|
79
96
|
try {
|
|
80
|
-
const { stdout, stderr } = await exec('docker', ['exec',
|
|
97
|
+
const { stdout, stderr } = await exec('docker', ['exec', nameOrId, ...command], {
|
|
81
98
|
timeout,
|
|
82
99
|
maxBuffer: 50 * 1024 * 1024,
|
|
83
100
|
});
|
|
@@ -94,9 +111,9 @@ export function createDockerManager(execFileFn) {
|
|
|
94
111
|
throw err;
|
|
95
112
|
}
|
|
96
113
|
},
|
|
97
|
-
async stop(
|
|
114
|
+
async stop(nameOrId) {
|
|
98
115
|
try {
|
|
99
|
-
await exec('docker', ['stop', '-t', String(STOP_TIMEOUT_SECONDS),
|
|
116
|
+
await exec('docker', ['stop', '-t', String(STOP_TIMEOUT_SECONDS), nameOrId], {
|
|
100
117
|
timeout: (STOP_TIMEOUT_SECONDS + 5) * 1000,
|
|
101
118
|
});
|
|
102
119
|
}
|
|
@@ -104,17 +121,17 @@ export function createDockerManager(execFileFn) {
|
|
|
104
121
|
// Container may already be stopped
|
|
105
122
|
}
|
|
106
123
|
},
|
|
107
|
-
async remove(
|
|
124
|
+
async remove(nameOrId) {
|
|
108
125
|
try {
|
|
109
|
-
await exec('docker', ['rm', '-f',
|
|
126
|
+
await exec('docker', ['rm', '-f', nameOrId], { timeout: 10_000 });
|
|
110
127
|
}
|
|
111
128
|
catch {
|
|
112
129
|
// Container may already be removed
|
|
113
130
|
}
|
|
114
131
|
},
|
|
115
|
-
async isRunning(
|
|
132
|
+
async isRunning(nameOrId) {
|
|
116
133
|
try {
|
|
117
|
-
const { stdout } = await exec('docker', ['inspect', '-f', '{{.State.Running}}',
|
|
134
|
+
const { stdout } = await exec('docker', ['inspect', '-f', '{{.State.Running}}', nameOrId], {
|
|
118
135
|
timeout: 5_000,
|
|
119
136
|
});
|
|
120
137
|
return stdout.trim() === 'true';
|
|
@@ -158,9 +175,17 @@ export function createDockerManager(execFileFn) {
|
|
|
158
175
|
return undefined;
|
|
159
176
|
}
|
|
160
177
|
},
|
|
161
|
-
async createNetwork(name) {
|
|
178
|
+
async createNetwork(name, options) {
|
|
162
179
|
try {
|
|
163
|
-
|
|
180
|
+
const args = ['network', 'create'];
|
|
181
|
+
if (options?.internal)
|
|
182
|
+
args.push('--internal');
|
|
183
|
+
if (options?.subnet)
|
|
184
|
+
args.push('--subnet', options.subnet);
|
|
185
|
+
if (options?.gateway)
|
|
186
|
+
args.push('--gateway', options.gateway);
|
|
187
|
+
args.push(name);
|
|
188
|
+
await exec('docker', args, { timeout: 10_000 });
|
|
164
189
|
}
|
|
165
190
|
catch (err) {
|
|
166
191
|
if (isExecError(err) && err.stderr.includes('already exists'))
|
|
@@ -176,6 +201,48 @@ export function createDockerManager(execFileFn) {
|
|
|
176
201
|
// Ignore errors -- network may already be removed
|
|
177
202
|
}
|
|
178
203
|
},
|
|
204
|
+
async pullImage(image) {
|
|
205
|
+
await exec('docker', ['pull', image], {
|
|
206
|
+
timeout: 300_000, // 5 minutes for large images
|
|
207
|
+
maxBuffer: 50 * 1024 * 1024,
|
|
208
|
+
});
|
|
209
|
+
},
|
|
210
|
+
async getImageId(nameOrId) {
|
|
211
|
+
// Try as image first (returns the image's own ID)
|
|
212
|
+
try {
|
|
213
|
+
const { stdout } = await exec('docker', ['image', 'inspect', '-f', '{{.Id}}', nameOrId], {
|
|
214
|
+
timeout: 5_000,
|
|
215
|
+
});
|
|
216
|
+
const id = stdout.trim();
|
|
217
|
+
if (id)
|
|
218
|
+
return id;
|
|
219
|
+
}
|
|
220
|
+
catch {
|
|
221
|
+
// Not an image - fall through to container inspection
|
|
222
|
+
}
|
|
223
|
+
// Try as container (returns the image ID the container was created from)
|
|
224
|
+
try {
|
|
225
|
+
const { stdout } = await exec('docker', ['inspect', '-f', '{{.Image}}', nameOrId], {
|
|
226
|
+
timeout: 5_000,
|
|
227
|
+
});
|
|
228
|
+
const id = stdout.trim();
|
|
229
|
+
return id || undefined;
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
return undefined;
|
|
233
|
+
}
|
|
234
|
+
},
|
|
235
|
+
async containerExists(nameOrId) {
|
|
236
|
+
try {
|
|
237
|
+
// docker inspect succeeds for both running and stopped containers,
|
|
238
|
+
// fails only when the container does not exist.
|
|
239
|
+
await exec('docker', ['inspect', nameOrId], { timeout: 5_000 });
|
|
240
|
+
return true;
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return false;
|
|
244
|
+
}
|
|
245
|
+
},
|
|
179
246
|
};
|
|
180
247
|
}
|
|
181
248
|
function isExecError(err) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"docker-manager.js","sourceRoot":"","sources":["../../src/docker/docker-manager.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAUtC,MAAM,eAAe,GAAe,KAAK,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE;IAC5D,MAAM,aAAa,GAAG,SAAS,CAAC,UAAU,CAAC,CAAC;IAC5C,OAAO,aAAa,CAAC,GAAG,EAAE,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC7C,CAAC,CAAC;AAEF,6DAA6D;AAC7D,MAAM,uBAAuB,GAAG,OAAO,CAAC;AAExC,mDAAmD;AACnD,MAAM,oBAAoB,GAAG,EAAE,CAAC;AAEhC;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAA6B;IAC3D,MAAM,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;IAExB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjC,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IAEvC,
|
|
1
|
+
{"version":3,"file":"docker-manager.js","sourceRoot":"","sources":["../../src/docker/docker-manager.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,21 +7,25 @@
|
|
|
7
7
|
*/
|
|
8
8
|
import type { ToolInfo } from './agent-adapter.js';
|
|
9
9
|
export interface ManagedProxy {
|
|
10
|
-
/** Start the proxy process. Resolves when the
|
|
10
|
+
/** Start the proxy process. Resolves when the transport is ready for connections. */
|
|
11
11
|
start(): Promise<void>;
|
|
12
12
|
/** Query available tools from the running proxy. */
|
|
13
13
|
listTools(): Promise<ToolInfo[]>;
|
|
14
14
|
/** Stop the proxy process and clean up the socket. */
|
|
15
15
|
stop(): Promise<void>;
|
|
16
|
-
/** The socket path the proxy is listening on. */
|
|
16
|
+
/** The socket path the proxy is listening on (UDS mode). */
|
|
17
17
|
readonly socketPath: string;
|
|
18
|
+
/** The TCP port the proxy is listening on (TCP mode). Only valid after start(). */
|
|
19
|
+
readonly port: number | undefined;
|
|
18
20
|
}
|
|
19
21
|
export interface ManagedProxyOptions {
|
|
20
|
-
/** Absolute path for the UDS socket. */
|
|
22
|
+
/** Absolute path for the UDS socket (used in UDS mode). */
|
|
21
23
|
readonly socketPath: string;
|
|
22
24
|
/** Environment variables to pass to the proxy process. */
|
|
23
25
|
readonly env: Record<string, string>;
|
|
24
26
|
/** Working directory for the proxy process. Defaults to process.cwd(). */
|
|
25
27
|
readonly cwd?: string;
|
|
28
|
+
/** Listen mode: 'uds' (default) or 'tcp'. TCP mode uses OS-assigned port. */
|
|
29
|
+
readonly listenMode?: 'uds' | 'tcp';
|
|
26
30
|
}
|
|
27
31
|
export declare function createManagedProxy(options: ManagedProxyOptions): ManagedProxy;
|