@vm0/cli 9.238.5 → 9.238.6

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 (91) hide show
  1. package/{agent-KS3ULPSZ.js → agent-RI5TB3MT.js} +5 -5
  2. package/{banking-2B3GDOIE.js → banking-ZZTY42QD.js} +3 -3
  3. package/{chat-HP7XYF7H.js → chat-VBEB2LIU.js} +4 -4
  4. package/{chunk-VUER2HGS.js → chunk-2YG67KBB.js} +2 -2
  5. package/{chunk-TEJZT6KB.js → chunk-3PWT6JIH.js} +4 -4
  6. package/{chunk-T3XOMNS6.js → chunk-CEKLUICQ.js} +3 -3
  7. package/{chunk-H4Y7JDZB.js → chunk-DUOJIVWA.js} +3 -3
  8. package/{chunk-VC7E6IA7.js → chunk-GE2LI4MS.js} +3 -3
  9. package/chunk-GE2LI4MS.js.map +1 -0
  10. package/{chunk-EJBHYDGP.js → chunk-MM5ESLJI.js} +4 -4
  11. package/{chunk-GIACTMOF.js → chunk-MSZRROJT.js} +220 -142
  12. package/chunk-MSZRROJT.js.map +1 -0
  13. package/{chunk-YQ5ZYQN3.js → chunk-VWG7JMMA.js} +2 -2
  14. package/{chunk-OCOHCUE3.js → chunk-W7KBXNOK.js} +135 -200
  15. package/chunk-W7KBXNOK.js.map +1 -0
  16. package/{chunk-UHVWYX44.js → chunk-ZOTQGSKT.js} +2 -2
  17. package/{computer-use-6GZVM5S6.js → computer-use-2GWQELMK.js} +3 -3
  18. package/{connector-SFMD6HBQ.js → connector-HVF5LTLS.js} +4 -4
  19. package/{credit-B465R4TF.js → credit-DR3ZW2FG.js} +4 -4
  20. package/{developer-support-6GM2UW5P.js → developer-support-LUUIXIXG.js} +3 -3
  21. package/{doctor-Z3HFRIKJ.js → doctor-XNJOG3LG.js} +70 -248
  22. package/doctor-XNJOG3LG.js.map +1 -0
  23. package/{generate-37CJMAVG.js → generate-EEWDZMO7.js} +4 -4
  24. package/{github-6CSR7332.js → github-WSCP6BCL.js} +3 -3
  25. package/{goal-XURMW5OS.js → goal-TBQ73X4G.js} +3 -3
  26. package/{host-EVFNV5BX.js → host-FF62XPMH.js} +3 -3
  27. package/index.js +13 -13
  28. package/{logs-DR7ZTWBK.js → logs-PKOHZJ5X.js} +6 -6
  29. package/{maps-IAVJJMRT.js → maps-LC4V32L6.js} +3 -3
  30. package/{memory-X765S3ZI.js → memory-IQO5L4DF.js} +3 -3
  31. package/{model-ZYVNUG47.js → model-NJ3PEGDV.js} +4 -4
  32. package/{model-provider-SZIIRXS3.js → model-provider-MPBVWSUT.js} +4 -4
  33. package/{org-GBDLJZSE.js → org-FFCTROTZ.js} +3 -3
  34. package/package.json +1 -1
  35. package/{phone-KA4NZFQC.js → phone-35G4MSU4.js} +3 -3
  36. package/{preference-TEMJHA73.js → preference-7LX3CJUT.js} +3 -3
  37. package/{relationship-OXV2SPNL.js → relationship-PKU2B5BP.js} +3 -3
  38. package/{resource-2WREU3GR.js → resource-ENHLW46D.js} +3 -3
  39. package/{search-V5V5IHY7.js → search-ZKKMK4PS.js} +6 -6
  40. package/{secret-LIAHG47P.js → secret-7K6ED3SD.js} +3 -3
  41. package/{slack-BUOXO2HU.js → slack-VTGS2LE7.js} +3 -3
  42. package/{teams-G7TYHRJB.js → teams-SOYUSM2G.js} +3 -3
  43. package/{telegram-DEHNZSEN.js → telegram-F2GYSKWJ.js} +3 -3
  44. package/{variable-RMYF6NVZ.js → variable-6NWZSJVI.js} +3 -3
  45. package/{video-XEYMVSIU.js → video-VHL2UFS7.js} +2 -2
  46. package/{web-4REDKON3.js → web-6A35VLL5.js} +3 -3
  47. package/{whoami-66W7DPQX.js → whoami-6SU2NDI3.js} +5 -5
  48. package/{workflow-PBJVC6HV.js → workflow-W23JY7HR.js} +3 -3
  49. package/zero.js +34 -34
  50. package/chunk-GIACTMOF.js.map +0 -1
  51. package/chunk-OCOHCUE3.js.map +0 -1
  52. package/chunk-VC7E6IA7.js.map +0 -1
  53. package/doctor-Z3HFRIKJ.js.map +0 -1
  54. /package/{agent-KS3ULPSZ.js.map → agent-RI5TB3MT.js.map} +0 -0
  55. /package/{banking-2B3GDOIE.js.map → banking-ZZTY42QD.js.map} +0 -0
  56. /package/{chat-HP7XYF7H.js.map → chat-VBEB2LIU.js.map} +0 -0
  57. /package/{chunk-VUER2HGS.js.map → chunk-2YG67KBB.js.map} +0 -0
  58. /package/{chunk-TEJZT6KB.js.map → chunk-3PWT6JIH.js.map} +0 -0
  59. /package/{chunk-T3XOMNS6.js.map → chunk-CEKLUICQ.js.map} +0 -0
  60. /package/{chunk-H4Y7JDZB.js.map → chunk-DUOJIVWA.js.map} +0 -0
  61. /package/{chunk-EJBHYDGP.js.map → chunk-MM5ESLJI.js.map} +0 -0
  62. /package/{chunk-YQ5ZYQN3.js.map → chunk-VWG7JMMA.js.map} +0 -0
  63. /package/{chunk-UHVWYX44.js.map → chunk-ZOTQGSKT.js.map} +0 -0
  64. /package/{computer-use-6GZVM5S6.js.map → computer-use-2GWQELMK.js.map} +0 -0
  65. /package/{connector-SFMD6HBQ.js.map → connector-HVF5LTLS.js.map} +0 -0
  66. /package/{credit-B465R4TF.js.map → credit-DR3ZW2FG.js.map} +0 -0
  67. /package/{developer-support-6GM2UW5P.js.map → developer-support-LUUIXIXG.js.map} +0 -0
  68. /package/{generate-37CJMAVG.js.map → generate-EEWDZMO7.js.map} +0 -0
  69. /package/{github-6CSR7332.js.map → github-WSCP6BCL.js.map} +0 -0
  70. /package/{goal-XURMW5OS.js.map → goal-TBQ73X4G.js.map} +0 -0
  71. /package/{host-EVFNV5BX.js.map → host-FF62XPMH.js.map} +0 -0
  72. /package/{logs-DR7ZTWBK.js.map → logs-PKOHZJ5X.js.map} +0 -0
  73. /package/{maps-IAVJJMRT.js.map → maps-LC4V32L6.js.map} +0 -0
  74. /package/{memory-X765S3ZI.js.map → memory-IQO5L4DF.js.map} +0 -0
  75. /package/{model-ZYVNUG47.js.map → model-NJ3PEGDV.js.map} +0 -0
  76. /package/{model-provider-SZIIRXS3.js.map → model-provider-MPBVWSUT.js.map} +0 -0
  77. /package/{org-GBDLJZSE.js.map → org-FFCTROTZ.js.map} +0 -0
  78. /package/{phone-KA4NZFQC.js.map → phone-35G4MSU4.js.map} +0 -0
  79. /package/{preference-TEMJHA73.js.map → preference-7LX3CJUT.js.map} +0 -0
  80. /package/{relationship-OXV2SPNL.js.map → relationship-PKU2B5BP.js.map} +0 -0
  81. /package/{resource-2WREU3GR.js.map → resource-ENHLW46D.js.map} +0 -0
  82. /package/{search-V5V5IHY7.js.map → search-ZKKMK4PS.js.map} +0 -0
  83. /package/{secret-LIAHG47P.js.map → secret-7K6ED3SD.js.map} +0 -0
  84. /package/{slack-BUOXO2HU.js.map → slack-VTGS2LE7.js.map} +0 -0
  85. /package/{teams-G7TYHRJB.js.map → teams-SOYUSM2G.js.map} +0 -0
  86. /package/{telegram-DEHNZSEN.js.map → telegram-F2GYSKWJ.js.map} +0 -0
  87. /package/{variable-RMYF6NVZ.js.map → variable-6NWZSJVI.js.map} +0 -0
  88. /package/{video-XEYMVSIU.js.map → video-VHL2UFS7.js.map} +0 -0
  89. /package/{web-4REDKON3.js.map → web-6A35VLL5.js.map} +0 -0
  90. /package/{whoami-66W7DPQX.js.map → whoami-6SU2NDI3.js.map} +0 -0
  91. /package/{workflow-PBJVC6HV.js.map → workflow-W23JY7HR.js.map} +0 -0
