slaunt 0.1.6 → 0.1.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/README.md +65 -114
  2. package/dist/audit/risk-engine.d.ts +1 -1
  3. package/dist/audit/risk-engine.d.ts.map +1 -1
  4. package/dist/audit/risk-engine.js +2 -1
  5. package/dist/audit/risk-engine.js.map +1 -1
  6. package/dist/audit/run.d.ts +4 -1
  7. package/dist/audit/run.d.ts.map +1 -1
  8. package/dist/audit/run.js +12 -1
  9. package/dist/audit/run.js.map +1 -1
  10. package/dist/classification/catalog.d.ts.map +1 -1
  11. package/dist/classification/catalog.js +64 -9
  12. package/dist/classification/catalog.js.map +1 -1
  13. package/dist/classification/public-catalog-config.d.ts +3 -0
  14. package/dist/classification/public-catalog-config.d.ts.map +1 -0
  15. package/dist/classification/public-catalog-config.js +5 -0
  16. package/dist/classification/public-catalog-config.js.map +1 -0
  17. package/dist/cli.js +15 -2
  18. package/dist/cli.js.map +1 -1
  19. package/dist/config/discover.d.ts.map +1 -1
  20. package/dist/config/discover.js +51 -11
  21. package/dist/config/discover.js.map +1 -1
  22. package/dist/config/paths.d.ts +7 -0
  23. package/dist/config/paths.d.ts.map +1 -1
  24. package/dist/config/paths.js +7 -1
  25. package/dist/config/paths.js.map +1 -1
  26. package/dist/explanation/local.d.ts +24 -0
  27. package/dist/explanation/local.d.ts.map +1 -0
  28. package/dist/explanation/local.js +473 -0
  29. package/dist/explanation/local.js.map +1 -0
  30. package/dist/mcp/introspect.d.ts +4 -0
  31. package/dist/mcp/introspect.d.ts.map +1 -1
  32. package/dist/mcp/introspect.js +22 -10
  33. package/dist/mcp/introspect.js.map +1 -1
  34. package/dist/privacy/redaction.d.ts +2 -0
  35. package/dist/privacy/redaction.d.ts.map +1 -0
  36. package/dist/privacy/redaction.js +50 -0
  37. package/dist/privacy/redaction.js.map +1 -0
  38. package/dist/report/html.d.ts.map +1 -1
  39. package/dist/report/html.js +11 -5
  40. package/dist/report/html.js.map +1 -1
  41. package/dist/tui/render.d.ts.map +1 -1
  42. package/dist/tui/render.js +24 -1
  43. package/dist/tui/render.js.map +1 -1
  44. package/dist/types.d.ts +12 -0
  45. package/dist/types.d.ts.map +1 -1
  46. package/models/APACHE-2.0.txt +202 -0
  47. package/models/MODEL.json +29 -0
  48. package/models/NOTICE.md +23 -0
  49. package/package.json +16 -2
package/README.md CHANGED
@@ -1,160 +1,111 @@
1
1
  # Slaunt Agent Access Audit
2
2
 
3
- `npx slaunt audit` maps the MCP capabilities exposed to Claude Code, Claude Desktop, Codex CLI, and the Codex/ChatGPT desktop host. It retrieves declared tool definitions, classifies them locally, correlates risky capability chains, and writes a standalone local HTML report.
3
+ See what Claude and Codex can do through their configured MCP servers.
4
4
 
5
- ```text
6
- $ npx slaunt audit
5
+ ```sh
6
+ npx slaunt audit
7
+ ```
7
8
 
8
- Slaunt Agent Access Audit
9
- Inspecting MCP configurations locally. No audit payload uploaded.
9
+ No account or database configuration is required.
10
10
 
11
- ✓ Found 2 agent clients
12
- ✓ Found 5 MCP servers
13
- ✓ Retrieved 43 tool definitions
14
- ✓ Classified 38 tools
15
- ! 5 tools require review
16
- ```
11
+ Slaunt discovers local MCP configurations—including the active Claude Code project scope—requests each server's declared tool list, classifies those tools, and identifies risky permissions or combinations. It then writes a private HTML report on your machine.
17
12
 
18
- The audit-only release does **not** implement `slaunt connect`.
13
+ Every discovered server also receives a grounded explanation. The npm install
14
+ includes a quantized Apache-2.0 TinyLlama 1.1B model through two pinned data
15
+ dependencies and runs it locally through `node-llama-cpp` with a fixed
16
+ evidence-only prompt containing the server's declared `tools/list` inventory.
17
+ The model parts are reassembled into a user cache and SHA-256 verified before
18
+ loading. If the bundled runtime cannot run on the host, the report still
19
+ explains every server with a deterministic local fallback and marks that source
20
+ explicitly. No server configuration values or audit data are sent to a remote
21
+ model.
19
22
 
20
- ## Privacy promise
23
+ Reports count actual client/scope bindings separately from unique server names,
24
+ so the same server name configured for Claude and Codex is not silently merged.
21
25
 
22
- The default architecture is intentionally local-first:
26
+ The audit-only release does not include `slaunt connect`.
23
27
 
24
- - Tool names, descriptions, input schemas, config values, findings, and the HTML report remain on the machine.
25
- - If Supabase is configured, the CLI downloads approved classification rules and performs matching locally. It does not upload an audit payload or call a classification RPC.
26
- - MCP tools are never called. The auditor only performs the MCP initialization handshake and `tools/list`.
27
- - Starting configured stdio servers requires interactive consent, or the explicit `--allow-server-starts` flag.
28
- - The default audit never edits client configuration or opens another window. Slaunt MCP installation requires `--install-slaunt`, and report opening requires `--open-report`.
29
- - JSON output is redacted. Environment and header values are never included.
28
+ ## What the audit checks
30
29
 
31
- ## Run
30
+ - Claude Code, Claude Desktop, Codex CLI, and Codex Desktop configurations
31
+ - Claude Code user-level and active project-scoped MCP server entries
32
+ - MCP servers declared in JSON or TOML
33
+ - Tools exposed by each server
34
+ - Sensitive capabilities such as shell execution, secret access, code changes, and production deployment
35
+ - Risky combinations across servers and clients
36
+ - Unknown tools that still need classification review
32
37
 
