@provos/ironcurtain 0.7.2 → 0.8.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 +29 -100
- package/dist/config/first-start.js +4 -1
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/mcp-servers.json +8 -2
- package/dist/config/paths.d.ts +5 -0
- package/dist/config/paths.js +8 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/user-config.d.ts +27 -0
- package/dist/config/user-config.js +28 -0
- package/dist/config/user-config.js.map +1 -1
- package/dist/cron/constitution-generator.d.ts +2 -1
- package/dist/cron/constitution-generator.js +35 -36
- package/dist/cron/constitution-generator.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.js +1 -0
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/adapters/claude-code.js +32 -5
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +40 -0
- package/dist/docker/claude-md-seed.d.ts +27 -0
- package/dist/docker/claude-md-seed.js +42 -0
- package/dist/docker/claude-md-seed.js.map +1 -0
- package/dist/docker/docker-agent-session.js +2 -0
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.d.ts +15 -1
- package/dist/docker/docker-infrastructure.js +72 -1
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +15 -0
- package/dist/docker/mitm-proxy.js +75 -7
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/package-types.d.ts +127 -0
- package/dist/docker/package-types.js +8 -0
- package/dist/docker/package-types.js.map +1 -0
- package/dist/docker/package-validator.d.ts +41 -0
- package/dist/docker/package-validator.js +90 -0
- package/dist/docker/package-validator.js.map +1 -0
- package/dist/docker/pty-session.d.ts +15 -0
- package/dist/docker/pty-session.js +205 -44
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +24 -0
- package/dist/docker/pty-types.js +2 -0
- package/dist/docker/pty-types.js.map +1 -1
- package/dist/docker/registry-proxy.d.ts +142 -0
- package/dist/docker/registry-proxy.js +856 -0
- package/dist/docker/registry-proxy.js.map +1 -0
- package/dist/index.js +10 -2
- package/dist/index.js.map +1 -1
- package/dist/memory/memory-annotations.d.ts +47 -0
- package/dist/memory/memory-annotations.js +87 -0
- package/dist/memory/memory-annotations.js.map +1 -0
- package/dist/memory/memory-prompt.d.ts +12 -0
- package/dist/memory/memory-prompt.js +20 -0
- package/dist/memory/memory-prompt.js.map +1 -0
- package/dist/memory/resolve-memory-path.d.ts +20 -0
- package/dist/memory/resolve-memory-path.js +30 -0
- package/dist/memory/resolve-memory-path.js.map +1 -0
- package/dist/mux/mux-app.js +78 -10
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-input-handler.d.ts +28 -2
- package/dist/mux/mux-input-handler.js +164 -7
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/mux/mux-renderer.d.ts +3 -1
- package/dist/mux/mux-renderer.js +181 -7
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/persona-scanner.d.ts +19 -0
- package/dist/mux/persona-scanner.js +53 -0
- package/dist/mux/persona-scanner.js.map +1 -0
- package/dist/mux/pty-bridge.d.ts +4 -0
- package/dist/mux/pty-bridge.js +6 -0
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/session-scanner.d.ts +18 -0
- package/dist/mux/session-scanner.js +65 -0
- package/dist/mux/session-scanner.js.map +1 -0
- package/dist/mux/types.d.ts +13 -1
- package/dist/mux/types.js +5 -1
- package/dist/mux/types.js.map +1 -1
- package/dist/persona/persona-command.js +130 -88
- package/dist/persona/persona-command.js.map +1 -1
- package/dist/persona/persona-prompt.d.ts +7 -7
- package/dist/persona/persona-prompt.js +14 -29
- package/dist/persona/persona-prompt.js.map +1 -1
- package/dist/persona/resolve.js +5 -2
- package/dist/persona/resolve.js.map +1 -1
- package/dist/sandbox/index.d.ts +26 -10
- package/dist/sandbox/index.js +131 -40
- package/dist/sandbox/index.js.map +1 -1
- package/dist/session/agent-session.d.ts +2 -1
- package/dist/session/agent-session.js +4 -1
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/index.d.ts +25 -1
- package/dist/session/index.js +57 -8
- package/dist/session/index.js.map +1 -1
- package/dist/session/prompts.js +8 -8
- package/dist/session/types.d.ts +5 -0
- package/dist/session/workspace-validation.js +37 -6
- package/dist/session/workspace-validation.js.map +1 -1
- package/dist/trusted-process/index.js +23 -29
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +9 -0
- package/dist/trusted-process/mcp-proxy-server.js +91 -37
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +4 -1
- package/dist/trusted-process/policy-engine.js +15 -1
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/docker/Dockerfile.base +22 -0
- package/docker/Dockerfile.base.arm64 +44 -4
- package/docker/entrypoint-claude-code.sh +9 -1
- package/package.json +7 -2
- package/src/config/mcp-servers.json +8 -2
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package validation logic for the registry proxy.
|
|
3
|
+
*
|
|
4
|
+
* Evaluates packages against allowlist, denylist, and age gate rules.
|
|
5
|
+
* Decisions are binary: allow or deny. No escalation.
|
|
6
|
+
*
|
|
7
|
+
* Validation order (first match wins):
|
|
8
|
+
* 1. Denylist match -> DENY
|
|
9
|
+
* 2. Allowlist match -> ALLOW (bypasses age gate)
|
|
10
|
+
* 3. Version too new -> DENY
|
|
11
|
+
* 4. No metadata -> DENY (fail-closed)
|
|
12
|
+
* 5. Default -> ALLOW
|
|
13
|
+
*/
|
|
14
|
+
import { minimatch } from 'minimatch';
|
|
15
|
+
/** Fallback validator that denies all packages. Used when no validator is configured. */
|
|
16
|
+
export const DENY_ALL_VALIDATOR = {
|
|
17
|
+
validate: () => ({ status: 'deny', reason: 'No validator configured' }),
|
|
18
|
+
};
|
|
19
|
+
/** Default quarantine period in days. */
|
|
20
|
+
const DEFAULT_QUARANTINE_DAYS = 2;
|
|
21
|
+
/** Milliseconds per day, used for age calculations. */
|
|
22
|
+
const MS_PER_DAY = 24 * 60 * 60 * 1000;
|
|
23
|
+
/**
|
|
24
|
+
* Returns the canonical display name for a package.
|
|
25
|
+
* Scoped npm packages use '@scope/name' format.
|
|
26
|
+
*/
|
|
27
|
+
export function canonicalPackageName(pkg) {
|
|
28
|
+
return pkg.scope ? `@${pkg.scope}/${pkg.name}` : pkg.name;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Returns the canonical cache key for a package.
|
|
32
|
+
* Format: 'npm:express', 'npm:@types/node', 'pypi:numpy'.
|
|
33
|
+
*/
|
|
34
|
+
export function packageCacheKey(pkg) {
|
|
35
|
+
return `${pkg.registry}:${canonicalPackageName(pkg)}`;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Checks if a package name matches any pattern in the given list.
|
|
39
|
+
* Supports glob patterns via minimatch.
|
|
40
|
+
*/
|
|
41
|
+
function matchesPatternList(packageName, patterns) {
|
|
42
|
+
return patterns.some((pattern) => minimatch(packageName, pattern, { nocase: true }));
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Creates a PackageValidator from configuration.
|
|
46
|
+
*
|
|
47
|
+
* The validator is stateless -- all configuration is captured at
|
|
48
|
+
* construction time. Thread-safe for concurrent use.
|
|
49
|
+
*/
|
|
50
|
+
export function createPackageValidator(config = {}) {
|
|
51
|
+
const allowedPackages = config.allowedPackages ?? [];
|
|
52
|
+
const deniedPackages = config.deniedPackages ?? [];
|
|
53
|
+
const quarantineDays = config.quarantineDays ?? DEFAULT_QUARANTINE_DAYS;
|
|
54
|
+
return {
|
|
55
|
+
validate(pkg, metadata) {
|
|
56
|
+
const name = canonicalPackageName(pkg);
|
|
57
|
+
// 1. Denylist (takes precedence over everything)
|
|
58
|
+
if (deniedPackages.length > 0 && matchesPatternList(name, deniedPackages)) {
|
|
59
|
+
return { status: 'deny', reason: `Package "${name}" is on the deny list` };
|
|
60
|
+
}
|
|
61
|
+
// 2. Allowlist (bypasses age gate)
|
|
62
|
+
if (allowedPackages.length > 0 && matchesPatternList(name, allowedPackages)) {
|
|
63
|
+
return { status: 'allow', reason: `Package "${name}" is on the allow list` };
|
|
64
|
+
}
|
|
65
|
+
// 3. Age gate (only when quarantineDays > 0)
|
|
66
|
+
if (quarantineDays > 0) {
|
|
67
|
+
if (!metadata) {
|
|
68
|
+
// 4. No metadata -> fail-closed
|
|
69
|
+
return { status: 'deny', reason: `No metadata available for "${name}" (fail-closed)` };
|
|
70
|
+
}
|
|
71
|
+
if (!metadata.publishedAt) {
|
|
72
|
+
// No publish timestamp -> fail-closed
|
|
73
|
+
return { status: 'deny', reason: `No publish timestamp for "${name}" (fail-closed)` };
|
|
74
|
+
}
|
|
75
|
+
const ageMs = Math.max(0, Date.now() - metadata.publishedAt.getTime());
|
|
76
|
+
const ageDays = ageMs / MS_PER_DAY;
|
|
77
|
+
if (ageDays < quarantineDays) {
|
|
78
|
+
const daysOld = Math.floor(ageDays);
|
|
79
|
+
return {
|
|
80
|
+
status: 'deny',
|
|
81
|
+
reason: `Version "${pkg.version ?? 'unknown'}" of "${name}" is only ${daysOld} day(s) old (quarantine: ${quarantineDays} days)`,
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// 5. Default -> allow
|
|
86
|
+
return { status: 'allow', reason: 'Passed all validation checks' };
|
|
87
|
+
},
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
//# sourceMappingURL=package-validator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-validator.js","sourceRoot":"","sources":["../../src/docker/package-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,WAAW,CAAC;AAGtC,yFAAyF;AACzF,MAAM,CAAC,MAAM,kBAAkB,GAAqB;IAClD,QAAQ,EAAE,GAAG,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,MAAe,EAAE,MAAM,EAAE,yBAAyB,EAAE,CAAC;CACjF,CAAC;AAEF,yCAAyC;AACzC,MAAM,uBAAuB,GAAG,CAAC,CAAC;AAElC,uDAAuD;AACvD,MAAM,UAAU,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAWvC;;;GAGG;AACH,MAAM,UAAU,oBAAoB,CAAC,GAAoB;IACvD,OAAO,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;AAC5D,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,GAAoB;IAClD,OAAO,GAAG,GAAG,CAAC,QAAQ,IAAI,oBAAoB,CAAC,GAAG,CAAC,EAAE,CAAC;AACxD,CAAC;AAED;;;GAGG;AACH,SAAS,kBAAkB,CAAC,WAAmB,EAAE,QAA2B;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACvF,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,SAAiC,EAAE;IACxE,MAAM,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,EAAE,CAAC;IACrD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,EAAE,CAAC;IACnD,MAAM,cAAc,GAAG,MAAM,CAAC,cAAc,IAAI,uBAAuB,CAAC;IAExE,OAAO;QACL,QAAQ,CAAC,GAAoB,EAAE,QAAqC;YAClE,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,CAAC;YAEvC,iDAAiD;YACjD,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,cAAc,CAAC,EAAE,CAAC;gBAC1E,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,IAAI,uBAAuB,EAAE,CAAC;YAC7E,CAAC;YAED,mCAAmC;YACnC,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,EAAE,eAAe,CAAC,EAAE,CAAC;gBAC5E,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,IAAI,wBAAwB,EAAE,CAAC;YAC/E,CAAC;YAED,6CAA6C;YAC7C,IAAI,cAAc,GAAG,CAAC,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,EAAE,CAAC;oBACd,gCAAgC;oBAChC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,8BAA8B,IAAI,iBAAiB,EAAE,CAAC;gBACzF,CAAC;gBAED,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC;oBAC1B,sCAAsC;oBACtC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,6BAA6B,IAAI,iBAAiB,EAAE,CAAC;gBACxF,CAAC;gBAED,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,QAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBACvE,MAAM,OAAO,GAAG,KAAK,GAAG,UAAU,CAAC;gBAEnC,IAAI,OAAO,GAAG,cAAc,EAAE,CAAC;oBAC7B,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;oBACpC,OAAO;wBACL,MAAM,EAAE,MAAM;wBACd,MAAM,EAAE,YAAY,GAAG,CAAC,OAAO,IAAI,SAAS,SAAS,IAAI,aAAa,OAAO,4BAA4B,cAAc,QAAQ;qBAChI,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,sBAAsB;YACtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,8BAA8B,EAAE,CAAC;QACrE,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -14,6 +14,7 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import type { IronCurtainConfig } from '../config/types.js';
|
|
16
16
|
import type { SessionMode } from '../session/types.js';
|
|
17
|
+
import type { SessionSnapshot } from './pty-types.js';
|
|
17
18
|
export interface PtySessionOptions {
|
|
18
19
|
readonly config: IronCurtainConfig;
|
|
19
20
|
readonly mode: SessionMode & {
|
|
@@ -21,7 +22,21 @@ export interface PtySessionOptions {
|
|
|
21
22
|
};
|
|
22
23
|
/** Validated workspace path. When provided, replaces the session sandbox. */
|
|
23
24
|
readonly workspacePath?: string;
|
|
25
|
+
/** Session ID to resume. When set, reuses the existing session directory. */
|
|
26
|
+
readonly resumeSessionId?: string;
|
|
27
|
+
/** Persona name. Used to build CLAUDE.md and system prompt augmentation. */
|
|
28
|
+
readonly persona?: string;
|
|
24
29
|
}
|
|
30
|
+
/**
|
|
31
|
+
* Validates a session for resume and returns the loaded snapshot.
|
|
32
|
+
* Throws descriptive errors for invalid resume attempts.
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateResumeSession(resumeSessionId: string, protectedPaths?: string[]): SessionSnapshot;
|
|
35
|
+
/**
|
|
36
|
+
* Loads a session snapshot from disk.
|
|
37
|
+
* Returns undefined if the snapshot file does not exist or is invalid.
|
|
38
|
+
*/
|
|
39
|
+
export declare function loadSessionSnapshot(sessionId: string): SessionSnapshot | undefined;
|
|
25
40
|
/**
|
|
26
41
|
* Runs a PTY session: starts proxies, launches container with PTY-enabled
|
|
27
42
|
* Claude Code, attaches the terminal, and blocks until the session ends.
|
|
@@ -14,64 +14,147 @@
|
|
|
14
14
|
*/
|
|
15
15
|
import { createConnection, createServer } from 'node:net';
|
|
16
16
|
import { execFile } from 'node:child_process';
|
|
17
|
-
import { mkdirSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
17
|
+
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync, unlinkSync } from 'node:fs';
|
|
18
18
|
import { resolve } from 'node:path';
|
|
19
19
|
import chalk from 'chalk';
|
|
20
20
|
import ora from 'ora';
|
|
21
21
|
import { createSessionId } from '../session/types.js';
|
|
22
|
-
import {
|
|
22
|
+
import { buildSessionConfig } from '../session/index.js';
|
|
23
|
+
import { validateWorkspacePath } from '../session/workspace-validation.js';
|
|
23
24
|
import { CONTAINER_WORKSPACE_DIR } from './agent-adapter.js';
|
|
24
25
|
import { PTY_SOCK_NAME, DEFAULT_PTY_PORT } from './pty-types.js';
|
|
26
|
+
import { SESSION_STATE_FILENAME } from './pty-types.js';
|
|
25
27
|
import { createEscalationWatcher, atomicWriteJsonSync } from '../escalation/escalation-watcher.js';
|
|
26
|
-
import { getSessionDir,
|
|
28
|
+
import { getSessionDir, getPtyRegistryDir } from '../config/paths.js';
|
|
27
29
|
import * as logger from '../logger.js';
|
|
30
|
+
import { buildDockerClaudeMd } from './claude-md-seed.js';
|
|
28
31
|
/** Maximum time to wait for the PTY socket to appear (ms). */
|
|
29
32
|
const PTY_READINESS_TIMEOUT_MS = 30_000;
|
|
30
33
|
/** Poll interval when waiting for PTY socket (ms). */
|
|
31
34
|
const PTY_READINESS_POLL_MS = 200;
|
|
35
|
+
/**
|
|
36
|
+
* Validates a session for resume and returns the loaded snapshot.
|
|
37
|
+
* Throws descriptive errors for invalid resume attempts.
|
|
38
|
+
*/
|
|
39
|
+
export function validateResumeSession(resumeSessionId, protectedPaths = []) {
|
|
40
|
+
const sessionDir = getSessionDir(resumeSessionId);
|
|
41
|
+
if (!existsSync(sessionDir)) {
|
|
42
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session directory not found`);
|
|
43
|
+
}
|
|
44
|
+
const snapshotPath = resolve(sessionDir, SESSION_STATE_FILENAME);
|
|
45
|
+
if (!existsSync(snapshotPath)) {
|
|
46
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": no session state snapshot found`);
|
|
47
|
+
}
|
|
48
|
+
let snapshot;
|
|
49
|
+
try {
|
|
50
|
+
snapshot = JSON.parse(readFileSync(snapshotPath, 'utf-8'));
|
|
51
|
+
}
|
|
52
|
+
catch {
|
|
53
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session state snapshot is corrupted or invalid`);
|
|
54
|
+
}
|
|
55
|
+
if (!snapshot.sessionId || snapshot.sessionId !== resumeSessionId) {
|
|
56
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": snapshot sessionId mismatch`);
|
|
57
|
+
}
|
|
58
|
+
if (!snapshot.resumable) {
|
|
59
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session is not resumable (status: ${snapshot.status})`);
|
|
60
|
+
}
|
|
61
|
+
if (!snapshot.agent) {
|
|
62
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": agent configuration is missing`);
|
|
63
|
+
}
|
|
64
|
+
// Validate workspace path using the same checks as --workspace to prevent
|
|
65
|
+
// a tampered snapshot from expanding the sandbox to a sensitive directory.
|
|
66
|
+
if (!snapshot.workspacePath || typeof snapshot.workspacePath !== 'string') {
|
|
67
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": workspace path is missing or invalid`);
|
|
68
|
+
}
|
|
69
|
+
try {
|
|
70
|
+
validateWorkspacePath(snapshot.workspacePath, protectedPaths);
|
|
71
|
+
}
|
|
72
|
+
catch (err) {
|
|
73
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
74
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": workspace path is unsafe: ${detail}`, {
|
|
75
|
+
cause: err,
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
return snapshot;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Loads a session snapshot from disk.
|
|
82
|
+
* Returns undefined if the snapshot file does not exist or is invalid.
|
|
83
|
+
*/
|
|
84
|
+
export function loadSessionSnapshot(sessionId) {
|
|
85
|
+
const snapshotPath = resolve(getSessionDir(sessionId), SESSION_STATE_FILENAME);
|
|
86
|
+
if (!existsSync(snapshotPath))
|
|
87
|
+
return undefined;
|
|
88
|
+
try {
|
|
89
|
+
return JSON.parse(readFileSync(snapshotPath, 'utf-8'));
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Classifies the PTY session exit reason from the container exit code.
|
|
97
|
+
*/
|
|
98
|
+
function classifyExitStatus(exitCode) {
|
|
99
|
+
if (exitCode === null)
|
|
100
|
+
return 'crashed';
|
|
101
|
+
if (exitCode === 0)
|
|
102
|
+
return 'completed';
|
|
103
|
+
// Exit code 2 is commonly used by agents for auth failures
|
|
104
|
+
if (exitCode === 2)
|
|
105
|
+
return 'auth-failure';
|
|
106
|
+
return 'crashed';
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Checks whether a conversation state directory contains files,
|
|
110
|
+
* indicating the agent wrote conversation data that can be resumed.
|
|
111
|
+
*/
|
|
112
|
+
function hasConversationState(stateDir) {
|
|
113
|
+
if (!existsSync(stateDir))
|
|
114
|
+
return false;
|
|
115
|
+
try {
|
|
116
|
+
const entries = readdirSync(stateDir);
|
|
117
|
+
return entries.length > 0;
|
|
118
|
+
}
|
|
119
|
+
catch {
|
|
120
|
+
return false;
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* Writes a session state snapshot to the session directory.
|
|
125
|
+
*/
|
|
126
|
+
function writeSessionSnapshot(sessionDir, snapshot) {
|
|
127
|
+
atomicWriteJsonSync(resolve(sessionDir, SESSION_STATE_FILENAME), snapshot);
|
|
128
|
+
}
|
|
32
129
|
/**
|
|
33
130
|
* Runs a PTY session: starts proxies, launches container with PTY-enabled
|
|
34
131
|
* Claude Code, attaches the terminal, and blocks until the session ends.
|
|
35
132
|
*/
|
|
36
133
|
export async function runPtySession(options) {
|
|
37
134
|
const { prepareDockerInfrastructure } = await import('./docker-infrastructure.js');
|
|
135
|
+
// When resuming, validate the snapshot and reuse the existing session directory
|
|
136
|
+
const resumeSnapshot = options.resumeSessionId
|
|
137
|
+
? validateResumeSession(options.resumeSessionId, options.config.protectedPaths)
|
|
138
|
+
: undefined;
|
|
139
|
+
const isResume = !!resumeSnapshot;
|
|
140
|
+
// Use the original session ID when resuming, otherwise create a new one
|
|
38
141
|
const sessionId = createSessionId();
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
142
|
+
const effectiveSessionId = options.resumeSessionId ?? sessionId;
|
|
143
|
+
const sessionDir = getSessionDir(effectiveSessionId);
|
|
144
|
+
// Delegate to shared buildSessionConfig() so PTY sessions get the same
|
|
145
|
+
// config patching as standard Docker sessions (persona, memory MCP server
|
|
146
|
+
// injection, server allowlist, policy dir, etc.).
|
|
147
|
+
const dirConfig = buildSessionConfig(options.config, effectiveSessionId, sessionId, {
|
|
148
|
+
resumeSessionId: options.resumeSessionId,
|
|
149
|
+
workspacePath: isResume ? resumeSnapshot.workspacePath : options.workspacePath,
|
|
150
|
+
persona: options.persona,
|
|
151
|
+
});
|
|
152
|
+
// Layer PTY-specific fields on top of the shared config.
|
|
153
|
+
const sessionConfig = { ...dirConfig.config, isPtySession: true };
|
|
154
|
+
const { sandboxDir, escalationDir, auditLogPath, systemPromptAugmentation } = dirConfig;
|
|
43
155
|
const socketsDir = resolve(sessionDir, 'sockets');
|
|
44
|
-
// Only create the sandbox directory when not using an external workspace
|
|
45
|
-
if (!options.workspacePath) {
|
|
46
|
-
mkdirSync(sandboxDir, { recursive: true, mode: 0o700 });
|
|
47
|
-
}
|
|
48
|
-
mkdirSync(escalationDir, { recursive: true, mode: 0o700 });
|
|
49
156
|
mkdirSync(socketsDir, { recursive: true, mode: 0o700 });
|
|
50
|
-
|
|
51
|
-
const sessionLogPath = getSessionLogPath(sessionId);
|
|
52
|
-
const llmLogPath = getSessionLlmLogPath(sessionId);
|
|
53
|
-
logger.setup({ logFilePath: sessionLogPath });
|
|
54
|
-
logger.info(`PTY session ${sessionId} starting`);
|
|
55
|
-
logger.info(`${options.workspacePath ? 'Workspace' : 'Sandbox'}: ${sandboxDir}`);
|
|
56
|
-
logger.info(`Escalation dir: ${escalationDir}`);
|
|
57
|
-
logger.info(`LLM log: ${llmLogPath}`);
|
|
58
|
-
// Patch config for this session
|
|
59
|
-
const autoApproveLlmLogPath = getSessionAutoApproveLlmLogPath(sessionId);
|
|
60
|
-
const sessionConfig = {
|
|
61
|
-
...options.config,
|
|
62
|
-
allowedDirectory: sandboxDir,
|
|
63
|
-
auditLogPath,
|
|
64
|
-
escalationDir,
|
|
65
|
-
sessionLogPath,
|
|
66
|
-
llmLogPath,
|
|
67
|
-
autoApproveLlmLogPath,
|
|
68
|
-
isPtySession: true,
|
|
69
|
-
mcpServers: JSON.parse(JSON.stringify(options.config.mcpServers)),
|
|
70
|
-
};
|
|
71
|
-
// Sync the filesystem server's directory arg with the session sandbox.
|
|
72
|
-
// Without this, the filesystem server inherits the stale default from
|
|
73
|
-
// loadConfig() (~/.ironcurtain/sandbox) instead of the session workspace.
|
|
74
|
-
patchMcpServerAllowedDirectory(sessionConfig, sandboxDir);
|
|
157
|
+
logger.info(`PTY session ${effectiveSessionId} ${isResume ? 'resuming' : 'starting'}`);
|
|
75
158
|
const initSpinner = ora({
|
|
76
159
|
text: `Initializing PTY session (${options.mode.agent})...`,
|
|
77
160
|
stream: process.stderr,
|
|
@@ -105,28 +188,63 @@ export async function runPtySession(options) {
|
|
|
105
188
|
};
|
|
106
189
|
process.on('SIGTERM', handleShutdownSignal);
|
|
107
190
|
process.on('SIGHUP', handleShutdownSignal);
|
|
108
|
-
// Infra variables set inside try, used in finally for cleanup
|
|
191
|
+
// Infra variables set inside try, used in finally for cleanup and snapshot
|
|
109
192
|
let proxy = null;
|
|
110
193
|
let mitmProxy = null;
|
|
111
194
|
let docker = null;
|
|
112
195
|
let useTcp = false;
|
|
196
|
+
let ptyExitCode = null;
|
|
197
|
+
let adapterIdForSnapshot = null;
|
|
198
|
+
let adapterDisplayNameForSnapshot = null;
|
|
199
|
+
let conversationStateDirForSnapshot;
|
|
200
|
+
let userExited = false;
|
|
201
|
+
const claudeMdContent = buildDockerClaudeMd({
|
|
202
|
+
personaName: options.persona,
|
|
203
|
+
memoryEnabled: options.config.userConfig.memory.enabled,
|
|
204
|
+
});
|
|
113
205
|
try {
|
|
114
|
-
const infra = await prepareDockerInfrastructure(sessionConfig, options.mode, sessionDir, sandboxDir, escalationDir, auditLogPath,
|
|
206
|
+
const infra = await prepareDockerInfrastructure(sessionConfig, options.mode, sessionDir, sandboxDir, escalationDir, auditLogPath, effectiveSessionId);
|
|
115
207
|
({ docker, proxy, mitmProxy, useTcp } = infra);
|
|
116
|
-
const { adapter, fakeKeys, orientationDir, systemPrompt, image, mitmAddr } = infra;
|
|
208
|
+
const { adapter, fakeKeys, orientationDir, systemPrompt: baseSystemPrompt, image, mitmAddr, conversationStateDir, conversationStateConfig, } = infra;
|
|
209
|
+
// Write CLAUDE.md into conversation state dir (unconditionally, even on
|
|
210
|
+
// resume, since persona/memory config may change between sessions).
|
|
211
|
+
// Clean up stale CLAUDE.md when memory is disabled to avoid leftover rules.
|
|
212
|
+
if (conversationStateDir) {
|
|
213
|
+
const claudeMdPath = resolve(conversationStateDir, 'CLAUDE.md');
|
|
214
|
+
if (claudeMdContent) {
|
|
215
|
+
writeFileSync(claudeMdPath, claudeMdContent);
|
|
216
|
+
}
|
|
217
|
+
else {
|
|
218
|
+
try {
|
|
219
|
+
unlinkSync(claudeMdPath);
|
|
220
|
+
}
|
|
221
|
+
catch {
|
|
222
|
+
/* not present */
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Compose final system prompt with persona/memory augmentation
|
|
227
|
+
const systemPrompt = systemPromptAugmentation
|
|
228
|
+
? `${baseSystemPrompt}\n\n${systemPromptAugmentation}`
|
|
229
|
+
: baseSystemPrompt;
|
|
230
|
+
adapterIdForSnapshot = adapter.id;
|
|
231
|
+
adapterDisplayNameForSnapshot = adapter.displayName;
|
|
232
|
+
conversationStateDirForSnapshot = conversationStateDir;
|
|
117
233
|
// Validate adapter supports PTY mode
|
|
118
234
|
if (!adapter.buildPtyCommand) {
|
|
119
235
|
throw new Error(`Agent ${adapter.id} does not support PTY mode.`);
|
|
120
236
|
}
|
|
121
237
|
// Write system prompt to file for shell-injection-safe PTY command
|
|
122
238
|
writeFileSync(resolve(orientationDir, 'system-prompt.txt'), systemPrompt);
|
|
239
|
+
// Write the effective system prompt to the session directory for debugging
|
|
240
|
+
writeFileSync(resolve(sessionDir, 'system-prompt.txt'), systemPrompt);
|
|
123
241
|
// Determine PTY connection target
|
|
124
242
|
const ptySockPath = useTcp ? undefined : `/run/ironcurtain/${PTY_SOCK_NAME}`;
|
|
125
243
|
const ptyPort = useTcp ? DEFAULT_PTY_PORT : undefined;
|
|
126
244
|
// Build the PTY command
|
|
127
245
|
const ptyCommand = adapter.buildPtyCommand(systemPrompt, ptySockPath, ptyPort);
|
|
128
246
|
// Build container configuration
|
|
129
|
-
const shortId =
|
|
247
|
+
const shortId = effectiveSessionId.substring(0, 12);
|
|
130
248
|
const { INTERNAL_NETWORK_NAME, INTERNAL_NETWORK_SUBNET, INTERNAL_NETWORK_GATEWAY } = await import('./platform.js');
|
|
131
249
|
const { quote } = await import('shell-quote');
|
|
132
250
|
let env;
|
|
@@ -209,6 +327,14 @@ export async function runPtySession(options) {
|
|
|
209
327
|
{ source: orientationDir, target: '/etc/ironcurtain', readonly: true },
|
|
210
328
|
];
|
|
211
329
|
}
|
|
330
|
+
// Mount conversation state directory if the adapter supports resume
|
|
331
|
+
if (conversationStateDir && conversationStateConfig) {
|
|
332
|
+
mounts.push({
|
|
333
|
+
source: conversationStateDir,
|
|
334
|
+
target: conversationStateConfig.containerMountPath,
|
|
335
|
+
readonly: false,
|
|
336
|
+
});
|
|
337
|
+
}
|
|
212
338
|
// Pass initial terminal size so start-claude.sh can set PTY dimensions
|
|
213
339
|
// before Claude starts, eliminating the resize race condition.
|
|
214
340
|
const { columns, rows } = process.stdout;
|
|
@@ -216,6 +342,17 @@ export async function runPtySession(options) {
|
|
|
216
342
|
env.IRONCURTAIN_INITIAL_COLS = String(columns);
|
|
217
343
|
if (rows)
|
|
218
344
|
env.IRONCURTAIN_INITIAL_ROWS = String(rows);
|
|
345
|
+
// Pass resume flags when resuming a session.
|
|
346
|
+
// Validate each flag to prevent shell injection via adapter misconfiguration.
|
|
347
|
+
if (isResume && conversationStateConfig && conversationStateConfig.resumeFlags.length > 0) {
|
|
348
|
+
const SAFE_FLAG = /^--[a-z0-9-]+$/;
|
|
349
|
+
for (const flag of conversationStateConfig.resumeFlags) {
|
|
350
|
+
if (!SAFE_FLAG.test(flag)) {
|
|
351
|
+
throw new Error(`Invalid resume flag: ${flag}`);
|
|
352
|
+
}
|
|
353
|
+
}
|
|
354
|
+
env.IRONCURTAIN_RESUME_FLAGS = conversationStateConfig.resumeFlags.join(' ');
|
|
355
|
+
}
|
|
219
356
|
// Create and start container with PTY command and TTY
|
|
220
357
|
containerId = await docker.create({
|
|
221
358
|
image,
|
|
@@ -224,7 +361,7 @@ export async function runPtySession(options) {
|
|
|
224
361
|
mounts,
|
|
225
362
|
env,
|
|
226
363
|
command: ptyCommand,
|
|
227
|
-
sessionLabel:
|
|
364
|
+
sessionLabel: effectiveSessionId,
|
|
228
365
|
resources: { memoryMb: 4096, cpus: 2 },
|
|
229
366
|
extraHosts,
|
|
230
367
|
tty: true,
|
|
@@ -232,7 +369,7 @@ export async function runPtySession(options) {
|
|
|
232
369
|
await docker.start(containerId);
|
|
233
370
|
logger.info(`PTY container started: ${containerId.substring(0, 12)}`);
|
|
234
371
|
// Write session registration for the escalation listener
|
|
235
|
-
registrationPath = writeRegistration(
|
|
372
|
+
registrationPath = writeRegistration(effectiveSessionId, escalationDir, adapter.displayName);
|
|
236
373
|
// Start escalation file watcher (emits BEL to alert user)
|
|
237
374
|
escalationFileWatcher = createEscalationWatcher(escalationDir, {
|
|
238
375
|
onEscalation: () => {
|
|
@@ -268,6 +405,8 @@ export async function runPtySession(options) {
|
|
|
268
405
|
containerId,
|
|
269
406
|
signal: shutdownController.signal,
|
|
270
407
|
});
|
|
408
|
+
ptyExitCode = exitCode;
|
|
409
|
+
userExited = exitCode === 0;
|
|
271
410
|
logger.info(`PTY attach returned with exit code ${exitCode}`);
|
|
272
411
|
// PTY disconnected -- restore terminal and show shutdown progress
|
|
273
412
|
restoreTerminal();
|
|
@@ -318,7 +457,29 @@ export async function runPtySession(options) {
|
|
|
318
457
|
// Stop proxies
|
|
319
458
|
await mitmProxy?.stop().catch(() => { });
|
|
320
459
|
await proxy?.stop().catch(() => { });
|
|
321
|
-
|
|
460
|
+
// Write session snapshot for resume support
|
|
461
|
+
if (adapterIdForSnapshot) {
|
|
462
|
+
try {
|
|
463
|
+
const status = userExited ? 'user-exit' : classifyExitStatus(ptyExitCode);
|
|
464
|
+
const canResume = !!conversationStateDirForSnapshot && hasConversationState(conversationStateDirForSnapshot);
|
|
465
|
+
const snapshot = {
|
|
466
|
+
sessionId: effectiveSessionId,
|
|
467
|
+
status,
|
|
468
|
+
exitCode: ptyExitCode,
|
|
469
|
+
lastActivity: new Date().toISOString(),
|
|
470
|
+
workspacePath: sandboxDir,
|
|
471
|
+
agent: adapterIdForSnapshot,
|
|
472
|
+
label: `${adapterDisplayNameForSnapshot ?? adapterIdForSnapshot} (interactive)`,
|
|
473
|
+
resumable: canResume,
|
|
474
|
+
};
|
|
475
|
+
writeSessionSnapshot(sessionDir, snapshot);
|
|
476
|
+
logger.info(`Session snapshot written (status: ${status}, resumable: ${canResume})`);
|
|
477
|
+
}
|
|
478
|
+
catch (snapshotErr) {
|
|
479
|
+
logger.warn(`Failed to write session snapshot: ${snapshotErr instanceof Error ? snapshotErr.message : String(snapshotErr)}`);
|
|
480
|
+
}
|
|
481
|
+
}
|
|
482
|
+
logger.info(`PTY session ${effectiveSessionId} ended`);
|
|
322
483
|
logger.teardown();
|
|
323
484
|
// shutdownSpinner is declared inside try but accessible here via closure
|
|
324
485
|
shutdownSpinner?.succeed(chalk.dim('PTY session ended'));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/docker/pty-session.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pty-session.js","sourceRoot":"","sources":["../../src/docker/pty-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,30 @@ export interface PtySessionRegistration {
|
|
|
14
14
|
/** PID of the ironcurtain process managing this session. */
|
|
15
15
|
readonly pid: number;
|
|
16
16
|
}
|
|
17
|
+
/**
|
|
18
|
+
* Snapshot of a PTY session's state, written to session-state.json when a
|
|
19
|
+
* session ends. Contains enough metadata for resume decisions.
|
|
20
|
+
*/
|
|
21
|
+
export interface SessionSnapshot {
|
|
22
|
+
/** Unique session identifier. */
|
|
23
|
+
readonly sessionId: string;
|
|
24
|
+
/** How the session ended. */
|
|
25
|
+
readonly status: 'completed' | 'crashed' | 'auth-failure' | 'user-exit';
|
|
26
|
+
/** Container exit code, or null if unavailable. */
|
|
27
|
+
readonly exitCode: number | null;
|
|
28
|
+
/** ISO 8601 timestamp of last activity. */
|
|
29
|
+
readonly lastActivity: string;
|
|
30
|
+
/** Host-side workspace path. */
|
|
31
|
+
readonly workspacePath: string;
|
|
32
|
+
/** Agent adapter ID (e.g., 'claude-code', 'goose'). */
|
|
33
|
+
readonly agent: string;
|
|
34
|
+
/** Human-readable session label. */
|
|
35
|
+
readonly label: string;
|
|
36
|
+
/** True if the agent supports resume AND conversation state exists. */
|
|
37
|
+
readonly resumable: boolean;
|
|
38
|
+
}
|
|
39
|
+
/** Well-known filename for session state snapshots. */
|
|
40
|
+
export declare const SESSION_STATE_FILENAME = "session-state.json";
|
|
17
41
|
/** Well-known directory for PTY session registration files. */
|
|
18
42
|
export declare const PTY_REGISTRY_DIR_NAME = "pty-registry";
|
|
19
43
|
/** Lock file name for single-instance enforcement. */
|
package/dist/docker/pty-types.js
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Types for PTY session management and the escalation listener.
|
|
3
3
|
*/
|
|
4
|
+
/** Well-known filename for session state snapshots. */
|
|
5
|
+
export const SESSION_STATE_FILENAME = 'session-state.json';
|
|
4
6
|
/** Well-known directory for PTY session registration files. */
|
|
5
7
|
export const PTY_REGISTRY_DIR_NAME = 'pty-registry';
|
|
6
8
|
/** Lock file name for single-instance enforcement. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pty-types.js","sourceRoot":"","sources":["../../src/docker/pty-types.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"pty-types.js","sourceRoot":"","sources":["../../src/docker/pty-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAuCH,uDAAuD;AACvD,MAAM,CAAC,MAAM,sBAAsB,GAAG,oBAAoB,CAAC;AAE3D,+DAA+D;AAC/D,MAAM,CAAC,MAAM,qBAAqB,GAAG,cAAc,CAAC;AAEpD,sDAAsD;AACtD,MAAM,CAAC,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAE7D,4CAA4C;AAC5C,MAAM,CAAC,MAAM,aAAa,GAAG,UAAU,CAAC;AAExC,mEAAmE;AACnE,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,CAAC"}
|