@provos/ironcurtain 0.7.2 → 0.9.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/auth/auth-command.d.ts +15 -0
- package/dist/auth/auth-command.js +424 -0
- package/dist/auth/auth-command.js.map +1 -0
- package/dist/auth/oauth-flow.d.ts +46 -0
- package/dist/auth/oauth-flow.js +279 -0
- package/dist/auth/oauth-flow.js.map +1 -0
- package/dist/auth/oauth-provider.d.ts +55 -0
- package/dist/auth/oauth-provider.js +73 -0
- package/dist/auth/oauth-provider.js.map +1 -0
- package/dist/auth/oauth-registry.d.ts +34 -0
- package/dist/auth/oauth-registry.js +69 -0
- package/dist/auth/oauth-registry.js.map +1 -0
- package/dist/auth/oauth-token-provider.d.ts +52 -0
- package/dist/auth/oauth-token-provider.js +159 -0
- package/dist/auth/oauth-token-provider.js.map +1 -0
- package/dist/auth/oauth-token-store.d.ts +30 -0
- package/dist/auth/oauth-token-store.js +93 -0
- package/dist/auth/oauth-token-store.js.map +1 -0
- package/dist/auth/providers/google-scopes.d.ts +35 -0
- package/dist/auth/providers/google-scopes.js +183 -0
- package/dist/auth/providers/google-scopes.js.map +1 -0
- package/dist/auth/providers/google.d.ts +2 -0
- package/dist/auth/providers/google.js +28 -0
- package/dist/auth/providers/google.js.map +1 -0
- package/dist/cli.js +6 -0
- package/dist/cli.js.map +1 -1
- package/dist/config/config-command.js +39 -1
- package/dist/config/config-command.js.map +1 -1
- package/dist/config/constitution-readonly.md +14 -11
- package/dist/config/constitution-user-base.md +15 -0
- package/dist/config/first-start.js +4 -1
- package/dist/config/first-start.js.map +1 -1
- package/dist/config/generated/test-scenarios.json +1 -1
- package/dist/config/generated/tool-annotations.json +10617 -296
- package/dist/config/generated-readonly/compiled-policy.json +787 -244
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.js +8 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +31 -2
- package/dist/config/paths.d.ts +20 -0
- package/dist/config/paths.js +43 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/user-config.d.ts +29 -0
- package/dist/config/user-config.js +30 -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/cron/headless-transport.d.ts +4 -0
- package/dist/cron/headless-transport.js +1 -1
- package/dist/cron/headless-transport.js.map +1 -1
- package/dist/daemon/ironcurtain-daemon.js +7 -1
- 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.d.ts +3 -1
- package/dist/docker/docker-agent-session.js +51 -28
- 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 +105 -9
- package/dist/docker/docker-infrastructure.js.map +1 -1
- package/dist/docker/docker-manager.d.ts +2 -0
- package/dist/docker/docker-manager.js +9 -1
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/mitm-proxy.d.ts +65 -0
- package/dist/docker/mitm-proxy.js +288 -31
- 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/platform.d.ts +6 -6
- package/dist/docker/platform.js +8 -6
- package/dist/docker/platform.js.map +1 -1
- package/dist/docker/proxy-tools.d.ts +80 -0
- package/dist/docker/proxy-tools.js +248 -0
- package/dist/docker/proxy-tools.js.map +1 -0
- package/dist/docker/pty-session.d.ts +15 -0
- package/dist/docker/pty-session.js +253 -73
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +28 -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/escalation/escalation-watcher.d.ts +3 -1
- package/dist/escalation/escalation-watcher.js +6 -2
- package/dist/escalation/escalation-watcher.js.map +1 -1
- package/dist/escalation/listener-command.js +24 -10
- package/dist/escalation/listener-command.js.map +1 -1
- package/dist/escalation/listener-lock.d.ts +5 -0
- package/dist/escalation/listener-lock.js +14 -0
- package/dist/escalation/listener-lock.js.map +1 -1
- package/dist/index.js +16 -3
- package/dist/index.js.map +1 -1
- package/dist/memory/auto-save.d.ts +25 -0
- package/dist/memory/auto-save.js +89 -0
- package/dist/memory/auto-save.js.map +1 -0
- 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.d.ts +4 -0
- package/dist/mux/mux-app.js +246 -28
- package/dist/mux/mux-app.js.map +1 -1
- package/dist/mux/mux-command.d.ts +2 -2
- package/dist/mux/mux-command.js +14 -22
- package/dist/mux/mux-command.js.map +1 -1
- package/dist/mux/mux-escalation-manager.d.ts +9 -3
- package/dist/mux/mux-escalation-manager.js +69 -19
- package/dist/mux/mux-escalation-manager.js.map +1 -1
- package/dist/mux/mux-input-handler.d.ts +59 -3
- package/dist/mux/mux-input-handler.js +270 -32
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/mux/mux-renderer.d.ts +19 -1
- package/dist/mux/mux-renderer.js +466 -11
- 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 +8 -0
- package/dist/mux/pty-bridge.js +19 -1
- 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 +36 -1
- package/dist/mux/types.js +14 -1
- package/dist/mux/types.js.map +1 -1
- package/dist/persona/persona-command.js +130 -93
- 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/pipeline/annotate.js +1 -7
- package/dist/pipeline/annotate.js.map +1 -1
- package/dist/pipeline/compile.d.ts +5 -2
- package/dist/pipeline/compile.js +23 -11
- package/dist/pipeline/compile.js.map +1 -1
- package/dist/pipeline/constitution-compiler.d.ts +302 -3
- package/dist/pipeline/constitution-compiler.js +285 -23
- package/dist/pipeline/constitution-compiler.js.map +1 -1
- package/dist/pipeline/generate-with-repair.d.ts +2 -2
- package/dist/pipeline/generate-with-repair.js +2 -2
- package/dist/pipeline/handwritten-scenarios.d.ts +20 -7
- package/dist/pipeline/handwritten-scenarios.js +20 -41
- package/dist/pipeline/handwritten-scenarios.js.map +1 -1
- package/dist/pipeline/list-resolver.d.ts +18 -20
- package/dist/pipeline/list-resolver.js +28 -36
- package/dist/pipeline/list-resolver.js.map +1 -1
- package/dist/pipeline/pipeline-runner.d.ts +102 -13
- package/dist/pipeline/pipeline-runner.js +497 -237
- package/dist/pipeline/pipeline-runner.js.map +1 -1
- package/dist/pipeline/pipeline-shared.d.ts +7 -9
- package/dist/pipeline/pipeline-shared.js +8 -18
- package/dist/pipeline/pipeline-shared.js.map +1 -1
- package/dist/pipeline/policy-verifier.d.ts +32 -5
- package/dist/pipeline/policy-verifier.js +137 -8
- package/dist/pipeline/policy-verifier.js.map +1 -1
- package/dist/pipeline/proxy-mcp-connections.d.ts +25 -0
- package/dist/pipeline/proxy-mcp-connections.js +121 -0
- package/dist/pipeline/proxy-mcp-connections.js.map +1 -0
- package/dist/pipeline/refresh-lists.js +21 -13
- package/dist/pipeline/refresh-lists.js.map +1 -1
- package/dist/pipeline/scenario-generator.d.ts +29 -49
- package/dist/pipeline/scenario-generator.js +180 -143
- package/dist/pipeline/scenario-generator.js.map +1 -1
- package/dist/pipeline/scenario-schema-validator.d.ts +51 -0
- package/dist/pipeline/scenario-schema-validator.js +132 -0
- package/dist/pipeline/scenario-schema-validator.js.map +1 -0
- package/dist/pipeline/tool-annotator.d.ts +9 -8
- package/dist/pipeline/tool-annotator.js +48 -95
- package/dist/pipeline/tool-annotator.js.map +1 -1
- package/dist/pipeline/types.d.ts +31 -24
- package/dist/sandbox/index.d.ts +26 -10
- package/dist/sandbox/index.js +151 -40
- package/dist/sandbox/index.js.map +1 -1
- package/dist/servers/fetch-server.js +10 -5
- package/dist/servers/fetch-server.js.map +1 -1
- package/dist/session/agent-session.d.ts +8 -20
- package/dist/session/agent-session.js +22 -70
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/base-transport.d.ts +17 -1
- package/dist/session/base-transport.js +25 -1
- package/dist/session/base-transport.js.map +1 -1
- package/dist/session/cli-transport.d.ts +5 -0
- package/dist/session/cli-transport.js +48 -25
- package/dist/session/cli-transport.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 -9
- package/dist/session/prompts.js.map +1 -1
- package/dist/session/session-manager.d.ts +6 -0
- package/dist/session/session-manager.js +12 -0
- package/dist/session/session-manager.js.map +1 -1
- package/dist/session/types.d.ts +11 -1
- package/dist/session/types.js.map +1 -1
- package/dist/session/workspace-validation.js +37 -6
- package/dist/session/workspace-validation.js.map +1 -1
- package/dist/signal/signal-bot-daemon.js +24 -8
- package/dist/signal/signal-bot-daemon.js.map +1 -1
- package/dist/signal/signal-transport.d.ts +5 -2
- package/dist/signal/signal-transport.js +3 -3
- package/dist/signal/signal-transport.js.map +1 -1
- package/dist/trusted-process/approval-whitelist.d.ts +117 -0
- package/dist/trusted-process/approval-whitelist.js +237 -0
- package/dist/trusted-process/approval-whitelist.js.map +1 -0
- package/dist/trusted-process/gworkspace-credentials.d.ts +40 -0
- package/dist/trusted-process/gworkspace-credentials.js +45 -0
- package/dist/trusted-process/gworkspace-credentials.js.map +1 -0
- package/dist/trusted-process/index.d.ts +11 -1
- package/dist/trusted-process/index.js +83 -53
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +23 -0
- package/dist/trusted-process/mcp-proxy-server.js +409 -94
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +12 -3
- package/dist/trusted-process/policy-engine.js +33 -23
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/policy-types.d.ts +17 -0
- package/dist/trusted-process/sandbox-integration.d.ts +23 -0
- package/dist/trusted-process/sandbox-integration.js +115 -3
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/trusted-process/token-file-refresher.d.ts +69 -0
- package/dist/trusted-process/token-file-refresher.js +120 -0
- package/dist/trusted-process/token-file-refresher.js.map +1 -0
- package/dist/types/argument-roles.d.ts +7 -1
- package/dist/types/argument-roles.js +50 -0
- package/dist/types/argument-roles.js.map +1 -1
- package/dist/types/audit.d.ts +11 -0
- package/docker/Dockerfile.base +22 -0
- package/docker/Dockerfile.base.arm64 +44 -4
- package/docker/Dockerfile.claude-code +2 -2
- package/docker/entrypoint-claude-code.sh +24 -6
- package/package.json +8 -2
- package/src/config/constitution-user-base.md +15 -0
- package/src/config/generated/test-scenarios.json +1 -1
- package/src/config/generated/tool-annotations.json +10617 -296
- package/src/config/mcp-servers.json +31 -2
- package/dist/pipeline/mcp-connections.d.ts +0 -16
- package/dist/pipeline/mcp-connections.js +0 -61
- package/dist/pipeline/mcp-connections.js.map +0 -1
|
@@ -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,148 @@
|
|
|
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';
|
|
31
|
+
import { getInternalNetworkName } from './platform.js';
|
|
28
32
|
/** Maximum time to wait for the PTY socket to appear (ms). */
|
|
29
33
|
const PTY_READINESS_TIMEOUT_MS = 30_000;
|
|
30
34
|
/** Poll interval when waiting for PTY socket (ms). */
|
|
31
35
|
const PTY_READINESS_POLL_MS = 200;
|
|
36
|
+
/**
|
|
37
|
+
* Validates a session for resume and returns the loaded snapshot.
|
|
38
|
+
* Throws descriptive errors for invalid resume attempts.
|
|
39
|
+
*/
|
|
40
|
+
export function validateResumeSession(resumeSessionId, protectedPaths = []) {
|
|
41
|
+
const sessionDir = getSessionDir(resumeSessionId);
|
|
42
|
+
if (!existsSync(sessionDir)) {
|
|
43
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session directory not found`);
|
|
44
|
+
}
|
|
45
|
+
const snapshotPath = resolve(sessionDir, SESSION_STATE_FILENAME);
|
|
46
|
+
if (!existsSync(snapshotPath)) {
|
|
47
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": no session state snapshot found`);
|
|
48
|
+
}
|
|
49
|
+
let snapshot;
|
|
50
|
+
try {
|
|
51
|
+
snapshot = JSON.parse(readFileSync(snapshotPath, 'utf-8'));
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session state snapshot is corrupted or invalid`);
|
|
55
|
+
}
|
|
56
|
+
if (!snapshot.sessionId || snapshot.sessionId !== resumeSessionId) {
|
|
57
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": snapshot sessionId mismatch`);
|
|
58
|
+
}
|
|
59
|
+
if (!snapshot.resumable) {
|
|
60
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": session is not resumable (status: ${snapshot.status})`);
|
|
61
|
+
}
|
|
62
|
+
if (!snapshot.agent) {
|
|
63
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": agent configuration is missing`);
|
|
64
|
+
}
|
|
65
|
+
// Validate workspace path using the same checks as --workspace to prevent
|
|
66
|
+
// a tampered snapshot from expanding the sandbox to a sensitive directory.
|
|
67
|
+
if (!snapshot.workspacePath || typeof snapshot.workspacePath !== 'string') {
|
|
68
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": workspace path is missing or invalid`);
|
|
69
|
+
}
|
|
70
|
+
try {
|
|
71
|
+
validateWorkspacePath(snapshot.workspacePath, protectedPaths);
|
|
72
|
+
}
|
|
73
|
+
catch (err) {
|
|
74
|
+
const detail = err instanceof Error ? err.message : String(err);
|
|
75
|
+
throw new Error(`Cannot resume session "${resumeSessionId}": workspace path is unsafe: ${detail}`, {
|
|
76
|
+
cause: err,
|
|
77
|
+
});
|
|
78
|
+
}
|
|
79
|
+
return snapshot;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Loads a session snapshot from disk.
|
|
83
|
+
* Returns undefined if the snapshot file does not exist or is invalid.
|
|
84
|
+
*/
|
|
85
|
+
export function loadSessionSnapshot(sessionId) {
|
|
86
|
+
const snapshotPath = resolve(getSessionDir(sessionId), SESSION_STATE_FILENAME);
|
|
87
|
+
if (!existsSync(snapshotPath))
|
|
88
|
+
return undefined;
|
|
89
|
+
try {
|
|
90
|
+
return JSON.parse(readFileSync(snapshotPath, 'utf-8'));
|
|
91
|
+
}
|
|
92
|
+
catch {
|
|
93
|
+
return undefined;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Classifies the PTY session exit reason from the container exit code.
|
|
98
|
+
*/
|
|
99
|
+
function classifyExitStatus(exitCode) {
|
|
100
|
+
if (exitCode === null)
|
|
101
|
+
return 'crashed';
|
|
102
|
+
if (exitCode === 0)
|
|
103
|
+
return 'completed';
|
|
104
|
+
// Exit code 2 is commonly used by agents for auth failures
|
|
105
|
+
if (exitCode === 2)
|
|
106
|
+
return 'auth-failure';
|
|
107
|
+
return 'crashed';
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Checks whether a conversation state directory contains files,
|
|
111
|
+
* indicating the agent wrote conversation data that can be resumed.
|
|
112
|
+
*/
|
|
113
|
+
function hasConversationState(stateDir) {
|
|
114
|
+
if (!existsSync(stateDir))
|
|
115
|
+
return false;
|
|
116
|
+
try {
|
|
117
|
+
const entries = readdirSync(stateDir);
|
|
118
|
+
return entries.length > 0;
|
|
119
|
+
}
|
|
120
|
+
catch {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Writes a session state snapshot to the session directory.
|
|
126
|
+
*/
|
|
127
|
+
function writeSessionSnapshot(sessionDir, snapshot) {
|
|
128
|
+
atomicWriteJsonSync(resolve(sessionDir, SESSION_STATE_FILENAME), snapshot);
|
|
129
|
+
}
|
|
32
130
|
/**
|
|
33
131
|
* Runs a PTY session: starts proxies, launches container with PTY-enabled
|
|
34
132
|
* Claude Code, attaches the terminal, and blocks until the session ends.
|
|
35
133
|
*/
|
|
36
134
|
export async function runPtySession(options) {
|
|
37
135
|
const { prepareDockerInfrastructure } = await import('./docker-infrastructure.js');
|
|
136
|
+
// When resuming, validate the snapshot and reuse the existing session directory
|
|
137
|
+
const resumeSnapshot = options.resumeSessionId
|
|
138
|
+
? validateResumeSession(options.resumeSessionId, options.config.protectedPaths)
|
|
139
|
+
: undefined;
|
|
140
|
+
const isResume = !!resumeSnapshot;
|
|
141
|
+
// Use the original session ID when resuming, otherwise create a new one
|
|
38
142
|
const sessionId = createSessionId();
|
|
39
|
-
const
|
|
40
|
-
const
|
|
41
|
-
|
|
42
|
-
|
|
143
|
+
const effectiveSessionId = options.resumeSessionId ?? sessionId;
|
|
144
|
+
const sessionDir = getSessionDir(effectiveSessionId);
|
|
145
|
+
// Delegate to shared buildSessionConfig() so PTY sessions get the same
|
|
146
|
+
// config patching as standard Docker sessions (persona, memory MCP server
|
|
147
|
+
// injection, server allowlist, policy dir, etc.).
|
|
148
|
+
const dirConfig = buildSessionConfig(options.config, effectiveSessionId, sessionId, {
|
|
149
|
+
resumeSessionId: options.resumeSessionId,
|
|
150
|
+
workspacePath: isResume ? resumeSnapshot.workspacePath : options.workspacePath,
|
|
151
|
+
persona: options.persona,
|
|
152
|
+
});
|
|
153
|
+
// Layer PTY-specific fields on top of the shared config.
|
|
154
|
+
const sessionConfig = { ...dirConfig.config, isPtySession: true };
|
|
155
|
+
const { sandboxDir, escalationDir, auditLogPath, systemPromptAugmentation } = dirConfig;
|
|
43
156
|
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
157
|
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);
|
|
158
|
+
logger.info(`PTY session ${effectiveSessionId} ${isResume ? 'resuming' : 'starting'}`);
|
|
75
159
|
const initSpinner = ora({
|
|
76
160
|
text: `Initializing PTY session (${options.mode.agent})...`,
|
|
77
161
|
stream: process.stderr,
|
|
@@ -105,30 +189,66 @@ export async function runPtySession(options) {
|
|
|
105
189
|
};
|
|
106
190
|
process.on('SIGTERM', handleShutdownSignal);
|
|
107
191
|
process.on('SIGHUP', handleShutdownSignal);
|
|
108
|
-
// Infra variables set inside try, used in finally for cleanup
|
|
192
|
+
// Infra variables set inside try, used in finally for cleanup and snapshot
|
|
109
193
|
let proxy = null;
|
|
110
194
|
let mitmProxy = null;
|
|
111
195
|
let docker = null;
|
|
112
|
-
let useTcp
|
|
196
|
+
let useTcp;
|
|
197
|
+
let networkName = null;
|
|
198
|
+
let ptyExitCode = null;
|
|
199
|
+
let adapterIdForSnapshot = null;
|
|
200
|
+
let adapterDisplayNameForSnapshot = null;
|
|
201
|
+
let conversationStateDirForSnapshot;
|
|
202
|
+
let userExited = false;
|
|
203
|
+
const claudeMdContent = buildDockerClaudeMd({
|
|
204
|
+
personaName: options.persona,
|
|
205
|
+
memoryEnabled: options.config.userConfig.memory.enabled,
|
|
206
|
+
});
|
|
113
207
|
try {
|
|
114
|
-
const infra = await prepareDockerInfrastructure(sessionConfig, options.mode, sessionDir, sandboxDir, escalationDir, auditLogPath,
|
|
208
|
+
const infra = await prepareDockerInfrastructure(sessionConfig, options.mode, sessionDir, sandboxDir, escalationDir, auditLogPath, effectiveSessionId);
|
|
115
209
|
({ docker, proxy, mitmProxy, useTcp } = infra);
|
|
116
|
-
const { adapter, fakeKeys, orientationDir, systemPrompt, image, mitmAddr } = infra;
|
|
210
|
+
const { adapter, fakeKeys, orientationDir, systemPrompt: baseSystemPrompt, image, mitmAddr, conversationStateDir, conversationStateConfig, } = infra;
|
|
211
|
+
// Write CLAUDE.md into conversation state dir (unconditionally, even on
|
|
212
|
+
// resume, since persona/memory config may change between sessions).
|
|
213
|
+
// Clean up stale CLAUDE.md when memory is disabled to avoid leftover rules.
|
|
214
|
+
if (conversationStateDir) {
|
|
215
|
+
const claudeMdPath = resolve(conversationStateDir, 'CLAUDE.md');
|
|
216
|
+
if (claudeMdContent) {
|
|
217
|
+
writeFileSync(claudeMdPath, claudeMdContent);
|
|
218
|
+
}
|
|
219
|
+
else {
|
|
220
|
+
try {
|
|
221
|
+
unlinkSync(claudeMdPath);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
/* not present */
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
// Compose final system prompt with persona/memory augmentation
|
|
229
|
+
const systemPrompt = systemPromptAugmentation
|
|
230
|
+
? `${baseSystemPrompt}\n\n${systemPromptAugmentation}`
|
|
231
|
+
: baseSystemPrompt;
|
|
232
|
+
adapterIdForSnapshot = adapter.id;
|
|
233
|
+
adapterDisplayNameForSnapshot = adapter.displayName;
|
|
234
|
+
conversationStateDirForSnapshot = conversationStateDir;
|
|
117
235
|
// Validate adapter supports PTY mode
|
|
118
236
|
if (!adapter.buildPtyCommand) {
|
|
119
237
|
throw new Error(`Agent ${adapter.id} does not support PTY mode.`);
|
|
120
238
|
}
|
|
121
239
|
// Write system prompt to file for shell-injection-safe PTY command
|
|
122
240
|
writeFileSync(resolve(orientationDir, 'system-prompt.txt'), systemPrompt);
|
|
241
|
+
// Write the effective system prompt to the session directory for debugging
|
|
242
|
+
writeFileSync(resolve(sessionDir, 'system-prompt.txt'), systemPrompt);
|
|
123
243
|
// Determine PTY connection target
|
|
124
244
|
const ptySockPath = useTcp ? undefined : `/run/ironcurtain/${PTY_SOCK_NAME}`;
|
|
125
245
|
const ptyPort = useTcp ? DEFAULT_PTY_PORT : undefined;
|
|
126
246
|
// Build the PTY command
|
|
127
247
|
const ptyCommand = adapter.buildPtyCommand(systemPrompt, ptySockPath, ptyPort);
|
|
128
248
|
// Build container configuration
|
|
129
|
-
const shortId =
|
|
130
|
-
const { INTERNAL_NETWORK_NAME, INTERNAL_NETWORK_SUBNET, INTERNAL_NETWORK_GATEWAY } = await import('./platform.js');
|
|
249
|
+
const shortId = effectiveSessionId.substring(0, 12);
|
|
131
250
|
const { quote } = await import('shell-quote');
|
|
251
|
+
const internalNetworkName = getInternalNetworkName(shortId);
|
|
132
252
|
let env;
|
|
133
253
|
let network;
|
|
134
254
|
let mounts;
|
|
@@ -144,12 +264,11 @@ export async function runPtySession(options) {
|
|
|
144
264
|
HTTPS_PROXY: `http://host.docker.internal:${mitmPort}`,
|
|
145
265
|
HTTP_PROXY: `http://host.docker.internal:${mitmPort}`,
|
|
146
266
|
};
|
|
147
|
-
await docker.createNetwork(
|
|
267
|
+
await docker.createNetwork(internalNetworkName, {
|
|
148
268
|
internal: true,
|
|
149
|
-
subnet: INTERNAL_NETWORK_SUBNET,
|
|
150
|
-
gateway: INTERNAL_NETWORK_GATEWAY,
|
|
151
269
|
});
|
|
152
|
-
network =
|
|
270
|
+
network = internalNetworkName;
|
|
271
|
+
networkName = internalNetworkName;
|
|
153
272
|
const socatImage = 'alpine/socat';
|
|
154
273
|
if (!(await docker.imageExists(socatImage))) {
|
|
155
274
|
logger.info(`Pulling ${socatImage}...`);
|
|
@@ -187,8 +306,8 @@ export async function runPtySession(options) {
|
|
|
187
306
|
],
|
|
188
307
|
});
|
|
189
308
|
await docker.start(sidecarContainerId);
|
|
190
|
-
await docker.connectNetwork(
|
|
191
|
-
const sidecarIp = await docker.getContainerIp(sidecarContainerId,
|
|
309
|
+
await docker.connectNetwork(internalNetworkName, sidecarContainerId);
|
|
310
|
+
const sidecarIp = await docker.getContainerIp(sidecarContainerId, internalNetworkName);
|
|
192
311
|
extraHosts = [`host.docker.internal:${sidecarIp}`];
|
|
193
312
|
mounts = [
|
|
194
313
|
{ source: sandboxDir, target: CONTAINER_WORKSPACE_DIR, readonly: false },
|
|
@@ -202,13 +321,21 @@ export async function runPtySession(options) {
|
|
|
202
321
|
HTTPS_PROXY: 'http://127.0.0.1:18080',
|
|
203
322
|
HTTP_PROXY: 'http://127.0.0.1:18080',
|
|
204
323
|
};
|
|
205
|
-
network =
|
|
324
|
+
network = null;
|
|
206
325
|
mounts = [
|
|
207
326
|
{ source: sandboxDir, target: CONTAINER_WORKSPACE_DIR, readonly: false },
|
|
208
327
|
{ source: socketsDir, target: '/run/ironcurtain', readonly: false },
|
|
209
328
|
{ source: orientationDir, target: '/etc/ironcurtain', readonly: true },
|
|
210
329
|
];
|
|
211
330
|
}
|
|
331
|
+
// Mount conversation state directory if the adapter supports resume
|
|
332
|
+
if (conversationStateDir && conversationStateConfig) {
|
|
333
|
+
mounts.push({
|
|
334
|
+
source: conversationStateDir,
|
|
335
|
+
target: conversationStateConfig.containerMountPath,
|
|
336
|
+
readonly: false,
|
|
337
|
+
});
|
|
338
|
+
}
|
|
212
339
|
// Pass initial terminal size so start-claude.sh can set PTY dimensions
|
|
213
340
|
// before Claude starts, eliminating the resize race condition.
|
|
214
341
|
const { columns, rows } = process.stdout;
|
|
@@ -216,23 +343,34 @@ export async function runPtySession(options) {
|
|
|
216
343
|
env.IRONCURTAIN_INITIAL_COLS = String(columns);
|
|
217
344
|
if (rows)
|
|
218
345
|
env.IRONCURTAIN_INITIAL_ROWS = String(rows);
|
|
346
|
+
// Pass resume flags when resuming a session.
|
|
347
|
+
// Validate each flag to prevent shell injection via adapter misconfiguration.
|
|
348
|
+
if (isResume && conversationStateConfig && conversationStateConfig.resumeFlags.length > 0) {
|
|
349
|
+
const SAFE_FLAG = /^--[a-z0-9-]+$/;
|
|
350
|
+
for (const flag of conversationStateConfig.resumeFlags) {
|
|
351
|
+
if (!SAFE_FLAG.test(flag)) {
|
|
352
|
+
throw new Error(`Invalid resume flag: ${flag}`);
|
|
353
|
+
}
|
|
354
|
+
}
|
|
355
|
+
env.IRONCURTAIN_RESUME_FLAGS = conversationStateConfig.resumeFlags.join(' ');
|
|
356
|
+
}
|
|
219
357
|
// Create and start container with PTY command and TTY
|
|
220
358
|
containerId = await docker.create({
|
|
221
359
|
image,
|
|
222
360
|
name: mainContainerName,
|
|
223
|
-
network,
|
|
361
|
+
network: network ?? 'none',
|
|
224
362
|
mounts,
|
|
225
363
|
env,
|
|
226
364
|
command: ptyCommand,
|
|
227
|
-
sessionLabel:
|
|
228
|
-
resources: { memoryMb:
|
|
365
|
+
sessionLabel: effectiveSessionId,
|
|
366
|
+
resources: { memoryMb: 8192, cpus: 4 },
|
|
229
367
|
extraHosts,
|
|
230
368
|
tty: true,
|
|
231
369
|
});
|
|
232
370
|
await docker.start(containerId);
|
|
233
371
|
logger.info(`PTY container started: ${containerId.substring(0, 12)}`);
|
|
234
372
|
// Write session registration for the escalation listener
|
|
235
|
-
registrationPath = writeRegistration(
|
|
373
|
+
registrationPath = writeRegistration(effectiveSessionId, escalationDir, adapter.displayName);
|
|
236
374
|
// Start escalation file watcher (emits BEL to alert user)
|
|
237
375
|
escalationFileWatcher = createEscalationWatcher(escalationDir, {
|
|
238
376
|
onEscalation: () => {
|
|
@@ -268,6 +406,8 @@ export async function runPtySession(options) {
|
|
|
268
406
|
containerId,
|
|
269
407
|
signal: shutdownController.signal,
|
|
270
408
|
});
|
|
409
|
+
ptyExitCode = exitCode;
|
|
410
|
+
userExited = exitCode === 0;
|
|
271
411
|
logger.info(`PTY attach returned with exit code ${exitCode}`);
|
|
272
412
|
// PTY disconnected -- restore terminal and show shutdown progress
|
|
273
413
|
restoreTerminal();
|
|
@@ -301,24 +441,56 @@ export async function runPtySession(options) {
|
|
|
301
441
|
/* best effort */
|
|
302
442
|
}
|
|
303
443
|
}
|
|
304
|
-
// Stop and remove containers
|
|
305
|
-
if (docker
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
444
|
+
// Stop and remove containers in parallel
|
|
445
|
+
if (docker) {
|
|
446
|
+
const d = docker;
|
|
447
|
+
const cleanups = [];
|
|
448
|
+
if (containerId) {
|
|
449
|
+
const cid = containerId;
|
|
450
|
+
cleanups.push(d
|
|
451
|
+
.stop(cid)
|
|
452
|
+
.then(() => d.remove(cid))
|
|
453
|
+
.catch(() => { }));
|
|
454
|
+
}
|
|
455
|
+
if (sidecarContainerId) {
|
|
456
|
+
const sid = sidecarContainerId;
|
|
457
|
+
cleanups.push(d
|
|
458
|
+
.stop(sid)
|
|
459
|
+
.then(() => d.remove(sid))
|
|
460
|
+
.catch(() => { }));
|
|
461
|
+
}
|
|
462
|
+
await Promise.all(cleanups);
|
|
463
|
+
// Remove per-session internal network after both containers are gone
|
|
464
|
+
if (networkName !== null) {
|
|
465
|
+
await d.removeNetwork(networkName).catch(() => { });
|
|
466
|
+
}
|
|
317
467
|
}
|
|
318
468
|
// Stop proxies
|
|
319
469
|
await mitmProxy?.stop().catch(() => { });
|
|
320
470
|
await proxy?.stop().catch(() => { });
|
|
321
|
-
|
|
471
|
+
// Write session snapshot for resume support
|
|
472
|
+
if (adapterIdForSnapshot) {
|
|
473
|
+
try {
|
|
474
|
+
const status = userExited ? 'user-exit' : classifyExitStatus(ptyExitCode);
|
|
475
|
+
const canResume = !!conversationStateDirForSnapshot && hasConversationState(conversationStateDirForSnapshot);
|
|
476
|
+
const snapshot = {
|
|
477
|
+
sessionId: effectiveSessionId,
|
|
478
|
+
status,
|
|
479
|
+
exitCode: ptyExitCode,
|
|
480
|
+
lastActivity: new Date().toISOString(),
|
|
481
|
+
workspacePath: sandboxDir,
|
|
482
|
+
agent: adapterIdForSnapshot,
|
|
483
|
+
label: `${adapterDisplayNameForSnapshot ?? adapterIdForSnapshot} (interactive)`,
|
|
484
|
+
resumable: canResume,
|
|
485
|
+
};
|
|
486
|
+
writeSessionSnapshot(sessionDir, snapshot);
|
|
487
|
+
logger.info(`Session snapshot written (status: ${status}, resumable: ${canResume})`);
|
|
488
|
+
}
|
|
489
|
+
catch (snapshotErr) {
|
|
490
|
+
logger.warn(`Failed to write session snapshot: ${snapshotErr instanceof Error ? snapshotErr.message : String(snapshotErr)}`);
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
logger.info(`PTY session ${effectiveSessionId} ended`);
|
|
322
494
|
logger.teardown();
|
|
323
495
|
// shutdownSpinner is declared inside try but accessible here via closure
|
|
324
496
|
shutdownSpinner?.succeed(chalk.dim('PTY session ended'));
|
|
@@ -601,20 +773,28 @@ function findFreePort() {
|
|
|
601
773
|
srv.on('error', reject);
|
|
602
774
|
});
|
|
603
775
|
}
|
|
604
|
-
|
|
605
|
-
|
|
606
|
-
|
|
607
|
-
|
|
608
|
-
|
|
776
|
+
/** Reads mux ownership context from environment variables, if set. */
|
|
777
|
+
function getMuxContext() {
|
|
778
|
+
const muxId = process.env.IRONCURTAIN_MUX_ID;
|
|
779
|
+
const muxPidStr = process.env.IRONCURTAIN_MUX_PID;
|
|
780
|
+
if (!muxId)
|
|
781
|
+
return undefined;
|
|
782
|
+
const muxPid = muxPidStr ? parseInt(muxPidStr, 10) : undefined;
|
|
783
|
+
if (muxPid === undefined || isNaN(muxPid))
|
|
784
|
+
return undefined;
|
|
785
|
+
return { muxId, muxPid };
|
|
786
|
+
}
|
|
609
787
|
function writeRegistration(sessionId, escalationDir, adapterDisplayName) {
|
|
610
788
|
const registryDir = getPtyRegistryDir();
|
|
611
789
|
mkdirSync(registryDir, { recursive: true, mode: 0o700 });
|
|
790
|
+
const mux = getMuxContext();
|
|
612
791
|
const registration = {
|
|
613
792
|
sessionId,
|
|
614
793
|
escalationDir,
|
|
615
794
|
label: `${adapterDisplayName} (interactive)`,
|
|
616
795
|
startedAt: new Date().toISOString(),
|
|
617
796
|
pid: process.pid,
|
|
797
|
+
...(mux && { muxId: mux.muxId, muxPid: mux.muxPid }),
|
|
618
798
|
};
|
|
619
799
|
const registrationPath = resolve(registryDir, `session-${sessionId}.json`);
|
|
620
800
|
atomicWriteJsonSync(registrationPath, registration);
|
|
@@ -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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"}
|
|
@@ -13,7 +13,35 @@ export interface PtySessionRegistration {
|
|
|
13
13
|
readonly startedAt: string;
|
|
14
14
|
/** PID of the ironcurtain process managing this session. */
|
|
15
15
|
readonly pid: number;
|
|
16
|
+
/** ID of the mux instance that owns this session. Absent for standalone sessions. */
|
|
17
|
+
readonly muxId?: string;
|
|
18
|
+
/** PID of the mux process that owns this session. Used to detect orphaned sessions. */
|
|
19
|
+
readonly muxPid?: number;
|
|
16
20
|
}
|
|
21
|
+
/**
|
|
22
|
+
* Snapshot of a PTY session's state, written to session-state.json when a
|
|
23
|
+
* session ends. Contains enough metadata for resume decisions.
|
|
24
|
+
*/
|
|
25
|
+
export interface SessionSnapshot {
|
|
26
|
+
/** Unique session identifier. */
|
|
27
|
+
readonly sessionId: string;
|
|
28
|
+
/** How the session ended. */
|
|
29
|
+
readonly status: 'completed' | 'crashed' | 'auth-failure' | 'user-exit';
|
|
30
|
+
/** Container exit code, or null if unavailable. */
|
|
31
|
+
readonly exitCode: number | null;
|
|
32
|
+
/** ISO 8601 timestamp of last activity. */
|
|
33
|
+
readonly lastActivity: string;
|
|
34
|
+
/** Host-side workspace path. */
|
|
35
|
+
readonly workspacePath: string;
|
|
36
|
+
/** Agent adapter ID (e.g., 'claude-code', 'goose'). */
|
|
37
|
+
readonly agent: string;
|
|
38
|
+
/** Human-readable session label. */
|
|
39
|
+
readonly label: string;
|
|
40
|
+
/** True if the agent supports resume AND conversation state exists. */
|
|
41
|
+
readonly resumable: boolean;
|
|
42
|
+
}
|
|
43
|
+
/** Well-known filename for session state snapshots. */
|
|
44
|
+
export declare const SESSION_STATE_FILENAME = "session-state.json";
|
|
17
45
|
/** Well-known directory for PTY session registration files. */
|
|
18
46
|
export declare const PTY_REGISTRY_DIR_NAME = "pty-registry";
|
|
19
47
|
/** 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;AA2CH,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"}
|