@@ -3,21 +3,22 @@ import { createRequire as __createRequire } from "node:module";
3
3
  const require = __createRequire(import.meta.url);
4
4
  import {
5
5
  findFirewallMetadataPermission
6
- } from "./chunk-VUER2HGS.js";
6
+ } from "./chunk-2YG67KBB.js";
7
7
  import {
8
8
  getPlatformOrigin,
9
9
  toPlatformUrl
10
- } from "./chunk-YQ5ZYQN3.js";
10
+ } from "./chunk-VWG7JMMA.js";
11
11
  import {
12
12
  CONNECTOR_TYPES,
13
13
  getConnectorEnvBindingEntries,
14
14
  getDiagnosticConnectorTypeForRuntimeEnvName,
15
15
  matchFirewallBaseUrl,
16
16
  matchFirewallRequestDecision
17
- } from "./chunk-H4Y7JDZB.js";
17
+ } from "./chunk-DUOJIVWA.js";
18
18
  import {
19
19
  UNKNOWN_PERMISSION_GRANT,
20
20
  createComputerUseAuthorizationRequest,
21
+ diagnoseZeroConnectorPermissionDeny,
21
22
  getZeroAgentUserConnectors,
22
23
  getZeroBillingStatus,
23
24
  getZeroConnector,
@@ -28,14 +29,14 @@ import {
28
29
  hasUnsafeFirewallPath,
29
30
  resolveFirewallBaseUrlTemplate,
30
31
  searchZeroConnectors
31
- } from "./chunk-GIACTMOF.js";
32
+ } from "./chunk-MSZRROJT.js";
32
33
  import "./chunk-LTDQISD7.js";
33
34
  import {
34
35
  ApiRequestError,
35
36
  getApiUrl,
36
37
  source_default,
37
38
  withErrorHandler
38
- } from "./chunk-VC7E6IA7.js";
39
+ } from "./chunk-GE2LI4MS.js";
39
40
  import {
40
41
  decodeZeroTokenPayload
41
42
  } from "./chunk-LRHXR7JT.js";
@@ -2344,7 +2345,6 @@ var FIREWALL_PERMISSION_METADATA_CONNECTOR_TYPES = Object.freeze([
2344
2345
  ]);
