@provos/ironcurtain 0.6.0 → 0.7.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.
Files changed (235) hide show
  1. package/README.md +29 -86
  2. package/dist/cli-help.d.ts +63 -0
  3. package/dist/cli-help.js +102 -0
  4. package/dist/cli-help.js.map +1 -0
  5. package/dist/cli.js +79 -56
  6. package/dist/cli.js.map +1 -1
  7. package/dist/config/config-command.js +136 -2
  8. package/dist/config/config-command.js.map +1 -1
  9. package/dist/config/constitution-readonly.md +21 -0
  10. package/dist/config/generated/tool-annotations.json +487 -338
  11. package/dist/config/generated-readonly/compiled-policy.json +468 -0
  12. package/dist/config/index.d.ts +21 -1
  13. package/dist/config/index.js +12 -4
  14. package/dist/config/index.js.map +1 -1
  15. package/dist/config/mcp-servers.json +2 -8
  16. package/dist/config/paths.d.ts +47 -0
  17. package/dist/config/paths.js +81 -0
  18. package/dist/config/paths.js.map +1 -1
  19. package/dist/config/tool-description-hints.json +15 -0
  20. package/dist/config/types.d.ts +7 -0
  21. package/dist/config/user-config.d.ts +21 -0
  22. package/dist/config/user-config.js +8 -0
  23. package/dist/config/user-config.js.map +1 -1
  24. package/dist/cron/compile-task-policy.d.ts +17 -0
  25. package/dist/cron/compile-task-policy.js +39 -0
  26. package/dist/cron/compile-task-policy.js.map +1 -0
  27. package/dist/cron/constitution-generator.d.ts +60 -0
  28. package/dist/cron/constitution-generator.js +217 -0
  29. package/dist/cron/constitution-generator.js.map +1 -0
  30. package/dist/cron/cron-scheduler.d.ts +65 -0
  31. package/dist/cron/cron-scheduler.js +184 -0
  32. package/dist/cron/cron-scheduler.js.map +1 -0
  33. package/dist/cron/file-lock.d.ts +41 -0
  34. package/dist/cron/file-lock.js +156 -0
  35. package/dist/cron/file-lock.js.map +1 -0
  36. package/dist/cron/format-utils.d.ts +18 -0
  37. package/dist/cron/format-utils.js +145 -0
  38. package/dist/cron/format-utils.js.map +1 -0
  39. package/dist/cron/git-sync.d.ts +22 -0
  40. package/dist/cron/git-sync.js +121 -0
  41. package/dist/cron/git-sync.js.map +1 -0
  42. package/dist/cron/headless-transport.d.ts +27 -0
  43. package/dist/cron/headless-transport.js +43 -0
  44. package/dist/cron/headless-transport.js.map +1 -0
  45. package/dist/cron/job-commands.d.ts +39 -0
  46. package/dist/cron/job-commands.js +585 -0
  47. package/dist/cron/job-commands.js.map +1 -0
  48. package/dist/cron/job-customizer.d.ts +22 -0
  49. package/dist/cron/job-customizer.js +47 -0
  50. package/dist/cron/job-customizer.js.map +1 -0
  51. package/dist/cron/job-store.d.ts +35 -0
  52. package/dist/cron/job-store.js +111 -0
  53. package/dist/cron/job-store.js.map +1 -0
  54. package/dist/cron/types.d.ts +135 -0
  55. package/dist/cron/types.js +22 -0
  56. package/dist/cron/types.js.map +1 -0
  57. package/dist/daemon/control-socket.d.ts +127 -0
  58. package/dist/daemon/control-socket.js +261 -0
  59. package/dist/daemon/control-socket.js.map +1 -0
  60. package/dist/daemon/daemon-command.d.ts +13 -0
  61. package/dist/daemon/daemon-command.js +230 -0
  62. package/dist/daemon/daemon-command.js.map +1 -0
  63. package/dist/daemon/ironcurtain-daemon.d.ts +90 -0
  64. package/dist/daemon/ironcurtain-daemon.js +550 -0
  65. package/dist/daemon/ironcurtain-daemon.js.map +1 -0
  66. package/dist/docker/adapters/claude-code.js +7 -47
  67. package/dist/docker/adapters/claude-code.js.map +1 -1
  68. package/dist/docker/adapters/goose.d.ts +58 -0
  69. package/dist/docker/adapters/goose.js +250 -0
  70. package/dist/docker/adapters/goose.js.map +1 -0
  71. package/dist/docker/adapters/shared-scripts.d.ts +29 -0
  72. package/dist/docker/adapters/shared-scripts.js +80 -0
  73. package/dist/docker/adapters/shared-scripts.js.map +1 -0
  74. package/dist/docker/agent-adapter.d.ts +12 -0
  75. package/dist/docker/agent-adapter.js.map +1 -1
  76. package/dist/docker/agent-registry.d.ts +6 -1
  77. package/dist/docker/agent-registry.js +10 -1
  78. package/dist/docker/agent-registry.js.map +1 -1
  79. package/dist/docker/docker-agent-session.d.ts +2 -25
  80. package/dist/docker/docker-agent-session.js +7 -106
  81. package/dist/docker/docker-agent-session.js.map +1 -1
  82. package/dist/docker/docker-infrastructure.d.ts +8 -0
  83. package/dist/docker/docker-infrastructure.js +12 -11
  84. package/dist/docker/docker-infrastructure.js.map +1 -1
  85. package/dist/docker/mitm-proxy.js +10 -5
  86. package/dist/docker/mitm-proxy.js.map +1 -1
  87. package/dist/docker/oauth-credentials.js +2 -2
  88. package/dist/docker/oauth-credentials.js.map +1 -1
  89. package/dist/docker/pty-session.js +146 -39
  90. package/dist/docker/pty-session.js.map +1 -1
  91. package/dist/escalation/escalation-watcher.d.ts +2 -0
  92. package/dist/escalation/escalation-watcher.js +3 -0
  93. package/dist/escalation/escalation-watcher.js.map +1 -1
  94. package/dist/escalation/session-registry.js +1 -14
  95. package/dist/escalation/session-registry.js.map +1 -1
  96. package/dist/index.js +43 -5
  97. package/dist/index.js.map +1 -1
  98. package/dist/mux/mux-app.js +11 -6
  99. package/dist/mux/mux-app.js.map +1 -1
  100. package/dist/mux/mux-command.js +49 -10
  101. package/dist/mux/mux-command.js.map +1 -1
  102. package/dist/mux/mux-input-handler.d.ts +5 -0
  103. package/dist/mux/mux-input-handler.js +64 -9
  104. package/dist/mux/mux-input-handler.js.map +1 -1
  105. package/dist/mux/mux-renderer.d.ts +20 -0
  106. package/dist/mux/mux-renderer.js +127 -35
  107. package/dist/mux/mux-renderer.js.map +1 -1
  108. package/dist/mux/mux-splash.js +2 -1
  109. package/dist/mux/mux-splash.js.map +1 -1
  110. package/dist/mux/paste-interceptor.d.ts +22 -0
  111. package/dist/mux/paste-interceptor.js +143 -0
  112. package/dist/mux/paste-interceptor.js.map +1 -0
  113. package/dist/mux/pty-bridge.js +1 -1
  114. package/dist/mux/pty-bridge.js.map +1 -1
  115. package/dist/mux/types.d.ts +8 -1
  116. package/dist/mux/types.js +17 -5
  117. package/dist/mux/types.js.map +1 -1
  118. package/dist/persona/compile-persona-policy.d.ts +21 -0
  119. package/dist/persona/compile-persona-policy.js +50 -0
  120. package/dist/persona/compile-persona-policy.js.map +1 -0
  121. package/dist/persona/persona-command.d.ts +9 -0
  122. package/dist/persona/persona-command.js +479 -0
  123. package/dist/persona/persona-command.js.map +1 -0
  124. package/dist/persona/persona-customizer.d.ts +23 -0
  125. package/dist/persona/persona-customizer.js +52 -0
  126. package/dist/persona/persona-customizer.js.map +1 -0
  127. package/dist/persona/persona-prompt.d.ts +19 -0
  128. package/dist/persona/persona-prompt.js +42 -0
  129. package/dist/persona/persona-prompt.js.map +1 -0
  130. package/dist/persona/resolve.d.ts +46 -0
  131. package/dist/persona/resolve.js +108 -0
  132. package/dist/persona/resolve.js.map +1 -0
  133. package/dist/persona/types.d.ts +40 -0
  134. package/dist/persona/types.js +20 -0
  135. package/dist/persona/types.js.map +1 -0
  136. package/dist/pipeline/annotate.js +10 -4
  137. package/dist/pipeline/annotate.js.map +1 -1
  138. package/dist/pipeline/compile.d.ts +14 -31
  139. package/dist/pipeline/compile.js +50 -563
  140. package/dist/pipeline/compile.js.map +1 -1
  141. package/dist/pipeline/constitution-compiler.d.ts +6 -0
  142. package/dist/pipeline/constitution-compiler.js +42 -6
  143. package/dist/pipeline/constitution-compiler.js.map +1 -1
  144. package/dist/pipeline/constitution-customizer.d.ts +3 -0
  145. package/dist/pipeline/constitution-customizer.js +19 -5
  146. package/dist/pipeline/constitution-customizer.js.map +1 -1
  147. package/dist/pipeline/customizer-loop.d.ts +34 -0
  148. package/dist/pipeline/customizer-loop.js +167 -0
  149. package/dist/pipeline/customizer-loop.js.map +1 -0
  150. package/dist/pipeline/mcp-connections.d.ts +16 -0
  151. package/dist/pipeline/mcp-connections.js +61 -0
  152. package/dist/pipeline/mcp-connections.js.map +1 -0
  153. package/dist/pipeline/pipeline-runner.d.ts +86 -0
  154. package/dist/pipeline/pipeline-runner.js +547 -0
  155. package/dist/pipeline/pipeline-runner.js.map +1 -0
  156. package/dist/pipeline/pipeline-shared.d.ts +37 -3
  157. package/dist/pipeline/pipeline-shared.js +77 -16
  158. package/dist/pipeline/pipeline-shared.js.map +1 -1
  159. package/dist/pipeline/refresh-lists.js +38 -12
  160. package/dist/pipeline/refresh-lists.js.map +1 -1
  161. package/dist/pipeline/scenario-generator.js +2 -1
  162. package/dist/pipeline/scenario-generator.js.map +1 -1
  163. package/dist/pipeline/tool-annotator.d.ts +3 -3
  164. package/dist/pipeline/tool-annotator.js +114 -4
  165. package/dist/pipeline/tool-annotator.js.map +1 -1
  166. package/dist/pipeline/types.d.ts +52 -0
  167. package/dist/sandbox/index.js +36 -1
  168. package/dist/sandbox/index.js.map +1 -1
  169. package/dist/session/agent-session.d.ts +3 -0
  170. package/dist/session/agent-session.js +10 -1
  171. package/dist/session/agent-session.js.map +1 -1
  172. package/dist/session/index.d.ts +10 -0
  173. package/dist/session/index.js +134 -12
  174. package/dist/session/index.js.map +1 -1
  175. package/dist/session/preflight.js +26 -6
  176. package/dist/session/preflight.js.map +1 -1
  177. package/dist/session/prompts.d.ts +14 -0
  178. package/dist/session/prompts.js +39 -2
  179. package/dist/session/prompts.js.map +1 -1
  180. package/dist/session/session-manager.d.ts +105 -0
  181. package/dist/session/session-manager.js +134 -0
  182. package/dist/session/session-manager.js.map +1 -0
  183. package/dist/session/session-metadata.d.ts +18 -0
  184. package/dist/session/session-metadata.js +34 -0
  185. package/dist/session/session-metadata.js.map +1 -0
  186. package/dist/session/types.d.ts +47 -0
  187. package/dist/session/workspace-validation.d.ts +2 -0
  188. package/dist/session/workspace-validation.js +6 -5
  189. package/dist/session/workspace-validation.js.map +1 -1
  190. package/dist/signal/bot-command.d.ts +2 -0
  191. package/dist/signal/bot-command.js +8 -0
  192. package/dist/signal/bot-command.js.map +1 -1
  193. package/dist/signal/format.d.ts +27 -0
  194. package/dist/signal/format.js +59 -0
  195. package/dist/signal/format.js.map +1 -1
  196. package/dist/signal/signal-bot-daemon.d.ts +27 -25
  197. package/dist/signal/signal-bot-daemon.js +153 -135
  198. package/dist/signal/signal-bot-daemon.js.map +1 -1
  199. package/dist/signal/signal-container.js +63 -19
  200. package/dist/signal/signal-container.js.map +1 -1
  201. package/dist/signal/signal-transport.js +3 -8
  202. package/dist/signal/signal-transport.js.map +1 -1
  203. package/dist/trusted-process/domain-utils.d.ts +37 -4
  204. package/dist/trusted-process/domain-utils.js +130 -11
  205. package/dist/trusted-process/domain-utils.js.map +1 -1
  206. package/dist/trusted-process/index.js +6 -2
  207. package/dist/trusted-process/index.js.map +1 -1
  208. package/dist/trusted-process/mcp-client-manager.js +11 -5
  209. package/dist/trusted-process/mcp-client-manager.js.map +1 -1
  210. package/dist/trusted-process/mcp-proxy-server.d.ts +21 -0
  211. package/dist/trusted-process/mcp-proxy-server.js +91 -28
  212. package/dist/trusted-process/mcp-proxy-server.js.map +1 -1
  213. package/dist/trusted-process/permissive-output-validator.d.ts +23 -0
  214. package/dist/trusted-process/permissive-output-validator.js +10 -0
  215. package/dist/trusted-process/permissive-output-validator.js.map +1 -0
  216. package/dist/trusted-process/policy-engine.d.ts +29 -7
  217. package/dist/trusted-process/policy-engine.js +149 -92
  218. package/dist/trusted-process/policy-engine.js.map +1 -1
  219. package/dist/trusted-process/tool-description-hints.d.ts +19 -0
  220. package/dist/trusted-process/tool-description-hints.js +53 -0
  221. package/dist/trusted-process/tool-description-hints.js.map +1 -0
  222. package/dist/types/argument-roles.d.ts +33 -1
  223. package/dist/types/argument-roles.js +129 -1
  224. package/dist/types/argument-roles.js.map +1 -1
  225. package/dist/types/slug.d.ts +7 -0
  226. package/dist/types/slug.js +14 -0
  227. package/dist/types/slug.js.map +1 -0
  228. package/dist/utils/editor.d.ts +24 -0
  229. package/dist/utils/editor.js +66 -0
  230. package/dist/utils/editor.js.map +1 -0
  231. package/docker/Dockerfile.goose +34 -0
  232. package/docker/entrypoint-goose.sh +30 -0
  233. package/package.json +1 -1
  234. package/src/config/generated/tool-annotations.json +487 -338
  235. package/src/config/mcp-servers.json +2 -8
