@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
package/dist/cli.js
DELETED
|
@@ -1,289 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env node
|
|
2
|
-
import { Command } from 'commander';
|
|
3
|
-
import chalk from 'chalk';
|
|
4
|
-
import readline from 'node:readline';
|
|
5
|
-
import fs from 'node:fs';
|
|
6
|
-
import https from 'node:https';
|
|
7
|
-
import http from 'node:http';
|
|
8
|
-
import { GUARDION_VERSION, TOKEN_PREFIX, DEFAULT_API_URL, DEV_API_URL } from './constants.js';
|
|
9
|
-
import { writeConfig, readConfig } from './config.js';
|
|
10
|
-
import { getToken, setToken, clearToken } from './keychain.js';
|
|
11
|
-
import { scan } from './scanner.js';
|
|
12
|
-
import { patch, backup, restore, writeSettings, removeGuardionEntries } from './installer.js';
|
|
13
|
-
const program = new Command();
|
|
14
|
-
function ok(msg) { console.log(chalk.green('✓ ') + msg); }
|
|
15
|
-
function warn(msg) { console.log(chalk.yellow('⚠ ') + msg); }
|
|
16
|
-
function err(msg) { console.error(chalk.red('✗ ') + msg); }
|
|
17
|
-
function log(msg) { console.log(msg); }
|
|
18
|
-
async function promptInput(question, hidden = false) {
|
|
19
|
-
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
20
|
-
return new Promise(resolve => {
|
|
21
|
-
rl.question(chalk.cyan(question), answer => { rl.close(); resolve(answer.trim()); });
|
|
22
|
-
});
|
|
23
|
-
}
|
|
24
|
-
// ── init ──────────────────────────────────────────────────────────────────────
|
|
25
|
-
program
|
|
26
|
-
.command('init')
|
|
27
|
-
.description('Set up Guardion monitoring for Claude Code')
|
|
28
|
-
.option('--token <token>', 'Guardion API token (stored in OS keychain)')
|
|
29
|
-
.option('--policy <policy>', 'Policy slug (default: prompt-defense)', 'prompt-defense')
|
|
30
|
-
.option('--application <name>', 'Application label (default: claude-code)', 'claude-code')
|
|
31
|
-
.option('--api-url <url>', `Guard API URL (default: ${DEFAULT_API_URL})`)
|
|
32
|
-
.option('--dev', `Use local Docker stack (${DEV_API_URL})`, false)
|
|
33
|
-
.option('--dry-run', 'Print what would be written without making changes', false)
|
|
34
|
-
.action(async (opts) => {
|
|
35
|
-
log(chalk.bold('\n Guardion Init\n'));
|
|
36
|
-
// Resolve token
|
|
37
|
-
let token = opts.token || process.env.GUARDION_TOKEN || getToken();
|
|
38
|
-
if (!token) {
|
|
39
|
-
token = await promptInput('Enter your Guardion token (grd_...): ');
|
|
40
|
-
}
|
|
41
|
-
if (!token) {
|
|
42
|
-
err('Token is required.');
|
|
43
|
-
process.exit(1);
|
|
44
|
-
}
|
|
45
|
-
if (!opts.dev && !token.startsWith(TOKEN_PREFIX)) {
|
|
46
|
-
warn(`Token doesn't start with "${TOKEN_PREFIX}" — double-check it's correct.`);
|
|
47
|
-
}
|
|
48
|
-
// Build config
|
|
49
|
-
const apiUrl = opts.dev
|
|
50
|
-
? DEV_API_URL
|
|
51
|
-
: (opts.apiUrl || readConfig()?.api_url || DEFAULT_API_URL);
|
|
52
|
-
const cfg = {
|
|
53
|
-
version: 1,
|
|
54
|
-
tier: 'hooks',
|
|
55
|
-
api_url: apiUrl,
|
|
56
|
-
policy: opts.policy,
|
|
57
|
-
application: opts.application,
|
|
58
|
-
};
|
|
59
|
-
// Scan existing settings
|
|
60
|
-
const scanResult = scan();
|
|
61
|
-
if (scanResult.hasExistingGuardion) {
|
|
62
|
-
warn('Guardion already configured — re-running will overwrite hooks and env.');
|
|
63
|
-
}
|
|
64
|
-
// Patch
|
|
65
|
-
const patched = patch(scanResult, { config: cfg, dev: opts.dev, dryRun: opts.dryRun });
|
|
66
|
-
if (opts.dryRun) {
|
|
67
|
-
log(chalk.bold('\n Would write to ' + scanResult.settingsPath + ':'));
|
|
68
|
-
log(JSON.stringify(patched, null, 2));
|
|
69
|
-
log(chalk.bold('\n Would write config to ~/.guardion/config.yaml'));
|
|
70
|
-
log(JSON.stringify(cfg, null, 2));
|
|
71
|
-
log('');
|
|
72
|
-
log(chalk.dim(' (dry-run — no changes made)'));
|
|
73
|
-
return;
|
|
74
|
-
}
|
|
75
|
-
// Store token in keychain
|
|
76
|
-
try {
|
|
77
|
-
setToken(token);
|
|
78
|
-
ok('Token stored in OS keychain');
|
|
79
|
-
}
|
|
80
|
-
catch {
|
|
81
|
-
warn('Could not store token in keychain — writing to ~/.guardion/token instead');
|
|
82
|
-
fs.mkdirSync(require('os').homedir() + '/.guardion', { recursive: true });
|
|
83
|
-
fs.writeFileSync(require('os').homedir() + '/.guardion/token', token, { encoding: 'utf-8', mode: 0o600 });
|
|
84
|
-
}
|
|
85
|
-
// Backup + write settings
|
|
86
|
-
const backupPath = backup(scanResult.settingsPath);
|
|
87
|
-
if (backupPath)
|
|
88
|
-
ok(`Backed up settings → ${backupPath}`);
|
|
89
|
-
writeSettings(scanResult.settingsPath, patched);
|
|
90
|
-
ok(`Patched ${scanResult.settingsPath}`);
|
|
91
|
-
// Write config files
|
|
92
|
-
writeConfig(cfg);
|
|
93
|
-
ok('Wrote ~/.guardion/config.yaml');
|
|
94
|
-
// Summary
|
|
95
|
-
log('');
|
|
96
|
-
log(chalk.bold(' Configuration:'));
|
|
97
|
-
log(` Tier ${chalk.cyan('hooks')} (monitoring only)`);
|
|
98
|
-
log(` Guard API ${chalk.cyan(apiUrl)}`);
|
|
99
|
-
log(` Policy ${chalk.cyan(cfg.policy)}`);
|
|
100
|
-
log(` Application ${chalk.cyan(cfg.application)}`);
|
|
101
|
-
log(` Hooks ${chalk.cyan(String(Object.keys(patched.hooks ?? {}).length) + ' events')}`);
|
|
102
|
-
if (opts.dev)
|
|
103
|
-
log(`\n ${chalk.yellow('Dev mode')} — pointing at ${chalk.cyan(apiUrl)}`);
|
|
104
|
-
log('');
|
|
105
|
-
ok('Guardion is ready. Start Claude Code and all activity will be monitored.\n');
|
|
106
|
-
});
|
|
107
|
-
// ── status ────────────────────────────────────────────────────────────────────
|
|
108
|
-
program
|
|
109
|
-
.command('status')
|
|
110
|
-
.description('Show Guardion installation status')
|
|
111
|
-
.action(() => {
|
|
112
|
-
log(chalk.bold('\n Guardion Status\n'));
|
|
113
|
-
const cfg = readConfig();
|
|
114
|
-
const token = getToken();
|
|
115
|
-
const result = scan();
|
|
116
|
-
if (result.hasExistingGuardion)
|
|
117
|
-
ok('Guardion is ' + chalk.green('ACTIVE'));
|
|
118
|
-
else
|
|
119
|
-
log(' Guardion is ' + chalk.dim('NOT CONFIGURED'));
|
|
120
|
-
log(` Tier ${cfg?.tier ? chalk.cyan(cfg.tier) : chalk.dim('(not configured)')}`);
|
|
121
|
-
log(` Guard API ${cfg?.api_url ? chalk.cyan(cfg.api_url) : chalk.dim('(not configured)')}`);
|
|
122
|
-
log(` Policy ${cfg?.policy ? chalk.cyan(cfg.policy) : chalk.dim('(not configured)')}`);
|
|
123
|
-
log(` Token ${token ? chalk.green('found in keychain / file') : chalk.red('NOT FOUND')}`);
|
|
124
|
-
const hookCount = Object.keys(result.settings?.hooks ?? {}).length;
|
|
125
|
-
log(` Hooks ${hookCount > 0 ? chalk.cyan(`${hookCount} events`) : chalk.dim('none')}`);
|
|
126
|
-
log('');
|
|
127
|
-
});
|
|
128
|
-
// ── token ─────────────────────────────────────────────────────────────────────
|
|
129
|
-
const tokenCmd = program.command('token').description('Manage Guardion API token');
|
|
130
|
-
tokenCmd
|
|
131
|
-
.command('set <token>')
|
|
132
|
-
.description('Store token in OS keychain')
|
|
133
|
-
.action((token) => {
|
|
134
|
-
try {
|
|
135
|
-
setToken(token);
|
|
136
|
-
ok('Token stored in OS keychain');
|
|
137
|
-
}
|
|
138
|
-
catch (e) {
|
|
139
|
-
err(`Failed to store token: ${e.message}`);
|
|
140
|
-
process.exit(1);
|
|
141
|
-
}
|
|
142
|
-
});
|
|
143
|
-
tokenCmd
|
|
144
|
-
.command('get')
|
|
145
|
-
.description('Print token (masked)')
|
|
146
|
-
.action(() => {
|
|
147
|
-
const t = getToken();
|
|
148
|
-
if (!t) {
|
|
149
|
-
warn('No token found.');
|
|
150
|
-
return;
|
|
151
|
-
}
|
|
152
|
-
log(`Token: ${chalk.dim(t.slice(0, 6) + '...' + t.slice(-4))}`);
|
|
153
|
-
});
|
|
154
|
-
tokenCmd
|
|
155
|
-
.command('clear')
|
|
156
|
-
.description('Remove token from keychain and files')
|
|
157
|
-
.action(() => {
|
|
158
|
-
clearToken();
|
|
159
|
-
ok('Token cleared');
|
|
160
|
-
});
|
|
161
|
-
tokenCmd
|
|
162
|
-
.command('test')
|
|
163
|
-
.description('Verify token by calling Guard API /health')
|
|
164
|
-
.option('--dev', 'Test against local Docker stack')
|
|
165
|
-
.action(async (opts) => {
|
|
166
|
-
const cfg = readConfig();
|
|
167
|
-
const token = getToken();
|
|
168
|
-
const url = opts.dev ? DEV_API_URL : (cfg?.api_url ?? DEFAULT_API_URL);
|
|
169
|
-
if (!token) {
|
|
170
|
-
err('No token found. Run: guardion token set <token>');
|
|
171
|
-
process.exit(1);
|
|
172
|
-
}
|
|
173
|
-
log(`Testing ${chalk.cyan(url + '/health')} ...`);
|
|
174
|
-
const start = Date.now();
|
|
175
|
-
try {
|
|
176
|
-
const result = await httpGet(`${url}/health`, token);
|
|
177
|
-
ok(`${result.status} OK (${Date.now() - start}ms)`);
|
|
178
|
-
}
|
|
179
|
-
catch (e) {
|
|
180
|
-
err(`Guard API unreachable: ${e.message}`);
|
|
181
|
-
process.exit(1);
|
|
182
|
-
}
|
|
183
|
-
});
|
|
184
|
-
// ── uninstall ─────────────────────────────────────────────────────────────────
|
|
185
|
-
program
|
|
186
|
-
.command('uninstall')
|
|
187
|
-
.description('Remove Guardion and restore original settings')
|
|
188
|
-
.option('--clear-token', 'Also remove token from keychain', false)
|
|
189
|
-
.action((opts) => {
|
|
190
|
-
log(chalk.bold('\n Guardion Uninstall\n'));
|
|
191
|
-
const result = scan();
|
|
192
|
-
const restored = restore(result.settingsPath);
|
|
193
|
-
if (restored) {
|
|
194
|
-
ok(`Restored settings from ${restored}`);
|
|
195
|
-
}
|
|
196
|
-
else if (result.settings) {
|
|
197
|
-
const cleaned = removeGuardionEntries(result.settings);
|
|
198
|
-
writeSettings(result.settingsPath, cleaned);
|
|
199
|
-
ok('Removed Guardion entries from settings');
|
|
200
|
-
}
|
|
201
|
-
else {
|
|
202
|
-
warn('No settings file found — nothing to restore');
|
|
203
|
-
}
|
|
204
|
-
// Remove config files
|
|
205
|
-
try {
|
|
206
|
-
fs.unlinkSync(require('path').join(require('os').homedir(), '.guardion', 'config.yaml'));
|
|
207
|
-
}
|
|
208
|
-
catch { }
|
|
209
|
-
try {
|
|
210
|
-
fs.unlinkSync(require('path').join(require('os').homedir(), '.guardion', 'config.json'));
|
|
211
|
-
}
|
|
212
|
-
catch { }
|
|
213
|
-
ok('Removed ~/.guardion/config.yaml');
|
|
214
|
-
if (opts.clearToken) {
|
|
215
|
-
clearToken();
|
|
216
|
-
ok('Cleared token from keychain');
|
|
217
|
-
}
|
|
218
|
-
else {
|
|
219
|
-
log(chalk.dim(' Token left in keychain. Run: guardion token clear'));
|
|
220
|
-
}
|
|
221
|
-
log('');
|
|
222
|
-
ok('Uninstall complete.\n');
|
|
223
|
-
});
|
|
224
|
-
// ── mock ──────────────────────────────────────────────────────────────────────
|
|
225
|
-
program
|
|
226
|
-
.command('mock')
|
|
227
|
-
.description('Start local dev mock server (no Docker needed)')
|
|
228
|
-
.option('--port <port>', 'Port to listen on', '4100')
|
|
229
|
-
.action(async (opts) => {
|
|
230
|
-
const { startMockServer } = await import('./mock-server.js');
|
|
231
|
-
startMockServer(Number(opts.port));
|
|
232
|
-
});
|
|
233
|
-
// ── hook (used when `guardion hook` is the hook command) ──────────────────────
|
|
234
|
-
program
|
|
235
|
-
.command('hook')
|
|
236
|
-
.description('Internal: read stdin hook event, post to Guard API (used as hook command)')
|
|
237
|
-
.action(async () => {
|
|
238
|
-
// Delegate to the CJS hook logic by spawning it, or re-implement inline.
|
|
239
|
-
// For CLI installs (`npm install -g guardion`), this is the hook command.
|
|
240
|
-
const { execFileSync } = await import('node:child_process');
|
|
241
|
-
const { createRequire } = await import('node:module');
|
|
242
|
-
const { fileURLToPath } = await import('node:url');
|
|
243
|
-
const path = await import('node:path');
|
|
244
|
-
const hookPath = path.default.resolve(path.default.dirname(fileURLToPath(import.meta.url)), '..', 'hooks', 'guardion-hook.cjs');
|
|
245
|
-
let input = '';
|
|
246
|
-
process.stdin.setEncoding('utf8');
|
|
247
|
-
process.stdin.on('data', (c) => { input += c; });
|
|
248
|
-
process.stdin.on('end', () => {
|
|
249
|
-
try {
|
|
250
|
-
execFileSync(process.execPath, [hookPath], {
|
|
251
|
-
input,
|
|
252
|
-
stdio: ['pipe', 'inherit', 'inherit'],
|
|
253
|
-
env: process.env,
|
|
254
|
-
timeout: 5000,
|
|
255
|
-
});
|
|
256
|
-
}
|
|
257
|
-
catch { /* always silent */ }
|
|
258
|
-
process.exit(0);
|
|
259
|
-
});
|
|
260
|
-
});
|
|
261
|
-
// ── root ──────────────────────────────────────────────────────────────────────
|
|
262
|
-
program
|
|
263
|
-
.name('guardion')
|
|
264
|
-
.version(GUARDION_VERSION)
|
|
265
|
-
.description('Guardion — AI security monitoring for Claude Code')
|
|
266
|
-
.parse();
|
|
267
|
-
// ── HTTP helper ───────────────────────────────────────────────────────────────
|
|
268
|
-
function httpGet(url, token) {
|
|
269
|
-
return new Promise((resolve, reject) => {
|
|
270
|
-
const parsed = new URL(url);
|
|
271
|
-
const transport = parsed.protocol === 'https:' ? https : http;
|
|
272
|
-
const req = transport.get({ hostname: parsed.hostname, port: parsed.port, path: parsed.pathname, timeout: 5000,
|
|
273
|
-
headers: { Authorization: `Bearer ${token}` } }, (res) => {
|
|
274
|
-
let body = '';
|
|
275
|
-
res.on('data', (c) => { body += c; });
|
|
276
|
-
res.on('end', () => {
|
|
277
|
-
try {
|
|
278
|
-
resolve({ status: res.statusCode ?? 0, body: JSON.parse(body) });
|
|
279
|
-
}
|
|
280
|
-
catch {
|
|
281
|
-
resolve({ status: res.statusCode ?? 0, body });
|
|
282
|
-
}
|
|
283
|
-
});
|
|
284
|
-
});
|
|
285
|
-
req.on('error', reject);
|
|
286
|
-
req.on('timeout', () => { req.destroy(); reject(new Error('timeout')); });
|
|
287
|
-
});
|
|
288
|
-
}
|
|
289
|
-
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,KAAK,MAAY,OAAO,CAAC;AAChC,OAAO,QAAQ,MAAS,eAAe,CAAC;AACxC,OAAO,EAAE,MAAe,SAAS,CAAC;AAClC,OAAO,KAAK,MAAY,YAAY,CAAC;AACrC,OAAO,IAAI,MAAa,WAAW,CAAC;AAEpC,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC9F,OAAO,EAAE,WAAW,EAAE,UAAU,EAA6B,MAAM,aAAa,CAAC;AACjF,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAO,eAAe,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAiC,cAAc,CAAC;AAC/D,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAE9F,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,SAAS,EAAE,CAAC,GAAW,IAAM,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS,IAAI,CAAC,GAAW,IAAI,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACrE,SAAS,GAAG,CAAC,GAAW,IAAK,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;AACpE,SAAS,GAAG,CAAC,GAAW,IAAK,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;AAEhD,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,MAAM,GAAG,KAAK;IACzD,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;IACtF,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE;QAC3B,EAAE,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,EAAE,GAAG,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,iBAAiB,EAAQ,4CAA4C,CAAC;KAC7E,MAAM,CAAC,mBAAmB,EAAM,uCAAuC,EAAE,gBAAgB,CAAC;KAC1F,MAAM,CAAC,sBAAsB,EAAG,0CAA0C,EAAE,aAAa,CAAC;KAC1F,MAAM,CAAC,iBAAiB,EAAQ,2BAA2B,eAAe,GAAG,CAAC;KAC9E,MAAM,CAAC,OAAO,EAAkB,2BAA2B,WAAW,GAAG,EAAE,KAAK,CAAC;KACjF,MAAM,CAAC,WAAW,EAAc,oDAAoD,EAAE,KAAK,CAAC;KAC5F,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAAC;IAEvC,gBAAgB;IAChB,IAAI,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,IAAI,QAAQ,EAAE,CAAC;IACnE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,KAAK,GAAG,MAAM,WAAW,CAAC,uCAAuC,CAAC,CAAC;IACrE,CAAC;IACD,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC3D,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC,6BAA6B,YAAY,gCAAgC,CAAC,CAAC;IAClF,CAAC;IAED,eAAe;IACf,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG;QACrB,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,IAAI,UAAU,EAAE,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC;IAE9D,MAAM,GAAG,GAAG;QACV,OAAO,EAAM,CAAU;QACvB,IAAI,EAAS,OAAgB;QAC7B,OAAO,EAAM,MAAM;QACnB,MAAM,EAAO,IAAI,CAAC,MAAM;QACxB,WAAW,EAAE,IAAI,CAAC,WAAW;KAC9B,CAAC;IAEF,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAI,EAAE,CAAC;IAC1B,IAAI,UAAU,CAAC,mBAAmB,EAAE,CAAC;QACnC,IAAI,CAAC,wEAAwE,CAAC,CAAC;IACjF,CAAC;IAED,QAAQ;IACR,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IAEvF,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,qBAAqB,GAAG,UAAU,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC,CAAC;QACvE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACtC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC,CAAC;QACrE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,GAAG,CAAC,EAAE,CAAC,CAAC;QACR,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC,CAAC;QAChD,OAAO;IACT,CAAC;IAED,0BAA0B;IAC1B,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,EAAE,CAAC,6BAA6B,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,IAAI,CAAC,0EAA0E,CAAC,CAAC;QACjF,EAAE,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,EAAE,CAAC,aAAa,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,GAAG,kBAAkB,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,0BAA0B;IAC1B,MAAM,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;IACnD,IAAI,UAAU;QAAE,EAAE,CAAC,wBAAwB,UAAU,EAAE,CAAC,CAAC;IAEzD,aAAa,CAAC,UAAU,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;IAChD,EAAE,CAAC,WAAW,UAAU,CAAC,YAAY,EAAE,CAAC,CAAC;IAEzC,qBAAqB;IACrB,WAAW,CAAC,GAAG,CAAC,CAAC;IACjB,EAAE,CAAC,+BAA+B,CAAC,CAAC;IAEpC,UAAU;IACV,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IACpC,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAChE,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5C,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAChD,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrD,GAAG,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;IACjG,IAAI,IAAI,CAAC,GAAG;QAAE,GAAG,CAAC,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,kBAAkB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzF,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,4EAA4E,CAAC,CAAC;AACnF,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,QAAQ,CAAC;KACjB,WAAW,CAAC,mCAAmC,CAAC;KAChD,MAAM,CAAC,GAAG,EAAE;IACX,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;IAEzC,MAAM,GAAG,GAAM,UAAU,EAAE,CAAC;IAC5B,MAAM,KAAK,GAAI,QAAQ,EAAE,CAAC;IAC1B,MAAM,MAAM,GAAG,IAAI,EAAE,CAAC;IAEtB,IAAI,MAAM,CAAC,mBAAmB;QAAE,EAAE,CAAC,cAAc,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC;;QAC3C,GAAG,CAAC,gBAAgB,GAAG,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IAEpF,GAAG,CAAC,gBAAgB,GAAG,EAAE,IAAI,CAAQ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAO,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACrG,GAAG,CAAC,gBAAgB,GAAG,EAAE,OAAO,CAAK,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,CAAI,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACrG,GAAG,CAAC,gBAAgB,GAAG,EAAE,MAAM,CAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAK,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IACrG,GAAG,CAAC,gBAAgB,KAAK,CAAY,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IAE3G,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC;IACnE,GAAG,CAAC,gBAAgB,SAAS,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC7F,GAAG,CAAC,EAAE,CAAC,CAAC;AACV,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,WAAW,CAAC,2BAA2B,CAAC,CAAC;AAEnF,QAAQ;KACL,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,4BAA4B,CAAC;KACzC,MAAM,CAAC,CAAC,KAAa,EAAE,EAAE;IACxB,IAAI,CAAC;QACH,QAAQ,CAAC,KAAK,CAAC,CAAC;QAChB,EAAE,CAAC,6BAA6B,CAAC,CAAC;IACpC,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,0BAA0B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,sBAAsB,CAAC;KACnC,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,CAAC,GAAG,QAAQ,EAAE,CAAC;IACrB,IAAI,CAAC,CAAC,EAAE,CAAC;QAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QAAC,OAAO;IAAC,CAAC;IAC5C,GAAG,CAAC,UAAU,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAClE,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,sCAAsC,CAAC;KACnD,MAAM,CAAC,GAAG,EAAE;IACX,UAAU,EAAE,CAAC;IACb,EAAE,CAAC,eAAe,CAAC,CAAC;AACtB,CAAC,CAAC,CAAC;AAEL,QAAQ;KACL,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2CAA2C,CAAC;KACxD,MAAM,CAAC,OAAO,EAAE,iCAAiC,CAAC;KAClD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,GAAG,GAAK,UAAU,EAAE,CAAC;IAC3B,MAAM,KAAK,GAAG,QAAQ,EAAE,CAAC;IACzB,MAAM,GAAG,GAAK,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,GAAG,EAAE,OAAO,IAAI,eAAe,CAAC,CAAC;IAEzE,IAAI,CAAC,KAAK,EAAE,CAAC;QAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAExF,GAAG,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAEzB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,GAAG,SAAS,EAAE,KAAK,CAAC,CAAC;QACrD,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,QAAQ,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,KAAK,CAAC,CAAC;IACtD,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,GAAG,CAAC,0BAA0B,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,+CAA+C,CAAC;KAC5D,MAAM,CAAC,eAAe,EAAE,iCAAiC,EAAE,KAAK,CAAC;KACjE,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;IACf,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC,CAAC;IAE5C,MAAM,MAAM,GAAK,IAAI,EAAE,CAAC;IACxB,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IAE9C,IAAI,QAAQ,EAAE,CAAC;QACb,EAAE,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IAC3C,CAAC;SAAM,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,qBAAqB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACvD,aAAa,CAAC,MAAM,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QAC5C,EAAE,CAAC,wCAAwC,CAAC,CAAC;IAC/C,CAAC;SAAM,CAAC;QACN,IAAI,CAAC,6CAA6C,CAAC,CAAC;IACtD,CAAC;IAED,sBAAsB;IACtB,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAC1G,IAAI,CAAC;QAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,EAAE,WAAW,EAAE,aAAa,CAAC,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAC1G,EAAE,CAAC,iCAAiC,CAAC,CAAC;IAEtC,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;QACpB,UAAU,EAAE,CAAC;QACb,EAAE,CAAC,6BAA6B,CAAC,CAAC;IACpC,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC,CAAC;IACxE,CAAC;IAED,GAAG,CAAC,EAAE,CAAC,CAAC;IACR,EAAE,CAAC,uBAAuB,CAAC,CAAC;AAC9B,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,gDAAgD,CAAC;KAC7D,MAAM,CAAC,eAAe,EAAE,mBAAmB,EAAE,MAAM,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,CAAC;IAC7D,eAAe,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,2EAA2E,CAAC;KACxF,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,yEAAyE;IACzE,0EAA0E;IAC1E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC5D,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACtD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IAEvC,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,OAAO,CACnC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACpD,IAAI,EAAE,OAAO,EAAE,mBAAmB,CACnC,CAAC;IAEF,IAAI,KAAK,GAAG,EAAE,CAAC;IACf,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC;IAClC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACzD,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;QAC3B,IAAI,CAAC;YACH,YAAY,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,EAAE;gBACzC,KAAK;gBACL,KAAK,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;gBACrC,GAAG,EAAE,OAAO,CAAC,GAAG;gBAChB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;QACL,CAAC;QAAC,MAAM,CAAC,CAAC,mBAAmB,CAAC,CAAC;QAC/B,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,iFAAiF;AAEjF,OAAO;KACJ,IAAI,CAAC,UAAU,CAAC;KAChB,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,mDAAmD,CAAC;KAChE,KAAK,EAAE,CAAC;AAEX,iFAAiF;AAEjF,SAAS,OAAO,CAAC,GAAW,EAAE,KAAa;IACzC,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAM,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;QAC9D,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CACvB,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE,OAAO,EAAE,IAAI;YAClF,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE,EAAE,EACjD,CAAC,GAAG,EAAE,EAAE;YACN,IAAI,IAAI,GAAG,EAAE,CAAC;YACd,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9C,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;gBACjB,IAAI,CAAC;oBAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBAAC,CAAC;gBACzE,MAAM,CAAC;oBAAC,OAAO,CAAC,EAAE,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC;gBAAC,CAAC;YAC3D,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QACF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QACxB,GAAG,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,GAAG,GAAG,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/dist/config.d.ts
DELETED
|
@@ -1,28 +0,0 @@
|
|
|
1
|
-
import { z } from 'zod';
|
|
2
|
-
declare const ConfigSchema: z.ZodObject<{
|
|
3
|
-
version: z.ZodLiteral<1>;
|
|
4
|
-
tier: z.ZodEnum<["hooks"]>;
|
|
5
|
-
api_url: z.ZodString;
|
|
6
|
-
policy: z.ZodString;
|
|
7
|
-
application: z.ZodString;
|
|
8
|
-
}, "strip", z.ZodTypeAny, {
|
|
9
|
-
version: 1;
|
|
10
|
-
tier: "hooks";
|
|
11
|
-
api_url: string;
|
|
12
|
-
policy: string;
|
|
13
|
-
application: string;
|
|
14
|
-
}, {
|
|
15
|
-
version: 1;
|
|
16
|
-
tier: "hooks";
|
|
17
|
-
api_url: string;
|
|
18
|
-
policy: string;
|
|
19
|
-
application: string;
|
|
20
|
-
}>;
|
|
21
|
-
export type GuardionConfig = z.infer<typeof ConfigSchema>;
|
|
22
|
-
export declare const DEFAULT_CONFIG: GuardionConfig;
|
|
23
|
-
export declare function readConfig(): GuardionConfig | null;
|
|
24
|
-
export declare function readConfigOrDefault(): GuardionConfig;
|
|
25
|
-
export declare function writeConfig(cfg: GuardionConfig): void;
|
|
26
|
-
export declare function devConfig(overrides?: Partial<GuardionConfig>): GuardionConfig;
|
|
27
|
-
export {};
|
|
28
|
-
//# sourceMappingURL=config.d.ts.map
|
package/dist/config.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAUxB,QAAA,MAAM,YAAY;;;;;;;;;;;;;;;;;;EAMhB,CAAC;AAEH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,YAAY,CAAC,CAAC;AAE1D,eAAO,MAAM,cAAc,EAAE,cAM5B,CAAC;AAIF,wBAAgB,UAAU,IAAI,cAAc,GAAG,IAAI,CAQlD;AAED,wBAAgB,mBAAmB,IAAI,cAAc,CAEpD;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,cAAc,GAAG,IAAI,CAgBrD;AAID,wBAAgB,SAAS,CAAC,SAAS,GAAE,OAAO,CAAC,cAAc,CAAM,GAAG,cAAc,CAMjF"}
|
package/dist/config.js
DELETED
|
@@ -1,63 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import yaml from 'js-yaml';
|
|
3
|
-
import { z } from 'zod';
|
|
4
|
-
import { GUARDION_DIR, CONFIG_YAML_PATH, CONFIG_JSON_PATH, DEFAULT_API_URL, } from './constants.js';
|
|
5
|
-
// ── Schema ────────────────────────────────────────────────────────────────────
|
|
6
|
-
const ConfigSchema = z.object({
|
|
7
|
-
version: z.literal(1),
|
|
8
|
-
tier: z.enum(['hooks']), // expand union when new tiers land
|
|
9
|
-
api_url: z.string().url(),
|
|
10
|
-
policy: z.string().min(1),
|
|
11
|
-
application: z.string().min(1),
|
|
12
|
-
});
|
|
13
|
-
export const DEFAULT_CONFIG = {
|
|
14
|
-
version: 1,
|
|
15
|
-
tier: 'hooks',
|
|
16
|
-
api_url: DEFAULT_API_URL,
|
|
17
|
-
policy: 'prompt-defense',
|
|
18
|
-
application: 'claude-code',
|
|
19
|
-
};
|
|
20
|
-
// ── Read ──────────────────────────────────────────────────────────────────────
|
|
21
|
-
export function readConfig() {
|
|
22
|
-
try {
|
|
23
|
-
const raw = fs.readFileSync(CONFIG_YAML_PATH, 'utf-8');
|
|
24
|
-
const parsed = yaml.load(raw);
|
|
25
|
-
return ConfigSchema.parse(parsed);
|
|
26
|
-
}
|
|
27
|
-
catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
export function readConfigOrDefault() {
|
|
32
|
-
return readConfig() ?? DEFAULT_CONFIG;
|
|
33
|
-
}
|
|
34
|
-
// ── Write ─────────────────────────────────────────────────────────────────────
|
|
35
|
-
export function writeConfig(cfg) {
|
|
36
|
-
const validated = ConfigSchema.parse(cfg);
|
|
37
|
-
fs.mkdirSync(GUARDION_DIR, { recursive: true });
|
|
38
|
-
// Write human-editable YAML
|
|
39
|
-
const yamlContent = [
|
|
40
|
-
'# Guardion config — generated by `npx guardion init`',
|
|
41
|
-
`# Edit api_url to switch environments. Token lives in your OS keychain.`,
|
|
42
|
-
'',
|
|
43
|
-
yaml.dump(validated, { indent: 2 }),
|
|
44
|
-
].join('\n');
|
|
45
|
-
writeAtomic(CONFIG_YAML_PATH, yamlContent);
|
|
46
|
-
// Write JSON for the CJS hook (no YAML parser dependency)
|
|
47
|
-
writeAtomic(CONFIG_JSON_PATH, JSON.stringify(validated, null, 2) + '\n');
|
|
48
|
-
}
|
|
49
|
-
// ── Dev helper ────────────────────────────────────────────────────────────────
|
|
50
|
-
export function devConfig(overrides = {}) {
|
|
51
|
-
return {
|
|
52
|
-
...DEFAULT_CONFIG,
|
|
53
|
-
api_url: 'http://localhost:8082',
|
|
54
|
-
...overrides,
|
|
55
|
-
};
|
|
56
|
-
}
|
|
57
|
-
// ── Atomic write ──────────────────────────────────────────────────────────────
|
|
58
|
-
function writeAtomic(filePath, content) {
|
|
59
|
-
const tmp = filePath + '.tmp';
|
|
60
|
-
fs.writeFileSync(tmp, content, 'utf-8');
|
|
61
|
-
fs.renameSync(tmp, filePath);
|
|
62
|
-
}
|
|
63
|
-
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAQ,SAAS,CAAC;AAG3B,OAAO,IAAI,MAAO,SAAS,CAAC;AAC5B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,GAChB,MAAM,gBAAgB,CAAC;AAExB,iFAAiF;AAEjF,MAAM,YAAY,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5B,OAAO,EAAM,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACzB,IAAI,EAAS,CAAC,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,EAAI,mCAAmC;IACrE,OAAO,EAAM,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IAC7B,MAAM,EAAO,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;CAC/B,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC5C,OAAO,EAAM,CAAC;IACd,IAAI,EAAS,OAAO;IACpB,OAAO,EAAM,eAAe;IAC5B,MAAM,EAAO,gBAAgB;IAC7B,WAAW,EAAE,aAAa;CAC3B,CAAC;AAEF,iFAAiF;AAEjF,MAAM,UAAU,UAAU;IACxB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,gBAAgB,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,MAAM,UAAU,mBAAmB;IACjC,OAAO,UAAU,EAAE,IAAI,cAAc,CAAC;AACxC,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,WAAW,CAAC,GAAmB;IAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE1C,EAAE,CAAC,SAAS,CAAC,YAAY,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEhD,4BAA4B;IAC5B,MAAM,WAAW,GAAG;QAClB,sDAAsD;QACtD,yEAAyE;QACzE,EAAE;QACF,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC;KACpC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACb,WAAW,CAAC,gBAAgB,EAAE,WAAW,CAAC,CAAC;IAE3C,0DAA0D;IAC1D,WAAW,CAAC,gBAAgB,EAAE,IAAI,CAAC,SAAS,CAAC,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AAC3E,CAAC;AAED,iFAAiF;AAEjF,MAAM,UAAU,SAAS,CAAC,YAAqC,EAAE;IAC/D,OAAO;QACL,GAAG,cAAc;QACjB,OAAO,EAAE,uBAAuB;QAChC,GAAG,SAAS;KACb,CAAC;AACJ,CAAC;AAED,iFAAiF;AAEjF,SAAS,WAAW,CAAC,QAAgB,EAAE,OAAe;IACpD,MAAM,GAAG,GAAG,QAAQ,GAAG,MAAM,CAAC;IAC9B,EAAE,CAAC,aAAa,CAAC,GAAG,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACxC,EAAE,CAAC,UAAU,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;AAC/B,CAAC"}
|
package/dist/constants.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,gBAAgB,UAAU,CAAC;AACxC,eAAO,MAAM,YAAY,SAAa,CAAC;AACvC,eAAO,MAAM,WAAW,IAAS,CAAC;AAGlC,eAAO,MAAM,eAAe,4BAAgC,CAAC;AAC7D,eAAO,MAAM,mBAAmB,gCAAgC,CAAC;AACjE,eAAO,MAAM,eAAe,4BAAgC,CAAC;AAG7D,eAAO,MAAM,WAAW,0BAA8B,CAAC;AACvD,eAAO,MAAM,eAAe,0BAA0B,CAAC;AACvD,eAAO,MAAM,WAAW,8BAAkC,CAAC;AAE3D,eAAO,MAAM,gBAAgB,qBAAsB,CAAC;AACpD,eAAO,MAAM,WAAW,YAAkB,CAAC;AAG3C,eAAO,MAAM,QAAQ,QAA0B,CAAC;AAChD,eAAO,MAAM,YAAY,QAA0C,CAAC;AACpE,eAAO,MAAM,gBAAgB,QAA4C,CAAC;AAC1E,eAAO,MAAM,gBAAgB,QAA4C,CAAC;AAC1E,eAAO,MAAM,eAAe,QAAuC,CAAC;AACpE,eAAO,MAAM,kBAAkB,8BAA+B,CAAC;AAC/D,eAAO,MAAM,iBAAiB,wBAA0B,CAAC;AAEzD,eAAO,MAAM,UAAU,QAA2C,CAAC;AACnE,eAAO,MAAM,oBAAoB,QAAyC,CAAC;AAC3E,eAAO,MAAM,aAAa,cAAqB,CAAC;AAEhD,eAAO,MAAM,gBAAgB,aAAa,CAAC;AAC3C,eAAO,MAAM,gBAAgB,UAAU,CAAC;AAGxC,eAAO,MAAM,WAAW,6MAad,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC"}
|
package/dist/constants.js
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import path from 'node:path';
|
|
2
|
-
import os from 'node:os';
|
|
3
|
-
export const GUARDION_VERSION = '0.2.0';
|
|
4
|
-
export const TOKEN_PREFIX = 'grd_';
|
|
5
|
-
export const BACKUP_KEEP = 5;
|
|
6
|
-
// Production URLs
|
|
7
|
-
export const DEFAULT_API_URL = 'https://api.guardion.ai';
|
|
8
|
-
export const DEFAULT_GATEWAY_URL = 'https://gateway.guardion.ai';
|
|
9
|
-
export const DEFAULT_MCP_URL = 'https://mcp.guardion.ai';
|
|
10
|
-
// Local dev (--dev flag or api_url in config pointing at localhost)
|
|
11
|
-
export const DEV_API_URL = 'http://localhost:8082';
|
|
12
|
-
export const DEV_GATEWAY_URL = 'http://localhost:8788';
|
|
13
|
-
export const DEV_MCP_URL = 'http://localhost:8082/mcp';
|
|
14
|
-
export const HOOK_EVENTS_PATH = '/v1/hooks/events';
|
|
15
|
-
export const HEALTH_PATH = '/health';
|
|
16
|
-
// Filesystem paths
|
|
17
|
-
export const HOME_DIR = os.homedir();
|
|
18
|
-
export const GUARDION_DIR = path.join(HOME_DIR, '.guardion');
|
|
19
|
-
export const CONFIG_YAML_PATH = path.join(GUARDION_DIR, 'config.yaml');
|
|
20
|
-
export const CONFIG_JSON_PATH = path.join(GUARDION_DIR, 'config.json');
|
|
21
|
-
export const TOKEN_FILE_PATH = path.join(GUARDION_DIR, 'token');
|
|
22
|
-
export const SYSTEM_CONFIG_PATH = '/etc/guardion/config.yaml';
|
|
23
|
-
export const SYSTEM_TOKEN_PATH = '/etc/guardion/token';
|
|
24
|
-
export const CLAUDE_DIR = path.join(HOME_DIR, '.claude');
|
|
25
|
-
export const CLAUDE_SETTINGS_PATH = path.join(CLAUDE_DIR, 'settings.json');
|
|
26
|
-
export const BACKUP_SUFFIX = '.guardion';
|
|
27
|
-
export const KEYCHAIN_SERVICE = 'guardion';
|
|
28
|
-
export const KEYCHAIN_ACCOUNT = 'token';
|
|
29
|
-
// Hook events captured in MVP (monitoring only)
|
|
30
|
-
export const HOOK_EVENTS = [
|
|
31
|
-
'SessionStart',
|
|
32
|
-
'SessionEnd',
|
|
33
|
-
'UserPromptSubmit',
|
|
34
|
-
'PreToolUse',
|
|
35
|
-
'PostToolUse',
|
|
36
|
-
'PostToolUseFailure',
|
|
37
|
-
'PostToolBatch',
|
|
38
|
-
'SubagentStart',
|
|
39
|
-
'SubagentStop',
|
|
40
|
-
'Stop',
|
|
41
|
-
'StopFailure',
|
|
42
|
-
'PermissionDenied',
|
|
43
|
-
];
|
|
44
|
-
//# sourceMappingURL=constants.js.map
|
package/dist/constants.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,MAAQ,SAAS,CAAC;AAE3B,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AACxC,MAAM,CAAC,MAAM,YAAY,GAAO,MAAM,CAAC;AACvC,MAAM,CAAC,MAAM,WAAW,GAAQ,CAAC,CAAC;AAElC,kBAAkB;AAClB,MAAM,CAAC,MAAM,eAAe,GAAO,yBAAyB,CAAC;AAC7D,MAAM,CAAC,MAAM,mBAAmB,GAAG,6BAA6B,CAAC;AACjE,MAAM,CAAC,MAAM,eAAe,GAAO,yBAAyB,CAAC;AAE7D,oEAAoE;AACpE,MAAM,CAAC,MAAM,WAAW,GAAO,uBAAuB,CAAC;AACvD,MAAM,CAAC,MAAM,eAAe,GAAG,uBAAuB,CAAC;AACvD,MAAM,CAAC,MAAM,WAAW,GAAO,2BAA2B,CAAC;AAE3D,MAAM,CAAC,MAAM,gBAAgB,GAAI,kBAAkB,CAAC;AACpD,MAAM,CAAC,MAAM,WAAW,GAAS,SAAS,CAAC;AAE3C,mBAAmB;AACnB,MAAM,CAAC,MAAM,QAAQ,GAAc,EAAE,CAAC,OAAO,EAAE,CAAC;AAChD,MAAM,CAAC,MAAM,YAAY,GAAU,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,WAAW,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,gBAAgB,GAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,gBAAgB,GAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAAC;AAC1E,MAAM,CAAC,MAAM,eAAe,GAAO,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;AACpE,MAAM,CAAC,MAAM,kBAAkB,GAAI,2BAA2B,CAAC;AAC/D,MAAM,CAAC,MAAM,iBAAiB,GAAK,qBAAqB,CAAC;AAEzD,MAAM,CAAC,MAAM,UAAU,GAAa,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;AACnE,MAAM,CAAC,MAAM,oBAAoB,GAAG,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC;AAC3E,MAAM,CAAC,MAAM,aAAa,GAAU,WAAW,CAAC;AAEhD,MAAM,CAAC,MAAM,gBAAgB,GAAG,UAAU,CAAC;AAC3C,MAAM,CAAC,MAAM,gBAAgB,GAAG,OAAO,CAAC;AAExC,gDAAgD;AAChD,MAAM,CAAC,MAAM,WAAW,GAAG;IACzB,cAAc;IACd,YAAY;IACZ,kBAAkB;IAClB,YAAY;IACZ,aAAa;IACb,oBAAoB;IACpB,eAAe;IACf,eAAe;IACf,cAAc;IACd,MAAM;IACN,aAAa;IACb,kBAAkB;CACV,CAAC"}
|
package/dist/installer.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installer.d.ts","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AA0DlD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAI,cAAc,CAAC;IACzB,GAAG,CAAC,EAAM,OAAO,CAAC;IAClB,MAAM,CAAC,EAAG,OAAO,CAAC;CACnB;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,UAAU,EAAE,IAAI,EAAE,YAAY,GAAG,cAAc,CAS1E;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,CAS1D;AAqBD,wBAAgB,OAAO,CAAC,YAAY,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAoB3D;AAID,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,cAAc,GAAG,cAAc,CA0B9E"}
|
package/dist/installer.js
DELETED
|
@@ -1,137 +0,0 @@
|
|
|
1
|
-
import fs from 'node:fs';
|
|
2
|
-
import path from 'node:path';
|
|
3
|
-
import { fileURLToPath } from 'node:url';
|
|
4
|
-
import { BACKUP_SUFFIX, BACKUP_KEEP, HOOK_EVENTS, } from './constants.js';
|
|
5
|
-
// Production hook command — uses the published scoped package
|
|
6
|
-
const HOOK_COMMAND_NPX = 'npx --yes @guardion/guardion hook';
|
|
7
|
-
// Resolve the absolute path to the CJS hook for local dev usage.
|
|
8
|
-
// Works from both src/ (tsx) and dist/ (compiled) layouts.
|
|
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 buildHooks(dev) {
|
|
22
|
-
// dev: use absolute path to local CJS hook (no npm registry lookup)
|
|
23
|
-
// prod: use npx (once published) or the resolved global binary path
|
|
24
|
-
const command = dev
|
|
25
|
-
? `node ${resolveLocalHookPath()}`
|
|
26
|
-
: HOOK_COMMAND_NPX;
|
|
27
|
-
const hooks = {};
|
|
28
|
-
for (const event of HOOK_EVENTS) {
|
|
29
|
-
hooks[event] = [{
|
|
30
|
-
matcher: '',
|
|
31
|
-
hooks: [{ type: 'command', command }],
|
|
32
|
-
}];
|
|
33
|
-
}
|
|
34
|
-
return hooks;
|
|
35
|
-
}
|
|
36
|
-
// ── Env block (hooks tier — no ANTHROPIC_BASE_URL) ───────────────────────────
|
|
37
|
-
function buildEnv(cfg) {
|
|
38
|
-
return {
|
|
39
|
-
GUARDION_TIER: cfg.tier,
|
|
40
|
-
GUARDION_API_URL: cfg.api_url,
|
|
41
|
-
GUARDION_POLICY: cfg.policy,
|
|
42
|
-
GUARDION_APPLICATION: cfg.application,
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
export function patch(scan, opts) {
|
|
46
|
-
const base = scan.settings
|
|
47
|
-
? JSON.parse(JSON.stringify(scan.settings)) // deep clone
|
|
48
|
-
: {};
|
|
49
|
-
base.env = { ...(base.env ?? {}), ...buildEnv(opts.config) };
|
|
50
|
-
base.hooks = { ...(base.hooks ?? {}), ...buildHooks(opts.dev ?? false) };
|
|
51
|
-
return base;
|
|
52
|
-
}
|
|
53
|
-
// ── Write ─────────────────────────────────────────────────────────────────────
|
|
54
|
-
export function writeSettings(filePath, settings) {
|
|
55
|
-
const dir = path.dirname(filePath);
|
|
56
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
57
|
-
const tmp = filePath + '.tmp';
|
|
58
|
-
fs.writeFileSync(tmp, JSON.stringify(settings, null, 2) + '\n', 'utf-8');
|
|
59
|
-
fs.renameSync(tmp, filePath);
|
|
60
|
-
}
|
|
61
|
-
// ── Backup (timestamped, keep last N) ────────────────────────────────────────
|
|
62
|
-
export function backup(settingsPath) {
|
|
63
|
-
if (!fs.existsSync(settingsPath))
|
|
64
|
-
return null;
|
|
65
|
-
const ts = new Date().toISOString().replace(/[:.]/g, '-').slice(0, 19);
|
|
66
|
-
const backupPath = `${settingsPath}${BACKUP_SUFFIX}-${ts}.bak`;
|
|
67
|
-
fs.copyFileSync(settingsPath, backupPath);
|
|
68
|
-
pruneBackups(settingsPath);
|
|
69
|
-
return backupPath;
|
|
70
|
-
}
|
|
71
|
-
function pruneBackups(settingsPath) {
|
|
72
|
-
const dir = path.dirname(settingsPath);
|
|
73
|
-
const base = path.basename(settingsPath);
|
|
74
|
-
const prefix = `${base}${BACKUP_SUFFIX}-`;
|
|
75
|
-
try {
|
|
76
|
-
const backups = fs.readdirSync(dir)
|
|
77
|
-
.filter(f => f.startsWith(prefix) && f.endsWith('.bak'))
|
|
78
|
-
.map(f => ({ name: f, mtime: fs.statSync(path.join(dir, f)).mtimeMs }))
|
|
79
|
-
.sort((a, b) => b.mtime - a.mtime);
|
|
80
|
-
for (const old of backups.slice(BACKUP_KEEP)) {
|
|
81
|
-
fs.unlinkSync(path.join(dir, old.name));
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
catch { /* non-critical */ }
|
|
85
|
-
}
|
|
86
|
-
// ── Restore ───────────────────────────────────────────────────────────────────
|
|
87
|
-
export function restore(settingsPath) {
|
|
88
|
-
const dir = path.dirname(settingsPath);
|
|
89
|
-
const base = path.basename(settingsPath);
|
|
90
|
-
const prefix = `${base}${BACKUP_SUFFIX}-`;
|
|
91
|
-
try {
|
|
92
|
-
const backups = fs.readdirSync(dir)
|
|
93
|
-
.filter(f => f.startsWith(prefix) && f.endsWith('.bak'))
|
|
94
|
-
.sort()
|
|
95
|
-
.reverse();
|
|
96
|
-
if (backups.length === 0)
|
|
97
|
-
return null;
|
|
98
|
-
const latest = path.join(dir, backups[0]);
|
|
99
|
-
fs.copyFileSync(latest, settingsPath);
|
|
100
|
-
fs.unlinkSync(latest);
|
|
101
|
-
return latest;
|
|
102
|
-
}
|
|
103
|
-
catch {
|
|
104
|
-
return null;
|
|
105
|
-
}
|
|
106
|
-
}
|
|
107
|
-
// ── Remove Guardion entries (uninstall without backup) ────────────────────────
|
|
108
|
-
export function removeGuardionEntries(settings) {
|
|
109
|
-
const cleaned = JSON.parse(JSON.stringify(settings));
|
|
110
|
-
// Remove Guardion env keys
|
|
111
|
-
if (cleaned.env) {
|
|
112
|
-
for (const key of Object.keys(cleaned.env)) {
|
|
113
|
-
if (key.startsWith('GUARDION_'))
|
|
114
|
-
delete cleaned.env[key];
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
// Remove Guardion hooks — entries whose nested hooks array contains a guardion command
|
|
118
|
-
if (cleaned.hooks) {
|
|
119
|
-
for (const [event, hookList] of Object.entries(cleaned.hooks)) {
|
|
120
|
-
const filtered = hookList.filter(entry => {
|
|
121
|
-
// settings.json format: { matcher, hooks: [{ command }] }
|
|
122
|
-
if (entry.hooks)
|
|
123
|
-
return !entry.hooks.some(h => h.command?.includes('guardion'));
|
|
124
|
-
// legacy flat format: { type, command }
|
|
125
|
-
return !entry.command?.includes('guardion');
|
|
126
|
-
});
|
|
127
|
-
if (filtered.length === 0)
|
|
128
|
-
delete cleaned.hooks[event];
|
|
129
|
-
else
|
|
130
|
-
cleaned.hooks[event] = filtered;
|
|
131
|
-
}
|
|
132
|
-
if (Object.keys(cleaned.hooks).length === 0)
|
|
133
|
-
delete cleaned.hooks;
|
|
134
|
-
}
|
|
135
|
-
return cleaned;
|
|
136
|
-
}
|
|
137
|
-
//# sourceMappingURL=installer.js.map
|
package/dist/installer.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"installer.js","sourceRoot":"","sources":["../src/installer.ts"],"names":[],"mappings":"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"}
|
package/dist/keychain.d.ts.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.d.ts","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"AAQA,wBAAgB,QAAQ,IAAI,MAAM,CA6BjC;AAID,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAmB5C;AAED,wBAAgB,UAAU,IAAI,IAAI,CAUjC"}
|
package/dist/keychain.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"keychain.js","sourceRoot":"","sources":["../src/keychain.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"mock-server.d.ts","sourceRoot":"","sources":["../src/mock-server.ts"],"names":[],"mappings":"AAqCA,wBAAgB,eAAe,CAAC,IAAI,SAAe,QA2FlD"}
|