2345
2346
  var firewallPermissionMetadataSummariesJson = '{\n "adzuna": {\n "type": "adzuna",\n "label": "Adzuna",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "agentmail": {\n "type": "agentmail",\n "label": "AgentMail",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "agora": {\n "type": "agora",\n "label": "Agora",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "ahrefs": {\n "type": "ahrefs",\n "label": "Ahrefs",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "airtable": {\n "type": "airtable",\n "label": "Airtable",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "alchemy": {\n "type": "alchemy",\n "label": "Alchemy",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "altium-365": {\n "type": "altium-365",\n "label": "Altium 365",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "amadeus": {\n "type": "amadeus",\n "label": "Amadeus",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "amplitude": {\n "type": "amplitude",\n "label": "Amplitude",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "anthropic-managed-agents": {\n "type": "anthropic-managed-agents",\n "label": "Anthropic Managed Agents",\n "hasPermissions": true,\n "permissionCount": 8,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "apify": {\n "type": "apify",\n "label": "Apify",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "apollo": {\n "type": "apollo",\n "label": "Apollo",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "asana": {\n "type": "asana",\n "label": "Asana",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "ashby": {\n "type": "ashby",\n "label": "Ashby",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "atlascloud": {\n "type": "atlascloud",\n "label": "Atlas Cloud",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "atlassian": {\n "type": "atlassian",\n "label": "Atlassian (Jira/Confluence)",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "attio": {\n "type": "attio",\n "label": "Attio",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "aviationstack": {\n "type": "aviationstack",\n "label": "AviationStack",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "aws": {\n "type": "aws",\n "label": "AWS",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "axiom": {\n "type": "axiom",\n "label": "Axiom",\n "hasPermissions": true,\n "permissionCount": 49,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "base44": {\n "type": "base44",\n "label": "Base44",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bentoml": {\n "type": "bentoml",\n "label": "BentoML",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bfl": {\n "type": "bfl",\n "label": "Black Forest Labs",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bill": {\n "type": "bill",\n "label": "BILL",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bitrefill": {\n "type": "bitrefill",\n "label": "Bitrefill",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bitrix": {\n "type": "bitrix",\n "label": "Bitrix24",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bland": {\n "type": "bland",\n "label": "Bland",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "box": {\n "type": "box",\n "label": "Box",\n "hasPermissions": true,\n "permissionCount": 7,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "brave-search": {\n "type": "brave-search",\n "label": "Brave Search",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "brevo": {\n "type": "brevo",\n "label": "Brevo",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "brex": {\n "type": "brex",\n "label": "Brex",\n "hasPermissions": true,\n "permissionCount": 2,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bright-data": {\n "type": "bright-data",\n "label": "Bright Data",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "browser-use": {\n "type": "browser-use",\n "label": "Browser Use",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "browserbase": {\n "type": "browserbase",\n "label": "Browserbase",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "browserless": {\n "type": "browserless",\n "label": "Browserless",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "browserstack": {\n "type": "browserstack",\n "label": "BrowserStack",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "bubblemaps": {\n "type": "bubblemaps",\n "label": "Bubblemaps",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "buffer": {\n "type": "buffer",\n "label": "Buffer",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "builtwith": {\n "type": "builtwith",\n "label": "BuiltWith",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "cal-com": {\n "type": "cal-com",\n "label": "Cal.com",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "calendly": {\n "type": "calendly",\n "label": "Calendly",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "canva": {\n "type": "canva",\n "label": "Canva",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "chatwoot": {\n "type": "chatwoot",\n "label": "Chatwoot",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "checkr": {\n "type": "checkr",\n "label": "Checkr",\n "hasPermissions": true,\n "permissionCount": 2,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "clado": {\n "type": "clado",\n "label": "Clado",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "clearbit": {\n "type": "clearbit",\n "label": "Clearbit",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "clerk": {\n "type": "clerk",\n "label": "Clerk",\n "hasPermissions": true,\n "permissionCount": 67,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "clickup": {\n "type": "clickup",\n "label": "ClickUp",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "close": {\n "type": "close",\n "label": "Close",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "cloudflare": {\n "type": "cloudflare",\n "label": "Cloudflare",\n "hasPermissions": true,\n "permissionCount": 219,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "coda": {\n "type": "coda",\n "label": "Coda",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "coingecko": {\n "type": "coingecko",\n "label": "CoinGecko",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "copper": {\n "type": "copper",\n "label": "Copper",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "coresignal": {\n "type": "coresignal",\n "label": "Coresignal",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "cronlytic": {\n "type": "cronlytic",\n "label": "Cronlytic",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "crustdata": {\n "type": "crustdata",\n "label": "Crustdata",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "cursor": {\n "type": "cursor",\n "label": "Cursor",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "customer-io": {\n "type": "customer-io",\n "label": "Customer.io",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "datadog": {\n "type": "datadog",\n "label": "Datadog",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "daytona": {\n "type": "daytona",\n "label": "Daytona",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "db9": {\n "type": "db9",\n "label": "db9",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "deel": {\n "type": "deel",\n "label": "Deel",\n "hasPermissions": true,\n "permissionCount": 55,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "deepseek": {\n "type": "deepseek",\n "label": "DeepSeek",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "defillama": {\n "type": "defillama",\n "label": "DefiLlama",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "devto": {\n "type": "devto",\n "label": "Dev.to",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "diffbot": {\n "type": "diffbot",\n "label": "Diffbot",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "dify": {\n "type": "dify",\n "label": "Dify",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "discord": {\n "type": "discord",\n "label": "Discord",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "discord-webhook": {\n "type": "discord-webhook",\n "label": "Discord Webhook",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "docusign": {\n "type": "docusign",\n "label": "DocuSign",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "doppler": {\n "type": "doppler",\n "label": "Doppler",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "doubao": {\n "type": "doubao",\n "label": "Doubao",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "drive9": {\n "type": "drive9",\n "label": "drive9",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "dropbox": {\n "type": "dropbox",\n "label": "Dropbox",\n "hasPermissions": true,\n "permissionCount": 29,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "dropbox-sign": {\n "type": "dropbox-sign",\n "label": "Dropbox Sign",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "duffel": {\n "type": "duffel",\n "label": "Duffel",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "e2b": {\n "type": "e2b",\n "label": "E2B",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "elevenlabs": {\n "type": "elevenlabs",\n "label": "ElevenLabs",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "etherscan": {\n "type": "etherscan",\n "label": "Etherscan",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "etsy": {\n "type": "etsy",\n "label": "Etsy",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "exa": {\n "type": "exa",\n "label": "Exa",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "expensify": {\n "type": "expensify",\n "label": "Expensify",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "explorium": {\n "type": "explorium",\n "label": "Explorium",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "faire": {\n "type": "faire",\n "label": "Faire",\n "hasPermissions": true,\n "permissionCount": 2,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "fal": {\n "type": "fal",\n "label": "fal.ai",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "figma": {\n "type": "figma",\n "label": "Figma",\n "hasPermissions": true,\n "permissionCount": 19,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "firecrawl": {\n "type": "firecrawl",\n "label": "Firecrawl",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "fireflies": {\n "type": "fireflies",\n "label": "Fireflies",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "flightaware": {\n "type": "flightaware",\n "label": "FlightAware",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "freshdesk": {\n "type": "freshdesk",\n "label": "Freshdesk",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "gamma": {\n "type": "gamma",\n "label": "Gamma",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "garmin-connect": {\n "type": "garmin-connect",\n "label": "Garmin Connect",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "gemini": {\n "type": "gemini",\n "label": "Gemini",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "github": {\n "type": "github",\n "label": "GitHub",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "gitlab": {\n "type": "gitlab",\n "label": "GitLab",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "gmail": {\n "type": "gmail",\n "label": "Gmail",\n "hasPermissions": true,\n "permissionCount": 18,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "gong": {\n "type": "gong",\n "label": "Gong",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "google-ads": {\n "type": "google-ads",\n "label": "Google Ads",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "google-analytics": {\n "type": "google-analytics",\n "label": "Google Analytics",\n "hasPermissions": true,\n "permissionCount": 26,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-calendar": {\n "type": "google-calendar",\n "label": "Google Calendar",\n "hasPermissions": true,\n "permissionCount": 17,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-cloud": {\n "type": "google-cloud",\n "label": "Google Cloud",\n "hasPermissions": true,\n "permissionCount": 1189,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-contacts": {\n "type": "google-contacts",\n "label": "Google Contacts",\n "hasPermissions": true,\n "permissionCount": 12,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-docs": {\n "type": "google-docs",\n "label": "Google Docs",\n "hasPermissions": true,\n "permissionCount": 3,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "google-drive": {\n "type": "google-drive",\n "label": "Google Drive",\n "hasPermissions": true,\n "permissionCount": 19,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-forms": {\n "type": "google-forms",\n "label": "Google Forms",\n "hasPermissions": true,\n "permissionCount": 9,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-maps": {\n "type": "google-maps",\n "label": "Google Maps",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "google-meet": {\n "type": "google-meet",\n "label": "Google Meet",\n "hasPermissions": true,\n "permissionCount": 13,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-search-console": {\n "type": "google-search-console",\n "label": "Google Search Console",\n "hasPermissions": true,\n "permissionCount": 9,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "google-sheets": {\n "type": "google-sheets",\n "label": "Google Sheets",\n "hasPermissions": true,\n "permissionCount": 11,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "granola": {\n "type": "granola",\n "label": "Granola",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "greenhouse": {\n "type": "greenhouse",\n "label": "Greenhouse",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "groq": {\n "type": "groq",\n "label": "Groq",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "gumroad": {\n "type": "gumroad",\n "label": "Gumroad",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "helicone": {\n "type": "helicone",\n "label": "Helicone",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "heygen": {\n "type": "heygen",\n "label": "HeyGen",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "hitem3d": {\n "type": "hitem3d",\n "label": "Hitem3D",\n "hasPermissions": true,\n "permissionCount": 1,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "honcho": {\n "type": "honcho",\n "label": "Honcho",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "htmlcsstoimage": {\n "type": "htmlcsstoimage",\n "label": "HTML/CSS to Image",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "hubspot": {\n "type": "hubspot",\n "label": "HubSpot",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "hugging-face": {\n "type": "hugging-face",\n "label": "Hugging Face",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "hume": {\n "type": "hume",\n "label": "Hume",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "hunter": {\n "type": "hunter",\n "label": "Hunter",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "imgur": {\n "type": "imgur",\n "label": "Imgur",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "infisical": {\n "type": "infisical",\n "label": "Infisical",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "insforge": {\n "type": "insforge",\n "label": "InsForge",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "instagram": {\n "type": "instagram",\n "label": "Instagram",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "instantly": {\n "type": "instantly",\n "label": "Instantly",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "intercom": {\n "type": "intercom",\n "label": "Intercom",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "intervals-icu": {\n "type": "intervals-icu",\n "label": "Intervals.icu",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "ironclad": {\n "type": "ironclad",\n "label": "Ironclad",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "jam": {\n "type": "jam",\n "label": "Jam",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "jira": {\n "type": "jira",\n "label": "Jira",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "jotform": {\n "type": "jotform",\n "label": "Jotform",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "klaviyo": {\n "type": "klaviyo",\n "label": "Klaviyo",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "kommo": {\n "type": "kommo",\n "label": "Kommo",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "langfuse": {\n "type": "langfuse",\n "label": "Langfuse",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "langsmith": {\n "type": "langsmith",\n "label": "LangSmith",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "lark": {\n "type": "lark",\n "label": "Lark",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "line": {\n "type": "line",\n "label": "LINE",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "linear": {\n "type": "linear",\n "label": "Linear",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "loops": {\n "type": "loops",\n "label": "Loops",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "luma": {\n "type": "luma",\n "label": "Luma",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "luma-ai": {\n "type": "luma-ai",\n "label": "Luma AI",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mailchimp": {\n "type": "mailchimp",\n "label": "Mailchimp",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mailsac": {\n "type": "mailsac",\n "label": "Mailsac",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "make": {\n "type": "make",\n "label": "Make",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "manus": {\n "type": "manus",\n "label": "Manus",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mapbox": {\n "type": "mapbox",\n "label": "Mapbox",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "maskdb": {\n "type": "maskdb",\n "label": "maskdb",\n "hasPermissions": true,\n "permissionCount": 8,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "massive": {\n "type": "massive",\n "label": "Massive (Polygon.io)",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mathpix": {\n "type": "mathpix",\n "label": "Mathpix",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mem0": {\n "type": "mem0",\n "label": "Mem0",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mercury": {\n "type": "mercury",\n "label": "Mercury",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "meshy": {\n "type": "meshy",\n "label": "Meshy",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "meta-ads": {\n "type": "meta-ads",\n "label": "Meta Ads",\n "hasPermissions": true,\n "permissionCount": 1,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "metabase": {\n "type": "metabase",\n "label": "Metabase",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "microsoft-365": {\n "type": "microsoft-365",\n "label": "Microsoft 365",\n "hasPermissions": true,\n "permissionCount": 9,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "minimax": {\n "type": "minimax",\n "label": "MiniMax",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "miro": {\n "type": "miro",\n "label": "Miro",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "mixpanel": {\n "type": "mixpanel",\n "label": "Mixpanel",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "modal": {\n "type": "modal",\n "label": "Modal",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "monday": {\n "type": "monday",\n "label": "Monday.com",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "moss": {\n "type": "moss",\n "label": "Moss",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "msg9": {\n "type": "msg9",\n "label": "msg9",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "n8n": {\n "type": "n8n",\n "label": "n8n",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "neon": {\n "type": "neon",\n "label": "Neon",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "netdata": {\n "type": "netdata",\n "label": "Netdata",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "netsuite": {\n "type": "netsuite",\n "label": "NetSuite",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "nintendo-store": {\n "type": "nintendo-store",\n "label": "Nintendo Store",\n "hasPermissions": true,\n "permissionCount": 6,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "nintendo-switch-parental-controls": {\n "type": "nintendo-switch-parental-controls",\n "label": "Nintendo Switch Parental Controls",\n "hasPermissions": true,\n "permissionCount": 15,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "notion": {\n "type": "notion",\n "label": "Notion",\n "hasPermissions": true,\n "permissionCount": 6,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "novita": {\n "type": "novita",\n "label": "Novita AI",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "nyne": {\n "type": "nyne",\n "label": "Nyne",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "onyx": {\n "type": "onyx",\n "label": "Onyx",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "openai": {\n "type": "openai",\n "label": "OpenAI",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "openrouter": {\n "type": "openrouter",\n "label": "OpenRouter",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "openweather": {\n "type": "openweather",\n "label": "OpenWeather",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "outlook-calendar": {\n "type": "outlook-calendar",\n "label": "Outlook Calendar",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "outlook-mail": {\n "type": "outlook-mail",\n "label": "Outlook Mail",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pandadoc": {\n "type": "pandadoc",\n "label": "PandaDoc",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "parallel": {\n "type": "parallel",\n "label": "Parallel",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "paypal": {\n "type": "paypal",\n "label": "PayPal",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pdf4me": {\n "type": "pdf4me",\n "label": "PDF4me",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pdfco": {\n "type": "pdfco",\n "label": "PDF.co",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pdforge": {\n "type": "pdforge",\n "label": "PDForge",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "people-data-labs": {\n "type": "people-data-labs",\n "label": "People Data Labs",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "perplexity": {\n "type": "perplexity",\n "label": "Perplexity",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pexels": {\n "type": "pexels",\n "label": "Pexels",\n "hasPermissions": true,\n "permissionCount": 4,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "pika": {\n "type": "pika",\n "label": "Pika",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pinecone": {\n "type": "pinecone",\n "label": "Pinecone",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pipedream": {\n "type": "pipedream",\n "label": "Pipedream",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pipedrive": {\n "type": "pipedrive",\n "label": "Pipedrive",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "plain": {\n "type": "plain",\n "label": "Plain",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "plausible": {\n "type": "plausible",\n "label": "Plausible",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "playstation": {\n "type": "playstation",\n "label": "PlayStation",\n "hasPermissions": true,\n "permissionCount": 8,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "podchaser": {\n "type": "podchaser",\n "label": "Podchaser",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "porkbun": {\n "type": "porkbun",\n "label": "Porkbun",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "posthog": {\n "type": "posthog",\n "label": "PostHog",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "printful": {\n "type": "printful",\n "label": "Printful",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "prisma-postgres": {\n "type": "prisma-postgres",\n "label": "Prisma Postgres",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "productlane": {\n "type": "productlane",\n "label": "Productlane",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "profound": {\n "type": "profound",\n "label": "Profound",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "pushinator": {\n "type": "pushinator",\n "label": "Pushinator",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "qdrant": {\n "type": "qdrant",\n "label": "Qdrant",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "qiita": {\n "type": "qiita",\n "label": "Qiita",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "quickbooks": {\n "type": "quickbooks",\n "label": "QuickBooks",\n "hasPermissions": true,\n "permissionCount": 11,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "railway": {\n "type": "railway",\n "label": "Railway",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "railway-project": {\n "type": "railway-project",\n "label": "Railway Project",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "ramp": {\n "type": "ramp",\n "label": "Ramp",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "reap": {\n "type": "reap",\n "label": "Reap",\n "hasPermissions": true,\n "permissionCount": 2,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "recraft": {\n "type": "recraft",\n "label": "Recraft",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "reddit": {\n "type": "reddit",\n "label": "Reddit",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "reducto": {\n "type": "reducto",\n "label": "Reducto",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "render": {\n "type": "render",\n "label": "Render",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "rentcast": {\n "type": "rentcast",\n "label": "RentCast",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "replicate": {\n "type": "replicate",\n "label": "Replicate",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "reportei": {\n "type": "reportei",\n "label": "Reportei",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "resend": {\n "type": "resend",\n "label": "Resend",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "revenuecat": {\n "type": "revenuecat",\n "label": "RevenueCat",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "runway": {\n "type": "runway",\n "label": "Runway",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "salesforce": {\n "type": "salesforce",\n "label": "Salesforce",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "scrapeninja": {\n "type": "scrapeninja",\n "label": "ScrapeNinja",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "segment": {\n "type": "segment",\n "label": "Segment",\n "hasPermissions": true,\n "permissionCount": 2,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "semrush": {\n "type": "semrush",\n "label": "Semrush",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "sendgrid": {\n "type": "sendgrid",\n "label": "SendGrid",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "sentry": {\n "type": "sentry",\n "label": "Sentry",\n "hasPermissions": true,\n "permissionCount": 22,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "serpapi": {\n "type": "serpapi",\n "label": "SerpApi",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "servicenow": {\n "type": "servicenow",\n "label": "ServiceNow",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "shopify": {\n "type": "shopify",\n "label": "Shopify",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "shortio": {\n "type": "shortio",\n "label": "Short.io",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "similarweb": {\n "type": "similarweb",\n "label": "SimilarWeb",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "slack": {\n "type": "slack",\n "label": "Slack",\n "hasPermissions": true,\n "permissionCount": 84,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "slack-webhook": {\n "type": "slack-webhook",\n "label": "Slack Webhook",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "slock": {\n "type": "slock",\n "label": "Slock",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "snowflake": {\n "type": "snowflake",\n "label": "Snowflake",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "sociavault": {\n "type": "sociavault",\n "label": "SociaVault",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "sponge": {\n "type": "sponge",\n "label": "Sponge",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "spotify": {\n "type": "spotify",\n "label": "Spotify",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "sproutgigs": {\n "type": "sproutgigs",\n "label": "SproutGigs",\n "hasPermissions": true,\n "permissionCount": 8,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "square": {\n "type": "square",\n "label": "Square",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "stability-ai": {\n "type": "stability-ai",\n "label": "Stability AI",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "steam": {\n "type": "steam",\n "label": "Steam",\n "hasPermissions": true,\n "permissionCount": 13,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": true\n },\n "strapi": {\n "type": "strapi",\n "label": "Strapi",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "strava": {\n "type": "strava",\n "label": "Strava",\n "hasPermissions": true,\n "permissionCount": 13,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "streak": {\n "type": "streak",\n "label": "Streak",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "stripe": {\n "type": "stripe",\n "label": "Stripe",\n "hasPermissions": true,\n "permissionCount": 231,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "supabase": {\n "type": "supabase",\n "label": "Supabase",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "supadata": {\n "type": "supadata",\n "label": "Supadata",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "supermemory": {\n "type": "supermemory",\n "label": "Supermemory",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "tavily": {\n "type": "tavily",\n "label": "Tavily",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "test-oauth": {\n "type": "test-oauth",\n "label": "Test OAuth (internal)",\n "hasPermissions": true,\n "permissionCount": 1,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "testrail": {\n "type": "testrail",\n "label": "TestRail",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "ticketmaster": {\n "type": "ticketmaster",\n "label": "Ticketmaster",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "tiktok-ads": {\n "type": "tiktok-ads",\n "label": "TikTok Ads",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "tldv": {\n "type": "tldv",\n "label": "tl;dv",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "todoist": {\n "type": "todoist",\n "label": "Todoist",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "together": {\n "type": "together",\n "label": "Together AI",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "tripo": {\n "type": "tripo",\n "label": "Tripo",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "twenty": {\n "type": "twenty",\n "label": "Twenty",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "twilio": {\n "type": "twilio",\n "label": "Twilio",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "typeform": {\n "type": "typeform",\n "label": "Typeform",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "v0": {\n "type": "v0",\n "label": "v0",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "vercel": {\n "type": "vercel",\n "label": "Vercel",\n "hasPermissions": true,\n "permissionCount": 68,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": false\n },\n "wandb": {\n "type": "wandb",\n "label": "Weights & Biases",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "webflow": {\n "type": "webflow",\n "label": "Webflow",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "weread": {\n "type": "weread",\n "label": "WeRead",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "whale-alert": {\n "type": "whale-alert",\n "label": "Whale Alert",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "wix": {\n "type": "wix",\n "label": "Wix",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "workday": {\n "type": "workday",\n "label": "Workday",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "workos": {\n "type": "workos",\n "label": "WorkOS",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "wrike": {\n "type": "wrike",\n "label": "Wrike",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "x": {\n "type": "x",\n "label": "X",\n "hasPermissions": true,\n "permissionCount": 21,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "xero": {\n "type": "xero",\n "label": "Xero",\n "hasPermissions": true,\n "permissionCount": 35,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "youtube": {\n "type": "youtube",\n "label": "YouTube",\n "hasPermissions": true,\n "permissionCount": 68,\n "hasCategories": true,\n "hasDefaultPolicyOverrides": true\n },\n "zapier": {\n "type": "zapier",\n "label": "Zapier",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "zapsign": {\n "type": "zapsign",\n "label": "ZapSign",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "zendesk": {\n "type": "zendesk",\n "label": "Zendesk",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "zep": {\n "type": "zep",\n "label": "Zep",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "zeptomail": {\n "type": "zeptomail",\n "label": "ZeptoMail",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n },\n "zoom": {\n "type": "zoom",\n "label": "Zoom",\n "hasPermissions": false,\n "permissionCount": 0,\n "hasCategories": false,\n "hasDefaultPolicyOverrides": false\n }\n}';
