defense-mcp-server 0.6.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/CHANGELOG.md +471 -0
- package/LICENSE +21 -0
- package/README.md +242 -0
- package/build/core/auto-installer.d.ts +102 -0
- package/build/core/auto-installer.d.ts.map +1 -0
- package/build/core/auto-installer.js +833 -0
- package/build/core/backup-manager.d.ts +63 -0
- package/build/core/backup-manager.d.ts.map +1 -0
- package/build/core/backup-manager.js +189 -0
- package/build/core/changelog.d.ts +75 -0
- package/build/core/changelog.d.ts.map +1 -0
- package/build/core/changelog.js +123 -0
- package/build/core/command-allowlist.d.ts +129 -0
- package/build/core/command-allowlist.d.ts.map +1 -0
- package/build/core/command-allowlist.js +849 -0
- package/build/core/config.d.ts +79 -0
- package/build/core/config.d.ts.map +1 -0
- package/build/core/config.js +193 -0
- package/build/core/dependency-validator.d.ts +106 -0
- package/build/core/dependency-validator.d.ts.map +1 -0
- package/build/core/dependency-validator.js +405 -0
- package/build/core/distro-adapter.d.ts +177 -0
- package/build/core/distro-adapter.d.ts.map +1 -0
- package/build/core/distro-adapter.js +481 -0
- package/build/core/distro.d.ts +68 -0
- package/build/core/distro.d.ts.map +1 -0
- package/build/core/distro.js +457 -0
- package/build/core/encrypted-state.d.ts +76 -0
- package/build/core/encrypted-state.d.ts.map +1 -0
- package/build/core/encrypted-state.js +209 -0
- package/build/core/executor.d.ts +56 -0
- package/build/core/executor.d.ts.map +1 -0
- package/build/core/executor.js +350 -0
- package/build/core/installer.d.ts +92 -0
- package/build/core/installer.d.ts.map +1 -0
- package/build/core/installer.js +1072 -0
- package/build/core/logger.d.ts +102 -0
- package/build/core/logger.d.ts.map +1 -0
- package/build/core/logger.js +132 -0
- package/build/core/parsers.d.ts +151 -0
- package/build/core/parsers.d.ts.map +1 -0
- package/build/core/parsers.js +479 -0
- package/build/core/policy-engine.d.ts +170 -0
- package/build/core/policy-engine.d.ts.map +1 -0
- package/build/core/policy-engine.js +656 -0
- package/build/core/preflight.d.ts +157 -0
- package/build/core/preflight.d.ts.map +1 -0
- package/build/core/preflight.js +638 -0
- package/build/core/privilege-manager.d.ts +108 -0
- package/build/core/privilege-manager.d.ts.map +1 -0
- package/build/core/privilege-manager.js +363 -0
- package/build/core/rate-limiter.d.ts +67 -0
- package/build/core/rate-limiter.d.ts.map +1 -0
- package/build/core/rate-limiter.js +129 -0
- package/build/core/rollback.d.ts +73 -0
- package/build/core/rollback.d.ts.map +1 -0
- package/build/core/rollback.js +278 -0
- package/build/core/safeguards.d.ts +58 -0
- package/build/core/safeguards.d.ts.map +1 -0
- package/build/core/safeguards.js +448 -0
- package/build/core/sanitizer.d.ts +118 -0
- package/build/core/sanitizer.d.ts.map +1 -0
- package/build/core/sanitizer.js +459 -0
- package/build/core/secure-fs.d.ts +67 -0
- package/build/core/secure-fs.d.ts.map +1 -0
- package/build/core/secure-fs.js +143 -0
- package/build/core/spawn-safe.d.ts +55 -0
- package/build/core/spawn-safe.d.ts.map +1 -0
- package/build/core/spawn-safe.js +146 -0
- package/build/core/sudo-guard.d.ts +145 -0
- package/build/core/sudo-guard.d.ts.map +1 -0
- package/build/core/sudo-guard.js +349 -0
- package/build/core/sudo-session.d.ts +100 -0
- package/build/core/sudo-session.d.ts.map +1 -0
- package/build/core/sudo-session.js +319 -0
- package/build/core/tool-dependencies.d.ts +61 -0
- package/build/core/tool-dependencies.d.ts.map +1 -0
- package/build/core/tool-dependencies.js +571 -0
- package/build/core/tool-registry.d.ts +111 -0
- package/build/core/tool-registry.d.ts.map +1 -0
- package/build/core/tool-registry.js +656 -0
- package/build/core/tool-wrapper.d.ts +73 -0
- package/build/core/tool-wrapper.d.ts.map +1 -0
- package/build/core/tool-wrapper.js +296 -0
- package/build/index.d.ts +3 -0
- package/build/index.d.ts.map +1 -0
- package/build/index.js +247 -0
- package/build/tools/access-control.d.ts +9 -0
- package/build/tools/access-control.d.ts.map +1 -0
- package/build/tools/access-control.js +1818 -0
- package/build/tools/api-security.d.ts +12 -0
- package/build/tools/api-security.d.ts.map +1 -0
- package/build/tools/api-security.js +901 -0
- package/build/tools/app-hardening.d.ts +11 -0
- package/build/tools/app-hardening.d.ts.map +1 -0
- package/build/tools/app-hardening.js +768 -0
- package/build/tools/backup.d.ts +8 -0
- package/build/tools/backup.d.ts.map +1 -0
- package/build/tools/backup.js +381 -0
- package/build/tools/cloud-security.d.ts +17 -0
- package/build/tools/cloud-security.d.ts.map +1 -0
- package/build/tools/cloud-security.js +739 -0
- package/build/tools/compliance.d.ts +10 -0
- package/build/tools/compliance.d.ts.map +1 -0
- package/build/tools/compliance.js +1225 -0
- package/build/tools/container-security.d.ts +14 -0
- package/build/tools/container-security.d.ts.map +1 -0
- package/build/tools/container-security.js +788 -0
- package/build/tools/deception.d.ts +13 -0
- package/build/tools/deception.d.ts.map +1 -0
- package/build/tools/deception.js +763 -0
- package/build/tools/dns-security.d.ts +93 -0
- package/build/tools/dns-security.d.ts.map +1 -0
- package/build/tools/dns-security.js +745 -0
- package/build/tools/drift-detection.d.ts +8 -0
- package/build/tools/drift-detection.d.ts.map +1 -0
- package/build/tools/drift-detection.js +326 -0
- package/build/tools/ebpf-security.d.ts +15 -0
- package/build/tools/ebpf-security.d.ts.map +1 -0
- package/build/tools/ebpf-security.js +294 -0
- package/build/tools/encryption.d.ts +9 -0
- package/build/tools/encryption.d.ts.map +1 -0
- package/build/tools/encryption.js +1667 -0
- package/build/tools/firewall.d.ts +9 -0
- package/build/tools/firewall.d.ts.map +1 -0
- package/build/tools/firewall.js +1398 -0
- package/build/tools/hardening.d.ts +10 -0
- package/build/tools/hardening.d.ts.map +1 -0
- package/build/tools/hardening.js +2654 -0
- package/build/tools/ids.d.ts +9 -0
- package/build/tools/ids.d.ts.map +1 -0
- package/build/tools/ids.js +624 -0
- package/build/tools/incident-response.d.ts +10 -0
- package/build/tools/incident-response.d.ts.map +1 -0
- package/build/tools/incident-response.js +1180 -0
- package/build/tools/logging.d.ts +12 -0
- package/build/tools/logging.d.ts.map +1 -0
- package/build/tools/logging.js +454 -0
- package/build/tools/malware.d.ts +10 -0
- package/build/tools/malware.d.ts.map +1 -0
- package/build/tools/malware.js +532 -0
- package/build/tools/meta.d.ts +11 -0
- package/build/tools/meta.d.ts.map +1 -0
- package/build/tools/meta.js +2278 -0
- package/build/tools/network-defense.d.ts +12 -0
- package/build/tools/network-defense.d.ts.map +1 -0
- package/build/tools/network-defense.js +760 -0
- package/build/tools/patch-management.d.ts +3 -0
- package/build/tools/patch-management.d.ts.map +1 -0
- package/build/tools/patch-management.js +708 -0
- package/build/tools/process-security.d.ts +12 -0
- package/build/tools/process-security.d.ts.map +1 -0
- package/build/tools/process-security.js +784 -0
- package/build/tools/reporting.d.ts +11 -0
- package/build/tools/reporting.d.ts.map +1 -0
- package/build/tools/reporting.js +559 -0
- package/build/tools/secrets.d.ts +9 -0
- package/build/tools/secrets.d.ts.map +1 -0
- package/build/tools/secrets.js +596 -0
- package/build/tools/siem-integration.d.ts +18 -0
- package/build/tools/siem-integration.d.ts.map +1 -0
- package/build/tools/siem-integration.js +754 -0
- package/build/tools/sudo-management.d.ts +18 -0
- package/build/tools/sudo-management.d.ts.map +1 -0
- package/build/tools/sudo-management.js +737 -0
- package/build/tools/supply-chain-security.d.ts +8 -0
- package/build/tools/supply-chain-security.d.ts.map +1 -0
- package/build/tools/supply-chain-security.js +256 -0
- package/build/tools/threat-intel.d.ts +22 -0
- package/build/tools/threat-intel.d.ts.map +1 -0
- package/build/tools/threat-intel.js +749 -0
- package/build/tools/vulnerability-management.d.ts +11 -0
- package/build/tools/vulnerability-management.d.ts.map +1 -0
- package/build/tools/vulnerability-management.js +667 -0
- package/build/tools/waf.d.ts +12 -0
- package/build/tools/waf.d.ts.map +1 -0
- package/build/tools/waf.js +843 -0
- package/build/tools/wireless-security.d.ts +19 -0
- package/build/tools/wireless-security.d.ts.map +1 -0
- package/build/tools/wireless-security.js +826 -0
- package/build/tools/zero-trust-network.d.ts +8 -0
- package/build/tools/zero-trust-network.d.ts.map +1 -0
- package/build/tools/zero-trust-network.js +367 -0
- package/docs/SAFEGUARDS.md +518 -0
- package/docs/TOOLS-REFERENCE.md +665 -0
- package/package.json +87 -0
|
@@ -0,0 +1,571 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool-to-dependency mapping for Defense MCP Server.
|
|
3
|
+
*
|
|
4
|
+
* Maps each registered MCP tool name to the system binaries it requires.
|
|
5
|
+
* Used by the dependency validator to ensure all required tools are
|
|
6
|
+
* installed before execution — either at server startup or on-demand.
|
|
7
|
+
*
|
|
8
|
+
* After the v0.5.0 tool consolidation (157 → 78 tools), extended to 94
|
|
9
|
+
* tools across 32 modules in v0.6.0. Each entry represents a consolidated
|
|
10
|
+
* tool whose dependencies are the UNION of all the individual tools it
|
|
11
|
+
* absorbed. Action-specific binaries are listed as `optionalBinaries`
|
|
12
|
+
* because the tool handles missing ones gracefully based on which `action`
|
|
13
|
+
* the caller selects.
|
|
14
|
+
*/
|
|
15
|
+
import { DEFENSIVE_TOOLS } from "./installer.js";
|
|
16
|
+
// ── Binary → ToolRequirement lookup ──────────────────────────────────────────
|
|
17
|
+
/**
|
|
18
|
+
* Quick lookup from binary name to its ToolRequirement definition.
|
|
19
|
+
* Used to resolve package names for installation.
|
|
20
|
+
*/
|
|
21
|
+
const binaryToToolReq = new Map();
|
|
22
|
+
for (const tool of DEFENSIVE_TOOLS) {
|
|
23
|
+
binaryToToolReq.set(tool.binary, tool);
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Returns the ToolRequirement for a given binary name, if known.
|
|
27
|
+
*/
|
|
28
|
+
export function getToolRequirementForBinary(binary) {
|
|
29
|
+
return binaryToToolReq.get(binary);
|
|
30
|
+
}
|
|
31
|
+
// ── Tool Dependency Registry ─────────────────────────────────────────────────
|
|
32
|
+
/**
|
|
33
|
+
* Complete mapping of MCP tool names to their system binary dependencies.
|
|
34
|
+
*
|
|
35
|
+
* 78 consolidated tools across 21 modules. Each entry specifies:
|
|
36
|
+
* - requiredBinaries: must be present for the tool to work at all
|
|
37
|
+
* - optionalBinaries: enhance functionality but aren't strictly needed
|
|
38
|
+
* - critical: if true, missing deps trigger a startup warning
|
|
39
|
+
*/
|
|
40
|
+
export const TOOL_DEPENDENCIES = [
|
|
41
|
+
// ── Firewall Tools (5) ────────────────────────────────────────────────────
|
|
42
|
+
{
|
|
43
|
+
toolName: "firewall_iptables",
|
|
44
|
+
requiredBinaries: ["iptables"],
|
|
45
|
+
optionalBinaries: ["ip6tables"],
|
|
46
|
+
critical: true,
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
toolName: "firewall_ufw",
|
|
50
|
+
requiredBinaries: ["ufw"],
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
toolName: "firewall_persist",
|
|
54
|
+
requiredBinaries: [],
|
|
55
|
+
optionalBinaries: ["iptables-save", "iptables-restore", "ip6tables-save", "ip6tables-restore", "netfilter-persistent"],
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
toolName: "firewall_nftables_list",
|
|
59
|
+
requiredBinaries: ["nft"],
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
toolName: "firewall_policy_audit",
|
|
63
|
+
requiredBinaries: ["iptables"],
|
|
64
|
+
},
|
|
65
|
+
// ── Hardening Tools (8) ───────────────────────────────────────────────────
|
|
66
|
+
{
|
|
67
|
+
toolName: "harden_sysctl",
|
|
68
|
+
requiredBinaries: ["sysctl"],
|
|
69
|
+
critical: true,
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
toolName: "harden_service",
|
|
73
|
+
requiredBinaries: ["systemctl"],
|
|
74
|
+
critical: true,
|
|
75
|
+
},
|
|
76
|
+
{
|
|
77
|
+
toolName: "harden_permissions",
|
|
78
|
+
requiredBinaries: ["stat"],
|
|
79
|
+
optionalBinaries: ["chmod", "chown", "chgrp"],
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
toolName: "harden_systemd",
|
|
83
|
+
requiredBinaries: [],
|
|
84
|
+
optionalBinaries: ["systemd-analyze", "systemctl"],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
toolName: "harden_kernel",
|
|
88
|
+
requiredBinaries: ["cat"],
|
|
89
|
+
optionalBinaries: ["lsmod", "modprobe", "sysctl"],
|
|
90
|
+
},
|
|
91
|
+
{
|
|
92
|
+
toolName: "harden_bootloader",
|
|
93
|
+
requiredBinaries: ["cat"],
|
|
94
|
+
optionalBinaries: ["update-grub"],
|
|
95
|
+
},
|
|
96
|
+
{
|
|
97
|
+
toolName: "harden_misc",
|
|
98
|
+
requiredBinaries: ["cat"],
|
|
99
|
+
optionalBinaries: ["tee"],
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
toolName: "harden_memory",
|
|
103
|
+
requiredBinaries: [],
|
|
104
|
+
optionalBinaries: ["readelf", "checksec", "sysctl"],
|
|
105
|
+
},
|
|
106
|
+
// ── IDS Tools (3) ─────────────────────────────────────────────────────────
|
|
107
|
+
{
|
|
108
|
+
toolName: "ids_aide_manage",
|
|
109
|
+
requiredBinaries: ["aide"],
|
|
110
|
+
critical: true,
|
|
111
|
+
},
|
|
112
|
+
{
|
|
113
|
+
toolName: "ids_rootkit_scan",
|
|
114
|
+
requiredBinaries: [],
|
|
115
|
+
optionalBinaries: ["rkhunter", "chkrootkit"],
|
|
116
|
+
critical: true,
|
|
117
|
+
},
|
|
118
|
+
{
|
|
119
|
+
toolName: "ids_file_integrity_check",
|
|
120
|
+
requiredBinaries: ["sha256sum"],
|
|
121
|
+
},
|
|
122
|
+
// ── Logging Tools (4) ─────────────────────────────────────────────────────
|
|
123
|
+
{
|
|
124
|
+
toolName: "log_auditd",
|
|
125
|
+
requiredBinaries: [],
|
|
126
|
+
optionalBinaries: ["auditctl", "ausearch", "aureport"],
|
|
127
|
+
critical: true,
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
toolName: "log_journalctl_query",
|
|
131
|
+
requiredBinaries: ["journalctl"],
|
|
132
|
+
critical: true,
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
toolName: "log_fail2ban",
|
|
136
|
+
requiredBinaries: ["fail2ban-client"],
|
|
137
|
+
},
|
|
138
|
+
{
|
|
139
|
+
toolName: "log_system",
|
|
140
|
+
requiredBinaries: ["cat"],
|
|
141
|
+
optionalBinaries: ["logrotate"],
|
|
142
|
+
},
|
|
143
|
+
// ── Network Defense Tools (3) ─────────────────────────────────────────────
|
|
144
|
+
{
|
|
145
|
+
toolName: "netdef_connections",
|
|
146
|
+
requiredBinaries: ["ss"],
|
|
147
|
+
critical: true,
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
toolName: "netdef_capture",
|
|
151
|
+
requiredBinaries: ["tcpdump"],
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
toolName: "netdef_security_audit",
|
|
155
|
+
requiredBinaries: [],
|
|
156
|
+
optionalBinaries: ["cat", "nmap", "sysctl", "ip6tables"],
|
|
157
|
+
},
|
|
158
|
+
// ── Compliance Tools (7) ──────────────────────────────────────────────────
|
|
159
|
+
{
|
|
160
|
+
toolName: "compliance_lynis_audit",
|
|
161
|
+
requiredBinaries: ["lynis"],
|
|
162
|
+
critical: true,
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
toolName: "compliance_oscap_scan",
|
|
166
|
+
requiredBinaries: ["oscap"],
|
|
167
|
+
},
|
|
168
|
+
{
|
|
169
|
+
toolName: "compliance_check",
|
|
170
|
+
requiredBinaries: ["cat"],
|
|
171
|
+
optionalBinaries: ["lynis", "oscap"],
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
toolName: "compliance_policy_evaluate",
|
|
175
|
+
requiredBinaries: ["cat"],
|
|
176
|
+
},
|
|
177
|
+
{
|
|
178
|
+
toolName: "compliance_report",
|
|
179
|
+
requiredBinaries: [],
|
|
180
|
+
optionalBinaries: ["lynis"],
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
toolName: "compliance_cron_restrict",
|
|
184
|
+
requiredBinaries: ["cat"],
|
|
185
|
+
},
|
|
186
|
+
{
|
|
187
|
+
toolName: "compliance_tmp_hardening",
|
|
188
|
+
requiredBinaries: ["mount"],
|
|
189
|
+
},
|
|
190
|
+
// ── Malware Tools (4) ─────────────────────────────────────────────────────
|
|
191
|
+
{
|
|
192
|
+
toolName: "malware_clamav",
|
|
193
|
+
requiredBinaries: [],
|
|
194
|
+
optionalBinaries: ["clamscan", "freshclam"],
|
|
195
|
+
critical: true,
|
|
196
|
+
},
|
|
197
|
+
{
|
|
198
|
+
toolName: "malware_yara_scan",
|
|
199
|
+
requiredBinaries: ["yara"],
|
|
200
|
+
},
|
|
201
|
+
{
|
|
202
|
+
toolName: "malware_file_scan",
|
|
203
|
+
requiredBinaries: [],
|
|
204
|
+
optionalBinaries: ["find", "grep"],
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
toolName: "malware_quarantine_manage",
|
|
208
|
+
requiredBinaries: ["cat"],
|
|
209
|
+
},
|
|
210
|
+
// ── Backup Tools (1) ──────────────────────────────────────────────────────
|
|
211
|
+
{
|
|
212
|
+
toolName: "backup",
|
|
213
|
+
requiredBinaries: [],
|
|
214
|
+
optionalBinaries: ["cp", "cat", "sha256sum", "ls", "dpkg", "systemctl", "iptables-save", "ss"],
|
|
215
|
+
},
|
|
216
|
+
// ── Access Control Tools (6) ──────────────────────────────────────────────
|
|
217
|
+
{
|
|
218
|
+
toolName: "access_ssh",
|
|
219
|
+
requiredBinaries: ["cat"],
|
|
220
|
+
optionalBinaries: ["systemctl", "sshd"],
|
|
221
|
+
critical: true,
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
toolName: "access_sudo_audit",
|
|
225
|
+
requiredBinaries: ["cat"],
|
|
226
|
+
optionalBinaries: ["visudo"],
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
toolName: "access_user_audit",
|
|
230
|
+
requiredBinaries: ["cat"],
|
|
231
|
+
},
|
|
232
|
+
{
|
|
233
|
+
toolName: "access_password_policy",
|
|
234
|
+
requiredBinaries: ["cat"],
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
toolName: "access_pam",
|
|
238
|
+
requiredBinaries: ["cat"],
|
|
239
|
+
optionalBinaries: ["pam_pwquality"],
|
|
240
|
+
},
|
|
241
|
+
{
|
|
242
|
+
toolName: "access_restrict_shell",
|
|
243
|
+
requiredBinaries: ["usermod"],
|
|
244
|
+
},
|
|
245
|
+
// ── Encryption Tools (4) ──────────────────────────────────────────────────
|
|
246
|
+
{
|
|
247
|
+
toolName: "crypto_tls",
|
|
248
|
+
requiredBinaries: ["openssl"],
|
|
249
|
+
critical: true,
|
|
250
|
+
},
|
|
251
|
+
{
|
|
252
|
+
toolName: "crypto_gpg_keys",
|
|
253
|
+
requiredBinaries: ["gpg"],
|
|
254
|
+
},
|
|
255
|
+
{
|
|
256
|
+
toolName: "crypto_luks_manage",
|
|
257
|
+
requiredBinaries: ["cryptsetup"],
|
|
258
|
+
},
|
|
259
|
+
{
|
|
260
|
+
toolName: "crypto_file_hash",
|
|
261
|
+
requiredBinaries: ["sha256sum"],
|
|
262
|
+
},
|
|
263
|
+
// ── Container Security Tools (6) ──────────────────────────────────────────
|
|
264
|
+
{
|
|
265
|
+
toolName: "container_docker",
|
|
266
|
+
requiredBinaries: [],
|
|
267
|
+
optionalBinaries: ["docker"],
|
|
268
|
+
},
|
|
269
|
+
{
|
|
270
|
+
toolName: "container_apparmor",
|
|
271
|
+
requiredBinaries: [],
|
|
272
|
+
optionalBinaries: ["apparmor_status", "apparmor_parser"],
|
|
273
|
+
},
|
|
274
|
+
{
|
|
275
|
+
toolName: "container_selinux_manage",
|
|
276
|
+
requiredBinaries: ["getenforce"],
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
toolName: "container_namespace_check",
|
|
280
|
+
requiredBinaries: ["cat"],
|
|
281
|
+
optionalBinaries: ["lsns"],
|
|
282
|
+
},
|
|
283
|
+
{
|
|
284
|
+
toolName: "container_image_scan",
|
|
285
|
+
requiredBinaries: [],
|
|
286
|
+
optionalBinaries: ["trivy", "grype"],
|
|
287
|
+
},
|
|
288
|
+
{
|
|
289
|
+
toolName: "container_security_config",
|
|
290
|
+
requiredBinaries: [],
|
|
291
|
+
optionalBinaries: ["newuidmap", "newgidmap"],
|
|
292
|
+
},
|
|
293
|
+
// ── Patch Management Tools (5) ────────────────────────────────────────────
|
|
294
|
+
{
|
|
295
|
+
toolName: "patch_update_audit",
|
|
296
|
+
requiredBinaries: ["apt"],
|
|
297
|
+
},
|
|
298
|
+
{
|
|
299
|
+
toolName: "patch_unattended_audit",
|
|
300
|
+
requiredBinaries: ["cat"],
|
|
301
|
+
},
|
|
302
|
+
{
|
|
303
|
+
toolName: "patch_integrity_check",
|
|
304
|
+
requiredBinaries: [],
|
|
305
|
+
optionalBinaries: ["debsums"],
|
|
306
|
+
},
|
|
307
|
+
{
|
|
308
|
+
toolName: "patch_kernel_audit",
|
|
309
|
+
requiredBinaries: ["uname"],
|
|
310
|
+
},
|
|
311
|
+
{
|
|
312
|
+
toolName: "patch_vulnerability_intel",
|
|
313
|
+
requiredBinaries: [],
|
|
314
|
+
optionalBinaries: ["curl", "apt", "dpkg"],
|
|
315
|
+
},
|
|
316
|
+
// ── Secrets Management Tools (4) ──────────────────────────────────────────
|
|
317
|
+
{
|
|
318
|
+
toolName: "secrets_scan",
|
|
319
|
+
requiredBinaries: ["grep"],
|
|
320
|
+
optionalBinaries: ["trufflehog", "gitleaks"],
|
|
321
|
+
},
|
|
322
|
+
{
|
|
323
|
+
toolName: "secrets_env_audit",
|
|
324
|
+
requiredBinaries: [],
|
|
325
|
+
},
|
|
326
|
+
{
|
|
327
|
+
toolName: "secrets_ssh_key_sprawl",
|
|
328
|
+
requiredBinaries: ["find"],
|
|
329
|
+
},
|
|
330
|
+
{
|
|
331
|
+
toolName: "secrets_git_history_scan",
|
|
332
|
+
requiredBinaries: [],
|
|
333
|
+
optionalBinaries: ["trufflehog", "gitleaks", "git"],
|
|
334
|
+
},
|
|
335
|
+
// ── Incident Response Tools (1) ───────────────────────────────────────────
|
|
336
|
+
{
|
|
337
|
+
toolName: "incident_response",
|
|
338
|
+
requiredBinaries: [],
|
|
339
|
+
optionalBinaries: ["cat", "ps", "ss", "lsof", "ip", "iptables-save", "find", "crontab"],
|
|
340
|
+
},
|
|
341
|
+
// ── Meta Tools (5) ────────────────────────────────────────────────────────
|
|
342
|
+
{
|
|
343
|
+
toolName: "defense_check_tools",
|
|
344
|
+
requiredBinaries: [],
|
|
345
|
+
},
|
|
346
|
+
{
|
|
347
|
+
toolName: "defense_workflow",
|
|
348
|
+
requiredBinaries: [],
|
|
349
|
+
},
|
|
350
|
+
{
|
|
351
|
+
toolName: "defense_change_history",
|
|
352
|
+
requiredBinaries: [],
|
|
353
|
+
},
|
|
354
|
+
{
|
|
355
|
+
toolName: "defense_security_posture",
|
|
356
|
+
requiredBinaries: [],
|
|
357
|
+
optionalBinaries: ["iptables", "ss", "journalctl", "apt", "sysctl", "systemctl"],
|
|
358
|
+
},
|
|
359
|
+
{
|
|
360
|
+
toolName: "defense_scheduled_audit",
|
|
361
|
+
requiredBinaries: [],
|
|
362
|
+
optionalBinaries: ["systemctl", "crontab", "cat"],
|
|
363
|
+
},
|
|
364
|
+
// ── Sudo Management Tools (6) ─────────────────────────────────────────────
|
|
365
|
+
{
|
|
366
|
+
toolName: "sudo_elevate",
|
|
367
|
+
requiredBinaries: [],
|
|
368
|
+
},
|
|
369
|
+
{
|
|
370
|
+
toolName: "sudo_elevate_gui",
|
|
371
|
+
requiredBinaries: [],
|
|
372
|
+
},
|
|
373
|
+
{
|
|
374
|
+
toolName: "sudo_status",
|
|
375
|
+
requiredBinaries: [],
|
|
376
|
+
},
|
|
377
|
+
{
|
|
378
|
+
toolName: "sudo_drop",
|
|
379
|
+
requiredBinaries: [],
|
|
380
|
+
},
|
|
381
|
+
{
|
|
382
|
+
toolName: "sudo_extend",
|
|
383
|
+
requiredBinaries: [],
|
|
384
|
+
},
|
|
385
|
+
{
|
|
386
|
+
toolName: "preflight_batch_check",
|
|
387
|
+
requiredBinaries: [],
|
|
388
|
+
},
|
|
389
|
+
// ── Supply Chain Security Tools (1) ───────────────────────────────────────
|
|
390
|
+
{
|
|
391
|
+
toolName: "supply_chain",
|
|
392
|
+
requiredBinaries: [],
|
|
393
|
+
optionalBinaries: ["syft", "cdxgen", "dpkg", "debsums", "cosign", "slsa-verifier"],
|
|
394
|
+
},
|
|
395
|
+
// ── Drift Detection Tools (1) ─────────────────────────────────────────────
|
|
396
|
+
{
|
|
397
|
+
toolName: "drift_baseline",
|
|
398
|
+
requiredBinaries: [],
|
|
399
|
+
optionalBinaries: ["sha256sum", "sysctl", "systemctl", "cat"],
|
|
400
|
+
},
|
|
401
|
+
// ── Zero Trust Network Tools (1) ──────────────────────────────────────────
|
|
402
|
+
{
|
|
403
|
+
toolName: "zero_trust",
|
|
404
|
+
requiredBinaries: [],
|
|
405
|
+
optionalBinaries: ["wg", "openssl", "iptables"],
|
|
406
|
+
},
|
|
407
|
+
// ── eBPF Security Tools (2) ───────────────────────────────────────────────
|
|
408
|
+
{
|
|
409
|
+
toolName: "ebpf_list_programs",
|
|
410
|
+
requiredBinaries: [],
|
|
411
|
+
optionalBinaries: ["bpftool"],
|
|
412
|
+
},
|
|
413
|
+
{
|
|
414
|
+
toolName: "ebpf_falco",
|
|
415
|
+
requiredBinaries: [],
|
|
416
|
+
optionalBinaries: ["falco", "cat"],
|
|
417
|
+
},
|
|
418
|
+
// ── Application Hardening Tools (1) ───────────────────────────────────────
|
|
419
|
+
{
|
|
420
|
+
toolName: "app_harden",
|
|
421
|
+
requiredBinaries: [],
|
|
422
|
+
optionalBinaries: ["ps", "ss", "systemctl", "iptables"],
|
|
423
|
+
},
|
|
424
|
+
// ── Reporting Tools (1) ───────────────────────────────────────────────────
|
|
425
|
+
{
|
|
426
|
+
toolName: "report_export",
|
|
427
|
+
requiredBinaries: [],
|
|
428
|
+
optionalBinaries: ["lynis", "aide", "fail2ban-client", "iptables", "ss", "pandoc", "wkhtmltopdf"],
|
|
429
|
+
},
|
|
430
|
+
// ── DNS Security Tools (1) ────────────────────────────────────────────────
|
|
431
|
+
{
|
|
432
|
+
toolName: "dns_security",
|
|
433
|
+
requiredBinaries: [],
|
|
434
|
+
optionalBinaries: ["dig", "systemd-resolve", "resolvectl", "tcpdump", "cat", "grep"],
|
|
435
|
+
},
|
|
436
|
+
// ── Vulnerability Management Tools (1) ────────────────────────────────────
|
|
437
|
+
{
|
|
438
|
+
toolName: "vuln_manage",
|
|
439
|
+
requiredBinaries: ["nmap"],
|
|
440
|
+
optionalBinaries: ["nikto", "searchsploit"],
|
|
441
|
+
},
|
|
442
|
+
// ── Forensics Tools (1) ───────────────────────────────────────────────────
|
|
443
|
+
{
|
|
444
|
+
toolName: "ir_forensics",
|
|
445
|
+
requiredBinaries: [],
|
|
446
|
+
optionalBinaries: ["avml", "dd", "sha256sum", "tcpdump", "fdisk"],
|
|
447
|
+
},
|
|
448
|
+
// ── Process Security Tools (1) ────────────────────────────────────────────
|
|
449
|
+
{
|
|
450
|
+
toolName: "process_security",
|
|
451
|
+
requiredBinaries: ["ps"],
|
|
452
|
+
optionalBinaries: ["getpcaps", "capsh", "lsns", "ss"],
|
|
453
|
+
},
|
|
454
|
+
// ── Network Segmentation Tools (1) ────────────────────────────────────────
|
|
455
|
+
{
|
|
456
|
+
toolName: "network_segmentation_audit",
|
|
457
|
+
requiredBinaries: ["ip", "iptables"],
|
|
458
|
+
optionalBinaries: ["traceroute", "nmap", "bridge"],
|
|
459
|
+
},
|
|
460
|
+
// ── WAF Management Tools (1) ──────────────────────────────────────────────
|
|
461
|
+
{
|
|
462
|
+
toolName: "waf_manage",
|
|
463
|
+
requiredBinaries: [],
|
|
464
|
+
optionalBinaries: ["cat", "grep", "sed", "dpkg", "apache2ctl"],
|
|
465
|
+
},
|
|
466
|
+
// ── Threat Intelligence Tools (1) ─────────────────────────────────────────
|
|
467
|
+
{
|
|
468
|
+
toolName: "threat_intel",
|
|
469
|
+
requiredBinaries: ["curl"],
|
|
470
|
+
optionalBinaries: ["wget", "fail2ban-client", "iptables", "grep", "whois", "dig"],
|
|
471
|
+
},
|
|
472
|
+
// ── Auto-Remediation Tools (1) ────────────────────────────────────────────
|
|
473
|
+
{
|
|
474
|
+
toolName: "auto_remediate",
|
|
475
|
+
requiredBinaries: [],
|
|
476
|
+
optionalBinaries: ["sysctl", "iptables", "sed", "grep", "lynis"],
|
|
477
|
+
},
|
|
478
|
+
// ── Cloud Security Tools (1) ──────────────────────────────────────────────
|
|
479
|
+
{
|
|
480
|
+
toolName: "cloud_security",
|
|
481
|
+
requiredBinaries: ["curl"],
|
|
482
|
+
optionalBinaries: ["cat", "stat", "aws", "gsutil", "az", "cloud-init"],
|
|
483
|
+
},
|
|
484
|
+
// ── API Security Tools (1) ────────────────────────────────────────────────
|
|
485
|
+
{
|
|
486
|
+
toolName: "api_security",
|
|
487
|
+
requiredBinaries: ["curl"],
|
|
488
|
+
optionalBinaries: ["openssl", "ss"],
|
|
489
|
+
},
|
|
490
|
+
// ── Deception / Honeypot Tools (1) ────────────────────────────────────────
|
|
491
|
+
{
|
|
492
|
+
toolName: "honeypot_manage",
|
|
493
|
+
requiredBinaries: [],
|
|
494
|
+
optionalBinaries: ["ncat", "inotifywait", "iptables", "stat"],
|
|
495
|
+
},
|
|
496
|
+
// ── Wireless Security Tools (1) ───────────────────────────────────────────
|
|
497
|
+
{
|
|
498
|
+
toolName: "wireless_security",
|
|
499
|
+
requiredBinaries: [],
|
|
500
|
+
optionalBinaries: ["hciconfig", "bluetoothctl", "iw", "nmcli", "rfkill", "lsmod"],
|
|
501
|
+
},
|
|
502
|
+
// ── Certificate Lifecycle Tools (1) ───────────────────────────────────────
|
|
503
|
+
{
|
|
504
|
+
toolName: "certificate_lifecycle",
|
|
505
|
+
requiredBinaries: ["openssl"],
|
|
506
|
+
optionalBinaries: ["certbot", "find", "curl"],
|
|
507
|
+
},
|
|
508
|
+
// ── SIEM Integration Tools (1) ────────────────────────────────────────────
|
|
509
|
+
{
|
|
510
|
+
toolName: "siem_export",
|
|
511
|
+
requiredBinaries: [],
|
|
512
|
+
optionalBinaries: ["cat", "grep", "nc", "openssl", "logger", "filebeat"],
|
|
513
|
+
},
|
|
514
|
+
// ── USB Device Control Tools (1) ──────────────────────────────────────────
|
|
515
|
+
{
|
|
516
|
+
toolName: "usb_device_control",
|
|
517
|
+
requiredBinaries: [],
|
|
518
|
+
optionalBinaries: ["lsusb", "lsblk", "lsmod", "modprobe", "udevadm"],
|
|
519
|
+
},
|
|
520
|
+
];
|
|
521
|
+
// ── Lookup helpers ───────────────────────────────────────────────────────────
|
|
522
|
+
/** Map for O(1) lookup by tool name */
|
|
523
|
+
const toolDependencyMap = new Map();
|
|
524
|
+
for (const dep of TOOL_DEPENDENCIES) {
|
|
525
|
+
toolDependencyMap.set(dep.toolName, dep);
|
|
526
|
+
}
|
|
527
|
+
/**
|
|
528
|
+
* Returns the dependency specification for a given MCP tool name.
|
|
529
|
+
*/
|
|
530
|
+
export function getDependenciesForTool(toolName) {
|
|
531
|
+
return toolDependencyMap.get(toolName);
|
|
532
|
+
}
|
|
533
|
+
/**
|
|
534
|
+
* Returns all unique required binaries across all tools.
|
|
535
|
+
*/
|
|
536
|
+
export function getAllRequiredBinaries() {
|
|
537
|
+
const binaries = new Set();
|
|
538
|
+
for (const dep of TOOL_DEPENDENCIES) {
|
|
539
|
+
for (const bin of dep.requiredBinaries) {
|
|
540
|
+
binaries.add(bin);
|
|
541
|
+
}
|
|
542
|
+
}
|
|
543
|
+
return Array.from(binaries);
|
|
544
|
+
}
|
|
545
|
+
/**
|
|
546
|
+
* Returns all unique binaries (required + optional) across all tools.
|
|
547
|
+
*/
|
|
548
|
+
export function getAllBinaries() {
|
|
549
|
+
const required = new Set();
|
|
550
|
+
const optional = new Set();
|
|
551
|
+
for (const dep of TOOL_DEPENDENCIES) {
|
|
552
|
+
for (const bin of dep.requiredBinaries) {
|
|
553
|
+
required.add(bin);
|
|
554
|
+
}
|
|
555
|
+
for (const bin of dep.optionalBinaries ?? []) {
|
|
556
|
+
if (!required.has(bin)) {
|
|
557
|
+
optional.add(bin);
|
|
558
|
+
}
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
return {
|
|
562
|
+
required: Array.from(required),
|
|
563
|
+
optional: Array.from(optional),
|
|
564
|
+
};
|
|
565
|
+
}
|
|
566
|
+
/**
|
|
567
|
+
* Returns all critical tool dependencies (tools that should always work).
|
|
568
|
+
*/
|
|
569
|
+
export function getCriticalDependencies() {
|
|
570
|
+
return TOOL_DEPENDENCIES.filter((d) => d.critical);
|
|
571
|
+
}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Enhanced Tool Registry — single source of truth for all MCP tool requirements.
|
|
3
|
+
*
|
|
4
|
+
* Replaces and extends `tool-dependencies.ts` with richer dependency metadata
|
|
5
|
+
* including privilege requirements, Python/npm packages, system libraries,
|
|
6
|
+
* required files, and Linux capabilities.
|
|
7
|
+
*
|
|
8
|
+
* v0.5.0: Tool consolidation (157 → 78 tools), each entry represents a
|
|
9
|
+
* consolidated action-based tool.
|
|
10
|
+
* v0.6.0: Extended to 94 tools across 32 modules with 16 new security tools.
|
|
11
|
+
*
|
|
12
|
+
* @module tool-registry
|
|
13
|
+
*/
|
|
14
|
+
/**
|
|
15
|
+
* Complete requirements manifest for a single MCP tool.
|
|
16
|
+
* Enhanced replacement for the legacy {@link ToolDependency} type.
|
|
17
|
+
*/
|
|
18
|
+
export interface ToolManifest {
|
|
19
|
+
/** The MCP tool name (e.g., "firewall_iptables") */
|
|
20
|
+
toolName: string;
|
|
21
|
+
/** System binaries required for this tool to function */
|
|
22
|
+
requiredBinaries: string[];
|
|
23
|
+
/** System binaries that enhance functionality but aren't strictly needed */
|
|
24
|
+
optionalBinaries?: string[];
|
|
25
|
+
/** Python modules required (e.g., ["yara-python", "pefile"]) */
|
|
26
|
+
requiredPythonModules?: string[];
|
|
27
|
+
/** Python modules that enhance functionality */
|
|
28
|
+
optionalPythonModules?: string[];
|
|
29
|
+
/** npm packages required (e.g., ["semgrep"]) */
|
|
30
|
+
requiredNpmPackages?: string[];
|
|
31
|
+
/** npm packages that enhance functionality */
|
|
32
|
+
optionalNpmPackages?: string[];
|
|
33
|
+
/** System shared libraries required (e.g., ["libssl", "libpcap"]) */
|
|
34
|
+
requiredLibraries?: string[];
|
|
35
|
+
/** Absolute paths that must exist on disk (e.g., ["/etc/audit/auditd.conf"]) */
|
|
36
|
+
requiredFiles?: string[];
|
|
37
|
+
/** Sudo requirement level for this tool */
|
|
38
|
+
sudo: "never" | "always" | "conditional";
|
|
39
|
+
/** Human-readable explanation of why sudo is needed */
|
|
40
|
+
sudoReason?: string;
|
|
41
|
+
/** Linux capabilities required (e.g., ["CAP_NET_RAW"]) */
|
|
42
|
+
capabilities?: string[];
|
|
43
|
+
/** Whether this tool is critical for core functionality */
|
|
44
|
+
critical?: boolean;
|
|
45
|
+
/** Tool module category (firewall, logging, compliance, etc.) */
|
|
46
|
+
category?: string;
|
|
47
|
+
/** Additional categorization tags */
|
|
48
|
+
tags?: string[];
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Map-based registry with O(1) lookup for tool manifests.
|
|
52
|
+
* Singleton pattern — use {@link ToolRegistry.instance} to obtain.
|
|
53
|
+
*/
|
|
54
|
+
export declare class ToolRegistry {
|
|
55
|
+
private manifests;
|
|
56
|
+
/** Get or create the singleton registry instance. */
|
|
57
|
+
static instance(): ToolRegistry;
|
|
58
|
+
/**
|
|
59
|
+
* Reset the singleton (primarily for testing).
|
|
60
|
+
* @internal
|
|
61
|
+
*/
|
|
62
|
+
static resetInstance(): void;
|
|
63
|
+
/** Register a single tool manifest. Overwrites if already registered. */
|
|
64
|
+
register(manifest: ToolManifest): void;
|
|
65
|
+
/** Bulk register an array of tool manifests. */
|
|
66
|
+
registerAll(manifests: ToolManifest[]): void;
|
|
67
|
+
/** Get manifest for a tool, or `undefined` if unregistered. */
|
|
68
|
+
getManifest(toolName: string): ToolManifest | undefined;
|
|
69
|
+
/** Get all tool names that list `binary` in their `requiredBinaries`. */
|
|
70
|
+
getToolsRequiring(binary: string): string[];
|
|
71
|
+
/** Get all manifests whose `category` matches. */
|
|
72
|
+
getToolsByCategory(category: string): ToolManifest[];
|
|
73
|
+
/** Collect every unique required binary across all registered tools. */
|
|
74
|
+
getAllRequiredBinaries(): Set<string>;
|
|
75
|
+
/** Get all manifests that require sudo (`always` or `conditional`). */
|
|
76
|
+
getToolsNeedingSudo(): ToolManifest[];
|
|
77
|
+
/** Check whether a tool name is registered. */
|
|
78
|
+
has(toolName: string): boolean;
|
|
79
|
+
/** Return every registered manifest as an array. */
|
|
80
|
+
getAll(): ToolManifest[];
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Convert every entry in the legacy `TOOL_DEPENDENCIES` array into a
|
|
84
|
+
* {@link ToolManifest} and register it. Default `sudo` is `'never'`
|
|
85
|
+
* (overridden later by {@link DEFAULT_MANIFESTS}).
|
|
86
|
+
*/
|
|
87
|
+
export declare function migrateFromLegacy(registry: ToolRegistry): void;
|
|
88
|
+
/**
|
|
89
|
+
* Default enhanced manifests that overlay sudo/privilege requirements
|
|
90
|
+
* on top of the legacy-migrated entries.
|
|
91
|
+
*/
|
|
92
|
+
export declare const DEFAULT_MANIFESTS: ToolManifest[];
|
|
93
|
+
/**
|
|
94
|
+
* Initialize the tool registry by:
|
|
95
|
+
*
|
|
96
|
+
* 1. Creating (or reusing) the singleton
|
|
97
|
+
* 2. Migrating from legacy `TOOL_DEPENDENCIES`
|
|
98
|
+
* 3. Overlaying `DEFAULT_MANIFESTS` — merging privilege metadata while
|
|
99
|
+
* preserving binary requirements from the legacy data
|
|
100
|
+
* 4. Returning the populated registry
|
|
101
|
+
*
|
|
102
|
+
* Safe to call multiple times; subsequent calls return immediately
|
|
103
|
+
* without re-running migration or overlay logic.
|
|
104
|
+
*/
|
|
105
|
+
export declare function initializeRegistry(): ToolRegistry;
|
|
106
|
+
/**
|
|
107
|
+
* Reset the initialization guard (for testing purposes).
|
|
108
|
+
* @internal
|
|
109
|
+
*/
|
|
110
|
+
export declare function resetRegistryInitialization(): void;
|
|
111
|
+
//# sourceMappingURL=tool-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-registry.d.ts","sourceRoot":"","sources":["../../src/core/tool-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAMH;;;GAGG;AACH,MAAM,WAAW,YAAY;IAC3B,oDAAoD;IACpD,QAAQ,EAAE,MAAM,CAAC;IAIjB,yDAAyD;IACzD,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,4EAA4E;IAC5E,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAI5B,gEAAgE;IAChE,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IACjC,gDAAgD;IAChD,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;IAIjC,gDAAgD;IAChD,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC/B,8CAA8C;IAC9C,mBAAmB,CAAC,EAAE,MAAM,EAAE,CAAC;IAI/B,qEAAqE;IACrE,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAC;IAI7B,gFAAgF;IAChF,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;IAIzB,2CAA2C;IAC3C,IAAI,EAAE,OAAO,GAAG,QAAQ,GAAG,aAAa,CAAC;IACzC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IAIxB,2DAA2D;IAC3D,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,iEAAiE;IACjE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAQD;;;GAGG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,SAAS,CAAwC;IAEzD,qDAAqD;IACrD,MAAM,CAAC,QAAQ,IAAI,YAAY;IAO/B;;;OAGG;IACH,MAAM,CAAC,aAAa,IAAI,IAAI;IAI5B,yEAAyE;IACzE,QAAQ,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI;IAItC,gDAAgD;IAChD,WAAW,CAAC,SAAS,EAAE,YAAY,EAAE,GAAG,IAAI;IAM5C,+DAA+D;IAC/D,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS;IAIvD,yEAAyE;IACzE,iBAAiB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE;IAU3C,kDAAkD;IAClD,kBAAkB,CAAC,QAAQ,EAAE,MAAM,GAAG,YAAY,EAAE;IAUpD,wEAAwE;IACxE,sBAAsB,IAAI,GAAG,CAAC,MAAM,CAAC;IAUrC,uEAAuE;IACvE,mBAAmB,IAAI,YAAY,EAAE;IAUrC,+CAA+C;IAC/C,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B,oDAAoD;IACpD,MAAM,IAAI,YAAY,EAAE;CAGzB;AA+CD;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE,YAAY,GAAG,IAAI,CAc9D;AA0cD;;;GAGG;AACH,eAAO,MAAM,iBAAiB,EAAE,YAAY,EAU3C,CAAC;AAmBF;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,IAAI,YAAY,CAgCjD;AAED;;;GAGG;AACH,wBAAgB,2BAA2B,IAAI,IAAI,CAElD"}
|