@provos/ironcurtain 0.8.0 → 0.9.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/README.md +11 -10
- 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/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 +23 -0
- package/dist/config/paths.d.ts +15 -0
- package/dist/config/paths.js +35 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/types.d.ts +8 -0
- package/dist/config/user-config.d.ts +2 -0
- package/dist/config/user-config.js +2 -0
- package/dist/config/user-config.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 +6 -1
- package/dist/daemon/ironcurtain-daemon.js.map +1 -1
- package/dist/docker/docker-agent-session.d.ts +3 -1
- package/dist/docker/docker-agent-session.js +49 -28
- package/dist/docker/docker-agent-session.js.map +1 -1
- package/dist/docker/docker-infrastructure.js +39 -11
- 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 +50 -0
- package/dist/docker/mitm-proxy.js +220 -31
- package/dist/docker/mitm-proxy.js.map +1 -1
- package/dist/docker/oauth-credentials.d.ts +45 -6
- package/dist/docker/oauth-credentials.js +151 -24
- package/dist/docker/oauth-credentials.js.map +1 -1
- package/dist/docker/oauth-token-manager.d.ts +15 -16
- package/dist/docker/oauth-token-manager.js +23 -17
- package/dist/docker/oauth-token-manager.js.map +1 -1
- 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.js +48 -29
- package/dist/docker/pty-session.js.map +1 -1
- package/dist/docker/pty-types.d.ts +4 -0
- package/dist/docker/pty-types.js.map +1 -1
- 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 +6 -1
- 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/mux/mux-app.d.ts +4 -0
- package/dist/mux/mux-app.js +186 -21
- 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 +33 -1
- package/dist/mux/mux-input-handler.js +112 -29
- package/dist/mux/mux-input-handler.js.map +1 -1
- package/dist/mux/mux-renderer.d.ts +17 -1
- package/dist/mux/mux-renderer.js +288 -7
- package/dist/mux/mux-renderer.js.map +1 -1
- package/dist/mux/pty-bridge.d.ts +4 -0
- package/dist/mux/pty-bridge.js +13 -1
- package/dist/mux/pty-bridge.js.map +1 -1
- package/dist/mux/types.d.ts +24 -1
- package/dist/mux/types.js +10 -1
- package/dist/mux/types.js.map +1 -1
- package/dist/persona/persona-command.js +0 -5
- package/dist/persona/persona-command.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.js +20 -0
- 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 +6 -19
- package/dist/session/agent-session.js +18 -69
- 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/preflight.js +15 -16
- package/dist/session/preflight.js.map +1 -1
- package/dist/session/prompts.js +0 -1
- 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 +6 -1
- package/dist/session/types.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 +63 -27
- package/dist/trusted-process/index.js.map +1 -1
- package/dist/trusted-process/mcp-proxy-server.d.ts +14 -0
- package/dist/trusted-process/mcp-proxy-server.js +325 -64
- package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
- package/dist/trusted-process/policy-engine.d.ts +8 -2
- package/dist/trusted-process/policy-engine.js +18 -22
- 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.claude-code +2 -2
- package/docker/entrypoint-claude-code.sh +15 -5
- package/package.json +3 -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 +23 -0
- 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
|
@@ -0,0 +1,237 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Ephemeral approval whitelist -- session-scoped in-memory store
|
|
3
|
+
* of approval patterns extracted from user-approved escalations.
|
|
4
|
+
*
|
|
5
|
+
* Security invariant: only converts escalate -> allow, never overrides deny.
|
|
6
|
+
* Entries are never persisted to disk.
|
|
7
|
+
*/
|
|
8
|
+
import { dirname } from 'node:path';
|
|
9
|
+
import { v4 as uuidv4 } from 'uuid';
|
|
10
|
+
import { resolveRealPath, getRoleDefinition, isWithinDirectory } from '../types/argument-roles.js';
|
|
11
|
+
import { extractDomainForRole } from './domain-utils.js';
|
|
12
|
+
import { extractAnnotatedPaths, collectDistinctRoles } from './policy-engine.js';
|
|
13
|
+
/** Default whitelist options: select the first (and currently only) candidate. */
|
|
14
|
+
export const DEFAULT_WHITELIST_OPTIONS = { whitelistSelection: 0 };
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// History-rewriting roles excluded from directory generalization
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const HISTORY_REWRITING_ROLES = new Set(['write-history', 'delete-history']);
|
|
19
|
+
// ---------------------------------------------------------------------------
|
|
20
|
+
// Constraint matching
|
|
21
|
+
// ---------------------------------------------------------------------------
|
|
22
|
+
/**
|
|
23
|
+
* Checks whether a single constraint is satisfied by the tool call's arguments.
|
|
24
|
+
*/
|
|
25
|
+
function constraintMatches(constraint, args, annotation) {
|
|
26
|
+
// Find all argument values for the constraint's role
|
|
27
|
+
const values = extractAnnotatedPaths(args, annotation, [constraint.role]);
|
|
28
|
+
if (values.length === 0)
|
|
29
|
+
return false;
|
|
30
|
+
switch (constraint.kind) {
|
|
31
|
+
case 'directory':
|
|
32
|
+
return values.every((v) => {
|
|
33
|
+
try {
|
|
34
|
+
return isWithinDirectory(v, constraint.directory);
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
});
|
|
40
|
+
case 'domain': {
|
|
41
|
+
const roleDef = getRoleDefinition(constraint.role);
|
|
42
|
+
return values.every((v) => {
|
|
43
|
+
try {
|
|
44
|
+
const normalized = roleDef.canonicalize(v);
|
|
45
|
+
const domain = extractDomainForRole(normalized, constraint.role);
|
|
46
|
+
return domain.toLowerCase() === constraint.domain.toLowerCase();
|
|
47
|
+
}
|
|
48
|
+
catch {
|
|
49
|
+
return false;
|
|
50
|
+
}
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
case 'exact':
|
|
54
|
+
return values.every((v) => v.toLowerCase() === constraint.value.toLowerCase());
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ---------------------------------------------------------------------------
|
|
58
|
+
// Pattern extraction
|
|
59
|
+
// ---------------------------------------------------------------------------
|
|
60
|
+
/**
|
|
61
|
+
* Extracts whitelist candidate patterns from an escalated tool call.
|
|
62
|
+
*
|
|
63
|
+
* Only generates constraints for the role(s) that caused the escalation,
|
|
64
|
+
* as identified by `escalatedRoles` on the EvaluationResult.
|
|
65
|
+
*
|
|
66
|
+
* Falls back to all resource-identifier roles when `escalatedRoles` is
|
|
67
|
+
* undefined (defensive robustness for future structural escalation paths).
|
|
68
|
+
*
|
|
69
|
+
* Returns both:
|
|
70
|
+
* - WhitelistPattern[] (full patterns, stored in proxy memory -- without id, added on whitelist.add())
|
|
71
|
+
* - WhitelistCandidateIpc[] (descriptions, serialized into IPC file)
|
|
72
|
+
*/
|
|
73
|
+
export function extractWhitelistCandidates(serverName, toolName, args, annotation, escalatedRoles, escalationId, escalationReason) {
|
|
74
|
+
// Determine which roles to extract constraints for
|
|
75
|
+
const rolesToExtract = escalatedRoles ?? collectDistinctRoles(annotation);
|
|
76
|
+
const constraints = buildConstraints(rolesToExtract, args, annotation);
|
|
77
|
+
const description = buildDescription(serverName, toolName, constraints);
|
|
78
|
+
const warning = buildWarning(constraints);
|
|
79
|
+
const pattern = {
|
|
80
|
+
serverName,
|
|
81
|
+
toolName,
|
|
82
|
+
constraints,
|
|
83
|
+
createdAt: new Date().toISOString(),
|
|
84
|
+
sourceEscalationId: escalationId,
|
|
85
|
+
originalReason: escalationReason,
|
|
86
|
+
description,
|
|
87
|
+
};
|
|
88
|
+
const ipc = {
|
|
89
|
+
description,
|
|
90
|
+
...(warning ? { warning } : {}),
|
|
91
|
+
};
|
|
92
|
+
// Phase 1: returns a single candidate pattern. The array-based return type and
|
|
93
|
+
// whitelistSelection index in the IPC protocol are designed to support future
|
|
94
|
+
// multi-candidate expansion (e.g., "allow this directory" vs "allow this exact file").
|
|
95
|
+
return { patterns: [pattern], ipcs: [ipc] };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Builds constraints from escalated roles and argument values.
|
|
99
|
+
*/
|
|
100
|
+
function buildConstraints(roles, args, annotation) {
|
|
101
|
+
const constraints = [];
|
|
102
|
+
const seen = new Set();
|
|
103
|
+
for (const role of roles) {
|
|
104
|
+
const roleDef = getRoleDefinition(role);
|
|
105
|
+
const values = extractAnnotatedPaths(args, annotation, [role]);
|
|
106
|
+
for (const value of values) {
|
|
107
|
+
const constraint = buildConstraintForRole(role, roleDef.category, value);
|
|
108
|
+
if (!constraint)
|
|
109
|
+
continue;
|
|
110
|
+
// Deduplicate constraints with identical kind/role/value
|
|
111
|
+
const key = constraintKey(constraint);
|
|
112
|
+
if (seen.has(key))
|
|
113
|
+
continue;
|
|
114
|
+
seen.add(key);
|
|
115
|
+
constraints.push(constraint);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return constraints;
|
|
119
|
+
}
|
|
120
|
+
/** Returns a stable string key for deduplication. */
|
|
121
|
+
function constraintKey(c) {
|
|
122
|
+
switch (c.kind) {
|
|
123
|
+
case 'directory':
|
|
124
|
+
return `dir:${c.role}:${c.directory}`;
|
|
125
|
+
case 'domain':
|
|
126
|
+
return `dom:${c.role}:${c.domain}`;
|
|
127
|
+
case 'exact':
|
|
128
|
+
return `exact:${c.role}:${c.value}`;
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
/**
|
|
132
|
+
* Builds a single constraint for a role and value, applying the
|
|
133
|
+
* appropriate generalization for the role's category.
|
|
134
|
+
*/
|
|
135
|
+
function buildConstraintForRole(role, category, value) {
|
|
136
|
+
switch (category) {
|
|
137
|
+
case 'path': {
|
|
138
|
+
// History-rewriting roles are excluded from directory generalization
|
|
139
|
+
if (HISTORY_REWRITING_ROLES.has(role))
|
|
140
|
+
return undefined;
|
|
141
|
+
try {
|
|
142
|
+
// Note: resolveRealPath uses realpath for existing paths and path.resolve
|
|
143
|
+
// for non-existent ones. If a file is created after whitelisting, the resolved
|
|
144
|
+
// real path at match time may differ (e.g., through new symlinks). This is
|
|
145
|
+
// acceptable for phase 1 -- the constraint still provides meaningful scoping.
|
|
146
|
+
const resolvedPath = resolveRealPath(value);
|
|
147
|
+
const dir = dirname(resolvedPath);
|
|
148
|
+
return { kind: 'directory', role, directory: dir };
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
return undefined;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
case 'url': {
|
|
155
|
+
try {
|
|
156
|
+
const roleDef = getRoleDefinition(role);
|
|
157
|
+
const normalized = roleDef.canonicalize(value);
|
|
158
|
+
const domain = extractDomainForRole(normalized, role);
|
|
159
|
+
return { kind: 'domain', role, domain };
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
return undefined;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
case 'identifier':
|
|
166
|
+
return { kind: 'exact', role, value: value.toLowerCase() };
|
|
167
|
+
default:
|
|
168
|
+
return undefined;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Builds a human-readable description from constraints.
|
|
173
|
+
*/
|
|
174
|
+
function buildDescription(serverName, toolName, constraints) {
|
|
175
|
+
if (constraints.length === 0) {
|
|
176
|
+
return `Allow ${serverName}/${toolName} (exact tool match only)`;
|
|
177
|
+
}
|
|
178
|
+
const parts = constraints.map((c) => {
|
|
179
|
+
switch (c.kind) {
|
|
180
|
+
case 'directory':
|
|
181
|
+
return `${c.role} within ${c.directory}`;
|
|
182
|
+
case 'domain':
|
|
183
|
+
return `${c.role} domain ${c.domain}`;
|
|
184
|
+
case 'exact':
|
|
185
|
+
return `${c.role}=${c.value}`;
|
|
186
|
+
}
|
|
187
|
+
});
|
|
188
|
+
return `Allow ${serverName}/${toolName} ${parts.join(', ')}`;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Generates a warning for zero-constraint tools.
|
|
192
|
+
*/
|
|
193
|
+
function buildWarning(constraints) {
|
|
194
|
+
if (constraints.length === 0) {
|
|
195
|
+
return 'Whitelisting will auto-approve ALL future calls to this tool for this session.';
|
|
196
|
+
}
|
|
197
|
+
return undefined;
|
|
198
|
+
}
|
|
199
|
+
// ---------------------------------------------------------------------------
|
|
200
|
+
// Factory
|
|
201
|
+
// ---------------------------------------------------------------------------
|
|
202
|
+
/**
|
|
203
|
+
* Creates an in-memory approval whitelist.
|
|
204
|
+
*/
|
|
205
|
+
export function createApprovalWhitelist() {
|
|
206
|
+
const patterns = [];
|
|
207
|
+
return {
|
|
208
|
+
add(patternData) {
|
|
209
|
+
const id = uuidv4();
|
|
210
|
+
const pattern = { ...patternData, id };
|
|
211
|
+
patterns.push(pattern);
|
|
212
|
+
return id;
|
|
213
|
+
},
|
|
214
|
+
match(serverName, toolName, resolvedArgs, annotation) {
|
|
215
|
+
for (const pattern of patterns) {
|
|
216
|
+
if (pattern.serverName !== serverName)
|
|
217
|
+
continue;
|
|
218
|
+
if (pattern.toolName !== toolName)
|
|
219
|
+
continue;
|
|
220
|
+
// All constraints must match (AND semantics)
|
|
221
|
+
const allMatch = pattern.constraints.length === 0 ||
|
|
222
|
+
pattern.constraints.every((c) => constraintMatches(c, resolvedArgs, annotation));
|
|
223
|
+
if (allMatch) {
|
|
224
|
+
return { matched: true, patternId: pattern.id, pattern };
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
return { matched: false };
|
|
228
|
+
},
|
|
229
|
+
entries() {
|
|
230
|
+
return patterns;
|
|
231
|
+
},
|
|
232
|
+
get size() {
|
|
233
|
+
return patterns.length;
|
|
234
|
+
},
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
//# sourceMappingURL=approval-whitelist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"approval-whitelist.js","sourceRoot":"","sources":["../../src/trusted-process/approval-whitelist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Workspace credential file management.
|
|
3
|
+
*
|
|
4
|
+
* Writes credential files in the format expected by
|
|
5
|
+
* @alanse/mcp-server-google-workspace's auth.ts.
|
|
6
|
+
*
|
|
7
|
+
* SECURITY: The refresh_token field is intentionally omitted.
|
|
8
|
+
* This prevents the MCP server from independently refreshing tokens,
|
|
9
|
+
* which would cause refresh token rotation races in multi-session
|
|
10
|
+
* environments. IronCurtain's OAuthTokenProvider is the sole token
|
|
11
|
+
* authority.
|
|
12
|
+
*
|
|
13
|
+
* The file is written atomically (write to .tmp, rename) to prevent
|
|
14
|
+
* the MCP server from reading a partial file during a refresh cycle.
|
|
15
|
+
*/
|
|
16
|
+
/** The filename the MCP server expects in its GWORKSPACE_CREDS_DIR. */
|
|
17
|
+
export declare const GWORKSPACE_CREDENTIAL_FILENAME = ".gworkspace-credentials.json";
|
|
18
|
+
/**
|
|
19
|
+
* Shape of the credential file read by the MCP server's auth.ts.
|
|
20
|
+
* Mirrors the subset of Google OAuth2 token response that the server needs.
|
|
21
|
+
*/
|
|
22
|
+
export interface GWorkspaceCredentialFile {
|
|
23
|
+
readonly access_token: string;
|
|
24
|
+
readonly expiry_date: number;
|
|
25
|
+
readonly token_type: 'Bearer';
|
|
26
|
+
readonly scope: string;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Writes a Google Workspace credential file for the MCP server.
|
|
30
|
+
*
|
|
31
|
+
* Creates the directory if it does not exist. Writes atomically via
|
|
32
|
+
* a temporary file + rename to prevent the MCP server from reading
|
|
33
|
+
* a partial file. File permissions are set to 0o600 (owner-only).
|
|
34
|
+
*
|
|
35
|
+
* @param credsDir - Directory to write the credential file into
|
|
36
|
+
* @param accessToken - OAuth2 access token (short-lived)
|
|
37
|
+
* @param expiresAt - Token expiry timestamp in milliseconds since epoch
|
|
38
|
+
* @param scopes - OAuth2 scopes granted to this token
|
|
39
|
+
*/
|
|
40
|
+
export declare function writeGWorkspaceCredentialFile(credsDir: string, accessToken: string, expiresAt: number, scopes: readonly string[]): void;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Google Workspace credential file management.
|
|
3
|
+
*
|
|
4
|
+
* Writes credential files in the format expected by
|
|
5
|
+
* @alanse/mcp-server-google-workspace's auth.ts.
|
|
6
|
+
*
|
|
7
|
+
* SECURITY: The refresh_token field is intentionally omitted.
|
|
8
|
+
* This prevents the MCP server from independently refreshing tokens,
|
|
9
|
+
* which would cause refresh token rotation races in multi-session
|
|
10
|
+
* environments. IronCurtain's OAuthTokenProvider is the sole token
|
|
11
|
+
* authority.
|
|
12
|
+
*
|
|
13
|
+
* The file is written atomically (write to .tmp, rename) to prevent
|
|
14
|
+
* the MCP server from reading a partial file during a refresh cycle.
|
|
15
|
+
*/
|
|
16
|
+
import { mkdirSync, renameSync, writeFileSync } from 'node:fs';
|
|
17
|
+
import { join } from 'node:path';
|
|
18
|
+
/** The filename the MCP server expects in its GWORKSPACE_CREDS_DIR. */
|
|
19
|
+
export const GWORKSPACE_CREDENTIAL_FILENAME = '.gworkspace-credentials.json';
|
|
20
|
+
/**
|
|
21
|
+
* Writes a Google Workspace credential file for the MCP server.
|
|
22
|
+
*
|
|
23
|
+
* Creates the directory if it does not exist. Writes atomically via
|
|
24
|
+
* a temporary file + rename to prevent the MCP server from reading
|
|
25
|
+
* a partial file. File permissions are set to 0o600 (owner-only).
|
|
26
|
+
*
|
|
27
|
+
* @param credsDir - Directory to write the credential file into
|
|
28
|
+
* @param accessToken - OAuth2 access token (short-lived)
|
|
29
|
+
* @param expiresAt - Token expiry timestamp in milliseconds since epoch
|
|
30
|
+
* @param scopes - OAuth2 scopes granted to this token
|
|
31
|
+
*/
|
|
32
|
+
export function writeGWorkspaceCredentialFile(credsDir, accessToken, expiresAt, scopes) {
|
|
33
|
+
mkdirSync(credsDir, { recursive: true });
|
|
34
|
+
const credential = {
|
|
35
|
+
access_token: accessToken,
|
|
36
|
+
expiry_date: expiresAt,
|
|
37
|
+
token_type: 'Bearer',
|
|
38
|
+
scope: scopes.join(' '),
|
|
39
|
+
};
|
|
40
|
+
const filePath = join(credsDir, GWORKSPACE_CREDENTIAL_FILENAME);
|
|
41
|
+
const tmpPath = filePath + '.tmp';
|
|
42
|
+
writeFileSync(tmpPath, JSON.stringify(credential, null, 2), { mode: 0o600 });
|
|
43
|
+
renameSync(tmpPath, filePath);
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=gworkspace-credentials.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"gworkspace-credentials.js","sourceRoot":"","sources":["../../src/trusted-process/gworkspace-credentials.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAC/D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,uEAAuE;AACvE,MAAM,CAAC,MAAM,8BAA8B,GAAG,8BAA8B,CAAC;AAe7E;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,6BAA6B,CAC3C,QAAgB,EAChB,WAAmB,EACnB,SAAiB,EACjB,MAAyB;IAEzB,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,UAAU,GAA6B;QAC3C,YAAY,EAAE,WAAW;QACzB,WAAW,EAAE,SAAS;QACtB,UAAU,EAAE,QAAQ;QACpB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;KACxB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAChE,MAAM,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;IAElC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7E,UAAU,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;AAChC,CAAC"}
|
|
@@ -1,6 +1,15 @@
|
|
|
1
1
|
import type { IronCurtainConfig } from '../config/types.js';
|
|
2
2
|
import type { ToolCallRequest, ToolCallResult } from '../types/mcp.js';
|
|
3
|
-
|
|
3
|
+
import { type WhitelistCandidateIpc } from './approval-whitelist.js';
|
|
4
|
+
/** Result from an escalation callback, optionally including whitelist selection. */
|
|
5
|
+
export interface EscalationResult {
|
|
6
|
+
readonly decision: 'approved' | 'denied';
|
|
7
|
+
/** Index into whitelistCandidates to whitelist. Absent = no whitelisting. */
|
|
8
|
+
readonly whitelistSelection?: number;
|
|
9
|
+
}
|
|
10
|
+
export type EscalationPromptFn = (request: ToolCallRequest, reason: string, context?: Readonly<Record<string, string>>,
|
|
11
|
+
/** Whitelist candidates for display to the user. */
|
|
12
|
+
whitelistCandidates?: readonly WhitelistCandidateIpc[]) => Promise<EscalationResult>;
|
|
4
13
|
export interface TrustedProcessOptions {
|
|
5
14
|
onEscalation?: EscalationPromptFn;
|
|
6
15
|
}
|
|
@@ -12,6 +21,7 @@ export declare class TrustedProcess {
|
|
|
12
21
|
private auditLog;
|
|
13
22
|
private escalation;
|
|
14
23
|
private onEscalation?;
|
|
24
|
+
private readonly whitelist;
|
|
15
25
|
private autoApproveModel;
|
|
16
26
|
private lastUserMessage;
|
|
17
27
|
private serverContextMap;
|
|
@@ -13,6 +13,7 @@ import { extractMcpErrorMessage } from './mcp-error-utils.js';
|
|
|
13
13
|
import { extractTextFromContent, buildAuditEntry } from './mcp-proxy-server.js';
|
|
14
14
|
import { updateServerContext, formatServerContext } from './server-context.js';
|
|
15
15
|
import { buildTrustedServerSet } from '../memory/memory-annotations.js';
|
|
16
|
+
import { createApprovalWhitelist, extractWhitelistCandidates, } from './approval-whitelist.js';
|
|
16
17
|
/**
|
|
17
18
|
* Detects Docker-style `-e VAR_NAME` args (no `=`) where the env var is unset.
|
|
18
19
|
*/
|
|
@@ -37,6 +38,7 @@ export class TrustedProcess {
|
|
|
37
38
|
auditLog;
|
|
38
39
|
escalation;
|
|
39
40
|
onEscalation;
|
|
41
|
+
whitelist;
|
|
40
42
|
autoApproveModel = null;
|
|
41
43
|
lastUserMessage = null;
|
|
42
44
|
serverContextMap = new Map();
|
|
@@ -59,6 +61,7 @@ export class TrustedProcess {
|
|
|
59
61
|
});
|
|
60
62
|
this.escalation = new EscalationHandler();
|
|
61
63
|
this.onEscalation = options?.onEscalation;
|
|
64
|
+
this.whitelist = createApprovalWhitelist();
|
|
62
65
|
}
|
|
63
66
|
/**
|
|
64
67
|
* Sets the most recent user message for auto-approval context.
|
|
@@ -150,39 +153,67 @@ export class TrustedProcess {
|
|
|
150
153
|
};
|
|
151
154
|
let escalationResult;
|
|
152
155
|
let autoApproved = false;
|
|
156
|
+
let whitelistApproved = false;
|
|
157
|
+
let whitelistPatternId;
|
|
153
158
|
let resultContent;
|
|
154
159
|
let resultStatus;
|
|
155
160
|
let resultError;
|
|
156
161
|
try {
|
|
157
|
-
// Step 2: Handle escalation --
|
|
162
|
+
// Step 2: Handle escalation -- whitelist check, auto-approve, then human
|
|
158
163
|
if (evaluation.decision === 'escalate') {
|
|
159
|
-
//
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
policyDecision.status = 'allow';
|
|
170
|
-
policyDecision.reason = `Auto-approved: ${autoResult.reasoning}`;
|
|
171
|
-
}
|
|
164
|
+
// Annotation is guaranteed non-null here: trusted servers always allow (never escalate),
|
|
165
|
+
// and missing-annotation returns early above. Narrow the type for TypeScript.
|
|
166
|
+
const resolvedAnnotation = annotation;
|
|
167
|
+
const whitelistMatch = this.whitelist.match(request.serverName, request.toolName, argsForPolicy, resolvedAnnotation);
|
|
168
|
+
if (whitelistMatch.matched) {
|
|
169
|
+
whitelistApproved = true;
|
|
170
|
+
whitelistPatternId = whitelistMatch.patternId;
|
|
171
|
+
escalationResult = 'approved';
|
|
172
|
+
policyDecision.status = 'allow';
|
|
173
|
+
policyDecision.reason = `Whitelist-approved: ${whitelistMatch.pattern.description}`;
|
|
172
174
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
175
|
+
if (!whitelistApproved) {
|
|
176
|
+
// Try auto-approve before prompting the human
|
|
177
|
+
if (this.autoApproveModel && this.lastUserMessage) {
|
|
178
|
+
const autoResult = await autoApprove({
|
|
179
|
+
userMessage: this.lastUserMessage,
|
|
180
|
+
toolName: `${request.serverName}/${request.toolName}`,
|
|
181
|
+
escalationReason: evaluation.reason,
|
|
182
|
+
}, this.autoApproveModel);
|
|
183
|
+
if (autoResult.decision === 'approve') {
|
|
184
|
+
autoApproved = true;
|
|
185
|
+
escalationResult = 'approved';
|
|
186
|
+
policyDecision.status = 'allow';
|
|
187
|
+
policyDecision.reason = `Auto-approved: ${autoResult.reasoning}`;
|
|
188
|
+
}
|
|
182
189
|
}
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
190
|
+
// Fall through to human escalation if not auto-approved
|
|
191
|
+
if (!autoApproved) {
|
|
192
|
+
// Extract whitelist candidates for display
|
|
193
|
+
const escalationId = `inprocess-${Date.now()}`;
|
|
194
|
+
const candidates = extractWhitelistCandidates(request.serverName, request.toolName, argsForPolicy, resolvedAnnotation, evaluation.escalatedRoles, escalationId, evaluation.reason);
|
|
195
|
+
const candidatePatterns = candidates.patterns;
|
|
196
|
+
const candidateIpcs = candidates.ipcs.length > 0 ? candidates.ipcs : undefined;
|
|
197
|
+
const escalationContext = formatServerContext(this.serverContextMap, transportRequest.serverName);
|
|
198
|
+
const escalationResponse = this.onEscalation
|
|
199
|
+
? await this.onEscalation(transportRequest, evaluation.reason, escalationContext, candidateIpcs)
|
|
200
|
+
: { decision: await this.escalation.prompt(transportRequest, evaluation.reason, escalationContext) };
|
|
201
|
+
escalationResult = escalationResponse.decision;
|
|
202
|
+
if (escalationResponse.decision === 'approved') {
|
|
203
|
+
policyDecision.status = 'allow';
|
|
204
|
+
policyDecision.reason = 'Approved by human during escalation';
|
|
205
|
+
// Handle whitelist selection
|
|
206
|
+
if (escalationResponse.whitelistSelection !== undefined &&
|
|
207
|
+
escalationResponse.whitelistSelection >= 0 &&
|
|
208
|
+
escalationResponse.whitelistSelection < candidatePatterns.length) {
|
|
209
|
+
const selectedPattern = candidatePatterns[escalationResponse.whitelistSelection];
|
|
210
|
+
this.whitelist.add(selectedPattern);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
policyDecision.status = 'deny';
|
|
215
|
+
policyDecision.reason = 'Denied by human during escalation';
|
|
216
|
+
}
|
|
186
217
|
}
|
|
187
218
|
}
|
|
188
219
|
// Expand roots to include target directories so the filesystem
|
|
@@ -227,7 +258,12 @@ export class TrustedProcess {
|
|
|
227
258
|
status: resultStatus,
|
|
228
259
|
content: resultStatus === 'success' ? resultContent : undefined,
|
|
229
260
|
error: resultError,
|
|
230
|
-
}, durationMs, {
|
|
261
|
+
}, durationMs, {
|
|
262
|
+
escalationResult,
|
|
263
|
+
autoApproved: autoApproved || undefined,
|
|
264
|
+
whitelistApproved: whitelistApproved || undefined,
|
|
265
|
+
whitelistPatternId,
|
|
266
|
+
}));
|
|
231
267
|
// Step 5: Return result to caller
|
|
232
268
|
return {
|
|
233
269
|
requestId: transportRequest.requestId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/trusted-process/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/trusted-process/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,6 +38,8 @@ import { type UserContext } from './auto-approver.js';
|
|
|
38
38
|
import { type ServerContextMap } from './server-context.js';
|
|
39
39
|
import type { LanguageModelV3 } from '@ai-sdk/provider';
|
|
40
40
|
import type { MCPServerConfig, SandboxAvailabilityPolicy } from '../config/types.js';
|
|
41
|
+
import { type ApprovalWhitelist } from './approval-whitelist.js';
|
|
42
|
+
import { type ControlApiClient } from '../docker/proxy-tools.js';
|
|
41
43
|
export interface ProxiedTool {
|
|
42
44
|
serverName: string;
|
|
43
45
|
name: string;
|
|
@@ -113,6 +115,10 @@ export interface CallToolDeps {
|
|
|
113
115
|
escalationDir: string | undefined;
|
|
114
116
|
autoApproveModel: LanguageModelV3 | null;
|
|
115
117
|
serverContextMap: ServerContextMap;
|
|
118
|
+
/** Ephemeral approval whitelist for this session. */
|
|
119
|
+
whitelist: ApprovalWhitelist;
|
|
120
|
+
/** Control API client for virtual proxy tools. Only set in virtual-only mode. */
|
|
121
|
+
controlApiClient?: ControlApiClient | null;
|
|
116
122
|
}
|
|
117
123
|
/**
|
|
118
124
|
* Reads and validates proxy environment variables.
|
|
@@ -135,6 +141,12 @@ export declare function resolveServerSandboxConfigs(serversConfig: Record<string
|
|
|
135
141
|
settingsDir: string;
|
|
136
142
|
serverCwdPaths: Map<string, string>;
|
|
137
143
|
};
|
|
144
|
+
/**
|
|
145
|
+
* Validates that all argument keys exist in the tool's inputSchema.
|
|
146
|
+
* Returns null if valid, or an error message listing unknown and valid keys.
|
|
147
|
+
* Skips validation when the schema has no properties or allows additional properties.
|
|
148
|
+
*/
|
|
149
|
+
export declare function validateToolArguments(args: Record<string, unknown>, inputSchema: Record<string, unknown>): string | null;
|
|
138
150
|
/** Builds a lookup map from tool name to ProxiedTool for routing. */
|
|
139
151
|
export declare function buildToolMap(allTools: ProxiedTool[]): Map<string, ProxiedTool>;
|
|
140
152
|
/**
|
|
@@ -145,6 +157,8 @@ export declare function buildAuditEntry(request: ToolCallRequest, argsForTranspo
|
|
|
145
157
|
escalationResult?: 'approved' | 'denied';
|
|
146
158
|
sandboxed?: boolean;
|
|
147
159
|
autoApproved?: boolean;
|
|
160
|
+
whitelistApproved?: boolean;
|
|
161
|
+
whitelistPatternId?: string;
|
|
148
162
|
}): AuditEntry;
|
|
149
163
|
/**
|
|
150
164
|
* Handles a single tool call request: policy evaluation, escalation,
|