33
- Node.js 20.17 or newer is required.
38
+ Slaunt performs the MCP initialization handshake and `tools/list`. It never calls an MCP tool.
39
+
40
+ ## Run modes
34
41
 
35
42
  ```sh
43
+ # Normal interactive audit
36
44
  npx slaunt audit
37
- ```
38
-
39
- Useful modes:
40
45
 
41
- ```sh
42
- # Configuration-only inventory; never starts a local MCP process
46
+ # Inspect configuration without starting local MCP processes
43
47
  npx slaunt audit --no-server-starts
44
48
 
45
- # Non-interactive audit with explicit consent to read declared tool lists
49
+ # Run non-interactively and allow declared tool-list requests
46
50
  npx slaunt audit --yes
47
51
 
48
- # Redacted machine-readable output
49
- npx slaunt audit --json --no-report --no-install-slaunt --no-server-starts
52
+ # Skip the paced terminal presentation
53
+ npx slaunt audit --quick
50
54
 
51
- # Deterministic product demonstration
52
- npx slaunt audit --demo
55
+ # Use only the bundled classification rules
56
+ npx slaunt audit --offline
53
57
 
54
- # Skip deliberate interactive pacing while keeping the full audit
55
- npx slaunt audit --no-motion
56
- npx slaunt audit --quick
58
+ # Produce redacted JSON without a report
59
+ npx slaunt audit --json --no-report --no-server-starts
57
60
  ```
58
61
 
59
- Run `npx slaunt audit --help` for every option.
62
+ Run `npx slaunt audit --help` for all options. Node.js 20.17 or newer is required.
60
63
 
61
- ## What it discovers
64
+ ## Privacy and consent
62
65
 
63
- | Client | User configuration | Project configuration |
64
- |---|---|---|
65
- | Claude Code | `~/.claude.json` | `.mcp.json` |
66
- | Claude Desktop | OS-specific `claude_desktop_config.json` | — |
67
- | Codex CLI/Desktop/IDE | `~/.codex/config.toml` | `.codex/config.toml` |
66
+ - Tool names, descriptions, schemas, configuration values, findings, and reports stay local.
67
+ - Slaunt downloads approved classification rules from a read-only Supabase catalog. It does not upload audit data.
68
+ - Starting a configured stdio server requires interactive consent or `--allow-server-starts`.
69
+ - Stdio starts receive configured variables and the MCP SDK's safe defaults; the full parent environment is passed only with explicit `--inherit-parent-env`.
70
+ - Slaunt MCP installation happens only with `--install-slaunt`.
71
+ - The HTML report opens only with `--open-report`.
72
+ - Environment variables and HTTP header values are redacted from JSON and reports.
68
73
 
