@guardion/guardion 0.2.0 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +202 -0
- package/dist/bin/cli.d.ts.map +1 -0
- package/dist/bin/cli.js +590 -0
- package/dist/bin/cli.js.map +1 -0
- package/dist/connectors/claude-code/hooks/enforce.cjs +58 -0
- package/dist/connectors/claude-code/hooks/guardion-hook.cjs +355 -0
- package/dist/connectors/claude-code/hooks/tool-scanner.cjs +272 -0
- package/dist/connectors/claude-code/src/collect.d.ts +5 -0
- package/dist/connectors/claude-code/src/collect.d.ts.map +1 -0
- package/dist/connectors/claude-code/src/collect.js +17 -0
- package/dist/connectors/claude-code/src/collect.js.map +1 -0
- package/dist/{installer.d.ts → connectors/claude-code/src/installer.d.ts} +2 -1
- package/dist/connectors/claude-code/src/installer.d.ts.map +1 -0
- package/dist/connectors/claude-code/src/installer.js +190 -0
- package/dist/connectors/claude-code/src/installer.js.map +1 -0
- package/dist/connectors/claude-code/src/scanner.d.ts.map +1 -0
- package/dist/{scanner.js → connectors/claude-code/src/scanner.js} +1 -1
- package/dist/connectors/claude-code/src/scanner.js.map +1 -0
- package/dist/core/config.d.ts +239 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +154 -0
- package/dist/core/config.js.map +1 -0
- package/dist/{constants.d.ts → core/constants.d.ts} +8 -3
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +54 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/discover.d.ts +36 -0
- package/dist/core/discover.d.ts.map +1 -0
- package/dist/core/discover.js +154 -0
- package/dist/core/discover.js.map +1 -0
- package/dist/core/fingerprint.cjs +84 -0
- package/dist/core/inventory.d.ts +35 -0
- package/dist/core/inventory.d.ts.map +1 -0
- package/dist/core/inventory.js +69 -0
- package/dist/core/inventory.js.map +1 -0
- package/dist/core/keychain.d.ts.map +1 -0
- package/dist/{keychain.js → core/keychain.js} +53 -15
- package/dist/core/keychain.js.map +1 -0
- package/dist/core/mcp/guard-client.cjs +86 -0
- package/dist/core/mcp/interceptor.cjs +238 -0
- package/dist/core/mcp/jsonrpc.cjs +194 -0
- package/dist/core/mcp/transport/http-server-side.cjs +89 -0
- package/dist/core/mcp/transport/http-upstream.cjs +111 -0
- package/dist/core/mcp/transport/http_forward.cjs +40 -0
- package/dist/core/mcp/transport/http_input.cjs +46 -0
- package/dist/core/mcp/transport/http_reverse.cjs +33 -0
- package/dist/core/mcp/transport/index.cjs +32 -0
- package/dist/core/mcp/transport/sse_bridge.cjs +101 -0
- package/dist/core/mcp/transport/stdio.cjs +60 -0
- package/dist/core/mcp-interpose.cjs +141 -0
- package/dist/core/mcp-protect.d.ts +69 -0
- package/dist/core/mcp-protect.d.ts.map +1 -0
- package/dist/core/mcp-protect.js +205 -0
- package/dist/core/mcp-protect.js.map +1 -0
- package/dist/core/mcp-scan.d.ts +40 -0
- package/dist/core/mcp-scan.d.ts.map +1 -0
- package/dist/core/mcp-scan.js +201 -0
- package/dist/core/mcp-scan.js.map +1 -0
- package/dist/core/mock-server.d.ts.map +1 -0
- package/dist/{mock-server.js → core/mock-server.js} +60 -4
- package/dist/core/mock-server.js.map +1 -0
- package/package.json +9 -10
- package/config.yaml.example +0 -26
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -289
- package/dist/cli.js.map +0 -1
- package/dist/config.d.ts +0 -28
- package/dist/config.d.ts.map +0 -1
- package/dist/config.js +0 -63
- package/dist/config.js.map +0 -1
- package/dist/constants.d.ts.map +0 -1
- package/dist/constants.js +0 -44
- package/dist/constants.js.map +0 -1
- package/dist/installer.d.ts.map +0 -1
- package/dist/installer.js +0 -137
- package/dist/installer.js.map +0 -1
- package/dist/keychain.d.ts.map +0 -1
- package/dist/keychain.js.map +0 -1
- package/dist/mock-server.d.ts.map +0 -1
- package/dist/mock-server.js.map +0 -1
- package/dist/scanner.d.ts.map +0 -1
- package/dist/scanner.js.map +0 -1
- package/hooks/guardion-hook.cjs +0 -202
- /package/dist/{cli.d.ts → bin/cli.d.ts} +0 -0
- /package/dist/{scanner.d.ts → connectors/claude-code/src/scanner.d.ts} +0 -0
- /package/dist/{keychain.d.ts → core/keychain.d.ts} +0 -0
- /package/{hooks → dist/core}/metadata.cjs +0 -0
- /package/dist/{mock-server.d.ts → core/mock-server.d.ts} +0 -0
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ScannedTool } from '../../../core/inventory.js';
|
|
2
|
+
import { type InventoryConfig } from '../../../core/config.js';
|
|
3
|
+
/** Discover local Claude Code tools (skills, MCP servers, plugins, built-ins). Never throws. */
|
|
4
|
+
export declare function collectInventory(cwd: string, inventory?: Partial<InventoryConfig>): ScannedTool[];
|
|
5
|
+
//# sourceMappingURL=collect.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect.d.ts","sourceRoot":"","sources":["../../../../connectors/claude-code/src/collect.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAA4B,KAAK,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEzF,gGAAgG;AAChG,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,OAAO,CAAC,eAAe,CAAC,GAAG,WAAW,EAAE,CAMjG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
// Claude Code connector — local tool discovery. Delegates to the zero-dep CJS
|
|
2
|
+
// scanner (hooks/tool-scanner.cjs) which knows the Claude Code paths
|
|
3
|
+
// (~/.claude/skills, ~/.claude/plugins, .mcp.json). Universal types + the Guard
|
|
4
|
+
// submission live in core/inventory.
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { createRequire } from 'node:module';
|
|
7
|
+
import { fileURLToPath } from 'node:url';
|
|
8
|
+
import { DEFAULT_INVENTORY_CONFIG } from '../../../core/config.js';
|
|
9
|
+
/** Discover local Claude Code tools (skills, MCP servers, plugins, built-ins). Never throws. */
|
|
10
|
+
export function collectInventory(cwd, inventory) {
|
|
11
|
+
const requireCjs = createRequire(import.meta.url);
|
|
12
|
+
// tool-scanner.cjs sits in this connector's hooks/; dist mirrors source.
|
|
13
|
+
const scannerPath = path.resolve(path.dirname(fileURLToPath(import.meta.url)), '..', 'hooks', 'tool-scanner.cjs');
|
|
14
|
+
const { collectLocalTools } = requireCjs(scannerPath);
|
|
15
|
+
return collectLocalTools(cwd, { ...DEFAULT_INVENTORY_CONFIG, ...(inventory ?? {}) });
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=collect.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect.js","sourceRoot":"","sources":["../../../../connectors/claude-code/src/collect.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,qEAAqE;AACrE,gFAAgF;AAChF,qCAAqC;AACrC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAGzC,OAAO,EAAE,wBAAwB,EAAwB,MAAM,yBAAyB,CAAC;AAEzF,gGAAgG;AAChG,MAAM,UAAU,gBAAgB,CAAC,GAAW,EAAE,SAAoC;IAChF,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAClD,yEAAyE;IACzE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAClH,MAAM,EAAE,iBAAiB,EAAE,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACtD,OAAO,iBAAiB,CAAC,GAAG,EAAE,EAAE,GAAG,wBAAwB,EAAE,GAAG,CAAC,SAAS,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC;AACvF,CAAC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import type { ClaudeSettings, ScanResult } from './scanner.js';
|
|
2
|
-
import type
|
|
2
|
+
import { type GuardionConfig } from '../../../core/config.js';
|
|
3
3
|
export interface PatchOptions {
|
|
4
4
|
config: GuardionConfig;
|
|
5
|
+
token: string;
|
|
5
6
|
dev?: boolean;
|
|
6
7
|
dryRun?: boolean;
|
|
7
8
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../../../../connectors/claude-code/src/installer.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAmB,MAAM,cAAc,CAAC;AAChF,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,yBAAyB,CAAC;AAwGjC,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAG,cAAc,CAAC;IACxB,KAAK,EAAI,MAAM,CAAC;IAChB,GAAG,CAAC,EAAK,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,GAAG,cAAc,CAmB1E;AAID,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,cAAc,GAAG,IAAI,CAM9E;AAID,wBAAgB,MAAM,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAO1D;AAmBD,wBAAgB,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAgB3D;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CAmC9E"}
|
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
import fs from 'node:fs';
|
|
2
|
+
import path from 'node:path';
|
|
3
|
+
import { fileURLToPath } from 'node:url';
|
|
4
|
+
import { BACKUP_SUFFIX, BACKUP_KEEP, HEADER_API_KEY, HEADER_PROVIDER, HEADER_POLICY, } from '../../../core/constants.js';
|
|
5
|
+
import { DEFAULT_GATEWAY, resolvedHookEvents, } from '../../../core/config.js';
|
|
6
|
+
// Production hook command — scoped npm package, works everywhere
|
|
7
|
+
const HOOK_COMMAND_NPX = 'npx --yes @guardion/guardion hook';
|
|
8
|
+
// Resolve absolute path to the CJS hook for local dev (no npm needed)
|
|
9
|
+
function resolveLocalHookPath() {
|
|
10
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
11
|
+
const candidates = [
|
|
12
|
+
path.resolve(here, '..', 'hooks', 'guardion-hook.cjs'),
|
|
13
|
+
path.resolve(here, '..', '..', 'hooks', 'guardion-hook.cjs'),
|
|
14
|
+
];
|
|
15
|
+
for (const c of candidates) {
|
|
16
|
+
if (fs.existsSync(c))
|
|
17
|
+
return c;
|
|
18
|
+
}
|
|
19
|
+
return candidates[0];
|
|
20
|
+
}
|
|
21
|
+
function hookCommand(dev) {
|
|
22
|
+
return dev ? `node ${resolveLocalHookPath()}` : HOOK_COMMAND_NPX;
|
|
23
|
+
}
|
|
24
|
+
function buildHooks(cfg, dev) {
|
|
25
|
+
const command = hookCommand(dev);
|
|
26
|
+
const events = resolvedHookEvents(cfg);
|
|
27
|
+
const result = {};
|
|
28
|
+
for (const event of events) {
|
|
29
|
+
result[event] = [{ matcher: '', hooks: [{ type: 'command', command }] }];
|
|
30
|
+
}
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
// ── Env block ─────────────────────────────────────────────────────────────────
|
|
34
|
+
function buildEnv(cfg, token) {
|
|
35
|
+
const base = {
|
|
36
|
+
GUARDION_TIER: cfg.tier,
|
|
37
|
+
GUARDION_API_URL: cfg.api_url,
|
|
38
|
+
GUARDION_POLICY: cfg.policy,
|
|
39
|
+
GUARDION_APPLICATION: cfg.application,
|
|
40
|
+
};
|
|
41
|
+
if (cfg.tier === 'full') {
|
|
42
|
+
const gw = { ...DEFAULT_GATEWAY, ...cfg.gateway };
|
|
43
|
+
const provider = gw.provider;
|
|
44
|
+
// Custom headers sent on every LLM request through the gateway.
|
|
45
|
+
// Lines are newline-separated "Key: value" pairs.
|
|
46
|
+
const customHeaders = [
|
|
47
|
+
`${HEADER_API_KEY}: ${token}`,
|
|
48
|
+
`${HEADER_PROVIDER}: ${provider}`,
|
|
49
|
+
`${HEADER_POLICY}: ${cfg.policy}`,
|
|
50
|
+
];
|
|
51
|
+
if (provider === 'vertex-ai') {
|
|
52
|
+
if (gw.vertex_project_id)
|
|
53
|
+
customHeaders.push(`x-guardion-vertex-project-id: ${gw.vertex_project_id}`);
|
|
54
|
+
if (gw.vertex_region)
|
|
55
|
+
customHeaders.push(`x-guardion-vertex-region: ${gw.vertex_region}`);
|
|
56
|
+
}
|
|
57
|
+
base.ANTHROPIC_BASE_URL = gw.url;
|
|
58
|
+
base.ANTHROPIC_CUSTOM_HEADERS = customHeaders.join('\n');
|
|
59
|
+
base.GUARDION_GATEWAY_URL = gw.url;
|
|
60
|
+
base.GUARDION_MCP_URL = gw.mcp_url;
|
|
61
|
+
}
|
|
62
|
+
return base;
|
|
63
|
+
}
|
|
64
|
+
// ── MCP rewriting (full tier only) ───────────────────────────────────────────
|
|
65
|
+
// Existing MCP servers are proxied through the Guardion MCP gateway so that
|
|
66
|
+
// tool call traffic is also evaluated for policy violations.
|
|
67
|
+
function rewriteMcpServers(servers, mcpBaseUrl) {
|
|
68
|
+
const out = {};
|
|
69
|
+
for (const [name, cfg] of Object.entries(servers)) {
|
|
70
|
+
// Skip servers that are already pointing at a Guardion endpoint
|
|
71
|
+
if (typeof cfg.url === 'string' && cfg.url.includes('guardion')) {
|
|
72
|
+
out[name] = cfg;
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
out[name] = {
|
|
76
|
+
type: 'http',
|
|
77
|
+
url: `${mcpBaseUrl}/${name}/mcp`,
|
|
78
|
+
headers: { Authorization: 'Bearer $GUARDION_TOKEN' },
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
return out;
|
|
82
|
+
}
|
|
83
|
+
export function patch(scan, opts) {
|
|
84
|
+
const base = scan.settings
|
|
85
|
+
? JSON.parse(JSON.stringify(scan.settings))
|
|
86
|
+
: {};
|
|
87
|
+
base.env = { ...(base.env ?? {}), ...buildEnv(opts.config, opts.token) };
|
|
88
|
+
base.hooks = { ...(base.hooks ?? {}), ...buildHooks(opts.config, opts.dev ?? false) };
|
|
89
|
+
// Full tier: proxy MCP servers through the Guardion MCP gateway
|
|
90
|
+
if (opts.config.tier === 'full' && Object.keys(scan.mcpServers).length > 0) {
|
|
91
|
+
const mcpUrl = opts.config.gateway?.mcp_url
|
|
92
|
+
?? (opts.dev ? 'http://localhost:8082/mcp' : DEFAULT_GATEWAY.mcp_url);
|
|
93
|
+
base.mcpServers = {
|
|
94
|
+
...(base.mcpServers ?? {}),
|
|
95
|
+
...rewriteMcpServers(scan.mcpServers, mcpUrl),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
98
|
+
return base;
|
|
99
|
+
}
|
|
100
|
+
// ── Write ─────────────────────────────────────────────────────────────────────
|
|
101
|
+
export function writeSettings(filePath, settings) {
|
|
102
|
+
const dir = path.dirname(filePath);
|
|
103
|
+
fs.mkdirSync(dir, { recursive: true });
|
|
104
|
+
const tmp = filePath + '.tmp';
|
|
105
|
+
fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
106
|
+
fs.renameSync(tmp, filePath);
|
|
107
|
+
}
|
|
108
|
+
// ── Backup (timestamped, keep last N) ────────────────────────────────────────
|
|
109
|
+
export function backup(settingsPath) {
|
|
110
|
+
if (!fs.existsSync(settingsPath))
|
|
111
|
+
return null;
|
|
112
|
+
const ts = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
113
|
+
const backupPath = `${settingsPath}${BACKUP_SUFFIX}-${ts}.bak`;
|
|
114
|
+
fs.copyFileSync(settingsPath, backupPath);
|
|
115
|
+
pruneBackups(settingsPath);
|
|
116
|
+
return backupPath;
|
|
117
|
+
}
|
|
118
|
+
function pruneBackups(settingsPath) {
|
|
119
|
+
const dir = path.dirname(settingsPath);
|
|
120
|
+
const base = path.basename(settingsPath);
|
|
121
|
+
const prefix = `${base}${BACKUP_SUFFIX}-`;
|
|
122
|
+
try {
|
|
123
|
+
const backups = fs.readdirSync(dir)
|
|
124
|
+
.filter(f => f.startsWith(prefix) && f.endsWith('.bak'))
|
|
125
|
+
.map(f => ({ name: f, mtime: fs.statSync(path.join(dir, f)).mtimeMs }))
|
|
126
|
+
.sort((a, b) => b.mtime - a.mtime);
|
|
127
|
+
for (const old of backups.slice(BACKUP_KEEP)) {
|
|
128
|
+
fs.unlinkSync(path.join(dir, old.name));
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
catch { /* non-critical */ }
|
|
132
|
+
}
|
|
133
|
+
// ── Restore ───────────────────────────────────────────────────────────────────
|
|
134
|
+
export function restore(settingsPath) {
|
|
135
|
+
const dir = path.dirname(settingsPath);
|
|
136
|
+
const base = path.basename(settingsPath);
|
|
137
|
+
const prefix = `${base}${BACKUP_SUFFIX}-`;
|
|
138
|
+
try {
|
|
139
|
+
const backups = fs.readdirSync(dir)
|
|
140
|
+
.filter(f => f.startsWith(prefix) && f.endsWith('.bak'))
|
|
141
|
+
.sort().reverse();
|
|
142
|
+
if (backups.length === 0)
|
|
143
|
+
return null;
|
|
144
|
+
const latest = path.join(dir, backups[0]);
|
|
145
|
+
fs.copyFileSync(latest, settingsPath);
|
|
146
|
+
fs.unlinkSync(latest);
|
|
147
|
+
return latest;
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
return null;
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// ── Remove Guardion entries ───────────────────────────────────────────────────
|
|
154
|
+
export function removeGuardionEntries(settings) {
|
|
155
|
+
const cleaned = JSON.parse(JSON.stringify(settings));
|
|
156
|
+
if (cleaned.env) {
|
|
157
|
+
for (const key of Object.keys(cleaned.env)) {
|
|
158
|
+
if (key.startsWith('GUARDION_') || key === 'ANTHROPIC_BASE_URL') {
|
|
159
|
+
delete cleaned.env[key];
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
// Remove Guardion-injected custom headers but preserve ANTHROPIC_CUSTOM_HEADERS
|
|
163
|
+
// if the user had their own headers before Guardion was installed
|
|
164
|
+
if (cleaned.env.ANTHROPIC_CUSTOM_HEADERS) {
|
|
165
|
+
const lines = cleaned.env.ANTHROPIC_CUSTOM_HEADERS.split('\n')
|
|
166
|
+
.filter((l) => !l.startsWith('x-guardion-'));
|
|
167
|
+
if (lines.length === 0)
|
|
168
|
+
delete cleaned.env.ANTHROPIC_CUSTOM_HEADERS;
|
|
169
|
+
else
|
|
170
|
+
cleaned.env.ANTHROPIC_CUSTOM_HEADERS = lines.join('\n');
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
if (cleaned.hooks) {
|
|
174
|
+
for (const [event, hookList] of Object.entries(cleaned.hooks)) {
|
|
175
|
+
const filtered = hookList.filter(entry => {
|
|
176
|
+
if (entry.hooks)
|
|
177
|
+
return !entry.hooks.some(h => h.command?.includes('guardion'));
|
|
178
|
+
return !entry.command?.includes('guardion');
|
|
179
|
+
});
|
|
180
|
+
if (filtered.length === 0)
|
|
181
|
+
delete cleaned.hooks[event];
|
|
182
|
+
else
|
|
183
|
+
cleaned.hooks[event] = filtered;
|
|
184
|
+
}
|
|
185
|
+
if (Object.keys(cleaned.hooks).length === 0)
|
|
186
|
+
delete cleaned.hooks;
|
|
187
|
+
}
|
|
188
|
+
return cleaned;
|
|
189
|
+
}
|
|
190
|
+
//# sourceMappingURL=installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../../../../connectors/claude-code/src/installer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAQ,SAAS,CAAC;AAC3B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAEL,aAAa,EACb,WAAW,EACX,cAAc,EACd,eAAe,EACf,aAAa,GACd,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAEL,eAAe,EACf,kBAAkB,GACnB,MAAM,yBAAyB,CAAC;AAEjC,iEAAiE;AACjE,MAAM,gBAAgB,GAAG,mCAAmC,CAAC;AAE7D,sEAAsE;AACtE,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,MAAM,UAAU,GAAG;QACjB,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC;QACtD,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,mBAAmB,CAAC;KAC7D,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,UAAU,EAAE,CAAC;QAC3B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,OAAO,UAAU,CAAC,CAAC,CAAC,CAAC;AACvB,CAAC;AAUD,SAAS,WAAW,CAAC,GAAY;IAC/B,OAAO,GAAG,CAAC,CAAC,CAAC,QAAQ,oBAAoB,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAED,SAAS,UAAU,CACjB,GAAmB,EACnB,GAAY;IAEZ,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC;IACjC,MAAM,MAAM,GAAI,kBAAkB,CAAC,GAAG,CAAC,CAAC;IACxC,MAAM,MAAM,GAAwC,EAAE,CAAC;IACvD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;IAC3E,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,iFAAiF;AAEjF,SAAS,QAAQ,CAAC,GAAmB,EAAE,KAAa;IAClD,MAAM,IAAI,GAA2B;QACnC,aAAa,EAAS,GAAG,CAAC,IAAI;QAC9B,gBAAgB,EAAM,GAAG,CAAC,OAAO;QACjC,eAAe,EAAO,GAAG,CAAC,MAAM;QAChC,oBAAoB,EAAE,GAAG,CAAC,WAAW;KACtC,CAAC;IAEF,IAAI,GAAG,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QACxB,MAAM,EAAE,GAAS,EAAE,GAAG,eAAe,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC;QACxD,MAAM,QAAQ,GAAG,EAAE,CAAC,QAAQ,CAAC;QAE7B,gEAAgE;QAChE,kDAAkD;QAClD,MAAM,aAAa,GAAa;YAC9B,GAAG,cAAc,KAAK,KAAK,EAAE;YAC7B,GAAG,eAAe,KAAK,QAAQ,EAAE;YACjC,GAAG,aAAa,KAAK,GAAG,CAAC,MAAM,EAAE;SAClC,CAAC;QACF,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,IAAI,EAAE,CAAC,iBAAiB;gBAAE,aAAa,CAAC,IAAI,CAAC,iCAAiC,EAAE,CAAC,iBAAiB,EAAE,CAAC,CAAC;YACtG,IAAI,EAAE,CAAC,aAAa;gBAAM,aAAa,CAAC,IAAI,CAAC,6BAA6B,EAAE,CAAC,aAAa,EAAE,CAAC,CAAC;QAChG,CAAC;QAED,IAAI,CAAC,kBAAkB,GAAS,EAAE,CAAC,GAAG,CAAC;QACvC,IAAI,CAAC,wBAAwB,GAAG,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzD,IAAI,CAAC,oBAAoB,GAAO,EAAE,CAAC,GAAG,CAAC;QACvC,IAAI,CAAC,gBAAgB,GAAW,EAAE,CAAC,OAAO,CAAC;IAC7C,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,gFAAgF;AAChF,4EAA4E;AAC5E,6DAA6D;AAE7D,SAAS,iBAAiB,CACxB,OAAwC,EACxC,UAAkB;IAElB,MAAM,GAAG,GAAoC,EAAE,CAAC;IAChD,KAAK,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAClD,gEAAgE;QAChE,IAAI,OAAO,GAAG,CAAC,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,GAAG,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YAChE,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC;YAChB,SAAS;QACX,CAAC;QACD,GAAG,CAAC,IAAI,CAAC,GAAG;YACV,IAAI,EAAK,MAAM;YACf,GAAG,EAAM,GAAG,UAAU,IAAI,IAAI,MAAM;YACpC,OAAO,EAAE,EAAE,aAAa,EAAE,wBAAwB,EAAE;SACrD,CAAC;IACJ,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAWD,MAAM,UAAU,KAAK,CAAC,IAAgB,EAAE,IAAkB;IACxD,MAAM,IAAI,GAAmB,IAAI,CAAC,QAAQ;QACxC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3C,CAAC,CAAC,EAAE,CAAC;IAEP,IAAI,CAAC,GAAG,GAAK,EAAE,GAAG,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC,EAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;IAC7E,IAAI,CAAC,KAAK,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,EAAE,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;IAEtF,gEAAgE;IAChE,IAAI,IAAI,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC3E,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,OAAO;eACtC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC;QACxE,IAAI,CAAC,UAAU,GAAG;YAChB,GAAG,CAAC,IAAI,CAAC,UAAU,IAAI,EAAE,CAAC;YAC1B,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC;SAC9C,CAAC;IACJ,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,aAAa,CAAC,QAAgB,EAAE,QAAwB;IACtE,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACnC,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;IACzE,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC;AAED,gFAAgF;AAEhF,MAAM,UAAU,MAAM,CAAC,YAAoB;IACzC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,OAAO,IAAI,CAAC;IAC9C,MAAM,EAAE,GAAW,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAC/E,MAAM,UAAU,GAAG,GAAG,YAAY,GAAG,aAAa,IAAI,EAAE,MAAM,CAAC;IAC/D,EAAE,CAAC,YAAY,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;IAC1C,YAAY,CAAC,YAAY,CAAC,CAAC;IAC3B,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,SAAS,YAAY,CAAC,YAAoB;IACxC,MAAM,GAAG,GAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,aAAa,GAAG,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACvD,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACtE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC;QACrC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7C,EAAE,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;QAC1C,CAAC;IACH,CAAC;IAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,CAAC;AAChC,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,OAAO,CAAC,YAAoB;IAC1C,MAAM,GAAG,GAAM,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC1C,MAAM,IAAI,GAAK,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,GAAG,IAAI,GAAG,aAAa,GAAG,CAAC;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC;aAChC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACvD,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;QACpB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,IAAI,CAAC;QACtC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,EAAE,CAAC,YAAY,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;QACtC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,qBAAqB,CAAC,QAAwB;IAC5D,MAAM,OAAO,GAAmB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IAErE,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,WAAW,CAAC,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;gBAChE,OAAO,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1B,CAAC;QACH,CAAC;QACD,gFAAgF;QAChF,kEAAkE;QAClE,IAAI,OAAO,CAAC,GAAG,CAAC,wBAAwB,EAAE,CAAC;YACzC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,CAAC,IAAI,CAAC;iBAC3D,MAAM,CAAC,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC;YACvD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,GAAG,CAAC,wBAAwB,CAAC;;gBAC/D,OAAO,CAAC,GAAG,CAAC,wBAAwB,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;QAClB,KAAK,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9D,MAAM,QAAQ,GAAI,QAGf,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;gBACjB,IAAI,KAAK,CAAC,KAAK;oBAAE,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;gBAChF,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,UAAU,CAAC,CAAC;YAC9C,CAAC,CAAC,CAAC;YACH,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;;gBAClD,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,QAAQ,CAAC;QACvC,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,OAAO,CAAC,KAAK,CAAC;IACpE,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.d.ts","sourceRoot":"","sources":["../../../../connectors/claude-code/src/scanner.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,cAAc;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAClC,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC7C,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,UAAU;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,cAAc,GAAG,IAAI,CAAC;IAChC,mBAAmB,EAAE,OAAO,CAAC;IAC7B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAC7C;AAED,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CAMpE;AAED,wBAAgB,IAAI,IAAI,UAAU,CAejC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scanner.js","sourceRoot":"","sources":["../../../../connectors/claude-code/src/scanner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,SAAS,CAAC;AAGzB,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AA0BlE,MAAM,UAAU,YAAY,CAAC,QAAgB;IAC3C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAmB,CAAC;IAC1E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,IAAI;IAClB,MAAM,YAAY,GAAG,oBAAoB,CAAC;IAC1C,MAAM,QAAQ,GAAG,YAAY,CAAC,YAAY,CAAC,CAAC;IAC5C,MAAM,UAAU,GAAG;QACjB,GAAG,CAAC,QAAQ,EAAE,UAAU,IAAI,EAAE,CAAC;KAChC,CAAC;IAEF,uEAAuE;IACvE,MAAM,mBAAmB,GAAG,OAAO,CACjC,QAAQ,EAAE,GAAG,EAAE,aAAa;QAC1B,QAAQ,EAAE,GAAG,EAAE,gBAAgB;QAC/B,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAC7D,CAAC;IAEF,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,mBAAmB,EAAE,UAAU,EAAE,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,239 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
declare const GatewaySchema: z.ZodObject<{
|
|
3
|
+
/** Base URL of the Guardion gateway container / cloud endpoint */
|
|
4
|
+
url: z.ZodDefault<z.ZodString>;
|
|
5
|
+
/** MCP proxy base URL */
|
|
6
|
+
mcp_url: z.ZodDefault<z.ZodString>;
|
|
7
|
+
/** LLM provider the gateway will forward to */
|
|
8
|
+
provider: z.ZodDefault<z.ZodEnum<["anthropic", "vertex-ai", "bedrock", "openai"]>>;
|
|
9
|
+
/** Vertex AI only */
|
|
10
|
+
vertex_project_id: z.ZodDefault<z.ZodString>;
|
|
11
|
+
vertex_region: z.ZodDefault<z.ZodString>;
|
|
12
|
+
}, "strip", z.ZodTypeAny, {
|
|
13
|
+
url: string;
|
|
14
|
+
mcp_url: string;
|
|
15
|
+
provider: "anthropic" | "vertex-ai" | "bedrock" | "openai";
|
|
16
|
+
vertex_project_id: string;
|
|
17
|
+
vertex_region: string;
|
|
18
|
+
}, {
|
|
19
|
+
url?: string | undefined;
|
|
20
|
+
mcp_url?: string | undefined;
|
|
21
|
+
provider?: "anthropic" | "vertex-ai" | "bedrock" | "openai" | undefined;
|
|
22
|
+
vertex_project_id?: string | undefined;
|
|
23
|
+
vertex_region?: string | undefined;
|
|
24
|
+
}>;
|
|
25
|
+
declare const HooksConfigSchema: z.ZodObject<{
|
|
26
|
+
/**
|
|
27
|
+
* Subset of Claude Code hook events to register.
|
|
28
|
+
* Defaults to all supported events when omitted.
|
|
29
|
+
* Security teams can narrow this list via MDM config.
|
|
30
|
+
*/
|
|
31
|
+
events: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
32
|
+
/** Milliseconds to wait for Guard API before giving up (fire-and-forget) */
|
|
33
|
+
timeout_ms: z.ZodDefault<z.ZodNumber>;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
events: string[];
|
|
36
|
+
timeout_ms: number;
|
|
37
|
+
}, {
|
|
38
|
+
events?: string[] | undefined;
|
|
39
|
+
timeout_ms?: number | undefined;
|
|
40
|
+
}>;
|
|
41
|
+
declare const InventoryConfigSchema: z.ZodObject<{
|
|
42
|
+
/** Master switch — set to false to disable all local tool inventory scanning */
|
|
43
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
44
|
+
/** Scan local SKILL.md files (~/.claude/skills, project .claude/skills, plugin cache) */
|
|
45
|
+
scan_skills: z.ZodDefault<z.ZodBoolean>;
|
|
46
|
+
/** Scan configured MCP servers (settings.json, .mcp.json) */
|
|
47
|
+
scan_mcp: z.ZodDefault<z.ZodBoolean>;
|
|
48
|
+
/** Scan installed plugins / their declared MCP servers */
|
|
49
|
+
scan_plugins: z.ZodDefault<z.ZodBoolean>;
|
|
50
|
+
/** Include Claude Code built-in tools (Bash, Read, Write, …) */
|
|
51
|
+
scan_builtins: z.ZodDefault<z.ZodBoolean>;
|
|
52
|
+
}, "strip", z.ZodTypeAny, {
|
|
53
|
+
enabled: boolean;
|
|
54
|
+
scan_skills: boolean;
|
|
55
|
+
scan_mcp: boolean;
|
|
56
|
+
scan_plugins: boolean;
|
|
57
|
+
scan_builtins: boolean;
|
|
58
|
+
}, {
|
|
59
|
+
enabled?: boolean | undefined;
|
|
60
|
+
scan_skills?: boolean | undefined;
|
|
61
|
+
scan_mcp?: boolean | undefined;
|
|
62
|
+
scan_plugins?: boolean | undefined;
|
|
63
|
+
scan_builtins?: boolean | undefined;
|
|
64
|
+
}>;
|
|
65
|
+
declare const ConfigSchema: z.ZodObject<{
|
|
66
|
+
version: z.ZodLiteral<1>;
|
|
67
|
+
/**
|
|
68
|
+
* Deployment tier:
|
|
69
|
+
* hooks — fire-and-forget hook events to Guard API, no LLM proxy
|
|
70
|
+
* full — route all LLM traffic through Guardion gateway + hook events
|
|
71
|
+
*/
|
|
72
|
+
tier: z.ZodEnum<["hooks", "full"]>;
|
|
73
|
+
/** Guard API base URL */
|
|
74
|
+
api_url: z.ZodString;
|
|
75
|
+
/** Policy slug to evaluate hook events against */
|
|
76
|
+
policy: z.ZodString;
|
|
77
|
+
/** Application label attached to every event in the console */
|
|
78
|
+
application: z.ZodString;
|
|
79
|
+
/** Gateway proxy settings (full tier only) */
|
|
80
|
+
gateway: z.ZodOptional<z.ZodObject<{
|
|
81
|
+
/** Base URL of the Guardion gateway container / cloud endpoint */
|
|
82
|
+
url: z.ZodDefault<z.ZodString>;
|
|
83
|
+
/** MCP proxy base URL */
|
|
84
|
+
mcp_url: z.ZodDefault<z.ZodString>;
|
|
85
|
+
/** LLM provider the gateway will forward to */
|
|
86
|
+
provider: z.ZodDefault<z.ZodEnum<["anthropic", "vertex-ai", "bedrock", "openai"]>>;
|
|
87
|
+
/** Vertex AI only */
|
|
88
|
+
vertex_project_id: z.ZodDefault<z.ZodString>;
|
|
89
|
+
vertex_region: z.ZodDefault<z.ZodString>;
|
|
90
|
+
}, "strip", z.ZodTypeAny, {
|
|
91
|
+
url: string;
|
|
92
|
+
mcp_url: string;
|
|
93
|
+
provider: "anthropic" | "vertex-ai" | "bedrock" | "openai";
|
|
94
|
+
vertex_project_id: string;
|
|
95
|
+
vertex_region: string;
|
|
96
|
+
}, {
|
|
97
|
+
url?: string | undefined;
|
|
98
|
+
mcp_url?: string | undefined;
|
|
99
|
+
provider?: "anthropic" | "vertex-ai" | "bedrock" | "openai" | undefined;
|
|
100
|
+
vertex_project_id?: string | undefined;
|
|
101
|
+
vertex_region?: string | undefined;
|
|
102
|
+
}>>;
|
|
103
|
+
/** Hook event configuration */
|
|
104
|
+
hooks: z.ZodOptional<z.ZodObject<{
|
|
105
|
+
/**
|
|
106
|
+
* Subset of Claude Code hook events to register.
|
|
107
|
+
* Defaults to all supported events when omitted.
|
|
108
|
+
* Security teams can narrow this list via MDM config.
|
|
109
|
+
*/
|
|
110
|
+
events: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
|
|
111
|
+
/** Milliseconds to wait for Guard API before giving up (fire-and-forget) */
|
|
112
|
+
timeout_ms: z.ZodDefault<z.ZodNumber>;
|
|
113
|
+
}, "strip", z.ZodTypeAny, {
|
|
114
|
+
events: string[];
|
|
115
|
+
timeout_ms: number;
|
|
116
|
+
}, {
|
|
117
|
+
events?: string[] | undefined;
|
|
118
|
+
timeout_ms?: number | undefined;
|
|
119
|
+
}>>;
|
|
120
|
+
/** Local tool inventory scanning (sent to Guard API on SessionStart) */
|
|
121
|
+
inventory: z.ZodOptional<z.ZodObject<{
|
|
122
|
+
/** Master switch — set to false to disable all local tool inventory scanning */
|
|
123
|
+
enabled: z.ZodDefault<z.ZodBoolean>;
|
|
124
|
+
/** Scan local SKILL.md files (~/.claude/skills, project .claude/skills, plugin cache) */
|
|
125
|
+
scan_skills: z.ZodDefault<z.ZodBoolean>;
|
|
126
|
+
/** Scan configured MCP servers (settings.json, .mcp.json) */
|
|
127
|
+
scan_mcp: z.ZodDefault<z.ZodBoolean>;
|
|
128
|
+
/** Scan installed plugins / their declared MCP servers */
|
|
129
|
+
scan_plugins: z.ZodDefault<z.ZodBoolean>;
|
|
130
|
+
/** Include Claude Code built-in tools (Bash, Read, Write, …) */
|
|
131
|
+
scan_builtins: z.ZodDefault<z.ZodBoolean>;
|
|
132
|
+
}, "strip", z.ZodTypeAny, {
|
|
133
|
+
enabled: boolean;
|
|
134
|
+
scan_skills: boolean;
|
|
135
|
+
scan_mcp: boolean;
|
|
136
|
+
scan_plugins: boolean;
|
|
137
|
+
scan_builtins: boolean;
|
|
138
|
+
}, {
|
|
139
|
+
enabled?: boolean | undefined;
|
|
140
|
+
scan_skills?: boolean | undefined;
|
|
141
|
+
scan_mcp?: boolean | undefined;
|
|
142
|
+
scan_plugins?: boolean | undefined;
|
|
143
|
+
scan_builtins?: boolean | undefined;
|
|
144
|
+
}>>;
|
|
145
|
+
/**
|
|
146
|
+
* P2 enforcement: when true, PreToolUse/PostToolUse make a SYNCHRONOUS Guard
|
|
147
|
+
* eval and can deny/warn on tool input+output. Default OFF (observability-
|
|
148
|
+
* first) so policy false positives can't block real work on day one.
|
|
149
|
+
*/
|
|
150
|
+
enforce: z.ZodDefault<z.ZodBoolean>;
|
|
151
|
+
/**
|
|
152
|
+
* If the Guard eval is unreachable/times out: false (default) = fail-open
|
|
153
|
+
* (allow); true = fail-closed (deny). Should mirror the policy's fail_mode.
|
|
154
|
+
*/
|
|
155
|
+
fail_closed: z.ZodDefault<z.ZodBoolean>;
|
|
156
|
+
/**
|
|
157
|
+
* Default mode for the `guardion mcp` interposer when not set per-server:
|
|
158
|
+
* dlp (anonymize, never block) | enforce (block on deny + redact) | monitor (observe).
|
|
159
|
+
* Per-server `--mode` on the injected prefix overrides this.
|
|
160
|
+
*/
|
|
161
|
+
mode: z.ZodOptional<z.ZodEnum<["dlp", "enforce", "monitor"]>>;
|
|
162
|
+
/** Interposer: apply Guard corrections (default true). */
|
|
163
|
+
redact: z.ZodOptional<z.ZodBoolean>;
|
|
164
|
+
/** Interposer: tool-list integrity check at connect (default true). */
|
|
165
|
+
integrity: z.ZodOptional<z.ZodBoolean>;
|
|
166
|
+
}, "strip", z.ZodTypeAny, {
|
|
167
|
+
version: 1;
|
|
168
|
+
tier: "hooks" | "full";
|
|
169
|
+
api_url: string;
|
|
170
|
+
policy: string;
|
|
171
|
+
application: string;
|
|
172
|
+
enforce: boolean;
|
|
173
|
+
fail_closed: boolean;
|
|
174
|
+
hooks?: {
|
|
175
|
+
events: string[];
|
|
176
|
+
timeout_ms: number;
|
|
177
|
+
} | undefined;
|
|
178
|
+
gateway?: {
|
|
179
|
+
url: string;
|
|
180
|
+
mcp_url: string;
|
|
181
|
+
provider: "anthropic" | "vertex-ai" | "bedrock" | "openai";
|
|
182
|
+
vertex_project_id: string;
|
|
183
|
+
vertex_region: string;
|
|
184
|
+
} | undefined;
|
|
185
|
+
inventory?: {
|
|
186
|
+
enabled: boolean;
|
|
187
|
+
scan_skills: boolean;
|
|
188
|
+
scan_mcp: boolean;
|
|
189
|
+
scan_plugins: boolean;
|
|
190
|
+
scan_builtins: boolean;
|
|
191
|
+
} | undefined;
|
|
192
|
+
mode?: "enforce" | "dlp" | "monitor" | undefined;
|
|
193
|
+
redact?: boolean | undefined;
|
|
194
|
+
integrity?: boolean | undefined;
|
|
195
|
+
}, {
|
|
196
|
+
version: 1;
|
|
197
|
+
tier: "hooks" | "full";
|
|
198
|
+
api_url: string;
|
|
199
|
+
policy: string;
|
|
200
|
+
application: string;
|
|
201
|
+
hooks?: {
|
|
202
|
+
events?: string[] | undefined;
|
|
203
|
+
timeout_ms?: number | undefined;
|
|
204
|
+
} | undefined;
|
|
205
|
+
gateway?: {
|
|
206
|
+
url?: string | undefined;
|
|
207
|
+
mcp_url?: string | undefined;
|
|
208
|
+
provider?: "anthropic" | "vertex-ai" | "bedrock" | "openai" | undefined;
|
|
209
|
+
vertex_project_id?: string | undefined;
|
|
210
|
+
vertex_region?: string | undefined;
|
|
211
|
+
} | undefined;
|
|
212
|
+
inventory?: {
|
|
213
|
+
enabled?: boolean | undefined;
|
|
214
|
+
scan_skills?: boolean | undefined;
|
|
215
|
+
scan_mcp?: boolean | undefined;
|
|
216
|
+
scan_plugins?: boolean | undefined;
|
|
217
|
+
scan_builtins?: boolean | undefined;
|
|
218
|
+
} | undefined;
|
|
219
|
+
enforce?: boolean | undefined;
|
|
220
|
+
fail_closed?: boolean | undefined;
|
|
221
|
+
mode?: "enforce" | "dlp" | "monitor" | undefined;
|
|
222
|
+
redact?: boolean | undefined;
|
|
223
|
+
integrity?: boolean | undefined;
|
|
224
|
+
}>;
|
|
225
|
+
export type GuardionConfig = z.infer<typeof ConfigSchema>;
|
|
226
|
+
export type GatewayConfig = z.infer<typeof GatewaySchema>;
|
|
227
|
+
export type HooksConfig = z.infer<typeof HooksConfigSchema>;
|
|
228
|
+
export type InventoryConfig = z.infer<typeof InventoryConfigSchema>;
|
|
229
|
+
export declare const DEFAULT_GATEWAY: GatewayConfig;
|
|
230
|
+
export declare const DEFAULT_HOOKS_CONFIG: HooksConfig;
|
|
231
|
+
export declare const DEFAULT_INVENTORY_CONFIG: InventoryConfig;
|
|
232
|
+
export declare const DEFAULT_CONFIG: GuardionConfig;
|
|
233
|
+
/** Resolved hooks events — falls back to all events when not configured */
|
|
234
|
+
export declare function resolvedHookEvents(cfg: GuardionConfig): readonly string[];
|
|
235
|
+
export declare function readConfig(): GuardionConfig | null;
|
|
236
|
+
export declare function readConfigOrDefault(): GuardionConfig;
|
|
237
|
+
export declare function writeConfig(cfg: GuardionConfig): void;
|
|
238
|
+
export {};
|
|
239
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../core/config.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAaxB,QAAA,MAAM,aAAa;IACjB,kEAAkE;;IAElE,yBAAyB;;IAEzB,+CAA+C;;IAE/C,qBAAqB;;;;;;;;;;;;;;;EAGrB,CAAC;AAEH,QAAA,MAAM,iBAAiB;IACrB;;;;OAIG;;IAEH,4EAA4E;;;;;;;;EAE5E,CAAC;AAEH,QAAA,MAAM,qBAAqB;IACzB,gFAAgF;;IAEhF,yFAAyF;;IAEzF,6DAA6D;;IAE7D,0DAA0D;;IAE1D,gEAAgE;;;;;;;;;;;;;;EAEhE,CAAC;AAIH,QAAA,MAAM,YAAY;;IAEhB;;;;OAIG;;IAEH,yBAAyB;;IAEzB,kDAAkD;;IAElD,+DAA+D;;IAE/D,8CAA8C;;QAnD9C,kEAAkE;;QAElE,yBAAyB;;QAEzB,+CAA+C;;QAE/C,qBAAqB;;;;;;;;;;;;;;;;IA+CrB,+BAA+B;;QAzC/B;;;;WAIG;;QAEH,4EAA4E;;;;;;;;;IAqC5E,wEAAwE;;QAhCxE,gFAAgF;;QAEhF,yFAAyF;;QAEzF,6DAA6D;;QAE7D,0DAA0D;;QAE1D,gEAAgE;;;;;;;;;;;;;;;IA0BhE;;;;OAIG;;IAEH;;;OAGG;;IAEH;;;;OAIG;;IAEH,0DAA0D;;IAE1D,uEAAuE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEvE,CAAC;AAEH,MAAM,MAAM,cAAc,GAAK,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAC5D,MAAM,MAAM,aAAa,GAAM,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAC7D,MAAM,MAAM,WAAW,GAAQ,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AACjE,MAAM,MAAM,eAAe,GAAI,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAIrE,eAAO,MAAM,eAAe,EAAE,aAM7B,CAAC;AAEF,eAAO,MAAM,oBAAoB,EAAE,WAGlC,CAAC;AAEF,eAAO,MAAM,wBAAwB,EAAE,eAMtC,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,cAQ5B,CAAC;AAEF,2EAA2E;AAC3E,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,cAAc,GAAG,SAAS,MAAM,EAAE,CAKzE;AAID,wBAAgB,UAAU,IAAI,cAAc,GAAG,IAAI,CASlD;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAerD"}
|