sophos-central-mcp-server 0.2.12 → 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +83 -15
- package/dist/client/sophos-client.d.ts.map +1 -1
- package/dist/client/sophos-client.js +7 -1
- package/dist/client/sophos-client.js.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/tools/accounts.d.ts +11 -0
- package/dist/tools/accounts.d.ts.map +1 -0
- package/dist/tools/accounts.js +166 -0
- package/dist/tools/accounts.js.map +1 -0
- package/dist/tools/audit-events.d.ts +9 -0
- package/dist/tools/audit-events.d.ts.map +1 -0
- package/dist/tools/audit-events.js +98 -0
- package/dist/tools/audit-events.js.map +1 -0
- package/dist/tools/business-automation.d.ts +12 -0
- package/dist/tools/business-automation.d.ts.map +1 -0
- package/dist/tools/business-automation.js +274 -0
- package/dist/tools/business-automation.js.map +1 -0
- package/dist/tools/firewall.d.ts +6 -3
- package/dist/tools/firewall.d.ts.map +1 -1
- package/dist/tools/firewall.js +380 -156
- package/dist/tools/firewall.js.map +1 -1
- package/dist/tools/licensing.d.ts +9 -0
- package/dist/tools/licensing.d.ts.map +1 -0
- package/dist/tools/licensing.js +94 -0
- package/dist/tools/licensing.js.map +1 -0
- package/dist/tools/switch.d.ts +10 -0
- package/dist/tools/switch.d.ts.map +1 -0
- package/dist/tools/switch.js +119 -0
- package/dist/tools/switch.js.map +1 -0
- package/dist/tools/web-filtering.d.ts +15 -0
- package/dist/tools/web-filtering.d.ts.map +1 -0
- package/dist/tools/web-filtering.js +549 -0
- package/dist/tools/web-filtering.js.map +1 -0
- package/package.json +5 -1
- package/generate_health_report.py +0 -443
- package/generate_sales_report.py +0 -483
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Sophos Central MCP Server
|
|
2
2
|
|
|
3
|
-
MCP (Model Context Protocol) server for interacting with Sophos Central APIs. Supports partner, organisation, and single-tenant credential types with automatic region routing. **
|
|
3
|
+
MCP (Model Context Protocol) server for interacting with Sophos Central APIs. Supports partner, organisation, and single-tenant credential types with automatic region routing. **288 tools** covering 20 Sophos API namespaces.
|
|
4
4
|
|
|
5
5
|
## Quick Start
|
|
6
6
|
|
|
@@ -82,7 +82,7 @@ claude mcp add sophos-central ^
|
|
|
82
82
|
- **Token lifecycle**: Automatic OAuth2 token refresh before expiry
|
|
83
83
|
- **Rate limit handling**: Retry with backoff on 429 responses
|
|
84
84
|
- **Dual transport**: Streamable HTTP (for Claude Desktop / Claude Code) or stdio
|
|
85
|
-
- **Full API coverage**:
|
|
85
|
+
- **Full API coverage**: 288 tools across endpoints, alerts, policies, firewalls, web filtering, licensing, audit events, email, mobile, XDR, cases, SIEM, and more
|
|
86
86
|
|
|
87
87
|
## Screenshots
|
|
88
88
|
|
|
@@ -380,29 +380,34 @@ Async API — run OSquery SQL on live endpoints. Rate limited to 10 runs/minute,
|
|
|
380
380
|
| `sophos_get_live_discover_run` | Poll Live Discover run status |
|
|
381
381
|
| `sophos_get_live_discover_results` | Fetch Live Discover results |
|
|
382
382
|
|
|
383
|
-
### Firewall (
|
|
383
|
+
### Firewall (21 tools)
|
|
384
384
|
|
|
385
385
|
| Tool | Description |
|
|
386
386
|
|------|-------------|
|
|
387
387
|
| `sophos_list_firewalls` | List managed firewalls |
|
|
388
|
-
| `sophos_get_firewall` | Get firewall detail |
|
|
389
388
|
| `sophos_update_firewall` | Update firewall properties |
|
|
390
389
|
| `sophos_delete_firewall` | Delete a firewall |
|
|
391
|
-
| `sophos_firewall_action` | Perform action (
|
|
392
|
-
| `sophos_check_firmware_upgrade` | Check
|
|
393
|
-
| `sophos_start_firmware_upgrade` | Start
|
|
394
|
-
| `sophos_cancel_firmware_upgrade` | Cancel
|
|
390
|
+
| `sophos_firewall_action` | Perform an action (approveManagement, the only documented action) |
|
|
391
|
+
| `sophos_check_firmware_upgrade` | Check firmware upgrades for a set of firewalls |
|
|
392
|
+
| `sophos_start_firmware_upgrade` | Start or schedule firmware upgrades |
|
|
393
|
+
| `sophos_cancel_firmware_upgrade` | Cancel scheduled firmware upgrades |
|
|
395
394
|
| `sophos_list_firewall_groups` | List firewall groups |
|
|
396
395
|
| `sophos_get_firewall_group` | Get firewall group detail |
|
|
397
396
|
| `sophos_create_firewall_group` | Create a firewall group |
|
|
398
397
|
| `sophos_update_firewall_group` | Update a firewall group |
|
|
399
398
|
| `sophos_delete_firewall_group` | Delete a firewall group |
|
|
400
|
-
| `sophos_get_firewall_sync_status` | Get
|
|
401
|
-
| `sophos_get_threat_feed_settings` | Get MDR threat feed
|
|
402
|
-
| `sophos_update_threat_feed_settings` | Update threat feed settings |
|
|
403
|
-
| `
|
|
404
|
-
| `
|
|
405
|
-
| `
|
|
399
|
+
| `sophos_get_firewall_sync_status` | Get sync status of the firewalls in a group |
|
|
400
|
+
| `sophos_get_threat_feed_settings` | Get a firewall's MDR threat feed |
|
|
401
|
+
| `sophos_update_threat_feed_settings` | Update a firewall's MDR threat feed settings |
|
|
402
|
+
| `sophos_search_threat_feed_indicators` | Search a firewall's MDR threat feed indicators |
|
|
403
|
+
| `sophos_get_firewall_transaction` | Poll a per-firewall transaction (threat feed ops) |
|
|
404
|
+
| `sophos_export_firewall_config` | Start a config export (backup) of a firewall |
|
|
405
|
+
| `sophos_get_firewall_import_export_transaction` | Poll an export/import transaction |
|
|
406
|
+
| `sophos_download_firewall_backup` | Download a finished backup archive to a local file |
|
|
407
|
+
| `sophos_import_firewall_config` | Upload and import a config archive into firewalls |
|
|
408
|
+
|
|
409
|
+
Config import/export requires the firewall to run SFOS v22 MR2 or later, be
|
|
410
|
+
managed by Sophos Central, and hold an active license.
|
|
406
411
|
|
|
407
412
|
### Email Protection (29 tools)
|
|
408
413
|
|
|
@@ -510,6 +515,69 @@ Async API — run OSquery SQL on live endpoints. Rate limited to 10 runs/minute,
|
|
|
510
515
|
| `sophos_create_attestation` | Create a user attestation/sign-off |
|
|
511
516
|
| `sophos_get_attestation` | Get attestation detail |
|
|
512
517
|
|
|
518
|
+
### Audit Events (1 tool)
|
|
519
|
+
|
|
520
|
+
| Tool | Description |
|
|
521
|
+
|------|-------------|
|
|
522
|
+
| `sophos_list_audit_events` | List Sophos Central audit events (who did what, 90-day window) |
|
|
523
|
+
|
|
524
|
+
### Licensing (2 tools)
|
|
525
|
+
|
|
526
|
+
| Tool | Description |
|
|
527
|
+
|------|-------------|
|
|
528
|
+
| `sophos_list_licenses` | List a tenant's product licenses, usage, and entitlements |
|
|
529
|
+
| `sophos_list_firewall_licenses` | List firewall license details (tenant or partner-wide) |
|
|
530
|
+
|
|
531
|
+
### Web Filtering (16 tools)
|
|
532
|
+
|
|
533
|
+
| Tool | Description |
|
|
534
|
+
|------|-------------|
|
|
535
|
+
| `sophos_list_web_filtering_profiles` | List web filtering profiles |
|
|
536
|
+
| `sophos_get_web_filtering_profile` | Get a web filtering profile |
|
|
537
|
+
| `sophos_create_web_filtering_profile` | Create a web filtering profile |
|
|
538
|
+
| `sophos_update_web_filtering_profile` | Update (replace) a web filtering profile |
|
|
539
|
+
| `sophos_delete_web_filtering_profile` | Delete a web filtering profile |
|
|
540
|
+
| `sophos_clone_web_filtering_profile` | Clone a web filtering profile |
|
|
541
|
+
| `sophos_get_web_filtering_metadata` | Get categories, groups, and presets |
|
|
542
|
+
| `sophos_list_site_lists` | List site lists |
|
|
543
|
+
| `sophos_get_site_list` | Get a site list |
|
|
544
|
+
| `sophos_create_site_list` | Create a site list |
|
|
545
|
+
| `sophos_update_site_list` | Update (replace) a site list |
|
|
546
|
+
| `sophos_delete_site_list` | Delete a site list |
|
|
547
|
+
| `sophos_clone_site_list` | Clone a site list |
|
|
548
|
+
| `sophos_list_sites` | List the sites in a site list |
|
|
549
|
+
| `sophos_add_site` | Add a site to a site list |
|
|
550
|
+
| `sophos_delete_site` | Delete a site from a site list |
|
|
551
|
+
|
|
552
|
+
### Switch Management (3 tools)
|
|
553
|
+
|
|
554
|
+
| Tool | Description |
|
|
555
|
+
|------|-------------|
|
|
556
|
+
| `sophos_get_switch_mac_filtering` | Get global switch MAC filtering settings |
|
|
557
|
+
| `sophos_update_switch_mac_filtering` | Replace the switch MAC filtering address list |
|
|
558
|
+
| `sophos_list_switch_tasks` | List switch configuration tasks |
|
|
559
|
+
|
|
560
|
+
### Accounts / Access Tokens (4 tools)
|
|
561
|
+
|
|
562
|
+
| Tool | Description |
|
|
563
|
+
|------|-------------|
|
|
564
|
+
| `sophos_list_access_tokens` | List repository access tokens |
|
|
565
|
+
| `sophos_create_access_token` | Create a repository access token (Sophos Linux Sensor) |
|
|
566
|
+
| `sophos_update_access_token` | Update a token's label or expiry |
|
|
567
|
+
| `sophos_revoke_access_token` | Revoke a token |
|
|
568
|
+
|
|
569
|
+
### Business Automation (4 tools)
|
|
570
|
+
|
|
571
|
+
Distributor-scoped: requires distributor-entitled credentials and an
|
|
572
|
+
X-Distributor-ID.
|
|
573
|
+
|
|
574
|
+
| Tool | Description |
|
|
575
|
+
|------|-------------|
|
|
576
|
+
| `sophos_list_ba_quotes` | List distributor quotes (new, amendment, renewal) |
|
|
577
|
+
| `sophos_get_ba_quote` | Get a quote by proposal number |
|
|
578
|
+
| `sophos_get_ba_partner_levels` | Partner program levels for a billing sub-region |
|
|
579
|
+
| `sophos_get_ba_pricing` | Price a set of product lines for a reseller |
|
|
580
|
+
|
|
513
581
|
### Tenant context
|
|
514
582
|
|
|
515
583
|
For **partner/org** callers, every tenant-scoped tool requires a `tenant_id` parameter. Use `sophos_list_tenants` first to discover available tenant IDs.
|
|
@@ -570,7 +638,7 @@ src/
|
|
|
570
638
|
│ ├── siem.ts # SIEM events and alerts
|
|
571
639
|
│ ├── xdr.ts # XDR Data Lake queries (async)
|
|
572
640
|
│ ├── live-discover.ts # Live Discover queries (async)
|
|
573
|
-
│ ├── firewall.ts # Firewall CRUD, firmware, groups, threat feed
|
|
641
|
+
│ ├── firewall.ts # Firewall CRUD, firmware, groups, threat feed, config import/export
|
|
574
642
|
│ ├── email.ts # Quarantine, mailboxes, message actions
|
|
575
643
|
│ ├── mobile.ts # Mobile devices, groups, actions, policies
|
|
576
644
|
│ ├── dns-protection.ts # DNS locations
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sophos-client.d.ts","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;gBADd,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc;IAGxC;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"sophos-client.d.ts","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAG3D,MAAM,WAAW,cAAc;IAC7B,kBAAkB;IAClB,MAAM,CAAC,EAAE,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,GAAG,QAAQ,CAAC;IACrD,uBAAuB;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,wBAAwB;IACxB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,yBAAyB;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,qBAAa,YAAY;IAErB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,cAAc;gBADd,YAAY,EAAE,YAAY,EAC1B,cAAc,EAAE,cAAc;IAGxC;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;IAgCb;;OAEG;IACG,aAAa,CAAC,CAAC,EACnB,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,OAAO,CAAC,CAAC,CAAC;YA2CC,gBAAgB;IAwE9B,OAAO,CAAC,KAAK;CAGd"}
|
|
@@ -54,9 +54,15 @@ export class SophosClient {
|
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
+
// Some global-host APIs (licensing, accounts, audit, business automation) are
|
|
58
|
+
// scoped by an explicit X-Tenant-ID / X-Distributor-ID header. Sending the
|
|
59
|
+
// caller's identity header alongside those can be rejected, so skip it when
|
|
60
|
+
// the caller provides its own scope header.
|
|
61
|
+
const hasOwnScopeHeader = options.headers &&
|
|
62
|
+
Object.keys(options.headers).some((h) => ["x-tenant-id", "x-distributor-id"].includes(h.toLowerCase()));
|
|
57
63
|
const headers = {
|
|
58
64
|
Authorization: `Bearer ${token}`,
|
|
59
|
-
[idHeader.name]: idHeader.value,
|
|
65
|
+
...(hasOwnScopeHeader ? {} : { [idHeader.name]: idHeader.value }),
|
|
60
66
|
...(options.body !== undefined ? { "Content-Type": "application/json" } : {}),
|
|
61
67
|
...options.headers,
|
|
62
68
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sophos-client.js","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAiBH,MAAM,OAAO,YAAY;IAEb;IACA;IAFV,YACU,YAA0B,EAC1B,cAA8B;QAD9B,iBAAY,GAAZ,YAAY,CAAc;QAC1B,mBAAc,GAAd,cAAc,CAAgB;IACrC,CAAC;IAEJ;;;OAGG;IACH,KAAK,CAAC,aAAa,CACjB,QAAgB,EAChB,IAAY,EACZ,UAA0B,EAAE;QAE5B,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QAEjD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,OAAO,GAAG,IAAI,EAAE,CAAC,CAAC;QACzC,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,aAAa,EAAE,QAAQ;YACvB,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7E,GAAG,OAAO,CAAC,OAAO;SACnB,CAAC;QAEF,MAAM,YAAY,GAA2B;YAC3C,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,KAAK;YAC/B,OAAO;SACR,CAAC;QAEF,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,YAAY,CAAC,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC;QAED,OAAO,IAAI,CAAC,gBAAgB,CAAI,GAAG,CAAC,QAAQ,EAAE,EAAE,YAAY,CAAC,CAAC;IAChE,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,aAAa,CACjB,IAAY,EACZ,UAA0B,EAAE;QAE5B,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC;QACjD,MAAM,QAAQ,GAAG,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAEnD,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC;QAC1D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC1D,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;oBACxC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAA2B;YACtC,aAAa,EAAE,UAAU,KAAK,EAAE;YAChC,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,KAAK;
|
|
1
|
+
{"version":3,"file":"sophos-client.js","sourceRoot":"","sources":["../../src/client/sophos-client.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -39,6 +39,12 @@ import { registerWifiTools } from "./tools/wifi.js";
|
|
|
39
39
|
import { registerUserActivityTools } from "./tools/user-activity.js";
|
|
40
40
|
import { registerPartnerTools } from "./tools/partner.js";
|
|
41
41
|
import { registerMobileTools } from "./tools/mobile.js";
|
|
42
|
+
import { registerAuditEventTools } from "./tools/audit-events.js";
|
|
43
|
+
import { registerLicensingTools } from "./tools/licensing.js";
|
|
44
|
+
import { registerWebFilteringTools } from "./tools/web-filtering.js";
|
|
45
|
+
import { registerSwitchTools } from "./tools/switch.js";
|
|
46
|
+
import { registerAccountsTools } from "./tools/accounts.js";
|
|
47
|
+
import { registerBusinessAutomationTools } from "./tools/business-automation.js";
|
|
42
48
|
async function main() {
|
|
43
49
|
// Load and validate config
|
|
44
50
|
const config = loadConfig();
|
|
@@ -98,6 +104,14 @@ async function main() {
|
|
|
98
104
|
registerUserActivityTools(server, sophosClient, tenantResolver);
|
|
99
105
|
// Phase 10: Mobile device management tools
|
|
100
106
|
registerMobileTools(server, sophosClient, tenantResolver);
|
|
107
|
+
// Phase 11: Audit events, licensing, web filtering, switch, accounts,
|
|
108
|
+
// business automation
|
|
109
|
+
registerAuditEventTools(server, sophosClient, tenantResolver);
|
|
110
|
+
registerLicensingTools(server, sophosClient, tenantResolver);
|
|
111
|
+
registerWebFilteringTools(server, sophosClient, tenantResolver);
|
|
112
|
+
registerSwitchTools(server, sophosClient, tenantResolver);
|
|
113
|
+
registerAccountsTools(server, sophosClient, tenantResolver);
|
|
114
|
+
registerBusinessAutomationTools(server, sophosClient, tenantResolver);
|
|
101
115
|
console.error("[sophos-mcp] All tools registered.");
|
|
102
116
|
// Start transport
|
|
103
117
|
if (config.transport === "http") {
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;GAKG;AAEH,OAAO,eAAe,CAAC;AACvB,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACpE,OAAO,EAAE,6BAA6B,EAAE,MAAM,oDAAoD,CAAC;AACnG,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AAEzD,4BAA4B;AAC5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC9D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,4BAA4B,EAAE,MAAM,6BAA6B,CAAC;AAC3E,OAAO,EAAE,8BAA8B,EAAE,MAAM,gCAAgC,CAAC;AAChF,OAAO,EAAE,6BAA6B,EAAE,MAAM,8BAA8B,CAAC;AAC7E,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,0BAA0B,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools: sophos_list_access_tokens, sophos_create_access_token,
|
|
3
|
+
* sophos_update_access_token, sophos_revoke_access_token
|
|
4
|
+
* Interact with the Sophos Accounts API /accounts/v1/ (global host).
|
|
5
|
+
* Manages repository access tokens (e.g. for the Sophos Linux Sensor).
|
|
6
|
+
*/
|
|
7
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
8
|
+
import type { SophosClient } from "../client/sophos-client.js";
|
|
9
|
+
import type { TenantResolver } from "../client/tenant-resolver.js";
|
|
10
|
+
export declare function registerAccountsTools(server: McpServer, client: SophosClient, tenantResolver: TenantResolver): void;
|
|
11
|
+
//# sourceMappingURL=accounts.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.d.ts","sourceRoot":"","sources":["../../src/tools/accounts.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,cAAc,GAC7B,IAAI,CAuLN"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools: sophos_list_access_tokens, sophos_create_access_token,
|
|
3
|
+
* sophos_update_access_token, sophos_revoke_access_token
|
|
4
|
+
* Interact with the Sophos Accounts API /accounts/v1/ (global host).
|
|
5
|
+
* Manages repository access tokens (e.g. for the Sophos Linux Sensor).
|
|
6
|
+
*/
|
|
7
|
+
import { z } from "zod";
|
|
8
|
+
import { jsonResult, withErrorHandling } from "./helpers.js";
|
|
9
|
+
import { DEFAULT_PAGE_SIZE } from "../config/config.js";
|
|
10
|
+
export function registerAccountsTools(server, client, tenantResolver) {
|
|
11
|
+
// --- List Access Tokens ---
|
|
12
|
+
server.registerTool("sophos_list_access_tokens", {
|
|
13
|
+
title: "List Sophos Access Tokens",
|
|
14
|
+
description: `List a tenant's repository access tokens (e.g. Sophos Linux Sensor package tokens).
|
|
15
|
+
|
|
16
|
+
Args:
|
|
17
|
+
- limit (number, optional): Max results per page (1-100, default 50).
|
|
18
|
+
- page (number, optional): Page number (default 1).
|
|
19
|
+
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
20
|
+
inputSchema: {
|
|
21
|
+
limit: z
|
|
22
|
+
.number()
|
|
23
|
+
.int()
|
|
24
|
+
.min(1)
|
|
25
|
+
.max(100)
|
|
26
|
+
.optional()
|
|
27
|
+
.default(DEFAULT_PAGE_SIZE)
|
|
28
|
+
.describe("Max results per page (default 50)"),
|
|
29
|
+
page: z
|
|
30
|
+
.number()
|
|
31
|
+
.int()
|
|
32
|
+
.min(1)
|
|
33
|
+
.optional()
|
|
34
|
+
.default(1)
|
|
35
|
+
.describe("Page number (default 1)"),
|
|
36
|
+
tenant_id: z
|
|
37
|
+
.string()
|
|
38
|
+
.uuid()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Tenant ID. Required for partner/org callers."),
|
|
41
|
+
},
|
|
42
|
+
annotations: {
|
|
43
|
+
readOnlyHint: true,
|
|
44
|
+
destructiveHint: false,
|
|
45
|
+
idempotentHint: true,
|
|
46
|
+
openWorldHint: true,
|
|
47
|
+
},
|
|
48
|
+
}, withErrorHandling(async ({ limit, page, tenant_id }) => {
|
|
49
|
+
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
50
|
+
const data = await client.globalRequest("/accounts/v1/access-tokens", {
|
|
51
|
+
params: { pageSize: String(limit), page: String(page), pageTotal: "true" },
|
|
52
|
+
headers: { "X-Tenant-ID": resolvedTenantId },
|
|
53
|
+
});
|
|
54
|
+
return jsonResult(data);
|
|
55
|
+
}));
|
|
56
|
+
// --- Create Access Token ---
|
|
57
|
+
server.registerTool("sophos_create_access_token", {
|
|
58
|
+
title: "Create Sophos Access Token",
|
|
59
|
+
description: `Create a repository access token for a tenant.
|
|
60
|
+
|
|
61
|
+
Args:
|
|
62
|
+
- label (string): Human-readable token label.
|
|
63
|
+
- type (string): Token type. Only "sophosLinuxSensor" is supported.
|
|
64
|
+
- expires_at (string, optional): Expiry (ISO 8601 datetime).
|
|
65
|
+
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
66
|
+
inputSchema: {
|
|
67
|
+
label: z.string().describe("Human-readable token label"),
|
|
68
|
+
type: z
|
|
69
|
+
.enum(["sophosLinuxSensor"])
|
|
70
|
+
.describe("Token type (only sophosLinuxSensor is supported)"),
|
|
71
|
+
expires_at: z.string().optional().describe("Expiry (ISO 8601 datetime)"),
|
|
72
|
+
tenant_id: z
|
|
73
|
+
.string()
|
|
74
|
+
.uuid()
|
|
75
|
+
.optional()
|
|
76
|
+
.describe("Tenant ID. Required for partner/org callers."),
|
|
77
|
+
},
|
|
78
|
+
annotations: {
|
|
79
|
+
readOnlyHint: false,
|
|
80
|
+
destructiveHint: false,
|
|
81
|
+
idempotentHint: false,
|
|
82
|
+
openWorldHint: true,
|
|
83
|
+
},
|
|
84
|
+
}, withErrorHandling(async ({ label, type, expires_at, tenant_id }) => {
|
|
85
|
+
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
86
|
+
const body = { label, type };
|
|
87
|
+
if (expires_at)
|
|
88
|
+
body.expiresAt = expires_at;
|
|
89
|
+
const data = await client.globalRequest("/accounts/v1/access-tokens", { method: "POST", body, headers: { "X-Tenant-ID": resolvedTenantId } });
|
|
90
|
+
return jsonResult({ status: "created", token: data });
|
|
91
|
+
}));
|
|
92
|
+
// --- Update Access Token ---
|
|
93
|
+
server.registerTool("sophos_update_access_token", {
|
|
94
|
+
title: "Update Sophos Access Token",
|
|
95
|
+
description: `Update a repository access token's label or expiry.
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
- token_id (string): The token ID.
|
|
99
|
+
- label (string, optional): New label.
|
|
100
|
+
- expires_at (string, optional): New expiry (ISO 8601 datetime).
|
|
101
|
+
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
102
|
+
inputSchema: {
|
|
103
|
+
token_id: z.string().describe("Token ID"),
|
|
104
|
+
label: z.string().optional().describe("New label"),
|
|
105
|
+
expires_at: z.string().optional().describe("New expiry (ISO 8601 datetime)"),
|
|
106
|
+
tenant_id: z
|
|
107
|
+
.string()
|
|
108
|
+
.uuid()
|
|
109
|
+
.optional()
|
|
110
|
+
.describe("Tenant ID. Required for partner/org callers."),
|
|
111
|
+
},
|
|
112
|
+
annotations: {
|
|
113
|
+
readOnlyHint: false,
|
|
114
|
+
destructiveHint: false,
|
|
115
|
+
idempotentHint: true,
|
|
116
|
+
openWorldHint: true,
|
|
117
|
+
},
|
|
118
|
+
}, withErrorHandling(async ({ token_id, label, expires_at, tenant_id }) => {
|
|
119
|
+
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
120
|
+
const body = {};
|
|
121
|
+
if (label !== undefined)
|
|
122
|
+
body.label = label;
|
|
123
|
+
if (expires_at !== undefined)
|
|
124
|
+
body.expiresAt = expires_at;
|
|
125
|
+
if (Object.keys(body).length === 0) {
|
|
126
|
+
return jsonResult({
|
|
127
|
+
error: "No fields to update. Provide at least one of: label, expires_at.",
|
|
128
|
+
});
|
|
129
|
+
}
|
|
130
|
+
const data = await client.globalRequest(`/accounts/v1/access-tokens/${token_id}`, { method: "PATCH", body, headers: { "X-Tenant-ID": resolvedTenantId } });
|
|
131
|
+
return jsonResult({ status: "updated", token: data });
|
|
132
|
+
}));
|
|
133
|
+
// --- Revoke Access Token ---
|
|
134
|
+
server.registerTool("sophos_revoke_access_token", {
|
|
135
|
+
title: "Revoke Sophos Access Token",
|
|
136
|
+
description: `Revoke a repository access token.
|
|
137
|
+
|
|
138
|
+
WARNING: Systems using this token lose repository access.
|
|
139
|
+
|
|
140
|
+
Args:
|
|
141
|
+
- token_id (string): The token ID to revoke.
|
|
142
|
+
- tenant_id (string, optional): Tenant ID. Required for partner/org callers.`,
|
|
143
|
+
inputSchema: {
|
|
144
|
+
token_id: z.string().describe("Token ID to revoke"),
|
|
145
|
+
tenant_id: z
|
|
146
|
+
.string()
|
|
147
|
+
.uuid()
|
|
148
|
+
.optional()
|
|
149
|
+
.describe("Tenant ID. Required for partner/org callers."),
|
|
150
|
+
},
|
|
151
|
+
annotations: {
|
|
152
|
+
readOnlyHint: false,
|
|
153
|
+
destructiveHint: true,
|
|
154
|
+
idempotentHint: true,
|
|
155
|
+
openWorldHint: true,
|
|
156
|
+
},
|
|
157
|
+
}, withErrorHandling(async ({ token_id, tenant_id }) => {
|
|
158
|
+
const resolvedTenantId = tenantResolver.resolveTenantId(tenant_id);
|
|
159
|
+
await client.globalRequest(`/accounts/v1/access-tokens/${token_id}`, {
|
|
160
|
+
method: "DELETE",
|
|
161
|
+
headers: { "X-Tenant-ID": resolvedTenantId },
|
|
162
|
+
});
|
|
163
|
+
return jsonResult({ status: "revoked", token_id });
|
|
164
|
+
}));
|
|
165
|
+
}
|
|
166
|
+
//# sourceMappingURL=accounts.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accounts.js","sourceRoot":"","sources":["../../src/tools/accounts.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools: sophos_list_audit_events
|
|
3
|
+
* Interact with the Sophos Audit Events API /audit/v1/ (global host).
|
|
4
|
+
*/
|
|
5
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
6
|
+
import type { SophosClient } from "../client/sophos-client.js";
|
|
7
|
+
import type { TenantResolver } from "../client/tenant-resolver.js";
|
|
8
|
+
export declare function registerAuditEventTools(server: McpServer, client: SophosClient, tenantResolver: TenantResolver): void;
|
|
9
|
+
//# sourceMappingURL=audit-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-events.d.ts","sourceRoot":"","sources":["../../src/tools/audit-events.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,cAAc,EAAE,cAAc,GAC7B,IAAI,CAuGN"}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools: sophos_list_audit_events
|
|
3
|
+
* Interact with the Sophos Audit Events API /audit/v1/ (global host).
|
|
4
|
+
*/
|
|
5
|
+
import { z } from "zod";
|
|
6
|
+
import { jsonResult, withErrorHandling } from "./helpers.js";
|
|
7
|
+
import { DEFAULT_PAGE_SIZE } from "../config/config.js";
|
|
8
|
+
export function registerAuditEventTools(server, client, tenantResolver) {
|
|
9
|
+
// --- List Audit Events ---
|
|
10
|
+
server.registerTool("sophos_list_audit_events", {
|
|
11
|
+
title: "List Sophos Central Audit Events",
|
|
12
|
+
description: `List audit events (who did what in Sophos Central).
|
|
13
|
+
|
|
14
|
+
Covers administrative activity across Sophos Central: sign-ins, policy and
|
|
15
|
+
settings changes, and API activity. Events are retained for 90 days; the
|
|
16
|
+
start date must be within that window. Cursor-paginated via page_from_key.
|
|
17
|
+
|
|
18
|
+
Scoping: pass tenant_id to query one tenant's audit trail. Omit it to query
|
|
19
|
+
at the caller's own level (partner, organization, or tenant depending on the
|
|
20
|
+
credentials).
|
|
21
|
+
|
|
22
|
+
Args:
|
|
23
|
+
- start_date (string): Start date (ISO 8601), no earlier than 90 days ago.
|
|
24
|
+
- end_date (string, optional): Up to this end date (ISO 8601).
|
|
25
|
+
- origin_ip_address (string, optional): Filter by origin IP address.
|
|
26
|
+
- modified_by (string, optional): Filter by modifier's email.
|
|
27
|
+
- modifier_account_id (string, optional): Filter by modifier account ID.
|
|
28
|
+
- resource_owner_id (string, optional): Filter by resource owner ID.
|
|
29
|
+
- page_from_key (string, optional): Cursor key from a previous response.
|
|
30
|
+
- limit (number, optional): Max results per page (1-100, default 50).
|
|
31
|
+
- tenant_id (string, optional): Tenant ID to scope the query to one tenant.`,
|
|
32
|
+
inputSchema: {
|
|
33
|
+
start_date: z
|
|
34
|
+
.string()
|
|
35
|
+
.describe("Start date (ISO 8601), no earlier than 90 days ago"),
|
|
36
|
+
end_date: z.string().optional().describe("Up to this end date (ISO 8601)"),
|
|
37
|
+
origin_ip_address: z
|
|
38
|
+
.string()
|
|
39
|
+
.optional()
|
|
40
|
+
.describe("Filter by origin IP address"),
|
|
41
|
+
modified_by: z.string().optional().describe("Filter by modifier's email"),
|
|
42
|
+
modifier_account_id: z
|
|
43
|
+
.string()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Filter by modifier account ID"),
|
|
46
|
+
resource_owner_id: z
|
|
47
|
+
.string()
|
|
48
|
+
.optional()
|
|
49
|
+
.describe("Filter by resource owner ID"),
|
|
50
|
+
page_from_key: z
|
|
51
|
+
.string()
|
|
52
|
+
.optional()
|
|
53
|
+
.describe("Cursor key from a previous response"),
|
|
54
|
+
limit: z
|
|
55
|
+
.number()
|
|
56
|
+
.int()
|
|
57
|
+
.min(1)
|
|
58
|
+
.max(100)
|
|
59
|
+
.optional()
|
|
60
|
+
.default(DEFAULT_PAGE_SIZE)
|
|
61
|
+
.describe("Max results per page (default 50)"),
|
|
62
|
+
tenant_id: z
|
|
63
|
+
.string()
|
|
64
|
+
.uuid()
|
|
65
|
+
.optional()
|
|
66
|
+
.describe("Tenant ID to scope the query to one tenant"),
|
|
67
|
+
},
|
|
68
|
+
annotations: {
|
|
69
|
+
readOnlyHint: true,
|
|
70
|
+
destructiveHint: false,
|
|
71
|
+
idempotentHint: true,
|
|
72
|
+
openWorldHint: true,
|
|
73
|
+
},
|
|
74
|
+
}, withErrorHandling(async ({ start_date, end_date, origin_ip_address, modified_by, modifier_account_id, resource_owner_id, page_from_key, limit, tenant_id, }) => {
|
|
75
|
+
const params = {
|
|
76
|
+
startDate: start_date,
|
|
77
|
+
pageSize: String(limit),
|
|
78
|
+
};
|
|
79
|
+
if (end_date)
|
|
80
|
+
params.endDate = end_date;
|
|
81
|
+
if (origin_ip_address)
|
|
82
|
+
params.originIpAddress = origin_ip_address;
|
|
83
|
+
if (modified_by)
|
|
84
|
+
params.modifiedBy = modified_by;
|
|
85
|
+
if (modifier_account_id)
|
|
86
|
+
params.modifierAccountId = modifier_account_id;
|
|
87
|
+
if (resource_owner_id)
|
|
88
|
+
params.resourceOwnerId = resource_owner_id;
|
|
89
|
+
if (page_from_key)
|
|
90
|
+
params.pageFromKey = page_from_key;
|
|
91
|
+
const data = await client.globalRequest("/audit/v1/audit-events", {
|
|
92
|
+
params,
|
|
93
|
+
...(tenant_id ? { headers: { "X-Tenant-ID": tenant_id } } : {}),
|
|
94
|
+
});
|
|
95
|
+
return jsonResult(data);
|
|
96
|
+
}));
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=audit-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-events.js","sourceRoot":"","sources":["../../src/tools/audit-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tools: sophos_list_ba_quotes, sophos_get_ba_quote,
|
|
3
|
+
* sophos_get_ba_partner_levels, sophos_get_ba_pricing
|
|
4
|
+
* Interact with the Sophos Business Automation API /business-automation/v1/
|
|
5
|
+
* (global host). Distributor-scoped: every call needs a distributor ID and
|
|
6
|
+
* distributor-entitled API credentials.
|
|
7
|
+
*/
|
|
8
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
9
|
+
import type { SophosClient } from "../client/sophos-client.js";
|
|
10
|
+
import type { TenantResolver } from "../client/tenant-resolver.js";
|
|
11
|
+
export declare function registerBusinessAutomationTools(server: McpServer, client: SophosClient, _tenantResolver: TenantResolver): void;
|
|
12
|
+
//# sourceMappingURL=business-automation.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"business-automation.d.ts","sourceRoot":"","sources":["../../src/tools/business-automation.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAInE,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,YAAY,EACpB,eAAe,EAAE,cAAc,GAC9B,IAAI,CAwTN"}
|