airlock-bot 0.2.19 → 0.2.20

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 (64) hide show
  1. package/README.md +162 -24
  2. package/dist/backend/cli/adapter.d.ts.map +1 -1
  3. package/dist/backend/cli/adapter.js +7 -1
  4. package/dist/backend/cli/adapter.js.map +1 -1
  5. package/dist/backend/exec-adapter.d.ts.map +1 -1
  6. package/dist/backend/exec-adapter.js +2 -1
  7. package/dist/backend/exec-adapter.js.map +1 -1
  8. package/dist/backend/factory.d.ts.map +1 -1
  9. package/dist/backend/factory.js +3 -2
  10. package/dist/backend/factory.js.map +1 -1
  11. package/dist/backend/mcp-adapter.d.ts +7 -1
  12. package/dist/backend/mcp-adapter.d.ts.map +1 -1
  13. package/dist/backend/mcp-adapter.js +49 -1
  14. package/dist/backend/mcp-adapter.js.map +1 -1
  15. package/dist/config/loader.d.ts.map +1 -1
  16. package/dist/config/loader.js +23 -0
  17. package/dist/config/loader.js.map +1 -1
  18. package/dist/config/schema.d.ts +1518 -16
  19. package/dist/config/schema.d.ts.map +1 -1
  20. package/dist/config/schema.js +151 -3
  21. package/dist/config/schema.js.map +1 -1
  22. package/dist/hitl/engine.d.ts +2 -0
  23. package/dist/hitl/engine.d.ts.map +1 -1
  24. package/dist/hitl/engine.js +2 -0
  25. package/dist/hitl/engine.js.map +1 -1
  26. package/dist/hitl/formatter.d.ts.map +1 -1
  27. package/dist/hitl/formatter.js +17 -1
  28. package/dist/hitl/formatter.js.map +1 -1
  29. package/dist/hitl/providers/tui.d.ts.map +1 -1
  30. package/dist/hitl/providers/tui.js +4 -0
  31. package/dist/hitl/providers/tui.js.map +1 -1
  32. package/dist/hitl/providers/types.d.ts +2 -0
  33. package/dist/hitl/providers/types.d.ts.map +1 -1
  34. package/dist/middleware/chain-builder.d.ts.map +1 -1
  35. package/dist/middleware/chain-builder.js +3 -1
  36. package/dist/middleware/chain-builder.js.map +1 -1
  37. package/dist/middleware/core/execute.d.ts.map +1 -1
  38. package/dist/middleware/core/execute.js +9 -3
  39. package/dist/middleware/core/execute.js.map +1 -1
  40. package/dist/middleware/core/hitl-gate.d.ts.map +1 -1
  41. package/dist/middleware/core/hitl-gate.js +16 -3
  42. package/dist/middleware/core/hitl-gate.js.map +1 -1
  43. package/dist/middleware/core/sandbox.d.ts +3 -0
  44. package/dist/middleware/core/sandbox.d.ts.map +1 -0
  45. package/dist/middleware/core/sandbox.js +15 -0
  46. package/dist/middleware/core/sandbox.js.map +1 -0
  47. package/dist/registry/registry.d.ts +1 -1
  48. package/dist/registry/registry.d.ts.map +1 -1
  49. package/dist/registry/registry.js +36 -18
  50. package/dist/registry/registry.js.map +1 -1
  51. package/dist/sandbox/index.d.ts +39 -0
  52. package/dist/sandbox/index.d.ts.map +1 -0
  53. package/dist/sandbox/index.js +147 -0
  54. package/dist/sandbox/index.js.map +1 -0
  55. package/dist/tools/exec.d.ts +2 -1
  56. package/dist/tools/exec.d.ts.map +1 -1
  57. package/dist/tools/exec.js +5 -2
  58. package/dist/tools/exec.js.map +1 -1
  59. package/dist/types.d.ts +1 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/examples/gateway.yaml +30 -0
  62. package/examples/sandbox-presets.yaml +142 -0
  63. package/package.json +7 -1
  64. package/schema.json +293 -3
package/README.md CHANGED
@@ -6,6 +6,13 @@
6
6
 