@@ -12,30 +12,9 @@
12
12
  * The most restrictive result wins: deny > escalate > allow.
13
13
  * Roles already resolved by sandbox containment are skipped.
14
14
  */
15
- import { getPathRoles, getUrlRoles, getRoleDefinition, resolveRealPath, SANDBOX_SAFE_PATH_ROLES, } from '../types/argument-roles.js';
16
- import { domainMatchesAllowlist, isIpAddress, resolveGitRemote, extractDomainForRole } from './domain-utils.js';
15
+ import { getPathRoles, getUrlRoles, getRoleDefinition, resolveRealPath, resolveStoredAnnotation, SANDBOX_SAFE_PATH_ROLES, } from '../types/argument-roles.js';
16
+ import { domainMatchesAllowlist, isIpAddress, resolveGitRemote, resolveDefaultGitRemote, extractDomainForRole, } from './domain-utils.js';
17
17
  import { getListMatcher } from '../pipeline/dynamic-list-types.js';
18
- /**
19
- * Heuristically extracts filesystem paths from tool call arguments.
20
- * Any string value starting with '/', '.', or '~' is treated as a path.
21
- * Handles both single string values and arrays of strings.
22
- */
23
- function extractPathsHeuristic(args) {
24
- const paths = [];
25
- for (const value of Object.values(args)) {
26
- if (typeof value === 'string' && (value.startsWith('/') || value.startsWith('.') || value.startsWith('~'))) {
27
- paths.push(value);
28
- }
29
- else if (Array.isArray(value)) {
30
- for (const item of value) {
31
- if (typeof item === 'string' && (item.startsWith('/') || item.startsWith('.') || item.startsWith('~'))) {
32
- paths.push(item);
33
- }
34
- }
35
- }
36
- }
37
- return paths;
38
- }
39
18
  /**
40
19
  * Extracts string values from arguments based on annotation roles.
41
20
  * Only returns values for arguments whose annotated roles intersect
@@ -239,6 +218,16 @@ function expandListReferences(policy, lists) {
239
218
  });
240
219
  return { ...policy, rules: expandedRules };
241
220
  }
221
+ /** Sentinel result returned when no rule matches (default-deny). */
222
+ const DEFAULT_DENY_RESULT = Object.freeze({
223
+ decision: 'deny',
224
+ rule: 'default-deny',
225
+ reason: 'No matching policy rule -- denied by default',
226
+ });
227
+ /** Converts a matched compiled rule into an EvaluationResult. */
228
+ function ruleToResult(rule) {
229
+ return { decision: rule.then, rule: rule.name, reason: rule.reason };
230
+ }
242
231
  export class PolicyEngine {
243
232
  annotationMap;
244
233
  compiledPolicy;
@@ -264,17 +253,97 @@ export class PolicyEngine {
264
253
  }
265
254
  return map;
266
255
  }