2346
2347
  var firewallPermissionMetadataSummariesValue = JSON.parse(firewallPermissionMetadataSummariesJson);
2347
- var FIREWALL_PERMISSION_METADATA_SUMMARIES = firewallPermissionMetadataSummariesValue;
2348
2348
 
2349
2349
  // ../../packages/connectors/src/firewall-metadata/server-execution.generated.ts
2350
2350
  init_esm_shims();
@@ -3601,21 +3601,6 @@ How connectors work:
3601
3601
  // src/commands/zero/doctor/permission-deny.ts
3602
3602
  init_esm_shims();
3603
3603
 
3604
- // ../../packages/connectors/src/firewall-metadata/index.ts
3605
- init_esm_shims();
3606
- function isFirewallMetadataConnectorType(type) {
3607
- return Object.prototype.hasOwnProperty.call(
3608
- FIREWALL_PERMISSION_METADATA_SUMMARIES,
3609
- type
3610
- );
3611
- }
3612
- function getFirewallPermissionSummary(type) {
3613
- if (!isFirewallMetadataConnectorType(type)) {
3614
- return null;
3615
- }
3616
- return FIREWALL_PERMISSION_METADATA_SUMMARIES[type];
3617
- }
3618
-
3619
3604
  // src/commands/zero/doctor/computer-use-guidance.ts
