@provos/ironcurtain 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/index.js +6 -0
- package/dist/config/index.js.map +1 -1
- package/dist/config/mcp-servers.json +3 -0
- package/dist/config/types.d.ts +2 -0
- package/dist/docker/adapters/claude-code.d.ts +4 -0
- package/dist/docker/adapters/claude-code.js +32 -29
- package/dist/docker/adapters/claude-code.js.map +1 -1
- package/dist/docker/agent-adapter.d.ts +4 -12
- package/dist/docker/code-mode-proxy.d.ts +34 -0
- package/dist/docker/code-mode-proxy.js +137 -0
- package/dist/docker/code-mode-proxy.js.map +1 -0
- package/dist/docker/docker-agent-session.d.ts +7 -6
- package/dist/docker/docker-agent-session.js +94 -40
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-manager.js +24 -0
- package/dist/docker/docker-manager.js.map +1 -1
- package/dist/docker/orientation.d.ts +3 -2
- package/dist/docker/orientation.js +3 -3
- package/dist/docker/orientation.js.map +1 -1
- package/dist/docker/types.d.ts +12 -2
- package/dist/sandbox/index.d.ts +25 -1
- package/dist/sandbox/index.js +78 -9
- package/dist/sandbox/index.js.map +1 -1
- package/dist/servers/fetch-server.d.ts +6 -1
- package/dist/servers/fetch-server.js +24 -12
- package/dist/servers/fetch-server.js.map +1 -1
- package/dist/session/agent-session.js +9 -5
- package/dist/session/agent-session.js.map +1 -1
- package/dist/session/index.js +3 -31
- package/dist/session/index.js.map +1 -1
- package/dist/session/preflight.js +6 -0
- package/dist/session/preflight.js.map +1 -1
- package/dist/session/prompts.d.ts +9 -3
- package/dist/session/prompts.js +28 -10
- package/dist/session/prompts.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +111 -1
- package/dist/trusted-process/mcp-proxy-server.js +307 -266
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +3 -1
- package/dist/trusted-process/policy-engine.js +17 -6
- package/dist/trusted-process/policy-engine.js.map +1 -1
- package/dist/trusted-process/sandbox-integration.d.ts +11 -4
- package/dist/trusted-process/sandbox-integration.js +13 -7
- package/dist/trusted-process/sandbox-integration.js.map +1 -1
- package/dist/types/argument-roles.d.ts +7 -0
- package/dist/types/argument-roles.js +12 -2
- package/dist/types/argument-roles.js.map +1 -1
- package/package.json +4 -2
- package/src/config/mcp-servers.json +3 -0
- package/dist/docker/managed-proxy.d.ts +0 -31
- package/dist/docker/managed-proxy.js +0 -265
- package/dist/docker/managed-proxy.js.map +0 -1
|
@@ -25,4 +25,114 @@
|
|
|
25
25
|
* AUTO_APPROVE_API_KEY -- (optional) API key for the auto-approve model's provider
|
|
26
26
|
* AUTO_APPROVE_LLM_LOG_PATH -- (optional) path to JSONL file for auto-approve LLM logging
|
|
27
27
|
*/
|
|
28
|
-
|
|
28
|
+
import { Client } from '@modelcontextprotocol/sdk/client/index.js';
|
|
29
|
+
import { PolicyEngine } from './policy-engine.js';
|
|
30
|
+
import { AuditLog } from './audit-log.js';
|
|
31
|
+
import { type ResolvedSandboxConfig } from './sandbox-integration.js';
|
|
32
|
+
import type { ToolCallRequest, PolicyDecision } from '../types/mcp.js';
|
|
33
|
+
import type { AuditEntry } from '../types/audit.js';
|
|
34
|
+
import { type McpRoot } from './mcp-client-manager.js';
|
|
35
|
+
import { CallCircuitBreaker } from './call-circuit-breaker.js';
|
|
36
|
+
import type { LanguageModelV3 } from '@ai-sdk/provider';
|
|
37
|
+
import type { MCPServerConfig, SandboxAvailabilityPolicy } from '../config/types.js';
|
|
38
|
+
export interface ProxiedTool {
|
|
39
|
+
serverName: string;
|
|
40
|
+
name: string;
|
|
41
|
+
description?: string;
|
|
42
|
+
inputSchema: Record<string, unknown>;
|
|
43
|
+
}
|
|
44
|
+
export interface ClientState {
|
|
45
|
+
client: Client;
|
|
46
|
+
roots: McpRoot[];
|
|
47
|
+
rootsRefreshed?: () => void;
|
|
48
|
+
}
|
|
49
|
+
/** Parsed environment configuration for the proxy server. */
|
|
50
|
+
export interface ProxyEnvConfig {
|
|
51
|
+
auditLogPath: string;
|
|
52
|
+
serversConfig: Record<string, MCPServerConfig>;
|
|
53
|
+
generatedDir: string;
|
|
54
|
+
protectedPaths: string[];
|
|
55
|
+
sessionLogPath: string | undefined;
|
|
56
|
+
allowedDirectory: string | undefined;
|
|
57
|
+
containerWorkspaceDir: string | undefined;
|
|
58
|
+
escalationDir: string | undefined;
|
|
59
|
+
serverCredentials: Record<string, string>;
|
|
60
|
+
sandboxPolicy: SandboxAvailabilityPolicy;
|
|
61
|
+
}
|
|
62
|
+
/** Result of sandbox availability validation. */
|
|
63
|
+
export interface SandboxValidationResult {
|
|
64
|
+
sandboxAvailable: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** MCP tool call response shape returned by handleCallTool. */
|
|
67
|
+
export interface ToolCallResponse {
|
|
68
|
+
content: unknown;
|
|
69
|
+
isError?: boolean;
|
|
70
|
+
[key: string]: unknown;
|
|
71
|
+
}
|
|
72
|
+
/** Dependencies injected into handleCallTool for testability. */
|
|
73
|
+
export interface CallToolDeps {
|
|
74
|
+
toolMap: Map<string, ProxiedTool>;
|
|
75
|
+
policyEngine: PolicyEngine;
|
|
76
|
+
auditLog: AuditLog;
|
|
77
|
+
circuitBreaker: CallCircuitBreaker;
|
|
78
|
+
clientStates: Map<string, ClientState>;
|
|
79
|
+
resolvedSandboxConfigs: Map<string, ResolvedSandboxConfig>;
|
|
80
|
+
allowedDirectory: string | undefined;
|
|
81
|
+
containerWorkspaceDir: string | undefined;
|
|
82
|
+
escalationDir: string | undefined;
|
|
83
|
+
autoApproveModel: LanguageModelV3 | null;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* Reads and validates proxy environment variables.
|
|
87
|
+
* Returns a typed config object or calls process.exit(1) on missing required vars.
|
|
88
|
+
*/
|
|
89
|
+
export declare function parseProxyEnvConfig(): ProxyEnvConfig;
|
|
90
|
+
/**
|
|
91
|
+
* Validates sandbox availability against the configured policy.
|
|
92
|
+
* Logs warnings to session log. Throws when enforce mode is active
|
|
93
|
+
* but sandboxing is unavailable.
|
|
94
|
+
*/
|
|
95
|
+
export declare function validateSandboxAvailability(sandboxPolicy: SandboxAvailabilityPolicy, sessionLogPath: string | undefined, platform: string): SandboxValidationResult;
|
|
96
|
+
/**
|
|
97
|
+
* Resolves per-server sandbox configurations and writes srt settings
|
|
98
|
+
* files for sandboxed servers. Returns the config map and the temp
|
|
99
|
+
* settings directory path.
|
|
100
|
+
*/
|
|
101
|
+
export declare function resolveServerSandboxConfigs(serversConfig: Record<string, MCPServerConfig>, allowedDirectory: string | undefined, sandboxAvailable: boolean, sandboxPolicy: SandboxAvailabilityPolicy): {
|
|
102
|
+
resolvedSandboxConfigs: Map<string, ResolvedSandboxConfig>;
|
|
103
|
+
settingsDir: string;
|
|
104
|
+
serverCwdPaths: Map<string, string>;
|
|
105
|
+
};
|
|
106
|
+
/** Builds a lookup map from tool name to ProxiedTool for routing. */
|
|
107
|
+
export declare function buildToolMap(allTools: ProxiedTool[]): Map<string, ProxiedTool>;
|
|
108
|
+
/**
|
|
109
|
+
* Creates an audit entry and logs it. Extracted so the audit shape
|
|
110
|
+
* construction is testable independently.
|
|
111
|
+
*/
|
|
112
|
+
export declare function buildAuditEntry(request: ToolCallRequest, argsForTransport: Record<string, unknown>, policyDecision: PolicyDecision, result: AuditEntry['result'], durationMs: number, options: {
|
|
113
|
+
escalationResult?: 'approved' | 'denied';
|
|
114
|
+
sandboxed?: boolean;
|
|
115
|
+
autoApproved?: boolean;
|
|
116
|
+
}): AuditEntry;
|
|
117
|
+
/**
|
|
118
|
+
* Handles a single tool call request: policy evaluation, escalation,
|
|
119
|
+
* circuit breaker check, and forwarding to the real MCP server.
|
|
120
|
+
*
|
|
121
|
+
* This is the core security logic extracted from the CallTool handler
|
|
122
|
+
* for independent unit testing.
|
|
123
|
+
*/
|
|
124
|
+
export declare function handleCallTool(toolName: string, rawArgs: Record<string, unknown>, deps: CallToolDeps): Promise<ToolCallResponse>;
|
|
125
|
+
/**
|
|
126
|
+
* Selects and validates the proxy transport based on environment variables.
|
|
127
|
+
* Returns 'tcp', 'uds', or 'stdio' along with the transport options.
|
|
128
|
+
*/
|
|
129
|
+
export declare function selectTransportConfig(): {
|
|
130
|
+
kind: 'tcp';
|
|
131
|
+
port: number;
|
|
132
|
+
portFilePath: string | undefined;
|
|
133
|
+
} | {
|
|
134
|
+
kind: 'uds';
|
|
135
|
+
socketPath: string;
|
|
136
|
+
} | {
|
|
137
|
+
kind: 'stdio';
|
|
138
|
+
};
|