@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scenario-schema-validator.js","sourceRoot":"","sources":["../../src/pipeline/scenario-schema-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,12 +2,18 @@
|
|
|
2
2
|
* Tool Annotator -- LLM-driven classification of MCP tool capabilities.
|
|
3
3
|
*
|
|
4
4
|
* Given a set of MCP tool schemas from a server, the annotator uses an LLM
|
|
5
|
-
* to classify each tool's
|
|
6
|
-
*
|
|
7
|
-
* reach runtime.
|
|
5
|
+
* to classify each tool's argument roles. Results are processed in batches
|
|
6
|
+
* with Zod schema validation and repair loops to ensure correctness.
|
|
8
7
|
*/
|
|
9
8
|
import type { LanguageModel } from 'ai';
|
|
10
9
|
import type { StoredToolAnnotation } from './types.js';
|
|
10
|
+
/** Default number of tools per LLM call. */
|
|
11
|
+
export declare const ANNOTATION_BATCH_SIZE = 25;
|
|
12
|
+
/**
|
|
13
|
+
* Splits an array into chunks of at most `size` elements.
|
|
14
|
+
* Returns the original array (wrapped) if it fits in one chunk.
|
|
15
|
+
*/
|
|
16
|
+
export declare function chunk<T>(items: T[], size: number): T[][];
|
|
11
17
|
export interface MCPToolSchema {
|
|
12
18
|
name: string;
|
|
13
19
|
description?: string;
|
|
@@ -17,8 +23,3 @@ export interface MCPToolSchema {
|
|
|
17
23
|
export declare function buildRoleDescriptions(serverName?: string): string;
|
|
18
24
|
export declare function buildAnnotationPrompt(serverName: string, tools: MCPToolSchema[]): string;
|
|
19
25
|
export declare function annotateTools(serverName: string, tools: MCPToolSchema[], llm: LanguageModel, onProgress?: (message: string) => void): Promise<StoredToolAnnotation[]>;
|
|
20
|
-
export interface HeuristicValidationResult {
|
|
21
|
-
valid: boolean;
|
|
22
|
-
warnings: string[];
|
|
23
|
-
}
|
|
24
|
-
export declare function validateAnnotationsHeuristic(tools: MCPToolSchema[], annotations: StoredToolAnnotation[]): HeuristicValidationResult;
|
|
@@ -2,13 +2,29 @@
|
|
|
2
2
|
* Tool Annotator -- LLM-driven classification of MCP tool capabilities.
|
|
3
3
|
*
|
|
4
4
|
* Given a set of MCP tool schemas from a server, the annotator uses an LLM
|
|
5
|
-
* to classify each tool's
|
|
6
|
-
*
|
|
7
|
-
* reach runtime.
|
|
5
|
+
* to classify each tool's argument roles. Results are processed in batches
|
|
6
|
+
* with Zod schema validation and repair loops to ensure correctness.
|
|
8
7
|
*/
|
|
9
8
|
import { z } from 'zod';
|
|
10
|
-
import { ARGUMENT_ROLE_REGISTRY,
|
|
9
|
+
import { ARGUMENT_ROLE_REGISTRY, getRolesForServer, isConditionalRoles, } from '../types/argument-roles.js';
|
|
11
10
|
import { generateObjectWithRepair } from './generate-with-repair.js';
|
|
11
|
+
/** Default number of tools per LLM call. */
|
|
12
|
+
export const ANNOTATION_BATCH_SIZE = 25;
|
|
13
|
+
/**
|
|
14
|
+
* Splits an array into chunks of at most `size` elements.
|
|
15
|
+
* Returns the original array (wrapped) if it fits in one chunk.
|
|
16
|
+
*/
|
|
17
|
+
export function chunk(items, size) {
|
|
18
|
+
if (size <= 0)
|
|
19
|
+
throw new RangeError(`chunk size must be positive, got ${size}`);
|
|
20
|
+
if (items.length <= size)
|
|
21
|
+
return [items];
|
|
22
|
+
const result = [];
|
|
23
|
+
for (let i = 0; i < items.length; i += size) {
|
|
24
|
+
result.push(items.slice(i, i + size));
|
|
25
|
+
}
|
|
26
|
+
return result;
|
|
27
|
+
}
|
|
12
28
|
function buildAnnotationsResponseSchema(serverName, tools) {
|
|
13
29
|
const toolNames = tools.map((t) => t.name);
|
|
14
30
|
// Build a per-server role enum so the schema rejects irrelevant roles
|
|
@@ -54,7 +70,6 @@ function buildAnnotationsResponseSchema(serverName, tools) {
|
|
|
54
70
|
const toolAnnotationSchema = z.object({
|
|
55
71
|
toolName: z.enum(toolNames),
|
|
56
72
|
comment: z.string(),
|
|
57
|
-
sideEffects: z.boolean(),
|
|
58
73
|
args: z.record(z.string(), argumentRoleSpecSchema),
|
|
59
74
|
});
|
|
60
75
|
return z.object({
|
|
@@ -116,12 +131,7 @@ export function buildAnnotationPrompt(serverName, tools) {
|
|
|
116
131
|
|
|
117
132
|
1. **comment**: A brief one-sentence description of what the tool does.
|
|
118
133
|
|
|
119
|
-
2. **
|
|
120
|
-
- true if the tool modifies state OR can disclose information from resource paths (information disclosure is a security-relevant side effect)
|
|
121
|
-
- false ONLY if the tool has NO path arguments AND makes no state changes (e.g., a pure configuration query tool)
|
|
122
|
-
- When in doubt, mark as true (conservative)
|
|
123
|
-
|
|
124
|
-
3. **args**: For each argument in the tool's input schema, assign an ARRAY of one or more roles:
|
|
134
|
+
2. **args**: For each argument in the tool's input schema, assign an ARRAY of one or more roles:
|
|
125
135
|
${buildRoleDescriptions(serverName)}
|
|
126
136
|
|
|
127
137
|
IMPORTANT: Each value in the args object MUST be an ARRAY of roles, even for single roles.
|
|
@@ -137,7 +147,6 @@ Here is a complete example annotation for a move_file tool that shows multi-role
|
|
|
137
147
|
{
|
|
138
148
|
"toolName": "move_file",
|
|
139
149
|
"comment": "Moves or renames a file or directory from a source path to a destination path in a single operation.",
|
|
140
|
-
"sideEffects": true,
|
|
141
150
|
"args": {
|
|
142
151
|
"source": ["read-path", "delete-path"],
|
|
143
152
|
"destination": ["write-path"]
|
|
@@ -218,93 +227,37 @@ Return annotations for ALL ${tools.length} tools. Use the exact tool names as pr
|
|
|
218
227
|
export async function annotateTools(serverName, tools, llm, onProgress) {
|
|
219
228
|
if (tools.length === 0)
|
|
220
229
|
return [];
|
|
221
|
-
const
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
230
|
+
const batches = chunk(tools, ANNOTATION_BATCH_SIZE);
|
|
231
|
+
const allAnnotations = [];
|
|
232
|
+
for (let i = 0; i < batches.length; i++) {
|
|
233
|
+
const batch = batches[i];
|
|
234
|
+
if (batches.length > 1) {
|
|
235
|
+
onProgress?.(`Batch ${i + 1}/${batches.length} (${batch.length} tools)`);
|
|
236
|
+
}
|
|
237
|
+
const schema = buildAnnotationsResponseSchema(serverName, batch);
|
|
238
|
+
const prompt = buildAnnotationPrompt(serverName, batch);
|
|
239
|
+
const { output } = await generateObjectWithRepair({
|
|
240
|
+
model: llm,
|
|
241
|
+
schema,
|
|
242
|
+
prompt,
|
|
243
|
+
onProgress: batches.length > 1 ? (msg) => onProgress?.(`Batch ${i + 1}/${batches.length}: ${msg}`) : onProgress,
|
|
244
|
+
});
|
|
245
|
+
// Build a lookup from tool name to inputSchema for this batch
|
|
246
|
+
const schemaByName = new Map(batch.map((t) => [t.name, t.inputSchema]));
|
|
247
|
+
const batchAnnotations = output.annotations.map((a) => ({
|
|
248
|
+
...a,
|
|
249
|
+
serverName,
|
|
250
|
+
inputSchema: schemaByName.get(a.toolName) ?? { type: 'object' },
|
|
251
|
+
}));
|
|
252
|
+
allAnnotations.push(...batchAnnotations);
|
|
253
|
+
}
|
|
254
|
+
// Validate all input tools are represented across all batches
|
|
255
|
+
const annotatedNames = new Set(allAnnotations.map((a) => a.toolName));
|
|
235
256
|
const missingTools = tools.filter((t) => !annotatedNames.has(t.name));
|
|
236
257
|
if (missingTools.length > 0) {
|
|
237
258
|
const names = missingTools.map((t) => t.name).join(', ');
|
|
238
259
|
throw new Error(`Annotation incomplete: missing tools: ${names}`);
|
|
239
260
|
}
|
|
240
|
-
return
|
|
241
|
-
}
|
|
242
|
-
// -----------------------------------------------------------------------
|
|
243
|
-
// Compile-time heuristic validation
|
|
244
|
-
// -----------------------------------------------------------------------
|
|
245
|
-
/** Argument names that strongly suggest filesystem path arguments. */
|
|
246
|
-
const PATH_INDICATOR_NAMES = ['path', 'file', 'dir', 'directory', 'source', 'destination'];
|
|
247
|
-
function looksLikePathArgument(argName) {
|
|
248
|
-
const lower = argName.toLowerCase();
|
|
249
|
-
return PATH_INDICATOR_NAMES.some((indicator) => lower.includes(indicator));
|
|
250
|
-
}
|
|
251
|
-
function hasPathLikeValues(schema) {
|
|
252
|
-
const properties = schema['properties'];
|
|
253
|
-
if (!properties)
|
|
254
|
-
return false;
|
|
255
|
-
for (const prop of Object.values(properties)) {
|
|
256
|
-
const defaultVal = prop['default'];
|
|
257
|
-
if (typeof defaultVal === 'string' && (defaultVal.startsWith('/') || defaultVal.startsWith('.'))) {
|
|
258
|
-
return true;
|
|
259
|
-
}
|
|
260
|
-
const examples = prop['examples'];
|
|
261
|
-
if (Array.isArray(examples)) {
|
|
262
|
-
for (const ex of examples) {
|
|
263
|
-
if (typeof ex === 'string' && (ex.startsWith('/') || ex.startsWith('.'))) {
|
|
264
|
-
return true;
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
}
|
|
268
|
-
}
|
|
269
|
-
return false;
|
|
270
|
-
}
|
|
271
|
-
export function validateAnnotationsHeuristic(tools, annotations) {
|
|
272
|
-
const annotationsByName = new Map();
|
|
273
|
-
for (const a of annotations) {
|
|
274
|
-
annotationsByName.set(a.toolName, a);
|
|
275
|
-
}
|
|
276
|
-
const warnings = [];
|
|
277
|
-
for (const tool of tools) {
|
|
278
|
-
const annotation = annotationsByName.get(tool.name);
|
|
279
|
-
if (!annotation) {
|
|
280
|
-
warnings.push(`Tool "${tool.name}" has no annotation`);
|
|
281
|
-
continue;
|
|
282
|
-
}
|
|
283
|
-
const properties = (tool.inputSchema['properties'] ?? {});
|
|
284
|
-
for (const [argName, argSchema] of Object.entries(properties)) {
|
|
285
|
-
if (!looksLikePathArgument(argName))
|
|
286
|
-
continue;
|
|
287
|
-
// Skip non-string arguments (booleans, enums, numbers named "directories" etc.)
|
|
288
|
-
const argType = argSchema['type'];
|
|
289
|
-
if (argType === 'boolean' || argType === 'number' || argType === 'integer')
|
|
290
|
-
continue;
|
|
291
|
-
const roles = argName in annotation.args ? extractDefaultRoles(annotation.args[argName]) : undefined;
|
|
292
|
-
const hasPathRole = roles && roles.some((r) => getRoleDefinition(r).isResourceIdentifier);
|
|
293
|
-
if (!hasPathRole) {
|
|
294
|
-
warnings.push(`Tool "${tool.name}" argument "${argName}" looks like a path but has no path role in annotation`);
|
|
295
|
-
}
|
|
296
|
-
}
|
|
297
|
-
// Check for path-like default values or examples
|
|
298
|
-
if (hasPathLikeValues(tool.inputSchema)) {
|
|
299
|
-
const hasAnyPathRole = Object.values(annotation.args).some((spec) => extractDefaultRoles(spec).some((r) => getRoleDefinition(r).isResourceIdentifier));
|
|
300
|
-
if (!hasAnyPathRole) {
|
|
301
|
-
warnings.push(`Tool "${tool.name}" schema has path-like defaults/examples but no path roles in annotation`);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
}
|
|
305
|
-
return {
|
|
306
|
-
valid: warnings.length === 0,
|
|
307
|
-
warnings,
|
|
308
|
-
};
|
|
261
|
+
return allAnnotations;
|
|
309
262
|
}
|
|
310
263
|
//# sourceMappingURL=tool-annotator.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-annotator.js","sourceRoot":"","sources":["../../src/pipeline/tool-annotator.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"tool-annotator.js","sourceRoot":"","sources":["../../src/pipeline/tool-annotator.ts"],"names":[],"mappings":"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"}
|
package/dist/pipeline/types.d.ts
CHANGED
|
@@ -15,7 +15,6 @@ export interface ToolAnnotation {
|
|
|
15
15
|
toolName: string;
|
|
16
16
|
serverName: string;
|
|
17
17
|
comment: string;
|
|
18
|
-
sideEffects: boolean;
|
|
19
18
|
args: Record<string, ArgumentRole[]>;
|
|
20
19
|
}
|
|
21
20
|
export interface ToolAnnotationsFile {
|
|
@@ -66,6 +65,8 @@ export type ArgumentRoleSpec = ArgumentRole[] | ConditionalRoles;
|
|
|
66
65
|
*/
|
|
67
66
|
export interface StoredToolAnnotation extends Omit<ToolAnnotation, 'args'> {
|
|
68
67
|
args: Record<string, ArgumentRoleSpec>;
|
|
68
|
+
/** JSON Schema for the tool's input, captured from the MCP server at annotation time. */
|
|
69
|
+
inputSchema: Record<string, unknown>;
|
|
69
70
|
}
|
|
70
71
|
/**
|
|
71
72
|
* The tool-annotations.json file format.
|
|
@@ -94,7 +95,6 @@ export interface CompiledRuleCondition {
|
|
|
94
95
|
roles?: ArgumentRole[];
|
|
95
96
|
server?: string[];
|
|
96
97
|
tool?: string[];
|
|
97
|
-
sideEffects?: boolean;
|
|
98
98
|
paths?: PathCondition;
|
|
99
99
|
domains?: DomainCondition;
|
|
100
100
|
/** Non-domain list conditions (emails, identifiers). */
|
|
@@ -187,6 +187,18 @@ export interface CompiledPolicyFile {
|
|
|
187
187
|
/** List definitions emitted by the compiler. Empty if no dynamic lists needed. */
|
|
188
188
|
listDefinitions?: ListDefinition[];
|
|
189
189
|
}
|
|
190
|
+
/**
|
|
191
|
+
* Per-server compiled policy artifact.
|
|
192
|
+
* Written to generated/servers/{serverName}/compiled-policy.json.
|
|
193
|
+
*/
|
|
194
|
+
export interface ServerCompiledPolicyFile {
|
|
195
|
+
readonly generatedAt: string;
|
|
196
|
+
readonly serverName: string;
|
|
197
|
+
readonly constitutionHash: string;
|
|
198
|
+
readonly inputHash: string;
|
|
199
|
+
readonly rules: CompiledRule[];
|
|
200
|
+
readonly listDefinitions?: ListDefinition[];
|
|
201
|
+
}
|
|
190
202
|
/**
|
|
191
203
|
* Expected decision for a test scenario.
|
|
192
204
|
* 'not-allow' means any non-allow decision (deny or escalate) is acceptable.
|
|
@@ -257,28 +269,6 @@ export interface ScenarioCorrection {
|
|
|
257
269
|
correctedDecision: Decision;
|
|
258
270
|
correctedReasoning: string;
|
|
259
271
|
}
|
|
260
|
-
/**
|
|
261
|
-
* Feedback from the verify-repair loop that should be communicated
|
|
262
|
-
* to the scenario generator on its next turn. Each field is optional;
|
|
263
|
-
* only the feedback that applies to the current repair iteration is set.
|
|
264
|
-
*/
|
|
265
|
-
export interface ScenarioFeedback {
|
|
266
|
-
/**
|
|
267
|
-
* Scenarios whose expectations were corrected by the verifier judge.
|
|
268
|
-
* The generator should avoid reproducing the original (wrong) expectations.
|
|
269
|
-
*/
|
|
270
|
-
readonly corrections: ReadonlyArray<ScenarioCorrection>;
|
|
271
|
-
/**
|
|
272
|
-
* Scenarios discarded because they conflict with structural invariants.
|
|
273
|
-
* The generator should not regenerate scenarios with the same tool+args+expectation.
|
|
274
|
-
*/
|
|
275
|
-
readonly discardedScenarios: ReadonlyArray<DiscardedScenario>;
|
|
276
|
-
/**
|
|
277
|
-
* Probe scenarios generated by the verifier that revealed coverage gaps.
|
|
278
|
-
* The generator can use these as hints for what areas need better coverage.
|
|
279
|
-
*/
|
|
280
|
-
readonly probeScenarios: ReadonlyArray<TestScenario>;
|
|
281
|
-
}
|
|
282
272
|
export interface RepairContext {
|
|
283
273
|
failedScenarios: ExecutionResult[];
|
|
284
274
|
judgeAnalysis: string;
|
|
@@ -286,3 +276,20 @@ export interface RepairContext {
|
|
|
286
276
|
existingListDefinitions?: ListDefinition[];
|
|
287
277
|
handwrittenScenarios?: TestScenario[];
|
|
288
278
|
}
|
|
279
|
+
export type RulePatchOp = {
|
|
280
|
+
op: 'update';
|
|
281
|
+
ruleName: string;
|
|
282
|
+
rule: CompiledRule;
|
|
283
|
+
} | {
|
|
284
|
+
op: 'add';
|
|
285
|
+
afterRule?: string;
|
|
286
|
+
rule: CompiledRule;
|
|
287
|
+
} | {
|
|
288
|
+
op: 'delete';
|
|
289
|
+
ruleName: string;
|
|
290
|
+
};
|
|
291
|
+
export interface RulePatch {
|
|
292
|
+
reasoning: string;
|
|
293
|
+
operations: RulePatchOp[];
|
|
294
|
+
listDefinitions?: ListDefinition[];
|
|
295
|
+
}
|
package/dist/sandbox/index.d.ts
CHANGED
|
@@ -9,11 +9,26 @@
|
|
|
9
9
|
import '@utcp/mcp';
|
|
10
10
|
import type { IronCurtainConfig } from '../config/types.js';
|
|
11
11
|
/**
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* split on first dot (manual name), join remaining parts with underscores.
|
|
12
|
+
* Mirrors UTCP Code Mode's sanitizeIdentifier() behavior — the property name
|
|
13
|
+
* that UTCP actually creates on `global.tools` in the V8 isolate.
|
|
15
14
|
*
|
|
16
|
-
* Example: "
|
|
15
|
+
* Example: "tools.filesystem.read_file" → "tools.filesystem_read_file"
|
|
16
|
+
*/
|
|
17
|
+
export declare function toUtcpCallable(toolName: string): string;
|
|
18
|
+
/**
|
|
19
|
+
* Transforms a UTCP tool name (dotted) into the user-facing callable name
|
|
20
|
+
* with server-namespace prefix stripping.
|
|
21
|
+
*
|
|
22
|
+
* For 3+ segment names (tools.<server>.<tool>):
|
|
23
|
+
* - Extract server and tool segments
|
|
24
|
+
* - If tool starts with `serverName_`, strip that prefix
|
|
25
|
+
* - Return `server.strippedTool`
|
|
26
|
+
*
|
|
27
|
+
* Examples:
|
|
28
|
+
* "tools.filesystem.read_file" → "filesystem.read_file"
|
|
29
|
+
* "tools.git.git_add" → "git.add"
|
|
30
|
+
* "tools.memory.memory_context" → "memory.context"
|
|
31
|
+
* "tools.a.b.c" → "a.b_c"
|
|
17
32
|
*/
|
|
18
33
|
export declare function toCallableName(toolName: string): string;
|
|
19
34
|
/**
|
|
@@ -51,16 +66,17 @@ export declare function buildHelpSnippet(helpData: HelpData): string;
|
|
|
51
66
|
export declare class Sandbox {
|
|
52
67
|
private client;
|
|
53
68
|
private toolCatalog;
|
|
54
|
-
private
|
|
55
|
-
private helpSnippet;
|
|
69
|
+
private preamble;
|
|
56
70
|
private helpData;
|
|
57
71
|
initialize(config: IronCurtainConfig): Promise<void>;
|
|
58
72
|
/**
|
|
59
|
-
* Builds the tool catalog, the __getToolInterface patch,
|
|
73
|
+
* Builds the tool catalog, the __getToolInterface patch, namespace alias
|
|
74
|
+
* snippet, and help data in one pass.
|
|
60
75
|
*
|
|
61
|
-
* The catalog is a compact one-line-per-tool listing using callable names.
|
|
62
|
-
* The patch snippet maps callable names back to raw UTCP
|
|
63
|
-
* __getToolInterface works with
|
|
76
|
+
* The catalog is a compact one-line-per-tool listing using new callable names.
|
|
77
|
+
* The patch snippet maps both new and old callable names back to raw UTCP
|
|
78
|
+
* names so that __getToolInterface works with any naming convention.
|
|
79
|
+
* The alias snippet creates server-namespace globals so the new names work.
|
|
64
80
|
* The help data groups tools by server for progressive disclosure.
|
|
65
81
|
*/
|
|
66
82
|
private buildToolCatalogAndPatch;
|