airlock-bot 0.0.1 → 0.2.2
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/LICENSE +21 -0
- package/README.md +337 -0
- package/airlock.service +27 -0
- package/dist/allowlist/engine.d.ts +9 -0
- package/dist/allowlist/engine.d.ts.map +1 -0
- package/dist/allowlist/engine.js +24 -0
- package/dist/allowlist/engine.js.map +1 -0
- package/dist/allowlist/pattern.d.ts +13 -0
- package/dist/allowlist/pattern.d.ts.map +1 -0
- package/dist/allowlist/pattern.js +33 -0
- package/dist/allowlist/pattern.js.map +1 -0
- package/dist/audit/api.d.ts +7 -0
- package/dist/audit/api.d.ts.map +1 -0
- package/dist/audit/api.js +31 -0
- package/dist/audit/api.js.map +1 -0
- package/dist/audit/db.d.ts +44 -0
- package/dist/audit/db.d.ts.map +1 -0
- package/dist/audit/db.js +121 -0
- package/dist/audit/db.js.map +1 -0
- package/dist/audit/logger.d.ts +25 -0
- package/dist/audit/logger.d.ts.map +1 -0
- package/dist/audit/logger.js +58 -0
- package/dist/audit/logger.js.map +1 -0
- package/dist/audit/redactor.d.ts +5 -0
- package/dist/audit/redactor.d.ts.map +1 -0
- package/dist/audit/redactor.js +27 -0
- package/dist/audit/redactor.js.map +1 -0
- package/dist/backend/cli/adapter.d.ts +23 -0
- package/dist/backend/cli/adapter.d.ts.map +1 -0
- package/dist/backend/cli/adapter.js +176 -0
- package/dist/backend/cli/adapter.js.map +1 -0
- package/dist/backend/cli/builder.d.ts +3 -0
- package/dist/backend/cli/builder.d.ts.map +1 -0
- package/dist/backend/cli/builder.js +52 -0
- package/dist/backend/cli/builder.js.map +1 -0
- package/dist/backend/cli/escaper.d.ts +2 -0
- package/dist/backend/cli/escaper.d.ts.map +1 -0
- package/dist/backend/cli/escaper.js +8 -0
- package/dist/backend/cli/escaper.js.map +1 -0
- package/dist/backend/exec-adapter.d.ts +13 -0
- package/dist/backend/exec-adapter.d.ts.map +1 -0
- package/dist/backend/exec-adapter.js +39 -0
- package/dist/backend/exec-adapter.js.map +1 -0
- package/dist/backend/factory.d.ts +9 -0
- package/dist/backend/factory.d.ts.map +1 -0
- package/dist/backend/factory.js +35 -0
- package/dist/backend/factory.js.map +1 -0
- package/dist/backend/http-adapter.d.ts +15 -0
- package/dist/backend/http-adapter.d.ts.map +1 -0
- package/dist/backend/http-adapter.js +39 -0
- package/dist/backend/http-adapter.js.map +1 -0
- package/dist/backend/mcp-adapter.d.ts +14 -0
- package/dist/backend/mcp-adapter.d.ts.map +1 -0
- package/dist/backend/mcp-adapter.js +38 -0
- package/dist/backend/mcp-adapter.js.map +1 -0
- package/dist/backend/openapi/adapter.d.ts +17 -0
- package/dist/backend/openapi/adapter.d.ts.map +1 -0
- package/dist/backend/openapi/adapter.js +144 -0
- package/dist/backend/openapi/adapter.js.map +1 -0
- package/dist/backend/openapi/parser.d.ts +21 -0
- package/dist/backend/openapi/parser.d.ts.map +1 -0
- package/dist/backend/openapi/parser.js +145 -0
- package/dist/backend/openapi/parser.js.map +1 -0
- package/dist/backend/types.d.ts +9 -0
- package/dist/backend/types.d.ts.map +1 -0
- package/dist/backend/types.js +2 -0
- package/dist/backend/types.js.map +1 -0
- package/dist/config/loader.d.ts +12 -0
- package/dist/config/loader.d.ts.map +1 -0
- package/dist/config/loader.js +178 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/profiles.d.ts +12 -0
- package/dist/config/profiles.d.ts.map +1 -0
- package/dist/config/profiles.js +34 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/config/schema.d.ts +2034 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +257 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/watcher.d.ts +11 -0
- package/dist/config/watcher.d.ts.map +1 -0
- package/dist/config/watcher.js +39 -0
- package/dist/config/watcher.js.map +1 -0
- package/dist/configure-agent/cli.d.ts +2 -0
- package/dist/configure-agent/cli.d.ts.map +1 -0
- package/dist/configure-agent/cli.js +390 -0
- package/dist/configure-agent/cli.js.map +1 -0
- package/dist/discover/cli.d.ts +2 -0
- package/dist/discover/cli.d.ts.map +1 -0
- package/dist/discover/cli.js +97 -0
- package/dist/discover/cli.js.map +1 -0
- package/dist/discover/index.d.ts +19 -0
- package/dist/discover/index.d.ts.map +1 -0
- package/dist/discover/index.js +70 -0
- package/dist/discover/index.js.map +1 -0
- package/dist/discover/openapi.d.ts +9 -0
- package/dist/discover/openapi.d.ts.map +1 -0
- package/dist/discover/openapi.js +47 -0
- package/dist/discover/openapi.js.map +1 -0
- package/dist/discover/strategies/fig.d.ts +29 -0
- package/dist/discover/strategies/fig.d.ts.map +1 -0
- package/dist/discover/strategies/fig.js +82 -0
- package/dist/discover/strategies/fig.js.map +1 -0
- package/dist/discover/strategies/help-parser.d.ts +21 -0
- package/dist/discover/strategies/help-parser.d.ts.map +1 -0
- package/dist/discover/strategies/help-parser.js +121 -0
- package/dist/discover/strategies/help-parser.js.map +1 -0
- package/dist/discover/writer.d.ts +5 -0
- package/dist/discover/writer.d.ts.map +1 -0
- package/dist/discover/writer.js +14 -0
- package/dist/discover/writer.js.map +1 -0
- package/dist/gateway.d.ts +20 -0
- package/dist/gateway.d.ts.map +1 -0
- package/dist/gateway.js +125 -0
- package/dist/gateway.js.map +1 -0
- package/dist/hitl/api.d.ts +7 -0
- package/dist/hitl/api.d.ts.map +1 -0
- package/dist/hitl/api.js +35 -0
- package/dist/hitl/api.js.map +1 -0
- package/dist/hitl/batcher.d.ts +11 -0
- package/dist/hitl/batcher.d.ts.map +1 -0
- package/dist/hitl/batcher.js +37 -0
- package/dist/hitl/batcher.js.map +1 -0
- package/dist/hitl/engine.d.ts +36 -0
- package/dist/hitl/engine.d.ts.map +1 -0
- package/dist/hitl/engine.js +150 -0
- package/dist/hitl/engine.js.map +1 -0
- package/dist/hitl/formatter.d.ts +4 -0
- package/dist/hitl/formatter.d.ts.map +1 -0
- package/dist/hitl/formatter.js +31 -0
- package/dist/hitl/formatter.js.map +1 -0
- package/dist/hitl/parser.d.ts +7 -0
- package/dist/hitl/parser.d.ts.map +1 -0
- package/dist/hitl/parser.js +17 -0
- package/dist/hitl/parser.js.map +1 -0
- package/dist/hitl/provider-factory.d.ts +4 -0
- package/dist/hitl/provider-factory.d.ts.map +1 -0
- package/dist/hitl/provider-factory.js +42 -0
- package/dist/hitl/provider-factory.js.map +1 -0
- package/dist/hitl/providers/composite.d.ts +9 -0
- package/dist/hitl/providers/composite.d.ts.map +1 -0
- package/dist/hitl/providers/composite.js +23 -0
- package/dist/hitl/providers/composite.js.map +1 -0
- package/dist/hitl/providers/dashboard.d.ts +17 -0
- package/dist/hitl/providers/dashboard.d.ts.map +1 -0
- package/dist/hitl/providers/dashboard.js +210 -0
- package/dist/hitl/providers/dashboard.js.map +1 -0
- package/dist/hitl/providers/macos.d.ts +10 -0
- package/dist/hitl/providers/macos.d.ts.map +1 -0
- package/dist/hitl/providers/macos.js +65 -0
- package/dist/hitl/providers/macos.js.map +1 -0
- package/dist/hitl/providers/openclaw.d.ts +21 -0
- package/dist/hitl/providers/openclaw.d.ts.map +1 -0
- package/dist/hitl/providers/openclaw.js +106 -0
- package/dist/hitl/providers/openclaw.js.map +1 -0
- package/dist/hitl/providers/slack.d.ts +12 -0
- package/dist/hitl/providers/slack.d.ts.map +1 -0
- package/dist/hitl/providers/slack.js +24 -0
- package/dist/hitl/providers/slack.js.map +1 -0
- package/dist/hitl/providers/stdio.d.ts +12 -0
- package/dist/hitl/providers/stdio.d.ts.map +1 -0
- package/dist/hitl/providers/stdio.js +41 -0
- package/dist/hitl/providers/stdio.js.map +1 -0
- package/dist/hitl/providers/telegram.d.ts +22 -0
- package/dist/hitl/providers/telegram.d.ts.map +1 -0
- package/dist/hitl/providers/telegram.js +87 -0
- package/dist/hitl/providers/telegram.js.map +1 -0
- package/dist/hitl/providers/tui.d.ts +16 -0
- package/dist/hitl/providers/tui.d.ts.map +1 -0
- package/dist/hitl/providers/tui.js +169 -0
- package/dist/hitl/providers/tui.js.map +1 -0
- package/dist/hitl/providers/types.d.ts +18 -0
- package/dist/hitl/providers/types.d.ts.map +1 -0
- package/dist/hitl/providers/types.js +2 -0
- package/dist/hitl/providers/types.js.map +1 -0
- package/dist/hitl/providers/webhook.d.ts +13 -0
- package/dist/hitl/providers/webhook.d.ts.map +1 -0
- package/dist/hitl/providers/webhook.js +27 -0
- package/dist/hitl/providers/webhook.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +115 -0
- package/dist/index.js.map +1 -0
- package/dist/middleware/chain-builder.d.ts +16 -0
- package/dist/middleware/chain-builder.d.ts.map +1 -0
- package/dist/middleware/chain-builder.js +139 -0
- package/dist/middleware/chain-builder.js.map +1 -0
- package/dist/middleware/compose.d.ts +3 -0
- package/dist/middleware/compose.d.ts.map +1 -0
- package/dist/middleware/compose.js +15 -0
- package/dist/middleware/compose.js.map +1 -0
- package/dist/middleware/core/allowlist.d.ts +3 -0
- package/dist/middleware/core/allowlist.d.ts.map +1 -0
- package/dist/middleware/core/allowlist.js +23 -0
- package/dist/middleware/core/allowlist.js.map +1 -0
- package/dist/middleware/core/exec-policy.d.ts +3 -0
- package/dist/middleware/core/exec-policy.d.ts.map +1 -0
- package/dist/middleware/core/exec-policy.js +30 -0
- package/dist/middleware/core/exec-policy.js.map +1 -0
- package/dist/middleware/core/execute.d.ts +3 -0
- package/dist/middleware/core/execute.d.ts.map +1 -0
- package/dist/middleware/core/execute.js +35 -0
- package/dist/middleware/core/execute.js.map +1 -0
- package/dist/middleware/core/hitl-gate.d.ts +3 -0
- package/dist/middleware/core/hitl-gate.d.ts.map +1 -0
- package/dist/middleware/core/hitl-gate.js +38 -0
- package/dist/middleware/core/hitl-gate.js.map +1 -0
- package/dist/middleware/core/rate-limiter.d.ts +10 -0
- package/dist/middleware/core/rate-limiter.d.ts.map +1 -0
- package/dist/middleware/core/rate-limiter.js +32 -0
- package/dist/middleware/core/rate-limiter.js.map +1 -0
- package/dist/middleware/core/schema-validator.d.ts +3 -0
- package/dist/middleware/core/schema-validator.d.ts.map +1 -0
- package/dist/middleware/core/schema-validator.js +31 -0
- package/dist/middleware/core/schema-validator.js.map +1 -0
- package/dist/middleware/detectors/injection-detector.d.ts +12 -0
- package/dist/middleware/detectors/injection-detector.d.ts.map +1 -0
- package/dist/middleware/detectors/injection-detector.js +129 -0
- package/dist/middleware/detectors/injection-detector.js.map +1 -0
- package/dist/middleware/detectors/sensitivity-classifier.d.ts +12 -0
- package/dist/middleware/detectors/sensitivity-classifier.d.ts.map +1 -0
- package/dist/middleware/detectors/sensitivity-classifier.js +125 -0
- package/dist/middleware/detectors/sensitivity-classifier.js.map +1 -0
- package/dist/middleware/post/canary-token-injector.d.ts +10 -0
- package/dist/middleware/post/canary-token-injector.d.ts.map +1 -0
- package/dist/middleware/post/canary-token-injector.js +53 -0
- package/dist/middleware/post/canary-token-injector.js.map +1 -0
- package/dist/middleware/post/output-injection-detector.d.ts +7 -0
- package/dist/middleware/post/output-injection-detector.d.ts.map +1 -0
- package/dist/middleware/post/output-injection-detector.js +46 -0
- package/dist/middleware/post/output-injection-detector.js.map +1 -0
- package/dist/middleware/post/output-size-limiter.d.ts +7 -0
- package/dist/middleware/post/output-size-limiter.d.ts.map +1 -0
- package/dist/middleware/post/output-size-limiter.js +47 -0
- package/dist/middleware/post/output-size-limiter.js.map +1 -0
- package/dist/middleware/post/output-summarizer.d.ts +15 -0
- package/dist/middleware/post/output-summarizer.d.ts.map +1 -0
- package/dist/middleware/post/output-summarizer.js +38 -0
- package/dist/middleware/post/output-summarizer.js.map +1 -0
- package/dist/middleware/post/strip-query-params.d.ts +3 -0
- package/dist/middleware/post/strip-query-params.d.ts.map +1 -0
- package/dist/middleware/post/strip-query-params.js +22 -0
- package/dist/middleware/post/strip-query-params.js.map +1 -0
- package/dist/middleware/post/untrusted-envelope.d.ts +3 -0
- package/dist/middleware/post/untrusted-envelope.d.ts.map +1 -0
- package/dist/middleware/post/untrusted-envelope.js +10 -0
- package/dist/middleware/post/untrusted-envelope.js.map +1 -0
- package/dist/middleware/types.d.ts +32 -0
- package/dist/middleware/types.d.ts.map +1 -0
- package/dist/middleware/types.js +2 -0
- package/dist/middleware/types.js.map +1 -0
- package/dist/pool/http-client.d.ts +26 -0
- package/dist/pool/http-client.d.ts.map +1 -0
- package/dist/pool/http-client.js +109 -0
- package/dist/pool/http-client.js.map +1 -0
- package/dist/pool/oauth-provider.d.ts +34 -0
- package/dist/pool/oauth-provider.d.ts.map +1 -0
- package/dist/pool/oauth-provider.js +135 -0
- package/dist/pool/oauth-provider.js.map +1 -0
- package/dist/pool/pool.d.ts +30 -0
- package/dist/pool/pool.d.ts.map +1 -0
- package/dist/pool/pool.js +119 -0
- package/dist/pool/pool.js.map +1 -0
- package/dist/pool/required-mcps.d.ts +7 -0
- package/dist/pool/required-mcps.d.ts.map +1 -0
- package/dist/pool/required-mcps.js +18 -0
- package/dist/pool/required-mcps.js.map +1 -0
- package/dist/pool/sse-client.d.ts +22 -0
- package/dist/pool/sse-client.d.ts.map +1 -0
- package/dist/pool/sse-client.js +70 -0
- package/dist/pool/sse-client.js.map +1 -0
- package/dist/pool/stdio-client.d.ts +24 -0
- package/dist/pool/stdio-client.d.ts.map +1 -0
- package/dist/pool/stdio-client.js +77 -0
- package/dist/pool/stdio-client.js.map +1 -0
- package/dist/registry/registry.d.ts +19 -0
- package/dist/registry/registry.d.ts.map +1 -0
- package/dist/registry/registry.js +85 -0
- package/dist/registry/registry.js.map +1 -0
- package/dist/registry/sanitizer.d.ts +2 -0
- package/dist/registry/sanitizer.d.ts.map +1 -0
- package/dist/registry/sanitizer.js +31 -0
- package/dist/registry/sanitizer.js.map +1 -0
- package/dist/security/blocked-hosts.d.ts +6 -0
- package/dist/security/blocked-hosts.d.ts.map +1 -0
- package/dist/security/blocked-hosts.js +26 -0
- package/dist/security/blocked-hosts.js.map +1 -0
- package/dist/security/domain-allowlist.d.ts +7 -0
- package/dist/security/domain-allowlist.d.ts.map +1 -0
- package/dist/security/domain-allowlist.js +19 -0
- package/dist/security/domain-allowlist.js.map +1 -0
- package/dist/stdio-mode.d.ts +3 -0
- package/dist/stdio-mode.d.ts.map +1 -0
- package/dist/stdio-mode.js +130 -0
- package/dist/stdio-mode.js.map +1 -0
- package/dist/tools/exec.d.ts +20 -0
- package/dist/tools/exec.d.ts.map +1 -0
- package/dist/tools/exec.js +105 -0
- package/dist/tools/exec.js.map +1 -0
- package/dist/tools/http.d.ts +13 -0
- package/dist/tools/http.d.ts.map +1 -0
- package/dist/tools/http.js +99 -0
- package/dist/tools/http.js.map +1 -0
- package/dist/transport/agent-server.d.ts +26 -0
- package/dist/transport/agent-server.d.ts.map +1 -0
- package/dist/transport/agent-server.js +55 -0
- package/dist/transport/agent-server.js.map +1 -0
- package/dist/transport/mcp-normalizer.d.ts +9 -0
- package/dist/transport/mcp-normalizer.d.ts.map +1 -0
- package/dist/transport/mcp-normalizer.js +12 -0
- package/dist/transport/mcp-normalizer.js.map +1 -0
- package/dist/transport/sse-server.d.ts +7 -0
- package/dist/transport/sse-server.d.ts.map +1 -0
- package/dist/transport/sse-server.js +94 -0
- package/dist/transport/sse-server.js.map +1 -0
- package/dist/transport/stdio-server.d.ts +3 -0
- package/dist/transport/stdio-server.d.ts.map +1 -0
- package/dist/transport/stdio-server.js +12 -0
- package/dist/transport/stdio-server.js.map +1 -0
- package/dist/types.d.ts +15 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +2 -0
- package/dist/types.js.map +1 -0
- package/dist/util/id.d.ts +5 -0
- package/dist/util/id.d.ts.map +1 -0
- package/dist/util/id.js +16 -0
- package/dist/util/id.js.map +1 -0
- package/dist/util/logger.d.ts +4 -0
- package/dist/util/logger.d.ts.map +1 -0
- package/dist/util/logger.js +24 -0
- package/dist/util/logger.js.map +1 -0
- package/dist/version.d.ts +2 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +4 -0
- package/dist/version.js.map +1 -0
- package/examples/claude-code-setup.md +77 -0
- package/examples/gateway.yaml +118 -0
- package/examples/local-dev.yaml +41 -0
- package/examples/openclaw-setup.md +52 -0
- package/examples/profiles.yaml +103 -0
- package/package.json +80 -3
- package/schema.json +943 -0
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { readFileSync } from 'fs';
|
|
2
|
+
import { parse as parseYaml } from 'yaml';
|
|
3
|
+
import { GatewayConfig, getBuiltinProviders } from './schema.js';
|
|
4
|
+
import { applyProfiles } from './profiles.js';
|
|
5
|
+
import { matches } from '../allowlist/pattern.js';
|
|
6
|
+
import { childLogger } from '../util/logger.js';
|
|
7
|
+
const log = childLogger('config');
|
|
8
|
+
export function loadConfig(path) {
|
|
9
|
+
const raw = readFileSync(path, 'utf-8');
|
|
10
|
+
const parsed = parseYaml(raw);
|
|
11
|
+
const result = GatewayConfig.safeParse(parsed);
|
|
12
|
+
if (!result.success) {
|
|
13
|
+
throw new Error(`Invalid config at ${path}:\n${result.error.toString()}`);
|
|
14
|
+
}
|
|
15
|
+
const diagnostics = validateConfig(result.data);
|
|
16
|
+
for (const d of diagnostics) {
|
|
17
|
+
const ctx = d.agent ? { agent: d.agent } : {};
|
|
18
|
+
const msg = d.suggestion ? `${d.message}\n → ${d.suggestion}` : d.message;
|
|
19
|
+
if (d.level === 'error') {
|
|
20
|
+
log.error(ctx, msg);
|
|
21
|
+
}
|
|
22
|
+
else if (d.level === 'warn') {
|
|
23
|
+
log.warn(ctx, msg);
|
|
24
|
+
}
|
|
25
|
+
else {
|
|
26
|
+
log.info(ctx, msg);
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
const errors = diagnostics.filter((d) => d.level === 'error');
|
|
30
|
+
if (errors.length > 0) {
|
|
31
|
+
throw new Error(`Config validation failed with ${errors.length} error(s):\n` +
|
|
32
|
+
errors.map((e) => ` - ${e.agent ? `[${e.agent}] ` : ''}${e.message}`).join('\n'));
|
|
33
|
+
}
|
|
34
|
+
applyProfiles(result.data);
|
|
35
|
+
return result.data;
|
|
36
|
+
}
|
|
37
|
+
export function validateConfig(config) {
|
|
38
|
+
const diagnostics = [];
|
|
39
|
+
const providerNames = new Set(Object.keys(config.providers));
|
|
40
|
+
const builtins = getBuiltinProviders(config.providers);
|
|
41
|
+
const profileNames = new Set(Object.keys(config.profiles));
|
|
42
|
+
for (const [agentId, agent] of Object.entries(config.agents)) {
|
|
43
|
+
// Check for unknown profile references
|
|
44
|
+
for (const ref of agent.extends) {
|
|
45
|
+
if (!profileNames.has(ref)) {
|
|
46
|
+
diagnostics.push({
|
|
47
|
+
level: 'error',
|
|
48
|
+
agent: agentId,
|
|
49
|
+
message: `extends references unknown profile "${ref}".`,
|
|
50
|
+
suggestion: `Add "${ref}" to your profiles block, or check for typos.`,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
// Collect all referenced namespaces from allow/ask/deny
|
|
55
|
+
const allPatterns = [...agent.allow, ...agent.ask, ...agent.deny];
|
|
56
|
+
const referencedNamespaces = new Set();
|
|
57
|
+
for (const pattern of allPatterns) {
|
|
58
|
+
const ns = pattern.split('/')[0];
|
|
59
|
+
if (ns)
|
|
60
|
+
referencedNamespaces.add(ns);
|
|
61
|
+
}
|
|
62
|
+
// Check for unknown providers
|
|
63
|
+
for (const ns of referencedNamespaces) {
|
|
64
|
+
if (!providerNames.has(ns)) {
|
|
65
|
+
diagnostics.push({
|
|
66
|
+
level: 'error',
|
|
67
|
+
agent: agentId,
|
|
68
|
+
message: `Pattern references unknown provider "${ns}".`,
|
|
69
|
+
suggestion: `Add "${ns}" to your providers block, or check for typos.`,
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Check for shadowed rules: allow pattern also matched by deny
|
|
74
|
+
for (const allowPattern of agent.allow) {
|
|
75
|
+
for (const denyPattern of agent.deny) {
|
|
76
|
+
if (matches(denyPattern, allowPattern) ||
|
|
77
|
+
matches(allowPattern, denyPattern) ||
|
|
78
|
+
patternsOverlap(allowPattern, denyPattern)) {
|
|
79
|
+
diagnostics.push({
|
|
80
|
+
level: 'warn',
|
|
81
|
+
agent: agentId,
|
|
82
|
+
message: `"${allowPattern}" in allow is shadowed by "${denyPattern}" in deny — deny always wins.`,
|
|
83
|
+
suggestion: `Remove "${allowPattern}" from allow, or narrow the deny pattern.`,
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
// Check for unreachable ask: ask pattern also matched by deny
|
|
89
|
+
for (const askPattern of agent.ask) {
|
|
90
|
+
for (const denyPattern of agent.deny) {
|
|
91
|
+
if (matches(denyPattern, askPattern) ||
|
|
92
|
+
matches(askPattern, denyPattern) ||
|
|
93
|
+
patternsOverlap(askPattern, denyPattern)) {
|
|
94
|
+
diagnostics.push({
|
|
95
|
+
level: 'warn',
|
|
96
|
+
agent: agentId,
|
|
97
|
+
message: `"${askPattern}" in ask is shadowed by "${denyPattern}" in deny — approval will never be requested.`,
|
|
98
|
+
suggestion: `Remove "${askPattern}" from ask, or narrow the deny pattern.`,
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
// Check exec command routing without exec provider
|
|
104
|
+
const hasExecPatterns = agent.exec.allow.length > 0 || agent.exec.ask.length > 0;
|
|
105
|
+
if (hasExecPatterns && !builtins.has('exec')) {
|
|
106
|
+
diagnostics.push({
|
|
107
|
+
level: 'warn',
|
|
108
|
+
agent: agentId,
|
|
109
|
+
message: 'exec command patterns defined but "exec" is not declared as a provider.',
|
|
110
|
+
suggestion: 'Add exec: builtin to your providers block.',
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
// Check exec deny-all with other exec patterns
|
|
114
|
+
const hasCatchAllDeny = agent.exec.deny.some((p) => p === '*');
|
|
115
|
+
if (hasCatchAllDeny && (agent.exec.allow.length > 0 || agent.exec.ask.length > 0)) {
|
|
116
|
+
diagnostics.push({
|
|
117
|
+
level: 'warn',
|
|
118
|
+
agent: agentId,
|
|
119
|
+
message: 'exec.deny contains "*" which overrides all exec.allow and exec.ask patterns.',
|
|
120
|
+
suggestion: 'Remove deny: ["*"] and rely on fail-closed behavior instead.',
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
// Check empty agent
|
|
124
|
+
if (agent.allow.length === 0 && agent.ask.length === 0) {
|
|
125
|
+
diagnostics.push({
|
|
126
|
+
level: 'info',
|
|
127
|
+
agent: agentId,
|
|
128
|
+
message: 'Agent has no allow or ask rules — all tools will be denied.',
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
// Check http domain_allowlist without http provider
|
|
132
|
+
if (agent.http.domain_allowlist.length > 0 && !builtins.has('http')) {
|
|
133
|
+
diagnostics.push({
|
|
134
|
+
level: 'warn',
|
|
135
|
+
agent: agentId,
|
|
136
|
+
message: 'http.domain_allowlist configured but "http" is not declared as a provider.',
|
|
137
|
+
suggestion: 'Add http: builtin to your providers block.',
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Validate CLI configs
|
|
142
|
+
for (const [cliId, cli] of Object.entries(config.clis)) {
|
|
143
|
+
for (const [cmdName, cmd] of Object.entries(cli.commands)) {
|
|
144
|
+
const templateParams = new Set();
|
|
145
|
+
cmd.exec.replace(/\{(\w+)\}/g, (_, name) => {
|
|
146
|
+
templateParams.add(name);
|
|
147
|
+
return '';
|
|
148
|
+
});
|
|
149
|
+
for (const [paramName, param] of Object.entries(cmd.params)) {
|
|
150
|
+
const inTemplate = templateParams.has(paramName);
|
|
151
|
+
const hasFlag = !!param.flag;
|
|
152
|
+
const isPositional = param.positional;
|
|
153
|
+
if (!inTemplate && !hasFlag && !isPositional) {
|
|
154
|
+
diagnostics.push({
|
|
155
|
+
level: 'warn',
|
|
156
|
+
message: `clis.${cliId}.commands.${cmdName}: param "${paramName}" has no flag, is not positional, and is not referenced in exec template — it will be ignored at runtime.`,
|
|
157
|
+
suggestion: `Add a "flag" (e.g. "--${paramName}"), set "positional: true", or reference it as {${paramName}} in the exec string.`,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return diagnostics;
|
|
164
|
+
}
|
|
165
|
+
/** Check if two glob patterns could match the same tool name */
|
|
166
|
+
function patternsOverlap(a, b) {
|
|
167
|
+
// If either is a wildcard that covers the other's namespace
|
|
168
|
+
const nsA = a.split('/')[0];
|
|
169
|
+
const nsB = b.split('/')[0];
|
|
170
|
+
if (nsA !== nsB)
|
|
171
|
+
return false;
|
|
172
|
+
// Same namespace — wildcards overlap
|
|
173
|
+
if (a.endsWith('*') || b.endsWith('*'))
|
|
174
|
+
return true;
|
|
175
|
+
// Exact match
|
|
176
|
+
return a === b;
|
|
177
|
+
}
|
|
178
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/config/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { AgentConfig, GatewayConfig } from './schema.js';
|
|
2
|
+
interface ResolvedPermissions {
|
|
3
|
+
allow: string[];
|
|
4
|
+
ask: string[];
|
|
5
|
+
}
|
|
6
|
+
export declare function resolveAgentPermissions(agentConfig: AgentConfig, profiles: Record<string, {
|
|
7
|
+
allow: string[];
|
|
8
|
+
ask: string[];
|
|
9
|
+
}>): ResolvedPermissions;
|
|
10
|
+
export declare function applyProfiles(config: GatewayConfig): void;
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=profiles.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.d.ts","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE9D,UAAU,mBAAmB;IAC3B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,MAAM,EAAE,CAAC;CACf;AAED,wBAAgB,uBAAuB,CACrC,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC,GAC3D,mBAAmB,CAqBrB;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,aAAa,GAAG,IAAI,CASzD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
export function resolveAgentPermissions(agentConfig, profiles) {
|
|
2
|
+
const allow = new Set();
|
|
3
|
+
const ask = new Set();
|
|
4
|
+
// Apply profiles in extends order, skipping unknown refs (caught by validateConfig)
|
|
5
|
+
for (const profileName of agentConfig.extends) {
|
|
6
|
+
const profile = profiles[profileName];
|
|
7
|
+
if (profile) {
|
|
8
|
+
for (const p of profile.allow)
|
|
9
|
+
allow.add(p);
|
|
10
|
+
for (const p of profile.ask)
|
|
11
|
+
ask.add(p);
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
// Union with agent's own allow/ask
|
|
15
|
+
for (const p of agentConfig.allow)
|
|
16
|
+
allow.add(p);
|
|
17
|
+
for (const p of agentConfig.ask)
|
|
18
|
+
ask.add(p);
|
|
19
|
+
return {
|
|
20
|
+
allow: Array.from(allow),
|
|
21
|
+
ask: Array.from(ask),
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
export function applyProfiles(config) {
|
|
25
|
+
for (const agent of Object.values(config.agents)) {
|
|
26
|
+
if (agent.extends.length === 0)
|
|
27
|
+
continue;
|
|
28
|
+
const resolved = resolveAgentPermissions(agent, config.profiles);
|
|
29
|
+
agent.allow = resolved.allow;
|
|
30
|
+
agent.ask = resolved.ask;
|
|
31
|
+
agent.extends = [];
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=profiles.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profiles.js","sourceRoot":"","sources":["../../src/config/profiles.ts"],"names":[],"mappings":"AAOA,MAAM,UAAU,uBAAuB,CACrC,WAAwB,EACxB,QAA4D;IAE5D,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,MAAM,GAAG,GAAG,IAAI,GAAG,EAAU,CAAC;IAE9B,oFAAoF;IACpF,KAAK,MAAM,WAAW,IAAI,WAAW,CAAC,OAAO,EAAE,CAAC;QAC9C,MAAM,OAAO,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC;QACtC,IAAI,OAAO,EAAE,CAAC;YACZ,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,KAAK;gBAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YAC5C,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,GAAG;gBAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,KAAK;QAAE,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,WAAW,CAAC,GAAG;QAAE,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAE5C,OAAO;QACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;QACxB,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC;KACrB,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,MAAqB;IACjD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QACjD,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEzC,MAAM,QAAQ,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,CAAC,QAAQ,CAAC,CAAC;QACjE,KAAK,CAAC,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC;QAC7B,KAAK,CAAC,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC;QACzB,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC;IACrB,CAAC;AACH,CAAC"}
|