7
7
  A permissions-aware MCP gateway that sits between AI agents (Claude Code, Cursor, OpenClaw, etc.) and your downstream tool servers, CLI tools, and REST APIs. Airlock enforces per-agent allowlists, requires human approval for sensitive operations, and keeps a full audit trail of every tool call.
8
8
 
9
+ Documentation now lives in the VitePress docs site under `docs/`.
10
+
11
+ - Run locally: `npm run docs:dev`
12
+ - Build static docs: `npm run docs:build`
13
+ - Preview build: `npm run docs:preview`
14
+ - Read the entry page: `docs/index.md`
15
+
9
16
  ```
10
17
  Agent (Claude Code / Cursor / OpenClaw)
11
18
  │ stdio or SSE
@@ -142,11 +149,11 @@ Reference the output in your config:
142
149
  clis:
143
150
  git:
144
151
  discovered: ./git-commands.yaml
145
- max_output_bytes: 30000 # default matches Claude Code's limit
152
+ max_output_bytes: 30000 # default matches Claude Code's limit
146
153
  commands:
147
154
  # Inline commands override discovered ones with the same name
148
155
  custom-deploy:
149
- exec: "git push origin main"
156
+ exec: 'git push origin main'
150
157
  params: {}
151
158
  ```
152
159
 
@@ -194,9 +201,9 @@ providers:
194
201
  github:
195
202
  type: stdio
196
203
  command: npx
197
- args: ["-y", "@modelcontextprotocol/server-github"]
204
+ args: ['-y', '@modelcontextprotocol/server-github']
198
205
  env:
199
- GITHUB_PERSONAL_ACCESS_TOKEN: "${GITHUB_TOKEN}"
206
+ GITHUB_PERSONAL_ACCESS_TOKEN: '${GITHUB_TOKEN}'
200
207
 
201
208
  exec: builtin
202
209
  http: builtin
@@ -212,7 +219,7 @@ clis:
212
219
  exec: git status
213
220
  params: {}
214
221
  log:
215
- exec: "git log --oneline -n {count}"
222
+ exec: 'git log --oneline -n {count}'
216
223
  params:
217
224
  count:
218
225
  type: number
@@ -249,25 +256,25 @@ agents:
249
256
  helena:
250
257
  extends: [readonly, developer]
251
258
  exec:
252
- allow: ["git status", "git diff*", "npm test*"]
253
- ask: ["git push*"]
254
- deny: ["sudo *", "rm -rf *"]
259
+ allow: ['git status', 'git diff*', 'npm test*']
260
+ ask: ['git push*']
261
+ deny: ['sudo *', 'rm -rf *']
255
262
  env:
256
- PATH: "/usr/local/bin:/usr/bin:/bin"
263
+ PATH: '/usr/local/bin:/usr/bin:/bin'
257
264
  http:
258
- domain_allowlist: ["api.github.com", "*.sentry.io"]
265
+ domain_allowlist: ['api.github.com', '*.sentry.io']
259
266
 
260
267
  claude-code:
261
268
  extends: [readonly]
262
269
  exec:
263
- allow: ["git status", "git diff*", "npm test"]
264
- deny: ["*"]
270
+ allow: ['git status', 'git diff*', 'npm test']
271
+ deny: ['*']
265
272
 
266
273
  approvals:
267
274
  provider:
268
275
  type: telegram
269
- bot_token: "${TELEGRAM_BOT_TOKEN}"
270
- chat_id: "${TELEGRAM_CHAT_ID}"
276
+ bot_token: '${TELEGRAM_BOT_TOKEN}'
277
+ chat_id: '${TELEGRAM_CHAT_ID}'
271
278
  timeout_ms: 300000
272
279
  batch_window_ms: 10000
