@intutic/mcp-governance-proxy 2.4.0 → 2.5.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 +1 -1
- package/dist/agentTools.d.ts +15 -2
- package/dist/agentTools.d.ts.map +1 -1
- package/dist/agentTools.js +43 -1
- package/dist/agentTools.js.map +1 -1
- package/dist/chaos.d.ts +90 -0
- package/dist/chaos.d.ts.map +1 -0
- package/dist/chaos.js +174 -0
- package/dist/chaos.js.map +1 -0
- package/dist/config.d.ts +7 -5
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js.map +1 -1
- package/dist/daemon/policyCache.d.ts +5 -1
- package/dist/daemon/policyCache.d.ts.map +1 -1
- package/dist/daemon/policyCache.js +65 -27
- package/dist/daemon/policyCache.js.map +1 -1
- package/dist/index.js +15 -2
- package/dist/index.js.map +1 -1
- package/dist/interceptor.d.ts +12 -0
- package/dist/interceptor.d.ts.map +1 -1
- package/dist/interceptor.js +21 -6
- package/dist/interceptor.js.map +1 -1
- package/dist/policy.d.ts +16 -1
- package/dist/policy.d.ts.map +1 -1
- package/dist/policy.js +32 -5
- package/dist/policy.js.map +1 -1
- package/dist/proxy.d.ts +35 -3
- package/dist/proxy.d.ts.map +1 -1
- package/dist/proxy.js +135 -70
- package/dist/proxy.js.map +1 -1
- package/dist/refusals.d.ts +25 -0
- package/dist/refusals.d.ts.map +1 -1
- package/dist/refusals.js +50 -0
- package/dist/refusals.js.map +1 -1
- package/dist/remoteBridge.d.ts +2 -1
- package/dist/remoteBridge.d.ts.map +1 -1
- package/dist/remoteBridge.js +4 -3
- package/dist/remoteBridge.js.map +1 -1
- package/dist/tofu.d.ts +49 -1
- package/dist/tofu.d.ts.map +1 -1
- package/dist/tofu.js +54 -2
- package/dist/tofu.js.map +1 -1
- package/package.json +4 -4
package/dist/policy.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"policy.js","sourceRoot":"","sources":["../src/policy.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy.d.ts
CHANGED
|
@@ -32,8 +32,10 @@ import { ToolCallInterceptor } from './interceptor.js';
|
|
|
32
32
|
import { type InjectionSource } from './injection.js';
|
|
33
33
|
import { type AnomalyFinding } from './anomaly/index.js';
|
|
34
34
|
import { SessionState } from './session.js';
|
|
35
|
+
import { type ToolDefinition } from './tofu.js';
|
|
35
36
|
import { type CallerIdentity } from './identity.js';
|
|
36
37
|
import { type McpToolDefinition } from '@intutic/shared-types';
|
|
38
|
+
import type { ChaosInjector } from './chaos.js';
|
|
37
39
|
/**
|
|
38
40
|
* Who a per-member MCP budget counts when the control plane has not named the
|
|
39
41
|
* member behind this proxy's key: the key's prefix, else the OS user. Callers
|
|
@@ -44,6 +46,17 @@ export declare function fallbackBudgetCaller(identity: CallerIdentity): string;
|
|
|
44
46
|
export interface PendingRequest {
|
|
45
47
|
method: 'tools/call' | 'tools/list' | 'resources/read';
|
|
46
48
|
toolName?: string;
|
|
49
|
+
/** A chaos `inject.tool_result` chosen for this call: appended to the server's result (chaos.ts). */
|
|
50
|
+
inject?: {
|
|
51
|
+
payload: string;
|
|
52
|
+
call: number;
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
/** What `handleHarnessLine` needs to inject faults when a chaos plan is loaded (chaos.ts). */
|
|
56
|
+
export interface ChaosHooks {
|
|
57
|
+
injector: ChaosInjector;
|
|
58
|
+
/** Hand a synthesized upstream line to the response path, as if the server had sent it. */
|
|
59
|
+
respond: (line: string) => void;
|
|
47
60
|
}
|
|
48
61
|
/** The outcome of inspecting one server→harness line. */
|
|
49
62
|
export interface ServerLineOutcome {
|
|
@@ -71,6 +84,13 @@ export interface ServerLineOutcome {
|
|
|
71
84
|
* `toolsListTools`; the registry gets these.
|
|
72
85
|
*/
|
|
73
86
|
toolsListUpstream?: McpToolDefinition[];
|
|
87
|
+
/**
|
|
88
|
+
* The upstream server's own `{name, description, inputSchema}` per tool,
|
|
89
|
+
* untruncated, before curation hid any or an override rewrote a
|
|
90
|
+
* description — what TOFU pins (tofu.ts), so an owner's own curation change
|
|
91
|
+
* never reads as the server's. Set alongside `toolsListTools`.
|
|
92
|
+
*/
|
|
93
|
+
toolsListPinned?: ToolDefinition[];
|
|
74
94
|
/** The JSON-RPC id of the `tools/list` response, needed to build a block
|
|
75
95
|
* frame in the caller if TOFU refuses it. Set alongside `toolsListTools`. */
|
|
76
96
|
toolsListMsgId?: string | number | null;
|
|
@@ -143,7 +163,9 @@ export interface ServerLineOutcome {
|
|
|
143
163
|
* also the counter to a poisoned upstream description — the pin detects the
|
|
144
164
|
* change; the override controls what the agent actually reads.
|
|
145
165
|
*/
|
|
146
|
-
export declare function processServerLine(raw: string, pending: Map<string | number, PendingRequest>, allowedTools: readonly string[], overrides: Readonly<Record<string, string>>, injectionAction?: 'warn' | 'block', injectionPatterns?: readonly string[], disabledTools?: readonly string[]
|
|
166
|
+
export declare function processServerLine(raw: string, pending: Map<string | number, PendingRequest>, allowedTools: readonly string[], overrides: Readonly<Record<string, string>>, injectionAction?: 'warn' | 'block', injectionPatterns?: readonly string[], disabledTools?: readonly string[],
|
|
167
|
+
/** The workspace is OPAQUE: a withheld result does not say which pattern withheld it. */
|
|
168
|
+
opaque?: boolean): ServerLineOutcome;
|
|
147
169
|
/**
|
|
148
170
|
* Handle one harness→upstream line — shared, byte-for-byte, between stdio
|
|
149
171
|
* proxy mode (`McpGovernanceProxy.runProxy`, below) and the remote HTTP/SSE
|
|
@@ -161,9 +183,11 @@ export declare function processServerLine(raw: string, pending: Map<string | num
|
|
|
161
183
|
* so `remoteBridge.ts` can call it without needing a `McpGovernanceProxy`
|
|
162
184
|
* instance shaped for the stdio child-process lifecycle it doesn't have.
|
|
163
185
|
*/
|
|
164
|
-
export declare function handleHarnessLine(line: string, pending: Map<string | number, PendingRequest>, interceptor: ToolCallInterceptor, forward: (line: string) => void, session?: SessionState): void;
|
|
186
|
+
export declare function handleHarnessLine(line: string, pending: Map<string | number, PendingRequest>, interceptor: ToolCallInterceptor, forward: (line: string) => void, session?: SessionState, chaos?: ChaosHooks): void;
|
|
165
187
|
export declare class McpGovernanceProxy {
|
|
166
188
|
private readonly config;
|
|
189
|
+
/** The loaded chaos plan's injector; null (no plan) leaves every path as it is. */
|
|
190
|
+
private readonly chaos;
|
|
167
191
|
private readonly policy;
|
|
168
192
|
private readonly emitter;
|
|
169
193
|
private readonly interceptor;
|
|
@@ -198,7 +222,9 @@ export declare class McpGovernanceProxy {
|
|
|
198
222
|
/** Reports this proxy's server to the registry; absent for the standalone `intutic` entry, which fronts none. */
|
|
199
223
|
private readonly registryObserver;
|
|
200
224
|
private realServer;
|
|
201
|
-
constructor(config: ProxyConfig
|
|
225
|
+
constructor(config: ProxyConfig,
|
|
226
|
+
/** The loaded chaos plan's injector; null (no plan) leaves every path as it is. */
|
|
227
|
+
chaos?: ChaosInjector | null);
|
|
202
228
|
/**
|
|
203
229
|
* The tools/call decision engine — exposed so `remoteBridge.ts` can drive
|
|
204
230
|
* `handleHarnessLine` (the exported free function above) against the SAME
|
|
@@ -213,6 +239,12 @@ export declare class McpGovernanceProxy {
|
|
|
213
239
|
* `handleHarnessLine` records into are never two different objects.
|
|
214
240
|
*/
|
|
215
241
|
getSessionState(): SessionState;
|
|
242
|
+
/**
|
|
243
|
+
* The chaos hooks for `handleHarnessLine`, bound to this proxy's response
|
|
244
|
+
* path and `pending` map; undefined without a plan. Shared by stdio mode
|
|
245
|
+
* and `remoteBridge.ts` for the same reason `getInterceptor` is.
|
|
246
|
+
*/
|
|
247
|
+
chaosHooks(pending: Map<string | number, PendingRequest>): ChaosHooks | undefined;
|
|
216
248
|
/**
|
|
217
249
|
* Start the policy client's background refresh timer. Exposed alongside
|
|
218
250
|
* `stopPolicy` so `remoteBridge.ts` can drive the same policy lifecycle
|
package/dist/proxy.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAKH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAG9C,OAAO,EAAE,mBAAmB,
|
|
1
|
+
{"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../src/proxy.ts"],"names":[],"mappings":"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"}
|
package/dist/proxy.js
CHANGED
|
@@ -32,8 +32,9 @@ import * as node_readline from 'node:readline';
|
|
|
32
32
|
import { createStderrLogger as createLogger } from './stderrLog.js';
|
|
33
33
|
import { PolicyClient } from './policy.js';
|
|
34
34
|
import { GovernanceEmitter, detectionFinding } from './emitter.js';
|
|
35
|
-
import { ToolCallInterceptor } from './interceptor.js';
|
|
36
|
-
import { LIST_INCIDENTS_ARGS, budgetRemaining, describeFailure, holdStatus, incidentListPath, readControlPlane, registryStatus, } from './agentTools.js';
|
|
35
|
+
import { ToolCallInterceptor, holdReason } from './interceptor.js';
|
|
36
|
+
import { LIST_INCIDENTS_ARGS, budgetRemaining, describeFailure, governanceStatus, sopListPath, holdStatus, incidentListPath, readControlPlane, registryStatus, } from './agentTools.js';
|
|
37
|
+
import { isOpaqueRefusal, opaqueRefusalData } from './refusals.js';
|
|
37
38
|
import { redactText as redactMcpText, setWorkspacePii } from './dlp.js';
|
|
38
39
|
import { scanText, injectionSeverity, setDynamicInjectionPatterns } from './injection.js';
|
|
39
40
|
import { toolPoisoning, dlpEscalation } from './anomaly/index.js';
|
|
@@ -43,11 +44,11 @@ import { GuardedValkey } from './guardedValkey.js';
|
|
|
43
44
|
import { McpBudgetEnforcer, ValkeyBudgetStore } from './budget.js';
|
|
44
45
|
import { WasmRunner } from './wasm/runner.js';
|
|
45
46
|
import { CloudRuleSet, fetchRuleBinaryFrom, refusalDetail } from './wasm/cloudRules.js';
|
|
46
|
-
import { checkTofu, decideTofuAction } from './tofu.js';
|
|
47
|
+
import { checkTofu, decideTofuAction, tofuReport } from './tofu.js';
|
|
47
48
|
import { RegistryObserver } from './registryObserver.js';
|
|
48
49
|
import { ApprovalHolds } from './approvalHold.js';
|
|
49
50
|
import { callerIdentity } from './identity.js';
|
|
50
|
-
import { normalizeToolDefinition } from '@intutic/shared-types';
|
|
51
|
+
import { OPAQUE_REFUSAL_MESSAGE, normalizeToolDefinition } from '@intutic/shared-types';
|
|
51
52
|
import { PACKAGE_VERSION } from './version.js';
|
|
52
53
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
53
54
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
@@ -55,20 +56,40 @@ import { z } from 'zod';
|
|
|
55
56
|
import { watchWasmDir } from './wasm/watch.js';
|
|
56
57
|
const log = createLogger('mcp-governance-proxy');
|
|
57
58
|
/**
|
|
58
|
-
*
|
|
59
|
-
*
|
|
59
|
+
* A refusal frame, the one place that decides what the agent is told. In an
|
|
60
|
+
* OPAQUE workspace (`opaque`) a refusal on workspace policy
|
|
61
|
+
* (`isOpaqueRefusal`) is sent as `opaqueMessage`, built around
|
|
62
|
+
* `OPAQUE_REFUSAL_MESSAGE`, with `opaqueRefusalData`: the same JSON-RPC code
|
|
63
|
+
* and `error.data.code`, no rule. Otherwise `message` and `data`, exactly as
|
|
64
|
+
* before the mode existed. Only the frame changes; logs and emitted events
|
|
65
|
+
* keep the full reason.
|
|
60
66
|
*/
|
|
61
|
-
function
|
|
67
|
+
function refusalResponse(id, data, opaque, message, opaqueMessage) {
|
|
68
|
+
const hide = opaque && isOpaqueRefusal(data);
|
|
62
69
|
return {
|
|
63
70
|
jsonrpc: '2.0',
|
|
64
71
|
id,
|
|
65
72
|
error: {
|
|
66
73
|
code: -32603, // Internal error (closest standard code to "blocked")
|
|
67
|
-
message:
|
|
68
|
-
data,
|
|
74
|
+
message: hide ? opaqueMessage : message,
|
|
75
|
+
data: hide ? opaqueRefusalData(data) : data,
|
|
69
76
|
},
|
|
70
77
|
};
|
|
71
78
|
}
|
|
79
|
+
const BLOCKED = '[Intutic Governance] Tool call blocked: ';
|
|
80
|
+
/**
|
|
81
|
+
* A withheld result in an OPAQUE workspace: not which pattern, but still that
|
|
82
|
+
* the call already ran, so the agent does not run it again expecting output.
|
|
83
|
+
*/
|
|
84
|
+
const RESULT_WITHHELD_OPAQUE = `[Intutic Governance] Result withheld: ${OPAQUE_REFUSAL_MESSAGE} The tool call already ran; ` +
|
|
85
|
+
`its output was not delivered.`;
|
|
86
|
+
/**
|
|
87
|
+
* Build a JSON-RPC 2.0 error response for a blocked tool call. `data` names
|
|
88
|
+
* the refusal for a client that reads it programmatically (refusals.ts).
|
|
89
|
+
*/
|
|
90
|
+
function buildBlockResponse(id, reason, data, opaque) {
|
|
91
|
+
return refusalResponse(id, data, opaque, BLOCKED + reason, BLOCKED + OPAQUE_REFUSAL_MESSAGE);
|
|
92
|
+
}
|
|
72
93
|
/** The `error.data` of a block decision: its code, rule id and detail. */
|
|
73
94
|
function blockData(decision) {
|
|
74
95
|
return { code: decision.code, ruleId: decision.ruleId, ...decision.detail };
|
|
@@ -79,16 +100,10 @@ function blockData(decision) {
|
|
|
79
100
|
* the hold id in `data` for a client that reads it programmatically — empty
|
|
80
101
|
* when the hold could not be recorded, so there is nothing to approve yet.
|
|
81
102
|
*/
|
|
82
|
-
function buildHoldResponse(id, reason, holdId, ruleId) {
|
|
83
|
-
return {
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
error: {
|
|
87
|
-
code: -32603,
|
|
88
|
-
message: `[Intutic Governance] Tool call ${reason}`,
|
|
89
|
-
data: { code: 'HELD', ruleId, status: 'pending_approval', holdId },
|
|
90
|
-
},
|
|
91
|
-
};
|
|
103
|
+
function buildHoldResponse(id, reason, holdId, ruleId, opaque) {
|
|
104
|
+
return refusalResponse(id, { code: 'HELD', ruleId, status: 'pending_approval', holdId }, opaque, `[Intutic Governance] Tool call ${reason}`,
|
|
105
|
+
// An OPAQUE workspace's hold names the hold, not the rule.
|
|
106
|
+
`[Intutic Governance] Tool call ${holdReason(OPAQUE_REFUSAL_MESSAGE, holdId)}`);
|
|
92
107
|
}
|
|
93
108
|
/**
|
|
94
109
|
* Who a per-member MCP budget counts when the control plane has not named the
|
|
@@ -135,7 +150,9 @@ function writeFrame(frame) {
|
|
|
135
150
|
* also the counter to a poisoned upstream description — the pin detects the
|
|
136
151
|
* change; the override controls what the agent actually reads.
|
|
137
152
|
*/
|
|
138
|
-
export function processServerLine(raw, pending, allowedTools, overrides, injectionAction = 'warn', injectionPatterns = [], disabledTools = []
|
|
153
|
+
export function processServerLine(raw, pending, allowedTools, overrides, injectionAction = 'warn', injectionPatterns = [], disabledTools = [],
|
|
154
|
+
/** The workspace is OPAQUE: a withheld result does not say which pattern withheld it. */
|
|
155
|
+
opaque = false) {
|
|
139
156
|
// Workspace-supplied injection patterns, on top of the floor.
|
|
140
157
|
// Idempotent when the list has not changed, so this is cheap per line.
|
|
141
158
|
setDynamicInjectionPatterns(injectionPatterns);
|
|
@@ -178,17 +195,9 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
178
195
|
resultText = redacted;
|
|
179
196
|
}
|
|
180
197
|
catch {
|
|
181
|
-
const withheld = {
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
error: {
|
|
185
|
-
code: -32603,
|
|
186
|
-
message: `[Intutic Governance] Result withheld: it contained sensitive data ` +
|
|
187
|
-
`whose redaction did not survive re-parsing. The tool ran; its output ` +
|
|
188
|
-
`was not delivered. (${findings.map((f) => f.description).join('; ')})`,
|
|
189
|
-
data: { code: 'RESULT_WITHHELD_DLP', ruleId: `dlp.${findings[0]?.pattern ?? 'output'}` },
|
|
190
|
-
},
|
|
191
|
-
};
|
|
198
|
+
const withheld = refusalResponse(msg.id, { code: 'RESULT_WITHHELD_DLP', ruleId: `dlp.${findings[0]?.pattern ?? 'output'}` }, opaque, `[Intutic Governance] Result withheld: it contained sensitive data ` +
|
|
199
|
+
`whose redaction did not survive re-parsing. The tool ran; its output ` +
|
|
200
|
+
`was not delivered. (${findings.map((f) => f.description).join('; ')})`, RESULT_WITHHELD_OPAQUE);
|
|
192
201
|
return { line: JSON.stringify(withheld), redactedTool, redactions };
|
|
193
202
|
}
|
|
194
203
|
}
|
|
@@ -205,17 +214,9 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
205
214
|
// Response-side block never claims the CALL was refused — it
|
|
206
215
|
// already ran. Only the delivered output is withheld, worded the
|
|
207
216
|
// same way the DLP reparse-withheld frame above is.
|
|
208
|
-
const withheldInjection = {
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
error: {
|
|
212
|
-
code: -32603,
|
|
213
|
-
message: `[Intutic Governance] Result withheld: it triggered prompt-injection ` +
|
|
214
|
-
`pattern(s) (${injectionPatterns.join(', ')}). The tool call already ran; ` +
|
|
215
|
-
`its output was not delivered.`,
|
|
216
|
-
data: { code: 'RESULT_WITHHELD_INJECTION', ruleId: 'injection.tool_result' },
|
|
217
|
-
},
|
|
218
|
-
};
|
|
217
|
+
const withheldInjection = refusalResponse(msg.id, { code: 'RESULT_WITHHELD_INJECTION', ruleId: 'injection.tool_result' }, opaque, `[Intutic Governance] Result withheld: it triggered prompt-injection ` +
|
|
218
|
+
`pattern(s) (${injectionPatterns.join(', ')}). The tool call already ran; ` +
|
|
219
|
+
`its output was not delivered.`, RESULT_WITHHELD_OPAQUE);
|
|
219
220
|
return {
|
|
220
221
|
line: JSON.stringify(withheldInjection),
|
|
221
222
|
redactedTool,
|
|
@@ -249,6 +250,11 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
249
250
|
let hidden = 0;
|
|
250
251
|
let overridden = 0;
|
|
251
252
|
// Copied before the overrides below rewrite descriptions in place.
|
|
253
|
+
const pinned = tools.map((t) => ({
|
|
254
|
+
name: t?.['name'],
|
|
255
|
+
description: t?.['description'],
|
|
256
|
+
inputSchema: t?.['inputSchema'],
|
|
257
|
+
}));
|
|
252
258
|
const upstream = tools
|
|
253
259
|
.map(normalizeToolDefinition)
|
|
254
260
|
.filter((t) => t !== null);
|
|
@@ -298,14 +304,15 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
298
304
|
.filter((t) => typeof t['name'] === 'string')
|
|
299
305
|
.map((t) => ({ name: t['name'], description: typeof t['description'] === 'string' ? t['description'] : undefined })));
|
|
300
306
|
// toolsListTools/toolsListMsgId are set on EVERY tools/list response,
|
|
301
|
-
// curated or not — TOFU pinning (tofu.ts
|
|
302
|
-
//
|
|
303
|
-
// overrides touched
|
|
307
|
+
// curated or not — the session cache and TOFU pinning (tofu.ts, over
|
|
308
|
+
// `toolsListPinned`) need them whether or not allowlist filtering or
|
|
309
|
+
// description overrides touched the list this time.
|
|
304
310
|
if (hidden === 0 && overridden === 0) {
|
|
305
311
|
return {
|
|
306
312
|
line: raw,
|
|
307
313
|
toolsListTools: kept,
|
|
308
314
|
toolsListUpstream: upstream,
|
|
315
|
+
toolsListPinned: pinned,
|
|
309
316
|
toolsListMsgId: msg.id,
|
|
310
317
|
injectionFindings,
|
|
311
318
|
toolPoisoning: toolPoisoningFinding ?? undefined,
|
|
@@ -317,6 +324,7 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
317
324
|
curated: { hidden, overridden },
|
|
318
325
|
toolsListTools: kept,
|
|
319
326
|
toolsListUpstream: upstream,
|
|
327
|
+
toolsListPinned: pinned,
|
|
320
328
|
toolsListMsgId: msg.id,
|
|
321
329
|
injectionFindings,
|
|
322
330
|
toolPoisoning: toolPoisoningFinding ?? undefined,
|
|
@@ -341,7 +349,7 @@ export function processServerLine(raw, pending, allowedTools, overrides, injecti
|
|
|
341
349
|
* so `remoteBridge.ts` can call it without needing a `McpGovernanceProxy`
|
|
342
350
|
* instance shaped for the stdio child-process lifecycle it doesn't have.
|
|
343
351
|
*/
|
|
344
|
-
export function handleHarnessLine(line, pending, interceptor, forward, session) {
|
|
352
|
+
export function handleHarnessLine(line, pending, interceptor, forward, session, chaos) {
|
|
345
353
|
const trimmed = line.trim();
|
|
346
354
|
if (!trimmed)
|
|
347
355
|
return;
|
|
@@ -371,10 +379,14 @@ export function handleHarnessLine(line, pending, interceptor, forward, session)
|
|
|
371
379
|
interceptor.decide(toolName, toolInput).then((decision) => {
|
|
372
380
|
if (decision.action === 'block') {
|
|
373
381
|
log.warn({ action: 'tool_blocked', toolName, reason: decision.reason }, 'Tool call blocked by governance proxy');
|
|
374
|
-
|
|
382
|
+
// Recorded before the answer goes out, as on the allowed path: a
|
|
383
|
+
// reader that acts on the answer must find the event already written.
|
|
384
|
+
chaos?.injector.emit({ type: 'tool_call', tool: toolName, ok: false });
|
|
385
|
+
writeFrame(buildBlockResponse(msg.id, decision.reason, blockData(decision), interceptor.opaque));
|
|
375
386
|
}
|
|
376
387
|
else if (decision.action === 'hold') {
|
|
377
|
-
|
|
388
|
+
chaos?.injector.emit({ type: 'tool_call', tool: toolName, ok: false });
|
|
389
|
+
writeFrame(buildHoldResponse(msg.id, decision.reason, decision.holdId, decision.ruleId, interceptor.opaque));
|
|
378
390
|
}
|
|
379
391
|
else {
|
|
380
392
|
// Allow: the response now needs inspecting on the way back —
|
|
@@ -389,6 +401,19 @@ export function handleHarnessLine(line, pending, interceptor, forward, session)
|
|
|
389
401
|
// tool_diversity_collapse, or an agent could be penalized for calls
|
|
390
402
|
// that never ran.
|
|
391
403
|
session?.recordCall(toolName);
|
|
404
|
+
// Chaos faults stand in for the upstream server, so they are
|
|
405
|
+
// considered only here, after governance allowed the call, and
|
|
406
|
+
// their results go back through the response path like a real one.
|
|
407
|
+
if (chaos && decision.action === 'allow' && msg.id !== null && msg.id !== undefined) {
|
|
408
|
+
const fault = chaos.injector.onAllowedCall(toolName, () => writeFrame({ jsonrpc: '2.0', method: 'notifications/tools/list_changed' }));
|
|
409
|
+
if (fault?.kind === 'respond') {
|
|
410
|
+
chaos.respond(JSON.stringify({ jsonrpc: '2.0', id: msg.id, result: fault.result }));
|
|
411
|
+
return;
|
|
412
|
+
}
|
|
413
|
+
if (fault?.kind === 'append') {
|
|
414
|
+
pending.set(msg.id, { method: 'tools/call', toolName, inject: { payload: fault.payload, call: fault.call } });
|
|
415
|
+
}
|
|
416
|
+
}
|
|
392
417
|
forward(line);
|
|
393
418
|
}
|
|
394
419
|
}).catch((err) => {
|
|
@@ -404,6 +429,7 @@ export function handleHarnessLine(line, pending, interceptor, forward, session)
|
|
|
404
429
|
}
|
|
405
430
|
export class McpGovernanceProxy {
|
|
406
431
|
config;
|
|
432
|
+
chaos;
|
|
407
433
|
policy;
|
|
408
434
|
emitter;
|
|
409
435
|
interceptor;
|
|
@@ -438,8 +464,11 @@ export class McpGovernanceProxy {
|
|
|
438
464
|
/** Reports this proxy's server to the registry; absent for the standalone `intutic` entry, which fronts none. */
|
|
439
465
|
registryObserver;
|
|
440
466
|
realServer = null;
|
|
441
|
-
constructor(config
|
|
467
|
+
constructor(config,
|
|
468
|
+
/** The loaded chaos plan's injector; null (no plan) leaves every path as it is. */
|
|
469
|
+
chaos = null) {
|
|
442
470
|
this.config = config;
|
|
471
|
+
this.chaos = chaos;
|
|
443
472
|
this.policy = new PolicyClient(config.controlPlaneUrl, config.apiKey, config.workspaceId, config.policyTtlMs, config.mcpProxyMode);
|
|
444
473
|
const identity = callerIdentity(config.apiKey, config.serverName, config.sessionScope);
|
|
445
474
|
this.emitter = new GovernanceEmitter(config.controlPlaneUrl, config.apiKey, config.eventsFilePath, config.workspaceId, config.mcpProxyMode, identity);
|
|
@@ -482,6 +511,17 @@ export class McpGovernanceProxy {
|
|
|
482
511
|
getSessionState() {
|
|
483
512
|
return this.session;
|
|
484
513
|
}
|
|
514
|
+
/**
|
|
515
|
+
* The chaos hooks for `handleHarnessLine`, bound to this proxy's response
|
|
516
|
+
* path and `pending` map; undefined without a plan. Shared by stdio mode
|
|
517
|
+
* and `remoteBridge.ts` for the same reason `getInterceptor` is.
|
|
518
|
+
*/
|
|
519
|
+
chaosHooks(pending) {
|
|
520
|
+
const injector = this.chaos;
|
|
521
|
+
if (!injector)
|
|
522
|
+
return undefined;
|
|
523
|
+
return { injector, respond: (line) => void this.handleServerLine(line, pending) };
|
|
524
|
+
}
|
|
485
525
|
/**
|
|
486
526
|
* Start the policy client's background refresh timer. Exposed alongside
|
|
487
527
|
* `stopPolicy` so `remoteBridge.ts` can drive the same policy lifecycle
|
|
@@ -545,25 +585,15 @@ export class McpGovernanceProxy {
|
|
|
545
585
|
const workspaceId = this.config.workspaceId;
|
|
546
586
|
const callControlPlane = (path) => readControlPlane(cpUrl, apiKey, workspaceId, path);
|
|
547
587
|
// Tool: intutic_governance_status
|
|
548
|
-
server.tool('intutic_governance_status', 'Returns the
|
|
549
|
-
const
|
|
550
|
-
const status = health.ok
|
|
551
|
-
? { connected: true, controlPlane: cpUrl, workspaceId, ...health.data }
|
|
552
|
-
: {
|
|
553
|
-
connected: false,
|
|
554
|
-
controlPlane: cpUrl,
|
|
555
|
-
workspaceId,
|
|
556
|
-
error: health.reason === 'forbidden'
|
|
557
|
-
? 'Control plane rejected this API key'
|
|
558
|
-
: 'Control plane unreachable',
|
|
559
|
-
};
|
|
588
|
+
server.tool('intutic_governance_status', 'Returns whether the Intutic control plane is reachable and accepts this API key, for this workspace.', {}, async () => {
|
|
589
|
+
const status = await governanceStatus(cpUrl, apiKey, workspaceId);
|
|
560
590
|
return {
|
|
561
591
|
content: [{ type: 'text', text: JSON.stringify(status, null, 2) }],
|
|
562
592
|
};
|
|
563
593
|
});
|
|
564
594
|
// Tool: intutic_list_sops
|
|
565
|
-
server.tool('intutic_list_sops', 'Lists Standard Operating Procedures (SOPs)
|
|
566
|
-
const result = await callControlPlane(
|
|
595
|
+
server.tool('intutic_list_sops', 'Lists the Standard Operating Procedures (SOPs) in force in this workspace: the VALIDATED ones.', { limit: z.number().int().min(1).max(50).default(10).describe('Number of SOPs to return (1–50)') }, async ({ limit }) => {
|
|
596
|
+
const result = await callControlPlane(sopListPath(workspaceId, limit));
|
|
567
597
|
const text = result.ok
|
|
568
598
|
? JSON.stringify(result.data, null, 2)
|
|
569
599
|
: describeFailure(result, 'list SOPs');
|
|
@@ -666,7 +696,15 @@ export class McpGovernanceProxy {
|
|
|
666
696
|
// Results are redacted with the workspace's PII detector actions too —
|
|
667
697
|
// a resources/read answer can arrive before any tools/call set them.
|
|
668
698
|
setWorkspacePii(this.policy.getPiiDetectors());
|
|
669
|
-
|
|
699
|
+
// A chaos plan's response-side faults rewrite the upstream line first,
|
|
700
|
+
// so every check below inspects the faulted response.
|
|
701
|
+
let chaosToolCall;
|
|
702
|
+
if (this.chaos) {
|
|
703
|
+
const faulted = this.chaos.faultServerLine(rawLine, pending);
|
|
704
|
+
rawLine = faulted.line;
|
|
705
|
+
chaosToolCall = faulted.toolCall;
|
|
706
|
+
}
|
|
707
|
+
const outcome = processServerLine(rawLine, pending, this.policy.getAllowedTools(), this.policy.getToolDescriptionOverrides(), injectionAction, this.policy.getInjectionPatterns(), this.policy.getRegistry()?.disabledTools[this.config.serverName] ?? [], this.policy.isOpaque());
|
|
670
708
|
if (outcome.injectionFindings) {
|
|
671
709
|
for (const finding of outcome.injectionFindings) {
|
|
672
710
|
const severity = injectionSeverity(finding.patterns, finding.source);
|
|
@@ -696,6 +734,8 @@ export class McpGovernanceProxy {
|
|
|
696
734
|
}
|
|
697
735
|
}
|
|
698
736
|
}
|
|
737
|
+
if (chaosToolCall !== undefined)
|
|
738
|
+
this.chaos?.recordToolCall(chaosToolCall, outcome.line);
|
|
699
739
|
if (outcome.redactedTool) {
|
|
700
740
|
log.warn({
|
|
701
741
|
action: 'result_redacted',
|
|
@@ -742,7 +782,9 @@ export class McpGovernanceProxy {
|
|
|
742
782
|
const serverName = this.config.serverName;
|
|
743
783
|
let tofu;
|
|
744
784
|
try {
|
|
745
|
-
|
|
785
|
+
// Pinned over the server's own definitions; the curated list is read
|
|
786
|
+
// only to migrate a pin taken over it by an earlier version.
|
|
787
|
+
tofu = await checkTofu(this.config.workspaceId, serverName, outcome.toolsListPinned ?? outcome.toolsListTools, outcome.toolsListTools);
|
|
746
788
|
}
|
|
747
789
|
catch (err) {
|
|
748
790
|
// Pin storage I/O failed (disk full, permissions, ~/.intutic
|
|
@@ -753,7 +795,7 @@ export class McpGovernanceProxy {
|
|
|
753
795
|
if (!this.interceptor.failOpen) {
|
|
754
796
|
writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, `TOFU pin check for MCP server "${serverName}" failed (could not read/write ` +
|
|
755
797
|
`~/.intutic/mcp-pins/). Blocked by workspace policy (fail-closed mode). ` +
|
|
756
|
-
`Contact your administrator or update mcpProxyFailBehavior to open.`, { code: 'TOFU_UNAVAILABLE', ruleId: 'mcpProxyFailBehavior' }));
|
|
798
|
+
`Contact your administrator or update mcpProxyFailBehavior to open.`, { code: 'TOFU_UNAVAILABLE', ruleId: 'mcpProxyFailBehavior' }, this.interceptor.opaque));
|
|
757
799
|
return;
|
|
758
800
|
}
|
|
759
801
|
process.stdout.write(outcome.line + '\n');
|
|
@@ -764,7 +806,7 @@ export class McpGovernanceProxy {
|
|
|
764
806
|
// the mismatch even in fail-open mode, where `action.block` is false.
|
|
765
807
|
// 'skipped' (no tools declared) deliberately leaves the session's
|
|
766
808
|
// cached flag untouched; see SessionState.setToolContractChanged's doc.
|
|
767
|
-
if (tofu.status === 'first_contact' || tofu.status === 'match') {
|
|
809
|
+
if (tofu.status === 'first_contact' || tofu.status === 'match' || tofu.status === 'repinned') {
|
|
768
810
|
this.session.setToolContractChanged(false);
|
|
769
811
|
}
|
|
770
812
|
else if (tofu.status === 'mismatch') {
|
|
@@ -773,6 +815,27 @@ export class McpGovernanceProxy {
|
|
|
773
815
|
if (tofu.status === 'first_contact') {
|
|
774
816
|
log.info({ action: 'tofu_first_contact', serverName, fingerprint: tofu.fingerprint }, 'MCP server tool definitions pinned on first contact');
|
|
775
817
|
}
|
|
818
|
+
else if (tofu.status === 'repinned') {
|
|
819
|
+
const fields = {
|
|
820
|
+
action: 'tofu_repinned',
|
|
821
|
+
serverName,
|
|
822
|
+
previousFingerprint: tofu.previousFingerprint,
|
|
823
|
+
fingerprint: tofu.fingerprint,
|
|
824
|
+
verified: tofu.verified,
|
|
825
|
+
};
|
|
826
|
+
if (tofu.verified) {
|
|
827
|
+
log.info(fields, 'MCP server pin moved to the upstream definitions; the old pin still matched');
|
|
828
|
+
}
|
|
829
|
+
else {
|
|
830
|
+
log.warn(fields, 'MCP server pin moved to the upstream definitions; the old pin, taken over the curated list, no longer ' +
|
|
831
|
+
'matched it, and cannot tell a curation change from a server change');
|
|
832
|
+
}
|
|
833
|
+
// Visible, never blocking: a LOW finding with both fingerprints when
|
|
834
|
+
// the old pin did not match; nothing when it did.
|
|
835
|
+
const report = tofuReport(tofu, serverName, false);
|
|
836
|
+
if (report)
|
|
837
|
+
this.emitter.emit('mcp_server_definition_changed', serverName, undefined, report.reason, report.finding);
|
|
838
|
+
}
|
|
776
839
|
else if (tofu.status === 'mismatch') {
|
|
777
840
|
const action = decideTofuAction(tofu, serverName, this.interceptor.failOpen);
|
|
778
841
|
const reason = action.reason ?? 'MCP server tool definitions changed since first pinned.';
|
|
@@ -783,9 +846,10 @@ export class McpGovernanceProxy {
|
|
|
783
846
|
fingerprint: tofu.fingerprint,
|
|
784
847
|
blocked: action.block,
|
|
785
848
|
}, reason);
|
|
786
|
-
|
|
849
|
+
const report = tofuReport(tofu, serverName, action.block, reason);
|
|
850
|
+
this.emitter.emit('mcp_server_definition_changed', serverName, undefined, reason, report?.finding);
|
|
787
851
|
if (action.block) {
|
|
788
|
-
writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, reason, { code: 'TOOL_DEFINITIONS_CHANGED', ruleId: `tofu.${serverName}` }));
|
|
852
|
+
writeFrame(buildBlockResponse(outcome.toolsListMsgId ?? null, reason, { code: 'TOOL_DEFINITIONS_CHANGED', ruleId: `tofu.${serverName}` }, this.interceptor.opaque));
|
|
789
853
|
return;
|
|
790
854
|
}
|
|
791
855
|
}
|
|
@@ -840,10 +904,11 @@ export class McpGovernanceProxy {
|
|
|
840
904
|
// remoteBridge.ts's remote bridge mode — only `forward` differs: here it
|
|
841
905
|
// writes to the spawned child process's stdin.
|
|
842
906
|
const rl = node_readline.createInterface({ input: process.stdin, terminal: false });
|
|
907
|
+
const chaosHooks = this.chaosHooks(pending);
|
|
843
908
|
rl.on('line', (line) => {
|
|
844
909
|
handleHarnessLine(line, pending, this.interceptor, (l) => {
|
|
845
910
|
realServer.stdin.write(l + '\n');
|
|
846
|
-
}, this.session);
|
|
911
|
+
}, this.session, chaosHooks);
|
|
847
912
|
});
|
|
848
913
|
rl.on('close', () => {
|
|
849
914
|
log.info({ action: 'stdin_closed' }, 'Harness stdin closed — shutting down');
|