69
- Claude uses JSON for MCP configuration; Codex uses TOML. Codex CLI, the IDE extension, and its desktop host share the same Codex configuration. The paths and schemas follow the current [Claude MCP documentation](https://docs.anthropic.com/en/docs/claude-code/mcp) and [Codex MCP documentation](https://developers.openai.com/codex/mcp).
74
+ If the remote catalog is unavailable, Slaunt uses a seven-day local cache and then its bundled rules. `--offline` disables the refresh entirely.
70
75
 
71
- The scanner supports stdio, Streamable HTTP, and legacy SSE server declarations. Project configs are discovered from the working directory upward to the user home directory. Disabled Codex servers are ignored.
76
+ The bundled model is the default. To use an already-running local Ollama
77
+ model instead, set `SLAUNT_AUDIT_LLM_URL` (it must resolve to `localhost`,
78
+ `127.0.0.1`, or `::1`) and optionally `SLAUNT_AUDIT_LLM_MODEL`.
79
+ `SLAUNT_AUDIT_LLM_TIMEOUT_MS` controls either local path. The model manifest
80
+ and attribution are in `models/`; `npm run verify:model` checks the pinned
81
+ size and SHA-256 before publication.
72
82
 
73
- ## Secure Slaunt MCP installation
83
+ ## How classification works
74
84
 
75
- The audit can add Slaunt MCP to each detected client only when `--install-slaunt` is supplied. Installation is:
85
+ Approved database rules and bundled rules map tool declarations to capabilities and risk levels. Matching happens locally. Slaunt then checks direct authority and cross-server attack paths, such as a client that can execute shell commands and read secrets.
76
86
 
77
- - explicit and optional;
78
- - idempotent by the reserved server name `slaunt`;
79
- - atomic, using a same-directory temporary file and rename;
80
- - backed up with a timestamp before any existing file changes;
81
- - permission-preserving, with new config files created as user-readable only;
82
- - symlink-safe (the installer refuses to replace a symlink);
83
- - HTTPS-only, except explicit localhost development endpoints.
87
+ Unknown does not mean malicious. It means no approved rule matched the tool, so Slaunt treats it as potentially sensitive until reviewed.
84
88
 
85
- Override the endpoint only when intentionally testing another trusted Slaunt deployment:
89
+ ## Optional Slaunt MCP installation
86
90
 
87
91
  ```sh
88
- SLAUNT_MCP_URL=https://your-reviewed-endpoint.example/mcp npx slaunt audit --install-slaunt
92
+ npx slaunt audit --install-slaunt
89
93
  ```
90
94
 
91
- ## Risk model
92
-
93
- Classification is per declared tool. Correlation then evaluates what a client can do across servers. Examples include:
94
-
95
- - direct production deployment authority;
96
- - shell execution chained with credential access;
97
- - broad GitHub edit and merge permissions shared by multiple clients;
98
- - cleartext non-local MCP endpoints;
99
- - plaintext credential-like config values;
100
- - unpinned dynamic package launchers;
101
- - unknown tools whose names imply administrative or execution behavior.
102
-
103
- Unknown does not mean malicious. It means the tool has not matched an approved rule, so the report treats it as potentially sensitive until reviewed.
104
-
105
- ## Supabase catalog
95
+ Installation is explicit, idempotent, backed up, atomic, permission-preserving, and symlink-safe. The default audit never edits client configuration.
106
96
 
107
- The database is a distribution channel for approved rules, not an audit telemetry sink.
97
+ ## Audit limits
108
98
 
109
- 1. Apply [`supabase/migrations/20260731202505_create_tool_classification_catalog.sql`](supabase/migrations/20260731202505_create_tool_classification_catalog.sql) to the target project.
110
- 2. Confirm the table is exposed through the Data API for the project. Supabase changed new-table exposure defaults in 2026, so explicit Data API exposure may be required.
111
- 3. Configure the public read-only client values:
99
+ This is a declared-access audit. It does not inspect prompts, file contents, credentials, non-MCP agents, hidden provider scopes, client approval policy, or whether a tool has been used. If a server cannot be inspected, its tool inventory remains unavailable; Slaunt does not treat that server as safe.
112
100
 
113
- ```sh
114
- export SLAUNT_SUPABASE_URL=https://your-project.supabase.co
115
- export SLAUNT_SUPABASE_PUBLISHABLE_KEY=sb_publishable_...
116
- npx slaunt audit
117
- ```
118
-
119
- The migration enables and forces RLS, removes mutation privileges from public roles, grants column-scoped `SELECT`, and exposes only rows that are both active and approved. It contains no public write policy and no `SECURITY DEFINER` function. Never place a Supabase secret key or legacy `service_role` key in the CLI environment.
120
-
121
- Catalog refresh failures fall back to a seven-day local cache and then to the bundled catalog. Use `--offline` to skip refresh entirely.
122
-
123
- ## Classification contribution workflow
124
-
125
- Classification changes should arrive through reviewed pull requests:
126
-
127
- 1. Add or update the bounded glob rule in `src/classification/builtin-catalog.ts`.
128
- 2. Add a regression fixture proving the intended match and non-match behavior.
129
- 3. Add the reviewed equivalent to a new Supabase migration.
130
- 4. Keep the database row inactive or in review until a maintainer approves it.
131
- 5. Run `npm run check && npm test`.
132
-
133
- Database patterns are treated as bounded globs, never executable regular expressions. This avoids turning a public catalog into a regular-expression denial-of-service input.
134
-
135
- ## Terminal experience and conversion ethics
136
-
137
- The terminal flow uses immediate collection feedback followed by a short, deliberately paced analysis trail. A single updating line indexes the retrieved tools, searches direct and chained privilege paths, compares client permissions, and ranks the evidence before revealing the report. Every state is derived from the actual audit result; the pacing never invents a server, tool, capability, or finding.
138
-
139
- The default view is intentionally concise and technically precise without assuming prior MCP expertise. It retains terms such as agent client, MCP server, tool, capability, attack chain, least privilege, classification coverage, and security posture, then explains their consequence or definition where they appear. Each high-priority finding identifies the client, server, tool, capability, reason, and recommended control. Supporting findings and complete evidence remain in the local HTML report. The CLI writes that report without opening it; use `--open-report` when you explicitly want a browser window.
140
-
141
- The guided inspection targets about 78 seconds from launch and walks through 14 evidence-backed phases. Each phase reveals a result derived from the audit—inventory availability, schema coverage, sensitive surfaces, direct authority, cross-server paths, role overlap, unknown tools, and final confidence—while keeping the terminal to one changing status line. After analysis, the report appears progressively in small word groups with short sentence and section pauses, similar to model token generation; it is not held and dumped all at once. The paced inspection and progressive reveal run only in an interactive terminal. JSON output, piped output, CI, `--yes`, `--quick`, `--no-motion`, and `SLAUNT_NO_MOTION=1` remain immediate. The audit also refuses to start a configured stdio entry that resolves back to the `slaunt` CLI, preventing recursive audit windows. The experience deliberately avoids variable rewards, deceptive urgency, hidden defaults, shame, or an unsupported claim that a UI can medically “optimize dopamine.”
142
-
143
- The design is informed by evidence that progress feedback can improve follow-through, autonomy-supportive framing is associated with more self-directed motivation, and risk messages work better when paired with an effective action. See the PubMed-indexed reviews on [progress feedback](https://pubmed.ncbi.nlm.nih.gov/33721605/), [autonomy support](https://pubmed.ncbi.nlm.nih.gov/30237648/), and [fear appeals with efficacy](https://pubmed.ncbi.nlm.nih.gov/26501228/). These findings come from other domains, so their application to developer security tooling is a product hypothesis, not a medical claim.
144
-
145
- ## Local development
101
+ ## Development
146
102
 
147
103
  ```sh
148
104
  npm ci
149
105
  npm run check
150
106
  npm test
151
- npm run audit:demo
152
107
  ```
153
108
 
154
- `npm test` builds first, then runs deterministic tests for config parsing, idempotent backups, local classification, cross-client correlation, secret redaction, report CSP, and the built CLI.
155
-
156
- ## Scope limitations
157
-
158
- This is a declared-access audit. It does not inspect prompts, file contents, credentials, non-MCP agents, client approval policy, OAuth scopes that are not reflected in tool declarations, or whether a tool has been used. A failed or skipped server probe means its tool inventory is unavailable—not that the server is safe.
109
+ The Supabase schema is in [`supabase/migrations`](supabase/migrations). Public clients receive only approved, active rules through column-scoped `SELECT`, forced Row Level Security, and no public mutation policy. Never ship or expose a Supabase secret key.
159
110
 
160
- See [SECURITY.md](SECURITY.md) for the security boundary and reporting process.
111
+ See [SECURITY.md](SECURITY.md) for the complete security boundary and vulnerability-reporting process.
@@ -1,4 +1,4 @@
1
1
  import type { AuditSummary, ClassifiedTool, Finding, ServerConfig } from '../types.js';
2
2
  export declare function analyzeRisks(servers: ServerConfig[], tools: ClassifiedTool[]): Finding[];
3
- export declare function summarizeAudit(clientCount: number, serverCount: number, tools: ClassifiedTool[], findings: Finding[]): AuditSummary;
3
+ export declare function summarizeAudit(clientCount: number, serverCount: number, tools: ClassifiedTool[], findings: Finding[], serverBindings?: number): AuditSummary;
4
4
  //# sourceMappingURL=risk-engine.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"risk-engine.d.ts","sourceRoot":"","sources":["../../src/audit/risk-engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACd,OAAO,EACP,YAAY,EAEb,MAAM,aAAa,CAAC;AA8BrB,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CA8IxF;AAED,wBAAgB,cAAc,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,YAAY,CAanI"}
1
+ {"version":3,"file":"risk-engine.d.ts","sourceRoot":"","sources":["../../src/audit/risk-engine.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,YAAY,EAEZ,cAAc,EACd,OAAO,EACP,YAAY,EAEb,MAAM,aAAa,CAAC;AA8BrB,wBAAgB,YAAY,CAAC,OAAO,EAAE,YAAY,EAAE,EAAE,KAAK,EAAE,cAAc,EAAE,GAAG,OAAO,EAAE,CA8IxF;AAED,wBAAgB,cAAc,CAC5B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,cAAc,EAAE,EACvB,QAAQ,EAAE,OAAO,EAAE,EACnB,cAAc,SAAc,GAC3B,YAAY,CAcd"}
@@ -156,12 +156,13 @@ export function analyzeRisks(servers, tools) {
156
156
  const deduplicated = [...new Map(findings.map((item) => [`${item.id}:${item.clients.join(',')}:${item.serverNames.join(',')}`, item])).values()];
157
157
  return deduplicated.sort((a, b) => SEVERITY_ORDER[b.severity] - SEVERITY_ORDER[a.severity] || a.title.localeCompare(b.title));
158
158
  }
159
- export function summarizeAudit(clientCount, serverCount, tools, findings) {
159
+ export function summarizeAudit(clientCount, serverCount, tools, findings, serverBindings = serverCount) {
160
160
  const highRiskFindings = findings.filter((item) => item.severity === 'critical' || item.severity === 'high').length;
161
161
  const penalty = findings.reduce((total, item) => total + ({ critical: 22, high: 12, medium: 5, low: 2, info: 0 }[item.severity]), 0);
162
162
  return {
163
163
  clientsDetected: clientCount,
164
164
  servers: serverCount,
165
+ serverBindings,
165
166
  tools: tools.length,
166
167
  classified: tools.filter((tool) => tool.classification.source !== 'unknown').length,
167
168
  sensitiveCapabilities: tools.filter((tool) => tool.classification.sensitive).length,
@@ -1 +1 @@
1
- {"version":3,"file":"risk-engine.js","sourceRoot":"","sources":["../../src/audit/risk-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAUrC,MAAM,cAAc,GAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtG,MAAM,WAAW,GAAG,iEAAiE,CAAC;AAEtF,SAAS,MAAM,CAAI,KAAU;IAC3B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB;IAC/C,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,OAAO,CAAC,OAA4B;IAC3C,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;IAClH,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpG,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB,EAAE,KAAuB;IAC3E,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QAC1G,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,mDAAmD;YAC7E,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,EAAE,CAAC,gCAAgC,CAAC;YAC1C,GAAG,EAAE,oEAAoE;YACzE,cAAc,EAAE,+EAA+E;YAC/F,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,GAAG,KAAK,gDAAgD;gBAC/D,WAAW,EAAE,MAAM,CAAC,WAAW;qBAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC/H,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,SAAS,EAAE,MAAM,CAAC,WAAW;qBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC/H,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAChD,GAAG,EAAE,sEAAsE;gBAC3E,cAAc,EAAE,yFAAyF;gBACzG,OAAO,EAAE,CAAC,MAAM,CAAC;aAClB,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,kBAAkB,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE;QAClF,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,iDAAiD;YACxD,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAChH,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxG,MAAM,EAAE,CAAC,WAAW,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC;YAChG,GAAG,EAAE,0DAA0D;YAC/D,cAAc,EAAE,8DAA8D;YAC9E,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAoC,CAAC;SACpF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;wBACpB,QAAQ,EAAE,UAAU;wBACpB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,wCAAwC;wBACpE,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC1B,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,8DAA8D,CAAC;wBACxE,GAAG,EAAE,uDAAuD;wBAC5D,cAAc,EAAE,sEAAsE;wBACtF,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;qBACzB,CAAC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpB,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,gCAAgC;oBAC5D,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,EAAE;oBACV,GAAG,EAAE,uDAAuD;oBAC5D,cAAc,EAAE,iDAAiD;oBACjE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7H,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAClF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CACjG,CAAC,CAAC;QACH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,qDAAqD;gBACjF,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzI,GAAG,EAAE,+EAA+E;gBACpF,cAAc,EAAE,kFAAkF;gBAClG,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACzB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,6CAA6C;oBAClE,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,CAAC,+BAA+B,CAAC;oBACzC,GAAG,EAAE,6EAA6E;oBAClF,cAAc,EAAE,uGAAuG;oBACvH,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtJ,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,2CAA2C;YAC9E,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtE,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,kDAAkD,CAAC;YAC5D,GAAG,EAAE,yEAAyE;YAC9E,cAAc,EAAE,0EAA0E;YAC1F,OAAO,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/D,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACjJ,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChI,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,WAAmB,EAAE,WAAmB,EAAE,KAAuB,EAAE,QAAmB;IACnH,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACpH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrI,OAAO;QACL,eAAe,EAAE,WAAW;QAC5B,OAAO,EAAE,WAAW;QACpB,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACnF,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM;QACnF,gBAAgB;QAChB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACrF,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC;KACzC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"risk-engine.js","sourceRoot":"","sources":["../../src/audit/risk-engine.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAUrC,MAAM,cAAc,GAA6B,EAAE,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;AACtG,MAAM,WAAW,GAAG,iEAAiE,CAAC;AAEtF,SAAS,MAAM,CAAI,KAAU;IAC3B,OAAO,CAAC,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAuB;IAC/C,OAAO,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC,CAAC;AAC5E,CAAC;AAED,SAAS,OAAO,CAAC,OAA4B;IAC3C,MAAM,EAAE,GAAG,GAAG,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,EAAE,CAAC;IAClH,OAAO,EAAE,EAAE,EAAE,GAAG,OAAO,EAAE,CAAC;AAC5B,CAAC;AAED,SAAS,WAAW,CAAC,QAAgB;IACnC,OAAO,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,eAAe,CAAC,QAAgB;IACvC,MAAM,WAAW,GAAG,QAAQ,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC;IACpG,MAAM,EAAE,GAAG,WAAW,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACxC,IAAI,EAAE,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;IAC1C,OAAO,yCAAyC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACjE,CAAC;AAED,MAAM,UAAU,YAAY,CAAC,OAAuB,EAAE,KAAuB;IAC3E,MAAM,QAAQ,GAAc,EAAE,CAAC;IAE/B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,QAAQ,CAAC,mBAAmB,CAAC,CAAC,EAAE,CAAC;QAC1G,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,UAAU;YACpB,KAAK,EAAE,GAAG,IAAI,CAAC,WAAW,mDAAmD;YAC7E,WAAW,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC;YAC9B,SAAS,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC;YACtB,MAAM,EAAE,CAAC,gCAAgC,CAAC;YAC1C,GAAG,EAAE,oEAAoE;YACzE,cAAc,EAAE,+EAA+E;YAC/F,OAAO,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC;SACvB,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QAC9D,MAAM,WAAW,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,MAAM,CAAC,CAAC;QACnE,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,IAAI,YAAY,CAAC,GAAG,CAAC,eAAe,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,CAAC;YAC1E,MAAM,KAAK,GAAG,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,IAAI,MAAM,CAAC;YACpD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,GAAG,KAAK,gDAAgD;gBAC/D,WAAW,EAAE,MAAM,CAAC,WAAW;qBAC5B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC/H,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;gBAClC,SAAS,EAAE,MAAM,CAAC,WAAW;qBAC1B,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC,eAAe,EAAE,cAAc,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC;qBAC/H,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBAC5B,MAAM,EAAE,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;gBAChD,GAAG,EAAE,sEAAsE;gBAC3E,cAAc,EAAE,yFAAyF;gBACzG,OAAO,EAAE,CAAC,MAAM,CAAC;aAClB,CAAC,CAAC,CAAC;QACN,CAAC;IACH,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAA4B,CAAC;IAC3D,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACnD,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAChB,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,kBAAkB,GAAG,CAAC,GAAG,cAAc,CAAC,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE;QAClF,MAAM,YAAY,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;QACnD,OAAO,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,IAAI,YAAY,CAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;IACjF,CAAC,CAAC,CAAC;IACH,IAAI,kBAAkB,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACnC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,iDAAiD;YACxD,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;YAChH,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;YACxG,MAAM,EAAE,CAAC,WAAW,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,0BAA0B,CAAC;YAChG,GAAG,EAAE,0DAA0D;YAC/D,cAAc,EAAE,8DAA8D;YAC9E,OAAO,EAAE,kBAAkB,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAoC,CAAC;SACpF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,IAAI,MAAM,CAAC,GAAG,EAAE,CAAC;YACf,IAAI,CAAC;gBACH,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;gBAChC,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBAC3D,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;wBACpB,QAAQ,EAAE,UAAU;wBACpB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,wCAAwC;wBACpE,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;wBAC1B,SAAS,EAAE,EAAE;wBACb,MAAM,EAAE,CAAC,8DAA8D,CAAC;wBACxE,GAAG,EAAE,uDAAuD;wBAC5D,cAAc,EAAE,sEAAsE;wBACtF,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;qBACzB,CAAC,CAAC,CAAC;gBACN,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpB,QAAQ,EAAE,MAAM;oBAChB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,gCAAgC;oBAC5D,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,EAAE;oBACV,GAAG,EAAE,uDAAuD;oBAC5D,cAAc,EAAE,iDAAiD;oBACjE,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;QAED,MAAM,gBAAgB,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC7H,MAAM,iBAAiB,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAClF,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,CAAC,CAAE,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CACjG,CAAC,CAAC;QACH,IAAI,gBAAgB,CAAC,MAAM,GAAG,CAAC,IAAI,iBAAiB,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBACpB,QAAQ,EAAE,MAAM;gBAChB,KAAK,EAAE,GAAG,MAAM,CAAC,WAAW,qDAAqD;gBACjF,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;gBAC1B,SAAS,EAAE,EAAE;gBACb,MAAM,EAAE,CAAC,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,oBAAoB,GAAG,EAAE,CAAC,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBACzI,GAAG,EAAE,+EAA+E;gBACpF,cAAc,EAAE,kFAAkF;gBAClG,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;aACzB,CAAC,CAAC,CAAC;QACN,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7E,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC9C,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC;YACnE,IAAI,UAAU,IAAI,CAAC,eAAe,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC/C,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;oBACpB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,GAAG,MAAM,CAAC,IAAI,6CAA6C;oBAClE,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC;oBAC1B,SAAS,EAAE,EAAE;oBACb,MAAM,EAAE,CAAC,+BAA+B,CAAC;oBACzC,GAAG,EAAE,6EAA6E;oBAClF,cAAc,EAAE,uGAAuG;oBACvH,OAAO,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC;iBACzB,CAAC,CAAC,CAAC;YACN,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,kBAAkB,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,IAAI,sCAAsC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACtJ,IAAI,kBAAkB,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;YACpB,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,GAAG,kBAAkB,CAAC,MAAM,2CAA2C;YAC9E,WAAW,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;YACtE,SAAS,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC9D,MAAM,EAAE,CAAC,kDAAkD,CAAC;YAC5D,GAAG,EAAE,yEAAyE;YAC9E,cAAc,EAAE,0EAA0E;YAC1F,OAAO,EAAE,MAAM,CAAC,kBAAkB,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;SAC/D,CAAC,CAAC,CAAC;IACN,CAAC;IAED,MAAM,YAAY,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IACjJ,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC;AAChI,CAAC;AAED,MAAM,UAAU,cAAc,CAC5B,WAAmB,EACnB,WAAmB,EACnB,KAAuB,EACvB,QAAmB,EACnB,cAAc,GAAG,WAAW;IAE5B,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,KAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,KAAK,MAAM,CAAC,CAAC,MAAM,CAAC;IACpH,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IACrI,OAAO;QACL,eAAe,EAAE,WAAW;QAC5B,OAAO,EAAE,WAAW;QACpB,cAAc;QACd,KAAK,EAAE,KAAK,CAAC,MAAM;QACnB,UAAU,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACnF,qBAAqB,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,SAAS,CAAC,CAAC,MAAM;QACnF,gBAAgB;QAChB,YAAY,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,MAAM;QACrF,YAAY,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC;KACzC,CAAC;AACJ,CAAC"}
@@ -1,10 +1,13 @@
1
1
  import type { AuditResult, DiscoveredConfiguration } from '../types.js';
2
- export type AuditStage = 'discover' | 'catalog' | 'probe' | 'classify' | 'analyze';
2
+ export type AuditStage = 'discover' | 'catalog' | 'probe' | 'explain' | 'classify' | 'analyze';
3
3
  export interface RunAuditOptions {
4
4
  customPaths?: string[];
5
5
  allowServerStarts: boolean;
6
+ inheritParentEnvironment?: boolean;
7
+ allowSensitiveEnvironment?: boolean;
6
8
  offline?: boolean;
7
9
  timeoutMs?: number;
10
+ explain?: boolean;
8
11
  demo?: boolean;
9
12
  discovery?: DiscoveredConfiguration;
10
13
  onStage?: (stage: AuditStage, detail: string) => void;
@@ -1 +1 @@
1
- {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAgB,MAAM,aAAa,CAAC;AAQtF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAEnF,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAUD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CA4C7E"}
1
+ {"version":3,"file":"run.d.ts","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAgB,MAAM,aAAa,CAAC;AAUtF,MAAM,MAAM,UAAU,GAAG,UAAU,GAAG,SAAS,GAAG,OAAO,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;AAE/F,MAAM,WAAW,eAAe;IAC9B,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,uBAAuB,CAAC;IACpC,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACvD;AAWD,wBAAsB,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,OAAO,CAAC,WAAW,CAAC,CAqD7E"}
package/dist/audit/run.js CHANGED
@@ -2,11 +2,14 @@ import { classifyTools } from '../classification/classifier.js';
2
2
  import { loadCatalog } from '../classification/catalog.js';
3
3
  import { discoverConfigurations } from '../config/discover.js';
4
4
  import { demoDiscovery, demoProbes } from '../demo.js';
5
+ import { explainServers } from '../explanation/local.js';
5
6
  import { probeServers } from '../mcp/introspect.js';
7
+ import { sanitizeCommandArgs } from '../privacy/redaction.js';
6
8
  import { analyzeRisks, summarizeAudit } from './risk-engine.js';
7
9
  function sanitizeServer(server) {
8
10
  return {
9
11
  ...server,
12
+ args: sanitizeCommandArgs(server.args),
10
13
  env: Object.fromEntries(server.envKeys.map((key) => [key, '[redacted]'])),
11
14
  headers: Object.fromEntries(server.headerKeys.map((key) => [key, '[redacted]'])),
12
15
  };
@@ -25,15 +28,22 @@ export async function runAudit(options) {
25
28
  ? demoProbes()
26
29
  : await probeServers(discovery.servers, {
27
30
  allowServerStarts: options.allowServerStarts,
31
+ ...(options.inheritParentEnvironment ? { inheritParentEnvironment: true } : {}),
32
+ ...(options.allowSensitiveEnvironment ? { allowSensitiveEnvironment: true } : {}),
28
33
  ...(options.timeoutMs ? { timeoutMs: options.timeoutMs } : {}),
29
34
  });
35
+ options.onStage?.('explain', 'Explaining every MCP server with a loopback-only local model');
36
+ const explanations = await explainServers(discovery.servers, probes, {
37
+ enabled: !options.demo && options.explain !== false,
38
+ ...(options.timeoutMs ? { timeoutMs: Math.min(options.timeoutMs, 5_000) } : {}),
39
+ });
30
40
  options.onStage?.('classify', 'Matching each tool to its capabilities and risk level');
31
41
  const tools = classifyTools(probes.flatMap((probe) => probe.tools), catalog.rules);
32
42
  options.onStage?.('analyze', 'Correlating capabilities across agent clients and MCP servers');
33
43
  const findings = analyzeRisks(discovery.servers, tools);
34
44
  const clientCount = discovery.clients.filter((client) => client.detected).length;
35
45
  const serverCount = new Set(discovery.servers.map((server) => server.name.toLowerCase())).size;
36
- const summary = summarizeAudit(clientCount, serverCount, tools, findings);
46
+ const summary = summarizeAudit(clientCount, serverCount, tools, findings, discovery.servers.length);
37
47
  return {
38
48
  schemaVersion: 1,
39
49
  generatedAt: new Date().toISOString(),
@@ -47,6 +57,7 @@ export async function runAudit(options) {
47
57
  servers: discovery.servers.map(sanitizeServer),
48
58
  },
49
59
  probes,
60
+ explanations,
50
61
  tools,
51
62
  findings,
52
63
  summary,
@@ -1 +1 @@
1
- {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/audit/run.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/classification/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,aAAa,CAAC;AA+GlE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA0B7F"}
1
+ {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/classification/catalog.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAc,kBAAkB,EAAE,MAAM,aAAa,CAAC;AAuKlE,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,kBAAkB,EAAE,CAAC;IAC5B,MAAM,EAAE,UAAU,GAAG,OAAO,GAAG,UAAU,CAAC;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,WAAW,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,aAAa,CAAC,CA0B7F"}
@@ -3,6 +3,8 @@ import { mkdir, readFile, rename, writeFile } from 'node:fs/promises';
3
3
  import { dirname, join, resolve } from 'node:path';
4
4
  import { z } from 'zod';
5
5
  import { BUILTIN_CATALOG } from './builtin-catalog.js';
6
+ import { PUBLIC_CATALOG_KEY, PUBLIC_CATALOG_URL } from './public-catalog-config.js';
7
+ const MAX_CATALOG_BYTES = 2 * 1024 * 1024;
6
8
  const capabilities = [
7
9
  'read-data', 'write-data', 'read-files', 'write-files', 'delete-data', 'execute-code',
8
10
  'execute-shell', 'read-secrets', 'manage-auth', 'network-access', 'deploy-production',
@@ -79,12 +81,67 @@ function validatedSupabaseUrl(raw) {
79
81
  }
80
82
  return url;
81
83
  }
84
+ function legacyJwtRole(key) {
85
+ if (key.split('.').length !== 3)
86
+ return undefined;
87
+ try {
88
+ const payload = JSON.parse(Buffer.from(key.split('.')[1] || '', 'base64url').toString('utf8'));
89
+ if (!payload || typeof payload !== 'object' || !('role' in payload))
90
+ return undefined;
91
+ return typeof payload.role === 'string' ? payload.role : undefined;
92
+ }
93
+ catch {
94
+ return undefined;
95
+ }
96
+ }
97
+ function validatedPublicKey(raw) {
98
+ const key = raw.trim();
99
+ if (!key || key.length > 2_048 || /[\r\n]/u.test(key))
100
+ throw new Error('Supabase publishable key is malformed');
101
+ if (key.startsWith('sb_secret_'))
102
+ throw new Error('Refusing to use a Supabase secret key in the public audit client');
103
+ if (key.startsWith('sb_') && !key.startsWith('sb_publishable_')) {
104
+ throw new Error('Supabase catalog requires a publishable key');
105
+ }
106
+ const role = legacyJwtRole(key);
107
+ if (key.split('.').length === 3 && role !== 'anon') {
108
+ throw new Error('Supabase catalog accepts only a legacy anon JWT, never a service-role or user token');
109
+ }
110
+ if (!key.startsWith('sb_publishable_') && role !== 'anon') {
111
+ throw new Error('Supabase catalog requires a publishable key');
112
+ }
113
+ return { key, legacyJwt: role === 'anon' };
114
+ }
115
+ async function readBoundedBody(response) {
116
+ const declaredLength = Number(response.headers.get('content-length'));
117
+ if (Number.isFinite(declaredLength) && declaredLength > MAX_CATALOG_BYTES) {
118
+ throw new Error('catalog response exceeded 2 MiB');
119
+ }
120
+ if (!response.body)
121
+ return '';
122
+ const reader = response.body.getReader();
123
+ const chunks = [];
124
+ let received = 0;
125
+ while (true) {
126
+ const { done, value } = await reader.read();
127
+ if (done)
128
+ break;
129
+ received += value.byteLength;
130
+ if (received > MAX_CATALOG_BYTES) {
131
+ await reader.cancel();
132
+ throw new Error('catalog response exceeded 2 MiB');
133
+ }
134
+ chunks.push(value);
135
+ }
136
+ return Buffer.concat(chunks, received).toString('utf8');
137
+ }
82
138
  async function fetchDatabaseRules() {
83
- const rawUrl = process.env.SLAUNT_SUPABASE_URL;
84
- const key = process.env.SLAUNT_SUPABASE_PUBLISHABLE_KEY || process.env.SLAUNT_SUPABASE_ANON_KEY;
85
- if (!rawUrl || !key)
86
- throw new Error('Supabase catalog is not configured');
139
+ const rawUrl = process.env.SLAUNT_SUPABASE_URL || PUBLIC_CATALOG_URL;
140
+ const candidateKey = process.env.SLAUNT_SUPABASE_PUBLISHABLE_KEY
141
+ || process.env.SLAUNT_SUPABASE_ANON_KEY
142
+ || PUBLIC_CATALOG_KEY;
87
143
  const base = validatedSupabaseUrl(rawUrl);
144
+ const { key, legacyJwt } = validatedPublicKey(candidateKey);
88
145
  const endpoint = new URL('/rest/v1/tool_classification_catalog', base);
89
146
  endpoint.searchParams.set('select', 'id,namespace,tool_pattern,description_terms,category,capabilities,risk_score,risk_level,sensitive,verified,rationale,priority');
90
147
  endpoint.searchParams.set('active', 'eq.true');
@@ -94,14 +151,12 @@ async function fetchDatabaseRules() {
94
151
  const timeout = setTimeout(() => controller.abort(), 5_000);
95
152
  try {
96
153
  const headers = { apikey: key, accept: 'application/json' };
97
- if (key.split('.').length === 3)
154
+ if (legacyJwt)
98
155
  headers.authorization = `Bearer ${key}`;
99
156
  const response = await fetch(endpoint, { headers, signal: controller.signal, redirect: 'error' });
100
157
  if (!response.ok)
101
158
  throw new Error(`catalog request returned HTTP ${response.status}`);
102
- const body = await response.text();
103
- if (body.length > 2 * 1024 * 1024)
104
- throw new Error('catalog response exceeded 2 MiB');
159
+ const body = await readBoundedBody(response);
105
160
  return z.array(databaseRowSchema).max(10_000).parse(JSON.parse(body));
106
161
  }
107
162
  finally {
@@ -109,7 +164,7 @@ async function fetchDatabaseRules() {
109
164
  }
110
165
  }
111
166
  export async function loadCatalog(options = {}) {
112
- if (!options.offline && process.env.SLAUNT_SUPABASE_URL) {
167
+ if (!options.offline) {
113
168
  try {
114
169
  const rows = await fetchDatabaseRules();
115
170
  await writeCache(rows).catch(() => undefined);
@@ -1 +1 @@
1
- {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/classification/catalog.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../src/classification/catalog.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AACvD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAEpF,MAAM,iBAAiB,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAE1C,MAAM,YAAY,GAAG;IACnB,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc;IACrF,eAAe,EAAE,cAAc,EAAE,aAAa,EAAE,gBAAgB,EAAE,mBAAmB;IACrF,WAAW,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,mBAAmB;IAC7E,iBAAiB,EAAE,cAAc;CACO,CAAC;AAE3C,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACjC,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,MAAM,CAAC;IACvD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACpD,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACxC,iBAAiB,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC1E,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACpC,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC;IACnD,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IAC5C,UAAU,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACjE,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE;IACtB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC;IACrC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;CAC5C,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC;CAC9C,CAAC,CAAC;AAEH,SAAS,SAAS;IAChB,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;IAChF,OAAO,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,CAAC,CAAC,CAAC;AACtG,CAAC;AAED,SAAS,OAAO,CAAC,GAAsC;IACrD,OAAO;QACL,EAAE,EAAE,MAAM,GAAG,CAAC,EAAE,EAAE;QAClB,GAAG,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACtD,WAAW,EAAE,GAAG,CAAC,YAAY;QAC7B,GAAG,CAAC,GAAG,CAAC,iBAAiB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,GAAG,CAAC,iBAAiB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACxF,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,YAAY,EAAE,GAAG,CAAC,YAAY;QAC9B,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,UAAU;QACzB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ;QACtB,SAAS,EAAE,GAAG,CAAC,SAAS;QACxB,QAAQ,EAAE,GAAG,CAAC,QAAQ,GAAG,KAAK;KAC/B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,SAAS;IACtB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAAC;QAChD,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;QAClD,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACtD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI;YAAE,OAAO,SAAS,CAAC;QAC7E,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IACnC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,UAAU,CAAC,IAAyC;IACjE,MAAM,IAAI,GAAG,SAAS,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;IAC7D,MAAM,SAAS,CAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,IAAI,EAAE;QACtG,QAAQ,EAAE,MAAM;QAChB,IAAI,EAAE,KAAK;QACX,IAAI,EAAE,IAAI;KACX,CAAC,CAAC;IACH,MAAM,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AAChC,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC;IACzB,MAAM,KAAK,GAAG,CAAC,WAAW,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,CAAC,CAAC,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,EAAE,CAAC;QACpH,MAAM,IAAI,KAAK,CAAC,gEAAgE,CAAC,CAAC;IACpF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAClD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAY,CAAC;QAC1G,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,IAAI,OAAO,CAAC;YAAE,OAAO,SAAS,CAAC;QACtF,OAAO,OAAO,OAAO,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;IACrE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,GAAW;IACrC,MAAM,GAAG,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACvB,IAAI,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAChH,IAAI,GAAG,CAAC,UAAU,CAAC,YAAY,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAC;IACtH,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IAED,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CAAC,qFAAqF,CAAC,CAAC;IACzG,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,iBAAiB,CAAC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;IACjE,CAAC;IACD,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;AAC7C,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,QAAkB;IAC/C,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACtE,IAAI,MAAM,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,cAAc,GAAG,iBAAiB,EAAE,CAAC;QAC1E,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC;IAE9B,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,OAAO,IAAI,EAAE,CAAC;QACZ,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,QAAQ,IAAI,KAAK,CAAC,UAAU,CAAC;QAC7B,IAAI,QAAQ,GAAG,iBAAiB,EAAE,CAAC;YACjC,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;YACtB,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;QACrD,CAAC;QACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IACrB,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC1D,CAAC;AAED,KAAK,UAAU,kBAAkB;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,kBAAkB,CAAC;IACrE,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,+BAA+B;WAC3D,OAAO,CAAC,GAAG,CAAC,wBAAwB;WACpC,kBAAkB,CAAC;IACxB,MAAM,IAAI,GAAG,oBAAoB,CAAC,MAAM,CAAC,CAAC;IAC1C,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,sCAAsC,EAAE,IAAI,CAAC,CAAC;IACvE,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,+HAA+H,CAAC,CAAC;IACrK,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IAC/C,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;IACpD,QAAQ,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE5C,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,KAAK,CAAC,CAAC;IAC5D,IAAI,CAAC;QACH,MAAM,OAAO,GAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC;QACpF,IAAI,SAAS;YAAE,OAAO,CAAC,aAAa,GAAG,UAAU,GAAG,EAAE,CAAC;QACvD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,QAAQ,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;QAClG,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QACtF,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,QAAQ,CAAC,CAAC;QAC7C,OAAO,CAAC,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,OAAO,CAAC,CAAC;IACxB,CAAC;AACH,CAAC;AAQD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAO,GAA0B,EAAE;IACnE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,kBAAkB,EAAE,CAAC;YACxC,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC9C,OAAO,EAAE,KAAK,EAAE,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;QACnF,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,MAAM,GAAG,MAAM,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,EAAE,CAAC;gBACX,OAAO;oBACL,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,eAAe,CAAC;oBACtC,MAAM,EAAE,OAAO;oBACf,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B;iBACjF,CAAC;YACJ,CAAC;YACD,OAAO;gBACL,KAAK,EAAE,eAAe;gBACtB,MAAM,EAAE,UAAU;gBAClB,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,8BAA8B;aACjF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,MAAM,SAAS,EAAE,CAAC;IAC/D,OAAO,MAAM;QACX,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,MAAM,EAAE,GAAG,eAAe,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE;QAC7D,CAAC,CAAC,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AACrD,CAAC"}
@@ -0,0 +1,3 @@
1
+ export declare const PUBLIC_CATALOG_URL = "https://chgxpcoxlxqmehozftge.supabase.co";
2
+ export declare const PUBLIC_CATALOG_KEY = "sb_publishable_JJTDRq5tsrVf6mA0LB6CmA_OPblISO7";
3
+ //# sourceMappingURL=public-catalog-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-catalog-config.d.ts","sourceRoot":"","sources":["../../src/classification/public-catalog-config.ts"],"names":[],"mappings":"AAEA,eAAO,MAAM,kBAAkB,6CAA6C,CAAC;AAC7E,eAAO,MAAM,kBAAkB,mDAAmD,CAAC"}
@@ -0,0 +1,5 @@
1
+ // Supabase publishable keys are intentionally safe to ship in public clients.
2
+ // Access is constrained by Postgres grants and Row Level Security in the catalog migration.
3
+ export const PUBLIC_CATALOG_URL = 'https://chgxpcoxlxqmehozftge.supabase.co';
4
+ export const PUBLIC_CATALOG_KEY = 'sb_publishable_JJTDRq5tsrVf6mA0LB6CmA_OPblISO7';
5
+ //# sourceMappingURL=public-catalog-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"public-catalog-config.js","sourceRoot":"","sources":["../../src/classification/public-catalog-config.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,4FAA4F;AAC5F,MAAM,CAAC,MAAM,kBAAkB,GAAG,0CAA0C,CAAC;AAC7E,MAAM,CAAC,MAAM,kBAAkB,GAAG,gDAAgD,CAAC"}