3620
3605
  init_esm_shims();
3621
3606
  var COMPUTER_USE_CONNECTOR_REF = "computer-use";
@@ -3639,11 +3624,6 @@ function printComputerUsePermissionGuidance() {
3639
3624
  }
3640
3625
 
3641
3626
  // src/commands/zero/doctor/permission-deny.ts
3642
- function unknownPermissionChangeCommand2(connectorRef) {
3643
- return `zero doctor permission-change ${connectorRef} --permission ${UNKNOWN_PERMISSION_GRANT} --enable --duration 1h`;
3644
- }
3645
- var BASE_URL_VAR_PATTERN = /\$\{\{\s*vars\.([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}/g;
3646
- var WHOLE_BASE_URL_VAR_PATTERN = /^\$\{\{\s*vars\.([a-zA-Z_][a-zA-Z0-9_]*)\s*\}\}$/;
3647
3627
  var VALID_DENIED_METHODS = /* @__PURE__ */ new Set([
3648
3628
  "GET",
3649
3629
  "POST",
@@ -3653,6 +3633,9 @@ var VALID_DENIED_METHODS = /* @__PURE__ */ new Set([
3653
3633
  "HEAD",
3654
3634
  "OPTIONS"
3655
3635
  ]);
3636
+ function unknownPermissionChangeCommand2(connectorRef) {
3637
+ return `zero doctor permission-change ${connectorRef} --permission ${UNKNOWN_PERMISSION_GRANT} --enable --duration 1h`;
3638
+ }
3656
3639
  function pathOnlyError() {
3657
3640
  return new Error(
3658
3641
  "permission-deny now requires --url because method/path alone can match the wrong API base."
@@ -3698,7 +3681,7 @@ function rawAuthorityHasUnsafeSyntax(url) {
3698
3681
  return char.charCodeAt(0) > 127;
3699
3682
  });
3700
3683
  }
3701
- function parseDeniedUrl(url) {
3684
+ function validateDeniedUrl(url) {
3702
3685
  if (!url.includes("://") || /\s/.test(url) || rawAuthorityHasUnsafeSyntax(url)) {
3703
3686
  throw invalidUrlError();
3704
3687
  }
@@ -3710,67 +3693,10 @@ function parseDeniedUrl(url) {
3710
3693
  if (parsed.username !== "" || parsed.password !== "") {
3711
3694
  throw invalidUrlError();
3712
3695
  }
3713
- return parsed;
3714
3696
  } catch {
3715
3697
  throw invalidUrlError();
3716
3698
  }
3717
3699
  }
3718
- function baseUrlTemplateVarNames(base) {
3719
- return [...base.matchAll(BASE_URL_VAR_PATTERN)].map((match) => {
3720
- return match[1];
3721
- });
3722
- }
3723
- function wholeBaseUrlTemplateVarName(base) {
3724
- return WHOLE_BASE_URL_VAR_PATTERN.exec(base)?.[1] ?? null;
3725
- }
3726
- function resolveBaseUrlTemplateFromEnv(base) {
3727
- const names = baseUrlTemplateVarNames(base);
3728
- if (names.length === 0) return base;
3729
- let missing = false;
3730
- const resolved = base.replace(
3731
- BASE_URL_VAR_PATTERN,
3732
- (_match, name) => {
3733
- const value = process.env[name];
3734
- if (!value) {
3735
- missing = true;
3736
- return "";
3737
- }
3738
- return value;
3739
- }
3740
- );
3741
- return missing ? null : resolved;
3742
- }
3743
- function baseUrlTemplateToPattern(base) {
3744
- if (baseUrlTemplateVarNames(base).length === 0) return null;
3745
- const pattern = base.replace(BASE_URL_VAR_PATTERN, (_match, name) => {
3746
- return `{${name}}`;
3747
- });
3748
- return pattern.includes("://") ? pattern : null;
3749
- }
3750
- function connectorRefHostToken(connectorRef) {
3751
- return connectorRef.toLowerCase().replaceAll(/[^a-z0-9]/g, "");
3752
- }
3753
- function hostLabelToken(label) {
3754
- return label.toLowerCase().replaceAll(/[^a-z0-9]/g, "");
3755
- }
3756
- function hostLabelMatchesConnectorRef(label, connectorRef) {
3757
- const normalizedConnectorRef = connectorRef.toLowerCase();
3758
- const token = connectorRefHostToken(connectorRef);
3759
- const normalizedLabel = label.toLowerCase();
3760
- if (normalizedConnectorRef === token) {
3761
- return normalizedLabel === token;
3762
- }
3763
- return hostLabelToken(normalizedLabel) === token;
3764
- }
3765
- function hostnameMatchesConnectorRef(url, connectorRef) {
3766
- const token = connectorRefHostToken(connectorRef);
3767
- if (token.length < 3) return false;
3768
- const labels = (url.hostname || "").toLowerCase().replace(/\.$/, "").split(".").filter((part) => {
3769
- return part !== "";
3770
- });
3771
- if (labels.length < 2) return false;
3772
- return hostLabelMatchesConnectorRef(labels[labels.length - 2], connectorRef);
3773
- }
3774
3700
  function stripUrlQueryAndFragment2(url) {
3775
3701
  const queryIndex = url.indexOf("?");
3776
3702
  const fragmentIndex = url.indexOf("#");
@@ -3779,9 +3705,6 @@ function stripUrlQueryAndFragment2(url) {
3779
3705
  if (fragmentIndex !== -1) end = Math.min(end, fragmentIndex);
3780
3706
  return url.slice(0, end);
3781
3707
  }
3782
- function stripTrailingSlash(value) {
3783
- return value.endsWith("/") ? value.slice(0, -1) : value;
3784
- }
3785
3708
  function rawPathFromDeniedUrl(url) {
3786
3709
  const urlWithoutQuery = stripUrlQueryAndFragment2(url);
3787
3710
  const schemeEnd = urlWithoutQuery.indexOf("://");
@@ -3789,131 +3712,6 @@ function rawPathFromDeniedUrl(url) {
3789
3712
  const pathStart = urlWithoutQuery.indexOf("/", authorityStart);
3790
3713
  return pathStart === -1 ? "/" : urlWithoutQuery.slice(pathStart);
3791
3714
  }
3792
- function matchApiBaseUrl(url, apiBase) {
3793
- const directMatch = matchFirewallBaseUrl(url, apiBase);
3794
- if (directMatch) {
3795
- return {
3796
- apiBase,
3797
- decisionBase: apiBase,
3798
- displayBase: directMatch.displayBase,
3799
- relativePath: directMatch.relativePath,
3800
- score: directMatch.score
3801
- };
3802
- }
3803
- const resolvedBase = resolveBaseUrlTemplateFromEnv(apiBase);
3804
- if (resolvedBase !== null && resolvedBase !== apiBase) {
3805
- const resolvedMatch = matchFirewallBaseUrl(url, resolvedBase);
3806
- if (resolvedMatch) {
3807
- return {
3808
- apiBase,
3809
- decisionBase: resolvedBase,
3810
- displayBase: resolvedMatch.displayBase,
3811
- relativePath: resolvedMatch.relativePath,
3812
- score: resolvedMatch.score
3813
- };
3814
- }
3815
- return null;
3816
- }
3817
- const patternBase = baseUrlTemplateToPattern(apiBase);
3818
- if (patternBase === null) return null;
3819
- const patternMatch = matchFirewallBaseUrl(url, patternBase);
3820
- if (!patternMatch) return null;
3821
- return {
3822
- apiBase,
3823
- decisionBase: patternBase,
3824
- displayBase: apiBase,
3825
- relativePath: patternMatch.relativePath,
3826
- score: patternMatch.score
3827
- };
3828
- }
3829
- function findBestBaseMatch(url, deniedUrl, connectorRef, apis) {
3830
- let bestMatch = null;
3831
- for (const api2 of apis) {
3832
- const match = matchApiBaseUrl(url, api2.base);
3833
- if (match && (!bestMatch || match.score > bestMatch.score)) {
3834
- bestMatch = match;
3835
- }
3836
- }
3837
- if (bestMatch !== null) return bestMatch;
3838
- const unresolvedWholeBaseApis = apis.filter((api2) => {
3839
- const name = wholeBaseUrlTemplateVarName(api2.base);
3840
- return name !== null && !process.env[name];
3841
- });
3842
- if (unresolvedWholeBaseApis.length !== 1) return null;
3843
- if (!hostnameMatchesConnectorRef(deniedUrl, connectorRef)) return null;
3844
- const api = unresolvedWholeBaseApis[0];
3845
- return {
3846
- apiBase: api.base,
3847
- decisionBase: deniedUrl.origin,
3848
- displayBase: api.base,
3849
- relativePath: rawPathFromDeniedUrl(url),
3850
- score: 0
3851
- };
3852
- }
3853
- function routesForMatchedBase(apis, apiBase) {
3854
- const normalizedApiBase = stripTrailingSlash(apiBase);
3855
- const routes = [];
3856
- for (const api of apis) {
3857
- if (stripTrailingSlash(api.base) === normalizedApiBase) {
3858
- routes.push(...api.routes);
3859
- }
3860
- }
3861
- return routes;
3862
- }
3863
- function routesToDecisionPermissions2(routes) {
3864
- const rulesByPermission = /* @__PURE__ */ new Map();
3865
- for (const route of routes) {
3866
- const rules = rulesByPermission.get(route.permissionName);
3867
- if (rules) {
3868
- rules.push(route.rule);
3869
- } else {
3870
- rulesByPermission.set(route.permissionName, [route.rule]);
3871
- }
3872
- }
3873
- return [...rulesByPermission.entries()].map(([name, rules]) => {
3874
- return { name, rules };
3875
- });
3876
- }
3877
- function buildDecisionFirewall(connectorRef, base, permissions) {
3878
- return [
3879
- {
3880
- name: connectorRef,
3881
- apis: [
3882
- {
3883
- base,
3884
- auth: {},
3885
- permissions
3886
- }
3887
- ]
3888
- }
3889
- ];
3890
- }
3891
- function buildAllDeniedNetworkPolicies(connectorRef, permissions) {
3892
- return {
3893
- [connectorRef]: {
3894
- allow: [],
3895
- deny: permissions.map((permission) => {
3896
- return permission.name;
3897
- }),
3898
- ask: [],
3899
- unknownPolicy: "deny"
3900
- }
3901
- };
3902
- }
3903
- function findDeniedDecisionPermissions(connectorRef, method, url, match, apis) {
3904
- const routes = routesForMatchedBase(apis, match.apiBase);
3905
- const permissions = routesToDecisionPermissions2(routes);
3906
- const decision = matchFirewallRequestDecision(
3907
- buildDecisionFirewall(connectorRef, match.decisionBase, permissions),
3908
- method,
3909
- url,
3910
- buildAllDeniedNetworkPolicies(connectorRef, permissions)
3911
- );
3912
- if (decision.kind !== "block" || decision.reason !== "permission_denied") {
3913
- return [];
3914
- }
3915
- return [...decision.permissions];
3916
- }
3917
3715
  function printPermissionChangeGuidance(connectorRef, permissions) {
3918
3716
  const sortedPermissions = [...permissions].sort();
3919
3717
  if (sortedPermissions.length === 1) {
@@ -3933,6 +3731,61 @@ function printPermissionChangeGuidance(connectorRef, permissions) {
3933
3731
  );
3934
3732
  }
3935
3733
  }
3734
+ function printFilteredRequest(label, method, relativePath, base) {
3735
+ console.log(
3736
+ `The ${label} permission filtered ${method} ${relativePath} relative to base URL ${base}.`
3737
+ );
3738
+ }
3739
+ function unsafeInputError(reason) {
3740
+ switch (reason) {
3741
+ case "invalid-method":
3742
+ return invalidMethodError();
3743
+ case "invalid-url":
3744
+ return invalidUrlError();
3745
+ case "unsafe-path":
3746
+ return unsafePathError();
3747
+ }
3748
+ }
3749
+ function handleDiagnosticResult(connectorRef, method, result) {
3750
+ switch (result.outcome) {
3751
+ case "matched":
3752
+ printFilteredRequest(
3753
+ result.label,
3754
+ method,
3755
+ result.relativePath,
3756
+ result.base
3757
+ );
3758
+ printPermissionChangeGuidance(connectorRef, result.permissions);
3759
+ return;
3760
+ case "unknown-endpoint":
3761
+ printFilteredRequest(
3762
+ result.label,
3763
+ method,
3764
+ result.relativePath,
3765
+ result.base
3766
+ );
3767
+ console.log("No named permission was found covering this request.");
3768
+ console.log("This request is governed by the unknown endpoint policy.");
3769
+ console.log(
3770
+ `To allow unknown endpoints, run: ${unknownPermissionChangeCommand2(connectorRef)}`
3771
+ );
3772
+ return;
3773
+ case "unknown-connector":
3774
+ throw new Error(`Unknown connector type: ${connectorRef}`);
3775
+ case "no-matching-base":
3776
+ throw new Error(
3777
+ `No registered ${result.label} base URL matches the provided URL.`
3778
+ );
3779
+ case "unresolved-dynamic-base":
3780
+ throw new Error(
3781
+ `No authoritative ${result.label} base URL is available for this diagnostic. Verify the ${connectorRef} connector configuration for the affected context and retry.`
3782
+ );
3783
+ case "unsafe-input":
3784
+ throw unsafeInputError(result.reason);
3785
+ }
3786
+ const exhaustiveResult = result;
3787
+ return exhaustiveResult;
3788
+ }
3936
3789
  var permissionDenyCommand = new Command().name("permission-deny").description(
3937
3790
  "Diagnose a permission denial and find the permission that covers it"
3938
3791
  ).argument("<connector-ref>", "The connector type (e.g. github)").addOption(
@@ -3970,7 +3823,7 @@ Notes:
3970
3823
  throw pathOnlyError();
3971
3824
  }
3972
3825
  const method = parseDeniedMethod(opts.method);
3973
- const deniedUrl = parseDeniedUrl(opts.url);
3826
+ validateDeniedUrl(opts.url);
3974
3827
  const deniedPath = rawPathFromDeniedUrl(opts.url);
3975
3828
  if (hasUnsafeFirewallPath(deniedPath)) {
3976
3829
  throw unsafePathError();
@@ -3982,43 +3835,12 @@ Notes:
3982
3835
  printComputerUsePermissionGuidance();
3983
3836
  return;
3984
3837
  }
3985
- const metadata = await loadFirewallRoutingMetadata(connectorRef);
3986
- if (!metadata) {
3987
- throw new Error(`Unknown connector type: ${connectorRef}`);
3988
- }
3989
- const label = getFirewallPermissionSummary(connectorRef)?.label ?? connectorRef;
3990
- const match = findBestBaseMatch(
3991
- opts.url,
3992
- deniedUrl,
3993
- connectorRef,
3994
- metadata.apis
3995
- );
3996
- if (!match) {
3997
- throw new Error(
3998
- `No registered ${label} base URL matches the provided URL.`
3999
- );
4000
- }
4001
- const permissions = findDeniedDecisionPermissions(
3838
+ const result = await diagnoseZeroConnectorPermissionDeny(
4002
3839
  connectorRef,
4003
3840
  method,
4004
- opts.url,
4005
- match,
4006
- metadata.apis
4007
- );
4008
- console.log(
4009
- `The ${label} permission filtered ${method} ${match.relativePath} relative to base URL ${match.displayBase}.`
3841
+ stripUrlQueryAndFragment2(opts.url)
4010
3842
  );
4011
- if (permissions.length === 0) {
4012
- console.log("No named permission was found covering this request.");
4013
- console.log(
4014
- "This request is governed by the unknown endpoint policy."
4015
- );
4016
- console.log(
4017
- `To allow unknown endpoints, run: ${unknownPermissionChangeCommand2(connectorRef)}`
4018
- );
4019
- return;
4020
- }
4021
- printPermissionChangeGuidance(connectorRef, permissions);
3843
+ handleDiagnosticResult(connectorRef, method, result);
4022
3844
  }
4023
3845
  )
4024
3846
  );
@@ -4302,4 +4124,4 @@ Notes:
4302
4124
  export {
4303
4125
  zeroDoctorCommand
4304
4126
  };
4305
- //# sourceMappingURL=doctor-Z3HFRIKJ.js.map
4127
+ //# sourceMappingURL=doctor-XNJOG3LG.js.map