@provos/ironcurtain 0.3.1 → 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/README.md +20 -1
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/index.js +6 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/user-config.d.ts +11 -0
- package/dist/config/user-config.js +56 -2
- 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 +43 -13
- 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/types.d.ts +48 -6
- 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
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* built-in session, just with a UDS transport instead of stdio.
|
|
7
7
|
*/
|
|
8
8
|
import { fork } from 'node:child_process';
|
|
9
|
-
import { existsSync } from 'node:fs';
|
|
9
|
+
import { existsSync, readFileSync, unlinkSync } from 'node:fs';
|
|
10
10
|
import { setTimeout as delay } from 'node:timers/promises';
|
|
11
11
|
import { resolve, dirname } from 'node:path';
|
|
12
12
|
import { fileURLToPath } from 'node:url';
|
|
@@ -27,6 +27,56 @@ function getProxyModulePath() {
|
|
|
27
27
|
return compiledPath;
|
|
28
28
|
return resolve(__dirname, '..', 'trusted-process', 'mcp-proxy-server.ts');
|
|
29
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Creates a temporary MCP client connection via TCP.
|
|
32
|
+
* Used for listTools() queries in TCP mode.
|
|
33
|
+
*/
|
|
34
|
+
class TcpClientTransport {
|
|
35
|
+
socket = null;
|
|
36
|
+
readBuffer = new ReadBuffer();
|
|
37
|
+
host;
|
|
38
|
+
port;
|
|
39
|
+
onclose;
|
|
40
|
+
onerror;
|
|
41
|
+
onmessage;
|
|
42
|
+
constructor(host, port) {
|
|
43
|
+
this.host = host;
|
|
44
|
+
this.port = port;
|
|
45
|
+
}
|
|
46
|
+
async start() {
|
|
47
|
+
return new Promise((resolve, reject) => {
|
|
48
|
+
this.socket = netConnect({ host: this.host, port: this.port }, () => resolve());
|
|
49
|
+
this.socket.on('error', reject);
|
|
50
|
+
this.socket.on('data', (chunk) => {
|
|
51
|
+
this.readBuffer.append(chunk);
|
|
52
|
+
let message;
|
|
53
|
+
while ((message = this.readBuffer.readMessage()) !== null) {
|
|
54
|
+
this.onmessage?.(message);
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
this.socket.on('close', () => this.onclose?.());
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
async send(message) {
|
|
61
|
+
const socket = this.socket;
|
|
62
|
+
if (!socket || socket.destroyed) {
|
|
63
|
+
throw new Error('TCP client not connected');
|
|
64
|
+
}
|
|
65
|
+
return new Promise((resolve, reject) => {
|
|
66
|
+
socket.write(serializeMessage(message), (err) => {
|
|
67
|
+
if (err)
|
|
68
|
+
reject(err);
|
|
69
|
+
else
|
|
70
|
+
resolve();
|
|
71
|
+
});
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
// eslint-disable-next-line @typescript-eslint/require-await -- must be async to satisfy Transport interface
|
|
75
|
+
async close() {
|
|
76
|
+
this.socket?.destroy();
|
|
77
|
+
this.socket = null;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
30
80
|
/**
|
|
31
81
|
* Creates a temporary MCP client connection to the UDS socket.
|
|
32
82
|
* Used for listTools() queries.
|
|
@@ -77,17 +127,45 @@ class UdsClientTransport {
|
|
|
77
127
|
}
|
|
78
128
|
export function createManagedProxy(options) {
|
|
79
129
|
let childProcess = null;
|
|
130
|
+
const useTcp = options.listenMode === 'tcp';
|
|
131
|
+
let resolvedPort;
|
|
132
|
+
// In TCP mode, the proxy writes its port to this file after binding
|
|
133
|
+
const portFilePath = resolve(dirname(options.socketPath), 'proxy-port.txt');
|
|
80
134
|
return {
|
|
81
135
|
socketPath: options.socketPath,
|
|
136
|
+
get port() {
|
|
137
|
+
return resolvedPort;
|
|
138
|
+
},
|
|
82
139
|
async start() {
|
|
140
|
+
// Remove stale port file from a prior crashed run to prevent
|
|
141
|
+
// false readiness during polling.
|
|
142
|
+
if (useTcp) {
|
|
143
|
+
try {
|
|
144
|
+
unlinkSync(portFilePath);
|
|
145
|
+
}
|
|
146
|
+
catch {
|
|
147
|
+
/* file may not exist */
|
|
148
|
+
}
|
|
149
|
+
}
|
|
83
150
|
const modulePath = getProxyModulePath();
|
|
84
151
|
const isTsSource = modulePath.endsWith('.ts');
|
|
85
|
-
// Fork the proxy process with
|
|
152
|
+
// Fork the proxy process with the appropriate transport env vars
|
|
86
153
|
const env = {
|
|
87
154
|
...process.env,
|
|
88
155
|
...options.env,
|
|
89
|
-
PROXY_SOCKET_PATH: options.socketPath,
|
|
90
156
|
};
|
|
157
|
+
if (useTcp) {
|
|
158
|
+
// Ensure UDS-specific env vars do not leak from the parent environment
|
|
159
|
+
delete env.PROXY_SOCKET_PATH;
|
|
160
|
+
env.PROXY_TCP_PORT = '0'; // OS-assigned port
|
|
161
|
+
env.PROXY_PORT_FILE = portFilePath;
|
|
162
|
+
}
|
|
163
|
+
else {
|
|
164
|
+
// Ensure TCP-specific env vars do not leak from the parent environment
|
|
165
|
+
delete env.PROXY_TCP_PORT;
|
|
166
|
+
delete env.PROXY_PORT_FILE;
|
|
167
|
+
env.PROXY_SOCKET_PATH = options.socketPath;
|
|
168
|
+
}
|
|
91
169
|
const cwd = options.cwd ?? process.cwd();
|
|
92
170
|
if (isTsSource) {
|
|
93
171
|
// In development, use tsx to run TypeScript directly
|
|
@@ -119,21 +197,33 @@ export function createManagedProxy(options) {
|
|
|
119
197
|
proxyExited = true;
|
|
120
198
|
proxyExitCode = code;
|
|
121
199
|
});
|
|
122
|
-
// Poll for socket
|
|
200
|
+
// Poll for readiness: port file in TCP mode, socket file in UDS mode
|
|
201
|
+
const readinessTarget = useTcp ? portFilePath : options.socketPath;
|
|
123
202
|
const start = Date.now();
|
|
124
|
-
while (!existsSync(
|
|
203
|
+
while (!existsSync(readinessTarget)) {
|
|
125
204
|
// eslint-disable-next-line @typescript-eslint/no-unnecessary-condition -- mutated by async 'exit' event handler
|
|
126
205
|
if (proxyExited) {
|
|
127
|
-
throw new Error(`MCP proxy process exited with code ${proxyExitCode} before
|
|
206
|
+
throw new Error(`MCP proxy process exited with code ${proxyExitCode} before becoming ready.\nStderr: ${proxyStderr}`);
|
|
128
207
|
}
|
|
129
208
|
if (Date.now() - start > SOCKET_READY_TIMEOUT_MS) {
|
|
130
|
-
throw new Error(`MCP proxy did not
|
|
209
|
+
throw new Error(`MCP proxy did not become ready within ${SOCKET_READY_TIMEOUT_MS}ms.\nStderr: ${proxyStderr}`);
|
|
131
210
|
}
|
|
132
211
|
await delay(SOCKET_POLL_INTERVAL_MS);
|
|
133
212
|
}
|
|
213
|
+
// In TCP mode, read the port from the file
|
|
214
|
+
if (useTcp && portFilePath) {
|
|
215
|
+
const rawPort = readFileSync(portFilePath, 'utf-8').trim();
|
|
216
|
+
const parsedPort = parseInt(rawPort, 10);
|
|
217
|
+
if (!Number.isInteger(parsedPort) || parsedPort <= 0 || parsedPort > 65535) {
|
|
218
|
+
throw new Error(`Invalid TCP port "${rawPort}" read from ${portFilePath}.`);
|
|
219
|
+
}
|
|
220
|
+
resolvedPort = parsedPort;
|
|
221
|
+
}
|
|
134
222
|
},
|
|
135
223
|
async listTools() {
|
|
136
|
-
const transport =
|
|
224
|
+
const transport = useTcp && resolvedPort !== undefined
|
|
225
|
+
? new TcpClientTransport('127.0.0.1', resolvedPort)
|
|
226
|
+
: new UdsClientTransport(options.socketPath);
|
|
137
227
|
const client = new Client({ name: 'ironcurtain-tool-lister', version: VERSION }, {});
|
|
138
228
|
try {
|
|
139
229
|
await client.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"managed-proxy.js","sourceRoot":"","sources":["../../src/docker/managed-proxy.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,IAAI,EAAqB,MAAM,oBAAoB,CAAC;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"managed-proxy.js","sourceRoot":"","sources":["../../src/docker/managed-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,16 +15,19 @@
|
|
|
15
15
|
import { type CertificateAuthority } from './ca.js';
|
|
16
16
|
import { type ProviderConfig } from './provider-config.js';
|
|
17
17
|
export interface MitmProxy {
|
|
18
|
-
/** Start listening on the UDS. Pre-warms cert cache for all providers. */
|
|
18
|
+
/** Start listening on the UDS or TCP port. Pre-warms cert cache for all providers. */
|
|
19
19
|
start(): Promise<{
|
|
20
|
-
socketPath
|
|
20
|
+
socketPath?: string;
|
|
21
|
+
port?: number;
|
|
21
22
|
}>;
|
|
22
23
|
/** Stop the proxy and close all connections. */
|
|
23
24
|
stop(): Promise<void>;
|
|
24
25
|
}
|
|
25
26
|
export interface MitmProxyOptions {
|
|
26
|
-
/** Absolute path for the Unix domain socket. */
|
|
27
|
-
readonly socketPath
|
|
27
|
+
/** Absolute path for the Unix domain socket (UDS mode). Omit for TCP mode. */
|
|
28
|
+
readonly socketPath?: string;
|
|
29
|
+
/** TCP port to listen on (0 for OS-assigned). Omit for UDS mode. */
|
|
30
|
+
readonly listenPort?: number;
|
|
28
31
|
/** CA certificate and key for signing per-host certs. */
|
|
29
32
|
readonly ca: CertificateAuthority;
|
|
30
33
|
/**
|
|
@@ -193,6 +193,16 @@ export function createMitmProxy(options) {
|
|
|
193
193
|
}
|
|
194
194
|
}
|
|
195
195
|
if (needsRewrite) {
|
|
196
|
+
// Reject requests with content-encoding we cannot parse (e.g. gzip).
|
|
197
|
+
// Without this, a compressed body would fail JSON.parse and be forwarded
|
|
198
|
+
// as-is, bypassing the rewriter while the upstream decompresses it.
|
|
199
|
+
const contentEncoding = clientReq.headers['content-encoding']?.toLowerCase();
|
|
200
|
+
if (contentEncoding && contentEncoding !== 'identity') {
|
|
201
|
+
logger.info(`[mitm-proxy] REJECTED ${method} ${targetHost}${path} - unsupported Content-Encoding: ${contentEncoding}`);
|
|
202
|
+
clientRes.writeHead(415, { 'Content-Type': 'text/plain' });
|
|
203
|
+
clientRes.end(`Unsupported Content-Encoding for this endpoint: ${contentEncoding}`);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
196
206
|
// shouldRewriteBody guarantees requestRewriter, method, and path are defined
|
|
197
207
|
const rewriter = provider.config.requestRewriter;
|
|
198
208
|
const reqMethod = method;
|
|
@@ -291,21 +301,39 @@ export function createMitmProxy(options) {
|
|
|
291
301
|
// 7. Emit into shared inner HTTP server
|
|
292
302
|
innerServer.emit('connection', tlsSocket);
|
|
293
303
|
});
|
|
304
|
+
const useTcp = options.listenPort !== undefined;
|
|
305
|
+
if (!useTcp && !options.socketPath) {
|
|
306
|
+
throw new Error('MitmProxyOptions: either socketPath or listenPort must be provided');
|
|
307
|
+
}
|
|
294
308
|
return {
|
|
295
309
|
async start() {
|
|
296
|
-
// Clean up stale socket file from a previous run
|
|
297
|
-
if (existsSync(options.socketPath)) {
|
|
298
|
-
unlinkSync(options.socketPath);
|
|
299
|
-
}
|
|
300
310
|
// Pre-warm cert cache for all configured providers
|
|
301
311
|
for (const mapping of options.providers) {
|
|
302
312
|
getOrCreateSecureContext(mapping.config.host);
|
|
303
313
|
}
|
|
314
|
+
if (useTcp) {
|
|
315
|
+
// TCP mode: listen on host:port
|
|
316
|
+
return new Promise((resolve, reject) => {
|
|
317
|
+
const onError = reject;
|
|
318
|
+
outerServer.listen(options.listenPort, '0.0.0.0', () => {
|
|
319
|
+
outerServer.removeListener('error', onError);
|
|
320
|
+
const addr = outerServer.address();
|
|
321
|
+
const port = addr && typeof addr === 'object' ? addr.port : (options.listenPort ?? 0);
|
|
322
|
+
resolve({ port });
|
|
323
|
+
});
|
|
324
|
+
outerServer.once('error', onError);
|
|
325
|
+
});
|
|
326
|
+
}
|
|
327
|
+
// UDS mode: listen on socket path
|
|
328
|
+
const socketPath = options.socketPath ?? '';
|
|
329
|
+
if (existsSync(socketPath)) {
|
|
330
|
+
unlinkSync(socketPath);
|
|
331
|
+
}
|
|
304
332
|
return new Promise((resolve, reject) => {
|
|
305
333
|
const onError = reject;
|
|
306
|
-
outerServer.listen(
|
|
334
|
+
outerServer.listen(socketPath, () => {
|
|
307
335
|
outerServer.removeListener('error', onError);
|
|
308
|
-
resolve({ socketPath
|
|
336
|
+
resolve({ socketPath });
|
|
309
337
|
});
|
|
310
338
|
outerServer.once('error', onError);
|
|
311
339
|
});
|
|
@@ -337,14 +365,16 @@ export function createMitmProxy(options) {
|
|
|
337
365
|
// 4. Close the inner HTTP server.
|
|
338
366
|
innerServer.closeAllConnections();
|
|
339
367
|
innerServer.close();
|
|
340
|
-
// 5. Clean up socket file
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
368
|
+
// 5. Clean up socket file (UDS mode only)
|
|
369
|
+
if (!useTcp && options.socketPath) {
|
|
370
|
+
try {
|
|
371
|
+
if (existsSync(options.socketPath)) {
|
|
372
|
+
unlinkSync(options.socketPath);
|
|
373
|
+
}
|
|
374
|
+
}
|
|
375
|
+
catch {
|
|
376
|
+
// Ignore cleanup errors
|
|
344
377
|
}
|
|
345
|
-
}
|
|
346
|
-
catch {
|
|
347
|
-
// Ignore cleanup errors
|
|
348
378
|
}
|
|
349
379
|
},
|
|
350
380
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mitm-proxy.js","sourceRoot":"","sources":["../../src/docker/mitm-proxy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"mitm-proxy.js","sourceRoot":"","sources":["../../src/docker/mitm-proxy.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,6 +18,6 @@ export declare function extractAllowedDomains(config: IronCurtainConfig): string
|
|
|
18
18
|
* 1. Generates MCP client config via adapter (written to orientation dir)
|
|
19
19
|
* 2. Builds the system prompt via adapter (returned for per-turn injection)
|
|
20
20
|
*/
|
|
21
|
-
export declare function prepareSession(adapter: AgentAdapter, proxyTools: ToolInfo[], sessionDir: string, config: IronCurtainConfig, hostSandboxDir: string): {
|
|
21
|
+
export declare function prepareSession(adapter: AgentAdapter, proxyTools: ToolInfo[], sessionDir: string, config: IronCurtainConfig, hostSandboxDir: string, proxyAddress?: string): {
|
|
22
22
|
systemPrompt: string;
|
|
23
23
|
};
|
|
@@ -43,7 +43,7 @@ function writeConfigFiles(baseDir, files) {
|
|
|
43
43
|
* 1. Generates MCP client config via adapter (written to orientation dir)
|
|
44
44
|
* 2. Builds the system prompt via adapter (returned for per-turn injection)
|
|
45
45
|
*/
|
|
46
|
-
export function prepareSession(adapter, proxyTools, sessionDir, config, hostSandboxDir) {
|
|
46
|
+
export function prepareSession(adapter, proxyTools, sessionDir, config, hostSandboxDir, proxyAddress) {
|
|
47
47
|
const orientationDir = resolve(sessionDir, 'orientation');
|
|
48
48
|
mkdirSync(orientationDir, { recursive: true });
|
|
49
49
|
const context = {
|
|
@@ -51,8 +51,11 @@ export function prepareSession(adapter, proxyTools, sessionDir, config, hostSand
|
|
|
51
51
|
hostSandboxDir,
|
|
52
52
|
tools: proxyTools,
|
|
53
53
|
allowedDomains: extractAllowedDomains(config),
|
|
54
|
+
networkMode: proxyAddress ? 'bridge' : 'none',
|
|
54
55
|
};
|
|
55
|
-
|
|
56
|
+
// proxyAddress is either a TCP host:port (macOS) or defaults to the UDS path (Linux)
|
|
57
|
+
const address = proxyAddress ?? '/run/ironcurtain/proxy.sock';
|
|
58
|
+
writeConfigFiles(orientationDir, adapter.generateMcpConfig(address, proxyTools));
|
|
56
59
|
writeConfigFiles(orientationDir, adapter.generateOrientationFiles(context));
|
|
57
60
|
const systemPrompt = adapter.buildSystemPrompt(context);
|
|
58
61
|
return { systemPrompt };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orientation.js","sourceRoot":"","sources":["../../src/docker/orientation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI7C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAwB;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAqB,EACrB,UAAsB,EACtB,UAAkB,EAClB,MAAyB,EACzB,cAAsB;
|
|
1
|
+
{"version":3,"file":"orientation.js","sourceRoot":"","sources":["../../src/docker/orientation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAI7C;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAAyB;IAC7D,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,YAAY,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;QAC5D,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QACrC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC;QAChC,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACtB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,OAAO,CAAC,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CAAC,OAAe,EAAE,KAAwB;IACjE,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/C,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QACpD,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAC5B,OAAqB,EACrB,UAAsB,EACtB,UAAkB,EAClB,MAAyB,EACzB,cAAsB,EACtB,YAAqB;IAErB,MAAM,cAAc,GAAG,OAAO,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;IAC1D,SAAS,CAAC,cAAc,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE/C,MAAM,OAAO,GAAuB;QAClC,YAAY,EAAE,YAAY;QAC1B,cAAc;QACd,KAAK,EAAE,UAAU;QACjB,cAAc,EAAE,qBAAqB,CAAC,MAAM,CAAC;QAC7C,WAAW,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;KAC9C,CAAC;IAEF,qFAAqF;IACrF,MAAM,OAAO,GAAG,YAAY,IAAI,6BAA6B,CAAC;IAC9D,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,iBAAiB,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC;IACjF,gBAAgB,CAAC,cAAc,EAAE,OAAO,CAAC,wBAAwB,CAAC,OAAO,CAAC,CAAC,CAAC;IAE5E,MAAM,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC,OAAO,CAAC,CAAC;IACxD,OAAO,EAAE,YAAY,EAAE,CAAC;AAC1B,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform detection for Docker transport selection.
|
|
3
|
+
*
|
|
4
|
+
* Docker Desktop on macOS uses VirtioFS for bind mounts, which does
|
|
5
|
+
* not support Unix domain sockets. On macOS, we use TCP transport
|
|
6
|
+
* instead so the container can reach host-side proxies via
|
|
7
|
+
* `host.docker.internal`.
|
|
8
|
+
*/
|
|
9
|
+
/**
|
|
10
|
+
* Returns true when the Docker session should use TCP transport
|
|
11
|
+
* instead of Unix domain sockets. Currently true on macOS where
|
|
12
|
+
* Docker Desktop's VirtioFS does not support UDS in bind mounts.
|
|
13
|
+
*/
|
|
14
|
+
export declare function useTcpTransport(): boolean;
|
|
15
|
+
/** Docker network name for the internal (no-egress) bridge used in TCP mode. */
|
|
16
|
+
export declare const INTERNAL_NETWORK_NAME = "ironcurtain-internal";
|
|
17
|
+
/** Subnet for the internal bridge network. */
|
|
18
|
+
export declare const INTERNAL_NETWORK_SUBNET = "172.30.0.0/24";
|
|
19
|
+
/** Gateway IP for the internal bridge network (host-side). */
|
|
20
|
+
export declare const INTERNAL_NETWORK_GATEWAY = "172.30.0.1";
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Platform detection for Docker transport selection.
|
|
3
|
+
*
|
|
4
|
+
* Docker Desktop on macOS uses VirtioFS for bind mounts, which does
|
|
5
|
+
* not support Unix domain sockets. On macOS, we use TCP transport
|
|
6
|
+
* instead so the container can reach host-side proxies via
|
|
7
|
+
* `host.docker.internal`.
|
|
8
|
+
*/
|
|
9
|
+
import { platform } from 'node:os';
|
|
10
|
+
/**
|
|
11
|
+
* Returns true when the Docker session should use TCP transport
|
|
12
|
+
* instead of Unix domain sockets. Currently true on macOS where
|
|
13
|
+
* Docker Desktop's VirtioFS does not support UDS in bind mounts.
|
|
14
|
+
*/
|
|
15
|
+
export function useTcpTransport() {
|
|
16
|
+
return platform() === 'darwin';
|
|
17
|
+
}
|
|
18
|
+
/** Docker network name for the internal (no-egress) bridge used in TCP mode. */
|
|
19
|
+
export const INTERNAL_NETWORK_NAME = 'ironcurtain-internal';
|
|
20
|
+
/** Subnet for the internal bridge network. */
|
|
21
|
+
export const INTERNAL_NETWORK_SUBNET = '172.30.0.0/24';
|
|
22
|
+
/** Gateway IP for the internal bridge network (host-side). */
|
|
23
|
+
export const INTERNAL_NETWORK_GATEWAY = '172.30.0.1';
|
|
24
|
+
//# sourceMappingURL=platform.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platform.js","sourceRoot":"","sources":["../../src/docker/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAEnC;;;;GAIG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,QAAQ,EAAE,KAAK,QAAQ,CAAC;AACjC,CAAC;AAED,gFAAgF;AAChF,MAAM,CAAC,MAAM,qBAAqB,GAAG,sBAAsB,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,CAAC,MAAM,uBAAuB,GAAG,eAAe,CAAC;AAEvD,8DAA8D;AAC9D,MAAM,CAAC,MAAM,wBAAwB,GAAG,YAAY,CAAC"}
|
package/dist/docker/types.d.ts
CHANGED
|
@@ -17,11 +17,40 @@ export interface DockerContainerConfig {
|
|
|
17
17
|
readonly command: readonly string[];
|
|
18
18
|
/** IronCurtain session label for stale container detection. */
|
|
19
19
|
readonly sessionLabel?: string;
|
|
20
|
+
/** Extra --add-host entries (e.g. ["host.docker.internal:172.30.0.1"]). When set, suppresses the default host-gateway mapping. */
|
|
21
|
+
readonly extraHosts?: readonly string[];
|
|
20
22
|
/** Optional resource limits. */
|
|
21
23
|
readonly resources?: {
|
|
22
24
|
readonly memoryMb?: number;
|
|
23
25
|
readonly cpus?: number;
|
|
24
26
|
};
|
|
27
|
+
/**
|
|
28
|
+
* Port bindings in 'hostPort:containerPort' format.
|
|
29
|
+
* Optional. Defaults to no ports exposed.
|
|
30
|
+
*
|
|
31
|
+
* SECURITY NOTE: Agent containers must NEVER expose ports.
|
|
32
|
+
* This field exists solely for service containers (e.g., signal-cli)
|
|
33
|
+
* that need to expose a local API. Only bind to 127.0.0.1 in practice
|
|
34
|
+
* (e.g., '127.0.0.1:18080:8080').
|
|
35
|
+
*/
|
|
36
|
+
readonly ports?: readonly string[];
|
|
37
|
+
/**
|
|
38
|
+
* Docker restart policy (e.g., 'unless-stopped', 'on-failure:3').
|
|
39
|
+
* Optional. Defaults to no restart policy (container stops when stopped).
|
|
40
|
+
*
|
|
41
|
+
* Agent containers must NEVER set a restart policy - they are
|
|
42
|
+
* ephemeral per-session containers managed by session lifecycle.
|
|
43
|
+
*/
|
|
44
|
+
readonly restartPolicy?: string;
|
|
45
|
+
/**
|
|
46
|
+
* Linux capabilities to re-add after --cap-drop=ALL.
|
|
47
|
+
* Optional. Defaults to none (fully unprivileged).
|
|
48
|
+
*
|
|
49
|
+
* Third-party service containers may need specific capabilities
|
|
50
|
+
* for their entrypoints (e.g., CHOWN, SETUID). Agent containers
|
|
51
|
+
* must NEVER set this field.
|
|
52
|
+
*/
|
|
53
|
+
readonly capAdd?: readonly string[];
|
|
25
54
|
}
|
|
26
55
|
/** A volume mount for a Docker container. */
|
|
27
56
|
export interface DockerMount {
|
|
@@ -51,20 +80,20 @@ export interface DockerManager {
|
|
|
51
80
|
/** Create a container with the given configuration. Returns container ID. */
|
|
52
81
|
create(config: DockerContainerConfig): Promise<string>;
|
|
53
82
|
/** Start a created container. */
|
|
54
|
-
start(
|
|
83
|
+
start(nameOrId: string): Promise<void>;
|
|
55
84
|
/**
|
|
56
85
|
* Execute a command inside a running container via `docker exec`.
|
|
57
86
|
* Returns when the command exits. Both stdout and stderr are captured.
|
|
58
87
|
*
|
|
59
88
|
* @param timeoutMs - kill the exec process after this many ms.
|
|
60
89
|
*/
|
|
61
|
-
exec(
|
|
90
|
+
exec(nameOrId: string, command: readonly string[], timeoutMs?: number): Promise<DockerExecResult>;
|
|
62
91
|
/** Stop a running container (SIGTERM, then SIGKILL after grace period). */
|
|
63
|
-
stop(
|
|
92
|
+
stop(nameOrId: string): Promise<void>;
|
|
64
93
|
/** Remove a container (must be stopped). */
|
|
65
|
-
remove(
|
|
94
|
+
remove(nameOrId: string): Promise<void>;
|
|
66
95
|
/** Check if a container is running. */
|
|
67
|
-
isRunning(
|
|
96
|
+
isRunning(nameOrId: string): Promise<boolean>;
|
|
68
97
|
/** Check if a Docker image exists locally. */
|
|
69
98
|
imageExists(image: string): Promise<boolean>;
|
|
70
99
|
/** Build a Docker image from a Dockerfile. Optional labels are stamped on the image. */
|
|
@@ -72,7 +101,20 @@ export interface DockerManager {
|
|
|
72
101
|
/** Read a label value from a Docker image. Returns undefined if image or label doesn't exist. */
|
|
73
102
|
getImageLabel(image: string, label: string): Promise<string | undefined>;
|
|
74
103
|
/** Create a Docker network. No-op if it already exists. */
|
|
75
|
-
createNetwork(name: string
|
|
104
|
+
createNetwork(name: string, options?: {
|
|
105
|
+
internal?: boolean;
|
|
106
|
+
subnet?: string;
|
|
107
|
+
gateway?: string;
|
|
108
|
+
}): Promise<void>;
|
|
76
109
|
/** Remove a Docker network. Ignores errors (e.g., already removed). */
|
|
77
110
|
removeNetwork(name: string): Promise<void>;
|
|
111
|
+
/** Pull a Docker image from a registry. */
|
|
112
|
+
pullImage(image: string): Promise<void>;
|
|
113
|
+
/**
|
|
114
|
+
* Check if a container exists (running or stopped).
|
|
115
|
+
* Unlike isRunning(), returns true for stopped containers.
|
|
116
|
+
*/
|
|
117
|
+
containerExists(nameOrId: string): Promise<boolean>;
|
|
118
|
+
/** Returns the image ID (sha256 digest) for a container or image. undefined if not found. */
|
|
119
|
+
getImageId(nameOrId: string): Promise<string | undefined>;
|
|
78
120
|
}
|
package/dist/session/index.js
CHANGED
|
@@ -78,8 +78,10 @@ async function createDockerSession(agentId, options) {
|
|
|
78
78
|
const { generateFakeKey } = await import('../docker/fake-keys.js');
|
|
79
79
|
const { createDockerManager } = await import('../docker/docker-manager.js');
|
|
80
80
|
const { DockerAgentSession } = await import('../docker/docker-agent-session.js');
|
|
81
|
+
const { useTcpTransport } = await import('../docker/platform.js');
|
|
81
82
|
await registerBuiltinAdapters();
|
|
82
83
|
const adapter = getAgent(agentId);
|
|
84
|
+
const useTcp = useTcpTransport();
|
|
83
85
|
const socketPath = resolve(sessionConfig.sessionDir, 'proxy.sock');
|
|
84
86
|
// Build the same set of env vars the built-in sandbox passes to the proxy.
|
|
85
87
|
// See src/sandbox/index.ts for the authoritative list.
|
|
@@ -93,6 +95,7 @@ async function createDockerSession(agentId, options) {
|
|
|
93
95
|
ESCALATION_DIR: sessionConfig.escalationDir,
|
|
94
96
|
ESCALATION_TIMEOUT_SECONDS: String(config.escalationTimeoutSeconds),
|
|
95
97
|
SANDBOX_POLICY: sessionConfig.config.sandboxPolicy ?? 'warn',
|
|
98
|
+
CONTAINER_WORKSPACE_DIR: '/workspace',
|
|
96
99
|
};
|
|
97
100
|
if (sessionConfig.config.sessionLogPath) {
|
|
98
101
|
proxyEnv.SESSION_LOG_PATH = sessionConfig.config.sessionLogPath;
|
|
@@ -111,6 +114,7 @@ async function createDockerSession(agentId, options) {
|
|
|
111
114
|
const proxy = createManagedProxy({
|
|
112
115
|
socketPath,
|
|
113
116
|
env: proxyEnv,
|
|
117
|
+
listenMode: useTcp ? 'tcp' : 'uds',
|
|
114
118
|
});
|
|
115
119
|
// Load or generate the IronCurtain CA for TLS termination
|
|
116
120
|
const { getIronCurtainHome } = await import('../config/paths.js');
|
|
@@ -127,12 +131,17 @@ async function createDockerSession(agentId, options) {
|
|
|
127
131
|
const realKey = resolveRealApiKey(providerConfig.host, config);
|
|
128
132
|
providerMappings.push({ config: providerConfig, fakeKey, realKey });
|
|
129
133
|
}
|
|
130
|
-
const
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
134
|
+
const mitmProxy = useTcp
|
|
135
|
+
? createMitmProxy({
|
|
136
|
+
listenPort: 0,
|
|
137
|
+
ca,
|
|
138
|
+
providers: providerMappings,
|
|
139
|
+
})
|
|
140
|
+
: createMitmProxy({
|
|
141
|
+
socketPath: resolve(sessionConfig.sessionDir, 'mitm-proxy.sock'),
|
|
142
|
+
ca,
|
|
143
|
+
providers: providerMappings,
|
|
144
|
+
});
|
|
136
145
|
const docker = createDockerManager();
|
|
137
146
|
const session = new DockerAgentSession({
|
|
138
147
|
config: sessionConfig.config,
|
|
@@ -147,6 +156,7 @@ async function createDockerSession(agentId, options) {
|
|
|
147
156
|
sandboxDir: sessionConfig.sandboxDir,
|
|
148
157
|
escalationDir: sessionConfig.escalationDir,
|
|
149
158
|
auditLogPath: sessionConfig.auditLogPath,
|
|
159
|
+
useTcp,
|
|
150
160
|
onEscalation: options.onEscalation,
|
|
151
161
|
onEscalationExpired: options.onEscalationExpired,
|
|
152
162
|
onDiagnostic: options.onDiagnostic,
|