273
280
  ```
@@ -276,18 +283,149 @@ Precedence: **deny > ask > allow > default-deny**
276
283
 
277
284
  See [`examples/gateway.yaml`](examples/gateway.yaml) for a fully annotated reference config and [`examples/profiles.yaml`](examples/profiles.yaml) for composable profile examples.
278
285
 
286
+ ## Sandbox presets and tool variants
287
+
288
+ Airlock can expose multiple names for the same underlying tool by using `tool_overrides.<name>.alias_of`.
289
+ This is especially useful when you want different approval posture for the same capability:
290
+
291
+ - a tightly sandboxed variant that is safe enough to `allow`
292
+ - a broader variant that still goes through `ask`
293
+
294
+ That pattern helps reduce approval fatigue without giving up higher-power versions of the tool.
295
+
296
+ ### Why use presets?
297
+
298
+ Sandbox config gets repetitive quickly. A typical local-only transform tool wants the same shape every time:
299
+
300
+ - read the repo
301
+ - write only to `/tmp`
302
+ - deny secret directories like `~/.ssh`
303
+ - no outbound network
304
+
305
+ Top-level `sandbox_presets` let you define that once and reuse it across agents and tool variants.
306
+
307
+ ### Example: safe Python fast path + approved full Python
308
+
309
+ ```yaml
310
+ providers:
311
+ exec: builtin
312
+
313
+ sandbox_presets:
314
+ local_transform:
315
+ filesystem:
316
+ allow_read:
317
+ - '.'
318
+ allow_write:
319
+ - '/tmp'
320
+ - '/private/tmp'
321
+ deny_read:
322
+ - '~/.ssh'
323
+ - '~/.aws'
324
+ - '.env'
325
+ deny_write:
326
+ - '.'
327
+ network:
328
+ allowed_domains: []
329
+ denied_domains: []
330
+
331
+ github_only:
332
+ network:
333
+ allowed_domains:
334
+ - 'github.com'
335
+ - '*.github.com'
336
+ - 'api.github.com'
337
+ denied_domains: []
338
+
339
+ agents:
340
+ claude-code:
341
+ allow:
342
+ - 'python/sandboxed'
343
+ ask:
344
+ - 'python/full'
345
+ - 'python/github'
346
+
347
+ sandbox:
348
+ enabled: true
349
+ presets:
350
+ - local_transform
351
+
352
+ tool_overrides:
353
+ python/sandboxed:
354
+ alias_of: 'exec/run'
355
+ description: 'Run Python for local transformations only'
356
+
357
+ python/full:
358
+ alias_of: 'exec/run'
359
+ description: 'Run Python with broader permissions after approval'
360
+ sandbox:
361
+ filesystem:
362
+ allow_write:
363
+ - '.'
364
+ - '/tmp'
365
+ - '/private/tmp'
366
+ deny_write: []
367
+ network:
368
+ allowed_domains:
369
+ - 'pypi.org'
370
+ - '*.pythonhosted.org'
371
+ denied_domains: []
372
+
373
+ python/github:
374
+ alias_of: 'exec/run'
375
+ description: 'Run Python with GitHub-only network access after approval'
376
+ sandbox_presets:
377
+ - github_only
378
+ ```
379
+
380
+ In this example:
381
+
382
+ - `python/sandboxed` inherits the agent's `local_transform` preset and can be broadly allowed
383
+ - `python/full` keeps the same base tool but overrides filesystem and network to be more permissive, so it should stay in `ask`
384
+ - `python/github` reuses the same local transform defaults but adds a reusable GitHub-only network preset
385
+
386
+ ### Preset merge rules
387
+
388
+ Presets are expanded during config parsing.
389
+
390
+ - `sandbox.presets` applies to the whole agent sandbox baseline
391
+ - `tool_overrides.<tool>.sandbox_presets` applies only to that tool variant
392
+ - explicit `sandbox` values on the tool override win over preset values when they conflict
393
+ - deny lists are additive
394
+ - allow lists usually replace the previous value so the tool variant can define a tighter or broader envelope intentionally
395
+
396
+ ### Approval and audit visibility
397
+
398
+ When a tool call requires approval, Airlock includes the resolved sandbox summary in the approval payload and formatter output.
399
+ That means operators can see things like:
400
+
401
+ - which presets were applied
402
+ - whether network is disabled or limited to specific domains
403
+ - where writes are allowed
404
+ - which paths are explicitly denied
405
+
406
+ Audit entries also include the resolved sandbox context alongside the tool arguments, so you can later verify not just what command ran, but under what safety envelope it ran.
407
+
408
+ ### Practical guidance
409
+
410
+ - Use a sandboxed `allow` variant for cheap local work like JSON transforms, parsing, codegen, or text munging
411
+ - Keep networked or repo-writing variants in `ask` until you've smoke-tested the exact runtime you care about
412
+ - Prefer a small number of named presets such as `local_transform`, `github_only`, `npm_registry`, or `readonly_repo`
413
+ - If a tool needs a one-off tweak, put that in the tool override instead of copying a giant sandbox block everywhere
414
+
415
+ See [`examples/sandbox-presets.yaml`](examples/sandbox-presets.yaml) for a fuller example config focused on this pattern.
416
+
279
417
  ## HITL providers
280
418
 
281
- | Provider | Config `type` | Notes |
282
- |----------|--------------|-------|
283
- | TUI | `tui` | Terminal UI on stderr — `[a]pprove` / `[d]eny` with `j/k` navigation via `/dev/tty` |
284
- | macOS dialog | `macos` | Native approve/deny popup via `osascript` — best for local dev on Mac |
285
- | Dashboard | `dashboard` | Localhost web UI (default port 4112) with live SSE updates |
286
- | Telegram bot | `telegram` | Long-polls for replies; reply `approve ABC123` or `deny ABC123` |
287
- | Slack webhook | `slack` | Incoming webhook, fire-and-forget; pair with slash commands for approvals |
288
- | Generic webhook | `webhook` | POSTs `{requests, text}` JSON; configurable headers |
289
- | OpenClaw | `openclaw` | WebSocket RPC to OpenClaw gateway; see [`examples/openclaw-setup.md`](examples/openclaw-setup.md) |
290
- | stdio | `stdio` | Prints to stderr, reads from stdin — for local dev and testing |
419
+ | Provider | Config `type` | Notes |
420
+ | --------------- | ------------- | ------------------------------------------------------------------------------------------------- |
421
+ | TUI | `tui` | Terminal UI on stderr — `[a]pprove` / `[d]eny` with `j/k` navigation via `/dev/tty` |
422
+ | macOS dialog | `macos` | Native approve/deny popup via `osascript` — best for local dev on Mac |
423
+ | Dashboard | `dashboard` | Localhost web UI (default port 4112) with live SSE updates |
424
+ | Telegram bot | `telegram` | Long-polls for replies; reply `approve ABC123` or `deny ABC123` |
425
+ | Slack webhook | `slack` | Incoming webhook, fire-and-forget; pair with slash commands for approvals |
426
+ | Generic webhook | `webhook` | POSTs `{requests, text}` JSON; configurable headers |
427
+ | OpenClaw | `openclaw` | WebSocket RPC to OpenClaw gateway; see [`examples/openclaw-setup.md`](examples/openclaw-setup.md) |
428
+ | stdio | `stdio` | Prints to stderr, reads from stdin — for local dev and testing |
291
429
 
292
430
  ## API
293
431
 
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/backend/cli/adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAM1E,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,iBAAkB,YAAW,cAAc;IAQpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IARhB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;gBAGrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,iBAAiB;IA+B7B,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAUtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA4B7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,OAAO,CAAC,IAAI;IAsEZ,OAAO,CAAC,gBAAgB;CAgCzB"}
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/backend/cli/adapter.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,gBAAgB,CAAC;AAC3D,OAAO,EAAoB,KAAK,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAO1E,MAAM,WAAW,iBAAiB;IAChC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,qBAAa,iBAAkB,YAAW,cAAc;IAQpD,OAAO,CAAC,SAAS;IACjB,OAAO,CAAC,MAAM;IARhB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,QAAQ,CAAmD;IACnE,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,UAAU,CAAC,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAS;gBAGrB,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,EACzB,OAAO,CAAC,EAAE,iBAAiB;IA+B7B,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAUtB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAkC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,OAAO,CAAC,IAAI;IAsEZ,OAAO,CAAC,gBAAgB;CAgCzB"}
@@ -5,6 +5,7 @@ import { z } from 'zod';
5
5
  import { CliCommandConfig } from '../../config/schema.js';
6
6
  import { buildCommand } from './builder.js';
7
7
  import { childLogger } from '../../util/logger.js';
8
+ import { wrapCommandWithSandbox } from '../../sandbox/index.js';
8
9
  const log = childLogger('cli-adapter');
9
10
  export class CliBackendAdapter {
10
11
  configKey;
@@ -72,7 +73,12 @@ export class CliBackendAdapter {
72
73
  }
73
74
  const cwd = cmdConfig.cwd ?? this.defaultCwd;
74
75
  const timeoutMs = cmdConfig.timeout * 1000;
75
- return this.exec(fullCommand, cwd, timeoutMs);
76
+ const sandbox = toolCall.meta?.sandbox;
77
+ // Wrap command with sandbox if config is present
78
+ const effectiveCommand = sandbox
79
+ ? await wrapCommandWithSandbox(fullCommand, sandbox)
80
+ : fullCommand;
81
+ return this.exec(effectiveCommand, cwd, timeoutMs);
76
82
  }
77
83
  async stop() { }
78
84
  exec(command, cwd, timeoutMs = 30000) {
@@ -1 +1 @@
1
- {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/backend/cli/adapter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/backend/cli/adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"exec-adapter.d.ts","sourceRoot":"","sources":["../../src/backend/exec-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,kBAAmB,YAAW,cAAc;IAG3C,OAAO,CAAC,MAAM;IAF1B,QAAQ,CAAC,EAAE,kBAAkB;gBAET,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAEvD,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAItB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA8B7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAC5B"}
1
+ {"version":3,"file":"exec-adapter.d.ts","sourceRoot":"","sources":["../../src/backend/exec-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAExD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAGvD,qBAAa,kBAAmB,YAAW,cAAc;IAG3C,OAAO,CAAC,MAAM;IAF1B,QAAQ,CAAC,EAAE,kBAAkB;gBAET,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC;IAEvD,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAItB,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAgC7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAC5B"}
@@ -22,8 +22,9 @@ export class ExecBackendAdapter {
22
22
  }
23
23
  const cwd = typeof toolCall.args['cwd'] === 'string' ? toolCall.args['cwd'] : undefined;
24
24
  const timeoutMs = typeof toolCall.args['timeout_ms'] === 'number' ? toolCall.args['timeout_ms'] : undefined;
25
+ const sandbox = toolCall.meta?.sandbox;
25
26
  try {
26
- const data = await executeExec(command, agent, cwd, timeoutMs);
27
+ const data = await executeExec(command, agent, cwd, timeoutMs, sandbox);
27
28
  return {
28
29
  success: true,
29
30
  data,
@@ -1 +1 @@
1
- {"version":3,"file":"exec-adapter.js","sourceRoot":"","sources":["../../src/backend/exec-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG9D,MAAM,OAAO,kBAAkB;IAGT;IAFX,EAAE,GAAG,cAAc,CAAC;IAE7B,YAAoB,MAAmC;QAAnC,WAAM,GAAN,MAAM,CAA6B;IAAG,CAAC;IAE3D,SAAS;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QAC5E,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5F,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,CAAC,CAAC;YAC/D,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,KAAmB,CAAC;CAC/B"}
1
+ {"version":3,"file":"exec-adapter.js","sourceRoot":"","sources":["../../src/backend/exec-adapter.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAI9D,MAAM,OAAO,kBAAkB;IAGT;IAFX,EAAE,GAAG,cAAc,CAAC;IAE7B,YAAoB,MAAmC;QAAnC,WAAM,GAAN,MAAM,CAA6B;IAAG,CAAC;IAE3D,SAAS;QACP,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,aAAa,EAAE,CAAC,CAAC,CAAC;IAC5C,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,sBAAsB,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC;QAC1E,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,kBAAkB,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;QACzE,CAAC;QAED,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,OAAO,OAAO,KAAK,QAAQ,EAAE,CAAC;YAChC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,uCAAuC,EAAE,CAAC;QAC5E,CAAC;QACD,MAAM,GAAG,GAAG,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QACxF,MAAM,SAAS,GACb,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAE5F,MAAM,OAAO,GAAG,QAAQ,CAAC,IAAI,EAAE,OAA4C,CAAC;QAE5E,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,WAAW,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;YACxE,OAAO;gBACL,OAAO,EAAE,IAAI;gBACb,IAAI;gBACJ,QAAQ,EAAE,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE;aAC5C,CAAC;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI,KAAmB,CAAC;CAC/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQlD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,EAAE,CA4BhF"}
1
+ {"version":3,"file":"factory.d.ts","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAQlD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,cAAc,EAAE,CA6BhF"}
@@ -3,7 +3,7 @@ import { ExecBackendAdapter } from './exec-adapter.js';
3
3
  import { HttpBackendAdapter } from './http-adapter.js';
4
4
  import { CliBackendAdapter } from './cli/adapter.js';
5
5
  import { OpenApiAdapter } from './openapi/adapter.js';
6
- import { getBuiltinProviders } from '../config/schema.js';
6
+ import { getBuiltinProviders, getMcpConfigs } from '../config/schema.js';
7
7
  /**
8
8
  * Build all BackendAdapter instances from the gateway config.
9
9
  * MCP adapters wrap the existing ClientPool; CLI and API adapters are standalone.
@@ -11,8 +11,9 @@ import { getBuiltinProviders } from '../config/schema.js';
11
11
  export function buildAdapters(config, pool) {
12
12
  const adapters = [];
13
13
  // MCP adapters — one per connected MCP server
14
+ const mcpConfigs = getMcpConfigs(config.providers);
14
15
  for (const mcpId of pool.getMcpIds()) {
15
- adapters.push(new McpBackendAdapter(mcpId, pool));
16
+ adapters.push(new McpBackendAdapter(mcpId, pool, mcpConfigs[mcpId]));
16
17
  }
17
18
  // Builtin adapters
18
19
  const builtins = getBuiltinProviders(config.providers);
@@ -1 +1 @@
1
- {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE1D;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAgB;IAC5D,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,8CAA8C;IAC9C,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;IACpD,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,8CAA8C;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
1
+ {"version":3,"file":"factory.js","sourceRoot":"","sources":["../../src/backend/factory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzE;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,MAAc,EAAE,IAAgB;IAC5D,MAAM,QAAQ,GAAqB,EAAE,CAAC;IAEtC,8CAA8C;IAC9C,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACnD,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,SAAS,EAAE,EAAE,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,KAAK,EAAE,IAAI,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACvE,CAAC;IAED,mBAAmB;IACnB,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IACD,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QACzB,QAAQ,CAAC,IAAI,CAAC,IAAI,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,0CAA0C;IAC1C,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC,CAAC;IACvD,CAAC;IAED,8CAA8C;IAC9C,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC,EAAE,CAAC;QACjE,QAAQ,CAAC,IAAI,CAAC,IAAI,cAAc,CAAC,GAAG,EAAE,SAAS,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC;IACrE,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC"}
@@ -2,13 +2,19 @@ import type { Tool } from '@modelcontextprotocol/sdk/types.js';
2
2
  import type { BackendAdapter } from './types.js';
3
3
  import type { ToolCall, ToolResult } from '../types.js';
4
4
  import type { ClientPool } from '../pool/pool.js';
5
+ import type { McpServerConfig } from '../config/schema.js';
5
6
  export declare class McpBackendAdapter implements BackendAdapter {
6
7
  private mcpId;
7
8
  private pool;
9
+ private serverConfig?;
8
10
  readonly id: string;
9
- constructor(mcpId: string, pool: ClientPool);
11
+ constructor(mcpId: string, pool: ClientPool, serverConfig?: McpServerConfig | undefined);
10
12
  listTools(): Promise<Tool[]>;
11
13
  call(toolCall: ToolCall): Promise<ToolResult>;
14
+ /**
15
+ * Spawn an ephemeral sandboxed MCP server, call the tool, then tear down.
16
+ */
17
+ private callSandboxed;
12
18
  stop(): Promise<void>;
13
19
  }
14
20
  //# sourceMappingURL=mcp-adapter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/backend/mcp-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAElD,qBAAa,iBAAkB,YAAW,cAAc;IAIpD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IAJd,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAGV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU;IAKpB,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAQ5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAiB7C,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
1
+ {"version":3,"file":"mcp-adapter.d.ts","sourceRoot":"","sources":["../../src/backend/mcp-adapter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,oCAAoC,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AACjD,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAO3D,qBAAa,iBAAkB,YAAW,cAAc;IAIpD,OAAO,CAAC,KAAK;IACb,OAAO,CAAC,IAAI;IACZ,OAAO,CAAC,YAAY,CAAC;IALvB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;gBAGV,KAAK,EAAE,MAAM,EACb,IAAI,EAAE,UAAU,EAChB,YAAY,CAAC,EAAE,eAAe,YAAA;IAKlC,SAAS,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAQ5B,IAAI,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IAwBnD;;OAEG;YACW,aAAa;IAyCrB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;CAG5B"}
@@ -1,10 +1,18 @@
1
+ import { Client } from '@modelcontextprotocol/sdk/client/index.js';
2
+ import { StdioClientTransport } from '@modelcontextprotocol/sdk/client/stdio.js';
3
+ import { wrapCommandWithSandbox } from '../sandbox/index.js';
4
+ import { childLogger } from '../util/logger.js';
5
+ import { VERSION } from '../version.js';
6
+ const log = childLogger('mcp-adapter');
1
7
  export class McpBackendAdapter {
2
8
  mcpId;
3
9
  pool;
10
+ serverConfig;
4
11
  id;
5
- constructor(mcpId, pool) {
12
+ constructor(mcpId, pool, serverConfig) {
6
13
  this.mcpId = mcpId;
7
14
  this.pool = pool;
15
+ this.serverConfig = serverConfig;
8
16
  this.id = `mcp:${mcpId}`;
9
17
  }
10
18
  async listTools() {
@@ -23,6 +31,11 @@ export class McpBackendAdapter {
23
31
  };
24
32
  }
25
33
  const originalName = toolCall.tool.slice(prefix.length);
34
+ const sandbox = toolCall.meta?.sandbox;
35
+ // If sandbox config is present and server is stdio, spawn an ephemeral sandboxed instance
36
+ if (sandbox && this.serverConfig?.type === 'stdio') {
37
+ return this.callSandboxed(originalName, toolCall.args, sandbox);
38
+ }
26
39
  try {
27
40
  const data = await this.pool.callTool(this.mcpId, originalName, toolCall.args);
28
41
  return { success: true, data };
@@ -31,6 +44,41 @@ export class McpBackendAdapter {
31
44
  return { success: false, error: err instanceof Error ? err.message : String(err) };
32
45
  }
33
46
  }
47
+ /**
48
+ * Spawn an ephemeral sandboxed MCP server, call the tool, then tear down.
49
+ */
50
+ async callSandboxed(toolName, args, sandbox) {
51
+ if (!this.serverConfig || this.serverConfig.type !== 'stdio') {
52
+ return { success: false, error: 'Sandboxed call requires stdio MCP server config' };
53
+ }
54
+ let transport;
55
+ let client;
56
+ try {
57
+ // Build the full command and wrap with sandbox
58
+ const fullArgs = this.serverConfig.args ?? [];
59
+ const baseCommand = [this.serverConfig.command, ...fullArgs].join(' ');
60
+ const wrappedCommand = await wrapCommandWithSandbox(baseCommand, sandbox);
61
+ // Parse the wrapped command back into command + args for StdioClientTransport
62
+ // The wrapped command is a shell command, so we use sh -c to execute it
63
+ transport = new StdioClientTransport({
64
+ command: '/bin/sh',
65
+ args: ['-c', wrappedCommand],
66
+ env: this.serverConfig.env,
67
+ stderr: 'pipe',
68
+ });
69
+ client = new Client({ name: 'airlock', version: VERSION });
70
+ await client.connect(transport);
71
+ log.info({ mcpId: this.mcpId, toolName }, 'Ephemeral sandboxed MCP connected');
72
+ const data = await client.callTool({ name: toolName, arguments: args });
73
+ return { success: true, data };
74
+ }
75
+ catch (err) {
76
+ return { success: false, error: err instanceof Error ? err.message : String(err) };
77
+ }
78
+ finally {
79
+ await transport?.close().catch(() => { });
80
+ }
81
+ }
34
82
  async stop() {
35
83
  // Pool lifecycle is managed externally
36
84
  }
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/backend/mcp-adapter.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,iBAAiB;IAIlB;IACA;IAJD,EAAE,CAAS;IAEpB,YACU,KAAa,EACb,IAAgB;QADhB,UAAK,GAAL,KAAK,CAAQ;QACb,SAAI,GAAJ,IAAI,CAAY;QAExB,IAAI,CAAC,EAAE,GAAG,OAAO,KAAK,EAAE,CAAC;IAC3B,CAAC;IAED,KAAK,CAAC,SAAS;QACb,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACpD,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACvB,GAAG,CAAC;YACJ,IAAI,EAAE,GAAG,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,EAAE;SAChC,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,IAAI,CAAC,QAAkB;QAC3B,MAAM,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC;QAChC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;YACtC,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE,SAAS,QAAQ,CAAC,IAAI,iCAAiC,IAAI,CAAC,EAAE,GAAG;aACzE,CAAC;QACJ,CAAC;QACD,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QACxD,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC/E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;QACjC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QACrF,CAAC;IACH,CAAC;IAED,KAAK,CAAC,IAAI;QACR,uCAAuC;IACzC,CAAC;CACF"}
1
+ {"version":3,"file":"mcp-adapter.js","sourceRoot":"","sources":["../../src/backend/mcp-adapter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAIjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CAiJjE"}
1
+ {"version":3,"file":"loader.d.ts","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAuB,MAAM,aAAa,CAAC;AAIjE,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAI7B,MAAM,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAEnD,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CA4B/C;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,gBAAgB,EAAE,CA0KjE"}
@@ -39,6 +39,7 @@ export function validateConfig(config) {
39
39
  const providerNames = new Set(Object.keys(config.providers));
40
40
  const builtins = getBuiltinProviders(config.providers);
41
41
  const profileNames = new Set(Object.keys(config.profiles));
42
+ const sandboxPresetNames = new Set(Object.keys(config.sandbox_presets ?? {}));
42
43
  for (const [agentId, agent] of Object.entries(config.agents)) {
43
44
  // Check for unknown profile references
44
45
  for (const ref of agent.extends) {
@@ -51,6 +52,28 @@ export function validateConfig(config) {
51
52
  });
52
53
  }
53
54
  }
55
+ for (const presetName of agent.sandbox.presets) {
56
+ if (!sandboxPresetNames.has(presetName)) {
57
+ diagnostics.push({
58
+ level: 'error',
59
+ agent: agentId,
60
+ message: `sandbox.presets references unknown sandbox preset "${presetName}".`,
61
+ suggestion: `Add "${presetName}" to the top-level sandbox_presets block, or check for typos.`,
62
+ });
63
+ }
64
+ }
65
+ for (const [toolName, override] of Object.entries(agent.tool_overrides)) {
66
+ for (const presetName of override.sandbox_presets ?? []) {
67
+ if (!sandboxPresetNames.has(presetName)) {
68
+ diagnostics.push({
69
+ level: 'error',
70
+ agent: agentId,
71
+ message: `tool_overrides.${toolName}.sandbox_presets references unknown sandbox preset "${presetName}".`,
72
+ suggestion: `Add "${presetName}" to the top-level sandbox_presets block, or check for typos.`,
73
+ });
74
+ }
75
+ }
76
+ }
54
77
  // Collect all referenced namespaces from allow/ask/deny
55
78
  const allPatterns = [...agent.allow, ...agent.ask, ...agent.deny];
56
79
  const referencedNamespaces = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}