267
- /** Returns the annotation for a tool, or undefined if unknown. */
268
- getAnnotation(serverName, toolName) {
256
+ /**
257
+ * Returns the resolved annotation for a specific tool call,
258
+ * with conditional role specs evaluated against the call arguments.
259
+ * Returns undefined for unknown tools.
260
+ */
261
+ getAnnotation(serverName, toolName, callArgs) {
262
+ const stored = this.annotationMap.get(`${serverName}__${toolName}`);
263
+ if (!stored)
264
+ return undefined;
265
+ return resolveStoredAnnotation(stored, callArgs);
266
+ }
267
+ /**
268
+ * Returns the stored (unresolved) annotation for a tool.
269
+ * Conditional role specs are not evaluated.
270
+ * Used by pipeline stages that need the raw conditional structure.
271
+ */
272
+ getStoredAnnotation(serverName, toolName) {
269
273
  return this.annotationMap.get(`${serverName}__${toolName}`);
270
274
  }
271
275
  evaluate(request) {
272
- // Structural checks (may resolve some roles via sandbox containment)
273
- const structural = this.evaluateStructuralInvariants(request);
276
+ // Resolve conditional roles once against the actual tool call arguments.
277
+ // After this point, `annotation` has the standard shape: args: Record<string, ArgumentRole[]>
278
+ const annotation = this.getAnnotation(request.serverName, request.toolName, request.arguments);
279
+ // Structural checks first (protected-path deny, sandbox containment).
280
+ // Git enrichment runs AFTER structural invariants so that protected-path
281
+ // checks and sandbox containment are evaluated on the raw request before
282
+ // any filesystem access (git config reads) occurs.
283
+ const structural = this.evaluateStructuralInvariants(request, annotation);
274
284
  if (structural.decision)
275
285
  return structural.decision;
286
+ // Git remote enrichment: when a git push/pull/fetch omits the remote arg,
287
+ // resolve the repo's configured default remote URL from the filesystem so
288
+ // the domain gate and compiled domains conditions can evaluate it.
289
+ // Safe to run now: structural checks have confirmed paths are within sandbox.
290
+ const effectiveRequest = this.enrichGitRequest(request, annotation);
276
291
  // Compiled rule evaluation (skipping sandbox-resolved roles)
277
- return this.evaluateCompiledRules(request, structural.sandboxResolvedRoles);
292
+ return this.evaluateCompiledRules(effectiveRequest, structural.sandboxResolvedRoles, annotation);
293
+ }
294
+ /**
295
+ * Enriches a git tool call by resolving absent git-remote-url arguments
296
+ * to the repository's default remote URL.
297
+ *
298
+ * When an agent calls git_push/git_pull/git_fetch without an explicit
299
+ * remote, git uses the branch's configured upstream (or 'origin'). This
300
+ * method makes that implicit remote explicit so URL-aware policy checks
301
+ * (the structural domain gate and compiled domains conditions) fire correctly.
302
+ *
303
+ * Only applies to the 'git' server. No-ops when the remote arg is already
304
+ * present, when resolution fails, or when there is no annotation.
305
+ */
306
+ enrichGitRequest(request, annotation) {
307
+ if (request.serverName !== 'git' || !annotation)
308
+ return request;
309
+ // Collect git-remote-url annotated args whose value is absent or empty.
310
+ const missingUrlArgNames = [];
311
+ for (const [argName, roles] of Object.entries(annotation.args)) {
312
+ if (!roles.includes('git-remote-url'))
313
+ continue;
314
+ const value = request.arguments[argName];
315
+ const isAbsent = !(argName in request.arguments) || value === null || value === undefined || value === '';
316
+ if (isAbsent)
317
+ missingUrlArgNames.push(argName);
318
+ }
319
+ if (missingUrlArgNames.length === 0)
320
+ return request;
321
+ // Only attempt enrichment when a valid path is provided. Falling back to
322
+ // '.' would resolve the default remote from the trusted process working
323
+ // directory, which may point at an unrelated repository.
324
+ if (typeof request.arguments.path !== 'string')
325
+ return request;
326
+ // Gate on sandbox containment: only read git config from repos inside the
327
+ // allowed directory. Without this, an attacker-controlled path could trigger
328
+ // filesystem reads from arbitrary locations in the trusted process.
329
+ if (this.allowedDirectory) {
330
+ try {
331
+ const realPath = resolveRealPath(request.arguments.path);
332
+ if (!isWithinDirectory(realPath, this.allowedDirectory))
333
+ return request;
334
+ }
335
+ catch {
336
+ return request; // path doesn't exist or can't be resolved
337
+ }
338
+ }
339
+ const resolvedUrl = resolveDefaultGitRemote(request.arguments.path);
340
+ if (resolvedUrl === undefined)
341
+ return request;
342
+ const enrichedArgs = { ...request.arguments };
343
+ for (const argName of missingUrlArgNames) {
344
+ enrichedArgs[argName] = resolvedUrl;
345
+ }
346
+ return { ...request, arguments: enrichedArgs };
278
347
  }
279
348
  /**
280
349
  * Hardcoded structural invariants.
@@ -285,20 +354,14 @@ export class PolicyEngine {
285
354
  * 3. Untrusted domain gate for url-category roles (escalate)
286
355
  * 4. Unknown tool denial (deny)
287
356
  *
288
- * Uses the union of heuristic and annotation-based path extraction
289
- * for defense-in-depth. Returns a StructuralResult with either a
290
- * final decision or a set of roles resolved by sandbox containment.
357
+ * Returns a StructuralResult with either a final decision or a set
358
+ * of roles resolved by sandbox containment.
291
359
  */
292
- evaluateStructuralInvariants(request) {
293
- // Extract paths using both methods for defense-in-depth
294
- const heuristicPaths = extractPathsHeuristic(request.arguments);
295
- const annotation = this.annotationMap.get(`${request.serverName}__${request.toolName}`);
360
+ evaluateStructuralInvariants(request, annotation) {
296
361
  // Protected path check and sandbox containment use path-category roles only (not URL roles)
297
362
  const pathRoles = getPathRoles();
298
363
  const annotatedPaths = annotation ? extractAnnotatedPaths(request.arguments, annotation, pathRoles) : [];
299
- // Union of both extraction methods, deduplicated
300
- const allPaths = [...new Set([...heuristicPaths, ...annotatedPaths])];
301
- const resolvedPaths = allPaths.map((p) => resolveRealPath(p));
364
+ const resolvedPaths = annotatedPaths.map((p) => resolveRealPath(p));
302
365
  // Protected path check -- any match is an immediate deny.
303
366
  for (const rp of resolvedPaths) {
304
367
  if (isProtectedPath(rp, this.protectedPaths, this.protectedPathExclusions)) {
@@ -326,17 +389,13 @@ export class PolicyEngine {
326
389
  }
327
390
  // Filesystem sandbox containment (path-category roles)
328
391
  //
329
- // The sandbox auto-allow decision uses annotated paths when annotations
330
- // exist (not heuristic paths). An arg annotated as 'none' should not
331
- // grant sandbox containment even if the value looks like a path.
332
- // Heuristic paths are only used for defense-in-depth on the deny side
333
- // (protected path check).
334
- //
335
- // Only SANDBOX_SAFE_PATH_ROLES (read-path, write-path, delete-path) can
336
- // be auto-resolved by sandbox containment. Higher-risk path roles like
337
- // write-history and delete-history always fall through to compiled rule evaluation.
392
+ // Only SANDBOX_SAFE_PATH_ROLES (read-path, write-path, delete-path,
393
+ // write-history, delete-history) can be auto-resolved by sandbox containment.
394
+ // Rationale: if the agent can freely read/write/delete files in the sandbox,
395
+ // it can already manipulate .git/ contents directly, so history roles within
396
+ // the sandbox add no additional risk.
338
397
  const sandboxResolvedRoles = new Set();
339
- const resolvedSandboxPaths = annotation ? annotatedPaths.map((p) => resolveRealPath(p)) : resolvedPaths;
398
+ const resolvedSandboxPaths = resolvedPaths;
340
399
  // Extract URL args once for use in both sandbox containment (fast-path guard) and untrusted domain gate
341
400
  const urlArgs = annotation ? extractAnnotatedUrls(request.arguments, annotation, getUrlRoles()) : [];
342
401
  // Determine if the tool has any non-sandbox-safe path roles
@@ -346,13 +405,14 @@ export class PolicyEngine {
346
405
  : false;
347
406
  if (this.allowedDirectory && resolvedSandboxPaths.length > 0) {
348
407
  const sandboxDir = this.allowedDirectory;
349
- // Sandbox containment is only a structural allow for filesystem operations.
350
- // For other servers, paths are locators (e.g. "which repo dir") — the
351
- // operation itself needs compiled-rule evaluation regardless of path location.
352
408
  const isFilesystem = request.serverName === 'filesystem';
353
- // Fast path: all annotated paths within sandbox -> auto-allow (filesystem only)
354
- // Only fires when ALL path roles are sandbox-safe and no URL roles need checking
409
+ const isGit = request.serverName === 'git';
355
410
  const allWithinSandbox = resolvedSandboxPaths.every((rp) => isWithinDirectory(rp, sandboxDir));
411
+ // Fast path: all paths within sandbox, all roles sandbox-safe, no URL roles
412
+ // → auto-allow without compiled rule evaluation.
413
+ // Applies only to the filesystem server. Git operations can have
414
+ // non-filesystem side effects (e.g., network, credentials), so they must
415
+ // always pass through compiled-rule evaluation.
356
416
  if (isFilesystem && allWithinSandbox && urlArgs.length === 0 && !toolHasUnsafePathRoles) {
357
417
  return finalDecision({
358
418
  decision: 'allow',
@@ -360,11 +420,15 @@ export class PolicyEngine {
360
420
  reason: `All paths are within the sandbox directory: ${sandboxDir}`,
361
421
  });
362
422
  }
363
- // Partial sandbox resolution (filesystem only): check each path role
364
- // independently. A role is "sandbox-resolved" if every path for that
365
- // role is within the sandbox. Only sandbox-safe roles can be resolved.
366
- // Roles with zero extracted paths are not resolved.
367
- if (isFilesystem && annotation) {
423
+ // Partial sandbox resolution: check each path role independently.
424
+ // A role is "sandbox-resolved" if every path for that role is within the
425
+ // sandbox, removing it from compiled-rule evaluation. Remaining roles
426
+ // (e.g., git-remote-url) still run through compiled rules.
427
+ //
428
+ // Applied to filesystem and git. For git tools with URL roles
429
+ // (e.g., git_clone with write-path + git-remote-url), the path role is
430
+ // sandbox-resolved while the URL role goes to compiled rules independently.
431
+ if ((isFilesystem || isGit) && annotation) {
368
432
  for (const role of pathRoles) {
369
433
  if (!SANDBOX_SAFE_PATH_ROLES.has(role))
370
434
  continue;
@@ -393,7 +457,21 @@ export class PolicyEngine {
393
457
  // to block structurally." URL roles are NOT marked as resolved;
394
458
  // compiled rules still evaluate the operation (e.g. "escalate all git push").
395
459
  }
396
- // If no allowlist, URL roles are not structurally restricted -- fall through to compiled rule evaluation
460
+ // KNOWN GAP: when no allowlist is configured for a server (e.g. the git
461
+ // server's allowedDomains is currently disabled — see mcp-servers.json
462
+ // _comment — due to a Linux SSH/sandbox-runtime limitation), the
463
+ // structural domain gate does not fire. In that case, compiled "allow"
464
+ // rules without a URL/domain constraint (e.g. allow-git-push-default-remote,
465
+ // allow-git-fetch-no-remote) will match even when an explicit unauthorized
466
+ // remote URL is supplied, because the rule was designed as a no-remote
467
+ // fallback but has no condition to distinguish the two cases.
468
+ //
469
+ // The correct long-term fix is Option A (skip no-constraint allow rules
470
+ // when concrete URL values are present during URL-role evaluation).
471
+ // Option C (structural gate) is the intended primary defense here, but
472
+ // requires allowedDomains to be configured. Until the sandbox-runtime
473
+ // SSH issue is resolved and allowedDomains can be re-enabled for the git
474
+ // server, this gap exists. See Issue 2 in the policy engine design notes.
397
475
  }
398
476
  // Unknown tool denial
399
477
  if (!annotation) {
@@ -416,8 +494,7 @@ export class PolicyEngine {
416
494
  * For tools with no roles (e.g., list_allowed_directories), the chain is
417
495
  * evaluated once without role filtering.
418
496
  */
419
- evaluateCompiledRules(request, sandboxResolvedRoles) {
420
- const annotation = this.annotationMap.get(`${request.serverName}__${request.toolName}`);
497
+ evaluateCompiledRules(request, sandboxResolvedRoles, annotation) {
421
498
  if (!annotation) {
422
499
  throw new Error(`Missing annotation for ${request.serverName}/${request.toolName} in compiled rule evaluation`);
423
500
  }
@@ -458,18 +535,10 @@ export class PolicyEngine {
458
535
  evaluateRulesUnscoped(request, annotation) {
459
536
  for (const rule of this.compiledPolicy.rules) {
460
537
  if (this.ruleMatches(rule, request, annotation)) {
461
- return {
462
- decision: rule.then,
463
- rule: rule.name,
464
- reason: rule.reason,
465
- };
538
+ return ruleToResult(rule);
466
539
  }
467
540
  }
468
- return {
469
- decision: 'deny',
470
- rule: 'default-deny',
471
- reason: 'No matching policy rule -- denied by default',
472
- };
541
+ return DEFAULT_DENY_RESULT;
473
542
  }
474
543
  /**
475
544
  * Evaluates the rule chain for a single role.
@@ -495,18 +564,10 @@ export class PolicyEngine {
495
564
  continue;
496
565
  }
497
566
  if (this.ruleMatches(rule, request, annotation, evaluatingRole)) {
498
- return {
499
- decision: rule.then,
500
- rule: rule.name,
501
- reason: rule.reason,
502
- };
567
+ return ruleToResult(rule);
503
568
  }
504
569
  }
505
- return {
506
- decision: 'deny',
507
- rule: 'default-deny',
508
- reason: 'No matching policy rule -- denied by default',
509
- };
570
+ return DEFAULT_DENY_RESULT;
510
571
  }
511
572
  /**
512
573
  * Per-element path evaluation for roles with multiple paths.
@@ -548,22 +609,14 @@ export class PolicyEngine {
548
609
  // Discharge matched paths and record decision
549
610
  for (const p of matched)
550
611
  remainingPaths.delete(p);
551
- const result = {
552
- decision: rule.then,
553
- rule: rule.name,
554
- reason: rule.reason,
555
- };
612
+ const result = ruleToResult(rule);
556
613
  if (!mostRestrictive || DECISION_SEVERITY[result.decision] > DECISION_SEVERITY[mostRestrictive.decision]) {
557
614
  mostRestrictive = result;
558
615
  }
559
616
  }
560
617
  // Any undischarged paths -> default-deny
561
618
  if (remainingPaths.size > 0) {
562
- return {
563
- decision: 'deny',
564
- rule: 'default-deny',
565
- reason: 'No matching policy rule -- denied by default',
566
- };
619
+ return DEFAULT_DENY_RESULT;
567
620
  }
568
621
  if (!mostRestrictive) {
569
622
  throw new Error('unreachable: all paths discharged but no result was produced');
@@ -638,7 +691,11 @@ export class PolicyEngine {
638
691
  // Check lists conditions (non-domain list matching)
639
692
  if (cond.lists !== undefined) {
640
693
  for (const listCond of cond.lists) {
641
- const extractRoles = evaluatingRole ? [evaluatingRole] : listCond.roles;
694
+ // Scope extraction to the evaluating role only when this list condition
695
+ // targets that role. Otherwise use the condition's own roles — this is
696
+ // necessary for multi-identifier rules (e.g. github-owner + github-repo)
697
+ // where each list condition targets a different role.
698
+ const extractRoles = evaluatingRole && listCond.roles.includes(evaluatingRole) ? [evaluatingRole] : listCond.roles;
642
699
  const extractedValues = extractAnnotatedPaths(request.arguments, annotation, extractRoles);
643
700
  // Zero values extracted = condition not satisfied, rule does not match
644
701
  if (extractedValues.length === 0)
@@ -1 +1 @@
1
- {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../src/trusted-process/policy-engine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"policy-engine.js","sourceRoot":"","sources":["../../src/trusted-process/policy-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Loads tool description hints from a JSON config file and applies them
3
+ * to proxied tool descriptions before exposing tools to agents.
4
+ *
5
+ * Hints help agents use MCP tool parameters correctly — e.g. avoiding
6
+ * CLI flags in structured parameters or remembering required options.
7
+ */
8
+ import type { ProxiedTool } from './mcp-proxy-server.js';
9
+ /**
10
+ * Loads hints from `src/config/tool-description-hints.json` (or its
11
+ * `dist/config/` equivalent). Returns an empty array if the file is
12
+ * missing or malformed.
13
+ */
14
+ export declare function loadToolDescriptionHints(): Map<string, string>;
15
+ /**
16
+ * Returns a new tool list with hints appended to matching tool descriptions.
17
+ * Tools without a matching hint are returned unchanged.
18
+ */
19
+ export declare function applyToolDescriptionHints(tools: ProxiedTool[], hints: Map<string, string>): ProxiedTool[];
@@ -0,0 +1,53 @@
1
+ /**
2
+ * Loads tool description hints from a JSON config file and applies them
3
+ * to proxied tool descriptions before exposing tools to agents.
4
+ *
5
+ * Hints help agents use MCP tool parameters correctly — e.g. avoiding
6
+ * CLI flags in structured parameters or remembering required options.
7
+ */
8
+ import { readFileSync } from 'node:fs';
9
+ import { resolve, dirname } from 'node:path';
10
+ import { fileURLToPath } from 'node:url';
11
+ const __dirname = dirname(fileURLToPath(import.meta.url));
12
+ /**
13
+ * Loads hints from `src/config/tool-description-hints.json` (or its
14
+ * `dist/config/` equivalent). Returns an empty array if the file is
15
+ * missing or malformed.
16
+ */
17
+ export function loadToolDescriptionHints() {
18
+ const hintsPath = resolve(__dirname, '..', 'config', 'tool-description-hints.json');
19
+ try {
20
+ const raw = JSON.parse(readFileSync(hintsPath, 'utf-8'));
21
+ const file = raw;
22
+ if (!Array.isArray(file.hints))
23
+ return new Map();
24
+ const map = new Map();
25
+ for (const h of file.hints) {
26
+ if (typeof h.server === 'string' && typeof h.tool === 'string' && typeof h.hint === 'string') {
27
+ map.set(`${h.server}__${h.tool}`, h.hint);
28
+ }
29
+ }
30
+ return map;
31
+ }
32
+ catch {
33
+ return new Map();
34
+ }
35
+ }
36
+ /**
37
+ * Returns a new tool list with hints appended to matching tool descriptions.
38
+ * Tools without a matching hint are returned unchanged.
39
+ */
40
+ export function applyToolDescriptionHints(tools, hints) {
41
+ if (hints.size === 0)
42
+ return tools;
43
+ return tools.map((t) => {
44
+ const hint = hints.get(`${t.serverName}__${t.name}`);
45
+ if (!hint)
46
+ return t;
47
+ return {
48
+ ...t,
49
+ description: t.description ? `${t.description}\n\n${hint}` : hint,
50
+ };
51
+ });
52
+ }
53
+ //# sourceMappingURL=tool-description-hints.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-description-hints.js","sourceRoot":"","sources":["../../src/trusted-process/tool-description-hints.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAY1D;;;;GAIG;AACH,MAAM,UAAU,wBAAwB;IACtC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE,6BAA6B,CAAC,CAAC;IACpF,IAAI,CAAC;QACH,MAAM,GAAG,GAAY,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,IAAI,GAAG,GAAgB,CAAC;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,OAAO,IAAI,GAAG,EAAE,CAAC;QACjD,MAAM,GAAG,GAAG,IAAI,GAAG,EAAkB,CAAC;QACtC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC3B,IAAI,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;gBAC7F,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QACD,OAAO,GAAG,CAAC;IACb,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,GAAG,EAAE,CAAC;IACnB,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,yBAAyB,CAAC,KAAoB,EAAE,KAA0B;IACxF,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACrB,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,UAAU,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,CAAC;QACpB,OAAO;YACL,GAAG,CAAC;YACJ,WAAW,EAAE,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI;SAClE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC"}
@@ -14,7 +14,7 @@
14
14
  * - opaque: no structural invariant (semantic meaning only)
15
15
  */
16
16
  export type RoleCategory = 'path' | 'url' | 'identifier' | 'opaque';
17
- export type ArgumentRole = 'read-path' | 'write-path' | 'delete-path' | 'write-history' | 'delete-history' | 'fetch-url' | 'git-remote-url' | 'github-owner' | 'branch-name' | 'commit-message' | 'none';
17
+ export type ArgumentRole = 'read-path' | 'write-path' | 'delete-path' | 'write-history' | 'delete-history' | 'fetch-url' | 'git-remote-url' | 'github-owner' | 'github-repo' | 'branch-name' | 'commit-message' | 'none';
18
18
  export interface RoleDefinition {
19
19
  readonly description: string;
20
20
  readonly isResourceIdentifier: boolean;
@@ -86,3 +86,35 @@ export declare function getIdentifierRoles(): ArgumentRole[];
86
86
  * to check for those roles before auto-allowing.
87
87
  */
88
88
  export declare const SANDBOX_SAFE_PATH_ROLES: ReadonlySet<ArgumentRole>;
89
+ import type { ArgumentRoleSpec, ConditionalRoles, StoredToolAnnotation, StoredToolAnnotationsFile, ToolAnnotation, ToolAnnotationsFile } from '../pipeline/types.js';
90
+ /** Type guard: returns true if an ArgumentRoleSpec is a conditional block. */
91
+ export declare function isConditionalRoles(spec: ArgumentRoleSpec): spec is ConditionalRoles;
92
+ /**
93
+ * Extracts the static/default roles from an ArgumentRoleSpec.
94
+ * For static arrays, returns them directly.
95
+ * For conditional specs, returns the default (most-restrictive) roles.
96
+ *
97
+ * Used by pipeline stages that inspect annotations without a tool call context.
98
+ */
99
+ export declare function extractDefaultRoles(spec: ArgumentRoleSpec): ArgumentRole[];
100
+ /**
101
+ * Resolves a StoredToolAnnotation (which may contain conditional role specs)
102
+ * into a plain ToolAnnotation (where all args are ArgumentRole[]).
103
+ *
104
+ * This is the sole boundary where conditionals are evaluated. Every consumer
105
+ * downstream receives a ToolAnnotation with static role arrays.
106
+ *
107
+ * @param stored - The stored annotation (from JSON file / annotation map)
108
+ * @param callArgs - The actual tool call arguments
109
+ * @returns A ToolAnnotation with all conditional specs resolved
110
+ */
111
+ export declare function resolveStoredAnnotation(stored: StoredToolAnnotation, callArgs: Record<string, unknown>): ToolAnnotation;
112
+ /**
113
+ * Resolves an entire StoredToolAnnotationsFile to a plain ToolAnnotationsFile
114
+ * by flattening all conditional role specs to their default roles.
115
+ *
116
+ * This is the correct entry point for the policy compilation pipeline, which
117
+ * never has actual call arguments and should only see the flat ToolAnnotation
118
+ * shape. The policy engine resolves conditionals at evaluation time instead.
119
+ */
120
+ export declare function resolveStoredAnnotationsFile(stored: StoredToolAnnotationsFile): ToolAnnotationsFile;