@grc-claw/integration-marketplace 0.8.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.
Files changed (311) hide show
  1. package/dist/IntegrationMarketplace.d.ts +32 -0
  2. package/dist/IntegrationMarketplace.js +319 -0
  3. package/dist/connectors/ADPConnector.d.ts +12 -0
  4. package/dist/connectors/ADPConnector.js +97 -0
  5. package/dist/connectors/AWSCloudTrailConnector.d.ts +12 -0
  6. package/dist/connectors/AWSCloudTrailConnector.js +77 -0
  7. package/dist/connectors/AWSCloudWatchConnector.d.ts +12 -0
  8. package/dist/connectors/AWSCloudWatchConnector.js +70 -0
  9. package/dist/connectors/AWSGuardDutyConnector.d.ts +12 -0
  10. package/dist/connectors/AWSGuardDutyConnector.js +139 -0
  11. package/dist/connectors/AWSIAMConnector.d.ts +12 -0
  12. package/dist/connectors/AWSIAMConnector.js +90 -0
  13. package/dist/connectors/AWSKMSConnector.d.ts +12 -0
  14. package/dist/connectors/AWSKMSConnector.js +70 -0
  15. package/dist/connectors/AWSLambdaConnector.d.ts +12 -0
  16. package/dist/connectors/AWSLambdaConnector.js +84 -0
  17. package/dist/connectors/AWSRDSConnector.d.ts +12 -0
  18. package/dist/connectors/AWSRDSConnector.js +84 -0
  19. package/dist/connectors/AWSS3Connector.d.ts +12 -0
  20. package/dist/connectors/AWSS3Connector.js +112 -0
  21. package/dist/connectors/AkamaiConnector.d.ts +12 -0
  22. package/dist/connectors/AkamaiConnector.js +98 -0
  23. package/dist/connectors/ArgoCDConnector.d.ts +12 -0
  24. package/dist/connectors/ArgoCDConnector.js +93 -0
  25. package/dist/connectors/ArtifactoryConnector.d.ts +12 -0
  26. package/dist/connectors/ArtifactoryConnector.js +94 -0
  27. package/dist/connectors/AtlassianJiraConnector.d.ts +12 -0
  28. package/dist/connectors/AtlassianJiraConnector.js +134 -0
  29. package/dist/connectors/Auth0Connector.d.ts +12 -0
  30. package/dist/connectors/Auth0Connector.js +150 -0
  31. package/dist/connectors/AzureADConnector.d.ts +12 -0
  32. package/dist/connectors/AzureADConnector.js +115 -0
  33. package/dist/connectors/AzureDevOpsConnector.d.ts +12 -0
  34. package/dist/connectors/AzureDevOpsConnector.js +130 -0
  35. package/dist/connectors/AzureDevOpsPipelinesConnector.d.ts +12 -0
  36. package/dist/connectors/AzureDevOpsPipelinesConnector.js +72 -0
  37. package/dist/connectors/AzurePipelinesConnector.d.ts +12 -0
  38. package/dist/connectors/AzurePipelinesConnector.js +72 -0
  39. package/dist/connectors/AzurePolicyConnector.d.ts +12 -0
  40. package/dist/connectors/AzurePolicyConnector.js +141 -0
  41. package/dist/connectors/AzureReposConnector.d.ts +12 -0
  42. package/dist/connectors/AzureReposConnector.js +96 -0
  43. package/dist/connectors/AzureSentinelConnector.d.ts +12 -0
  44. package/dist/connectors/AzureSentinelConnector.js +88 -0
  45. package/dist/connectors/BambooCICDConnector.d.ts +12 -0
  46. package/dist/connectors/BambooCICDConnector.js +72 -0
  47. package/dist/connectors/BambooHRConnector.d.ts +12 -0
  48. package/dist/connectors/BambooHRConnector.js +84 -0
  49. package/dist/connectors/BeyondTrustConnector.d.ts +12 -0
  50. package/dist/connectors/BeyondTrustConnector.js +94 -0
  51. package/dist/connectors/BitbucketConnector.d.ts +12 -0
  52. package/dist/connectors/BitbucketConnector.js +100 -0
  53. package/dist/connectors/BitbucketPipelinesConnector.d.ts +12 -0
  54. package/dist/connectors/BitbucketPipelinesConnector.js +72 -0
  55. package/dist/connectors/BoxConnector.d.ts +12 -0
  56. package/dist/connectors/BoxConnector.js +122 -0
  57. package/dist/connectors/BuildkiteConnector.d.ts +12 -0
  58. package/dist/connectors/BuildkiteConnector.js +95 -0
  59. package/dist/connectors/CarbonBlackConnector.d.ts +12 -0
  60. package/dist/connectors/CarbonBlackConnector.js +89 -0
  61. package/dist/connectors/CassandraConnector.d.ts +12 -0
  62. package/dist/connectors/CassandraConnector.js +69 -0
  63. package/dist/connectors/CheckPointConnector.d.ts +12 -0
  64. package/dist/connectors/CheckPointConnector.js +98 -0
  65. package/dist/connectors/CircleCIConnector.d.ts +12 -0
  66. package/dist/connectors/CircleCIConnector.js +129 -0
  67. package/dist/connectors/CircleCIConnectorsConnector.d.ts +12 -0
  68. package/dist/connectors/CircleCIConnectorsConnector.js +69 -0
  69. package/dist/connectors/CiscoUmbrellaConnector.d.ts +12 -0
  70. package/dist/connectors/CiscoUmbrellaConnector.js +96 -0
  71. package/dist/connectors/CloudBeesJenkinsConnector.d.ts +12 -0
  72. package/dist/connectors/CloudBeesJenkinsConnector.js +70 -0
  73. package/dist/connectors/CloudflareDNSConnector.d.ts +12 -0
  74. package/dist/connectors/CloudflareDNSConnector.js +71 -0
  75. package/dist/connectors/CloudflareWAFConnector.d.ts +12 -0
  76. package/dist/connectors/CloudflareWAFConnector.js +98 -0
  77. package/dist/connectors/ConfluenceConnector.d.ts +12 -0
  78. package/dist/connectors/ConfluenceConnector.js +101 -0
  79. package/dist/connectors/ConstantContactConnector.d.ts +12 -0
  80. package/dist/connectors/ConstantContactConnector.js +70 -0
  81. package/dist/connectors/CouchDBConnector.d.ts +12 -0
  82. package/dist/connectors/CouchDBConnector.js +69 -0
  83. package/dist/connectors/CrowdStrikeConnector.d.ts +12 -0
  84. package/dist/connectors/CrowdStrikeConnector.js +86 -0
  85. package/dist/connectors/CrowdStrikeFalconConnector.d.ts +12 -0
  86. package/dist/connectors/CrowdStrikeFalconConnector.js +92 -0
  87. package/dist/connectors/CrowdStrikeSpotlightConnector.d.ts +12 -0
  88. package/dist/connectors/CrowdStrikeSpotlightConnector.js +139 -0
  89. package/dist/connectors/CyberArkConnector.d.ts +12 -0
  90. package/dist/connectors/CyberArkConnector.js +95 -0
  91. package/dist/connectors/DatabricksConnector.d.ts +12 -0
  92. package/dist/connectors/DatabricksConnector.js +95 -0
  93. package/dist/connectors/DatadogConnector.d.ts +12 -0
  94. package/dist/connectors/DatadogConnector.js +110 -0
  95. package/dist/connectors/DigitalOceanConnector.d.ts +12 -0
  96. package/dist/connectors/DigitalOceanConnector.js +85 -0
  97. package/dist/connectors/DiscordConnector.d.ts +12 -0
  98. package/dist/connectors/DiscordConnector.js +98 -0
  99. package/dist/connectors/DockerHubConnector.d.ts +12 -0
  100. package/dist/connectors/DockerHubConnector.js +80 -0
  101. package/dist/connectors/DocuSignConnector.d.ts +12 -0
  102. package/dist/connectors/DocuSignConnector.js +96 -0
  103. package/dist/connectors/DriftConnector.d.ts +12 -0
  104. package/dist/connectors/DriftConnector.js +69 -0
  105. package/dist/connectors/DropboxConnector.d.ts +12 -0
  106. package/dist/connectors/DropboxConnector.js +127 -0
  107. package/dist/connectors/ESETConnector.d.ts +12 -0
  108. package/dist/connectors/ESETConnector.js +70 -0
  109. package/dist/connectors/ElasticsearchCloudConnector.d.ts +12 -0
  110. package/dist/connectors/ElasticsearchCloudConnector.js +70 -0
  111. package/dist/connectors/FSecureConnector.d.ts +12 -0
  112. package/dist/connectors/FSecureConnector.js +70 -0
  113. package/dist/connectors/FeatureFlagConnector.d.ts +12 -0
  114. package/dist/connectors/FeatureFlagConnector.js +70 -0
  115. package/dist/connectors/FluxCDConnector.d.ts +12 -0
  116. package/dist/connectors/FluxCDConnector.js +94 -0
  117. package/dist/connectors/ForgeRockConnector.d.ts +12 -0
  118. package/dist/connectors/ForgeRockConnector.js +95 -0
  119. package/dist/connectors/FortinetConnector.d.ts +12 -0
  120. package/dist/connectors/FortinetConnector.js +98 -0
  121. package/dist/connectors/FreshdeskConnector.d.ts +12 -0
  122. package/dist/connectors/FreshdeskConnector.js +71 -0
  123. package/dist/connectors/GCPBigQueryConnector.d.ts +12 -0
  124. package/dist/connectors/GCPBigQueryConnector.js +71 -0
  125. package/dist/connectors/GCPComputeConnector.d.ts +12 -0
  126. package/dist/connectors/GCPComputeConnector.js +87 -0
  127. package/dist/connectors/GCPConfigConnector.d.ts +12 -0
  128. package/dist/connectors/GCPConfigConnector.js +149 -0
  129. package/dist/connectors/GCPFirestoreConnector.d.ts +12 -0
  130. package/dist/connectors/GCPFirestoreConnector.js +71 -0
  131. package/dist/connectors/GCPIAMConnector.d.ts +12 -0
  132. package/dist/connectors/GCPIAMConnector.js +98 -0
  133. package/dist/connectors/GCPSCCConnector.d.ts +12 -0
  134. package/dist/connectors/GCPSCCConnector.js +94 -0
  135. package/dist/connectors/GitHubActionsConnector.d.ts +12 -0
  136. package/dist/connectors/GitHubActionsConnector.js +104 -0
  137. package/dist/connectors/GitHubConnector.d.ts +12 -0
  138. package/dist/connectors/GitHubConnector.js +135 -0
  139. package/dist/connectors/GitHubCopilotConnector.d.ts +12 -0
  140. package/dist/connectors/GitHubCopilotConnector.js +72 -0
  141. package/dist/connectors/GitLabCIConnector.d.ts +12 -0
  142. package/dist/connectors/GitLabCIConnector.js +71 -0
  143. package/dist/connectors/GitLabConnector.d.ts +12 -0
  144. package/dist/connectors/GitLabConnector.js +101 -0
  145. package/dist/connectors/GitLabSASTConnector.d.ts +12 -0
  146. package/dist/connectors/GitLabSASTConnector.js +130 -0
  147. package/dist/connectors/GoogleWorkspaceConnector.d.ts +12 -0
  148. package/dist/connectors/GoogleWorkspaceConnector.js +136 -0
  149. package/dist/connectors/HelmConnector.d.ts +12 -0
  150. package/dist/connectors/HelmConnector.js +94 -0
  151. package/dist/connectors/HubSpotConnector.d.ts +12 -0
  152. package/dist/connectors/HubSpotConnector.js +77 -0
  153. package/dist/connectors/IFTTTConnector.d.ts +12 -0
  154. package/dist/connectors/IFTTTConnector.js +70 -0
  155. package/dist/connectors/ImpervaConnector.d.ts +12 -0
  156. package/dist/connectors/ImpervaConnector.js +94 -0
  157. package/dist/connectors/InfluxDBConnector.d.ts +12 -0
  158. package/dist/connectors/InfluxDBConnector.js +70 -0
  159. package/dist/connectors/IntercomConnector.d.ts +12 -0
  160. package/dist/connectors/IntercomConnector.js +69 -0
  161. package/dist/connectors/JenkinsConnector.d.ts +12 -0
  162. package/dist/connectors/JenkinsConnector.js +96 -0
  163. package/dist/connectors/JiraConnector.d.ts +12 -0
  164. package/dist/connectors/JiraConnector.js +103 -0
  165. package/dist/connectors/KafkaConnector.d.ts +12 -0
  166. package/dist/connectors/KafkaConnector.js +70 -0
  167. package/dist/connectors/KasperskyConnector.d.ts +12 -0
  168. package/dist/connectors/KasperskyConnector.js +70 -0
  169. package/dist/connectors/KubernetesConnector.d.ts +12 -0
  170. package/dist/connectors/KubernetesConnector.js +109 -0
  171. package/dist/connectors/LaceworkConnector.d.ts +13 -0
  172. package/dist/connectors/LaceworkConnector.js +143 -0
  173. package/dist/connectors/LaunchDarklyConnector.d.ts +12 -0
  174. package/dist/connectors/LaunchDarklyConnector.js +86 -0
  175. package/dist/connectors/LinodeConnector.d.ts +12 -0
  176. package/dist/connectors/LinodeConnector.js +70 -0
  177. package/dist/connectors/LookerConnector.d.ts +12 -0
  178. package/dist/connectors/LookerConnector.js +94 -0
  179. package/dist/connectors/MailchimpConnector.d.ts +12 -0
  180. package/dist/connectors/MailchimpConnector.js +71 -0
  181. package/dist/connectors/MalwarebytesConnector.d.ts +12 -0
  182. package/dist/connectors/MalwarebytesConnector.js +85 -0
  183. package/dist/connectors/McAfeeConnector.d.ts +12 -0
  184. package/dist/connectors/McAfeeConnector.js +85 -0
  185. package/dist/connectors/Microsoft365Connector.d.ts +12 -0
  186. package/dist/connectors/Microsoft365Connector.js +139 -0
  187. package/dist/connectors/MongoDBConnector.d.ts +12 -0
  188. package/dist/connectors/MongoDBConnector.js +86 -0
  189. package/dist/connectors/NamelyConnector.d.ts +12 -0
  190. package/dist/connectors/NamelyConnector.js +97 -0
  191. package/dist/connectors/Neo4jConnector.d.ts +12 -0
  192. package/dist/connectors/Neo4jConnector.js +70 -0
  193. package/dist/connectors/NetSuiteConnector.d.ts +12 -0
  194. package/dist/connectors/NetSuiteConnector.js +94 -0
  195. package/dist/connectors/NetskopeConnector.d.ts +12 -0
  196. package/dist/connectors/NetskopeConnector.js +98 -0
  197. package/dist/connectors/NexusConnector.d.ts +12 -0
  198. package/dist/connectors/NexusConnector.js +93 -0
  199. package/dist/connectors/NotionConnector.d.ts +12 -0
  200. package/dist/connectors/NotionConnector.js +109 -0
  201. package/dist/connectors/OktaConnector.d.ts +12 -0
  202. package/dist/connectors/OktaConnector.js +123 -0
  203. package/dist/connectors/OktaSystemLogConnector.d.ts +12 -0
  204. package/dist/connectors/OktaSystemLogConnector.js +129 -0
  205. package/dist/connectors/OpsgenieConnector.d.ts +12 -0
  206. package/dist/connectors/OpsgenieConnector.js +70 -0
  207. package/dist/connectors/PagerDutyConnector.d.ts +12 -0
  208. package/dist/connectors/PagerDutyConnector.js +106 -0
  209. package/dist/connectors/PalantirConnector.d.ts +12 -0
  210. package/dist/connectors/PalantirConnector.js +95 -0
  211. package/dist/connectors/PaloAltoPrismaCloudConnector.d.ts +12 -0
  212. package/dist/connectors/PaloAltoPrismaCloudConnector.js +110 -0
  213. package/dist/connectors/PingFederateConnector.d.ts +12 -0
  214. package/dist/connectors/PingFederateConnector.js +97 -0
  215. package/dist/connectors/PostgreSQLCloudConnector.d.ts +12 -0
  216. package/dist/connectors/PostgreSQLCloudConnector.js +70 -0
  217. package/dist/connectors/PowerBIConnector.d.ts +12 -0
  218. package/dist/connectors/PowerBIConnector.js +95 -0
  219. package/dist/connectors/PrismaCloudConnector.d.ts +12 -0
  220. package/dist/connectors/PrismaCloudConnector.js +147 -0
  221. package/dist/connectors/QualysConnector.d.ts +12 -0
  222. package/dist/connectors/QualysConnector.js +96 -0
  223. package/dist/connectors/QualysScannerConnector.d.ts +12 -0
  224. package/dist/connectors/QualysScannerConnector.js +131 -0
  225. package/dist/connectors/QuickBooksConnector.d.ts +12 -0
  226. package/dist/connectors/QuickBooksConnector.js +97 -0
  227. package/dist/connectors/RabbitMQConnector.d.ts +12 -0
  228. package/dist/connectors/RabbitMQConnector.js +69 -0
  229. package/dist/connectors/RadwareConnector.d.ts +12 -0
  230. package/dist/connectors/RadwareConnector.js +94 -0
  231. package/dist/connectors/RedisCloudConnector.d.ts +12 -0
  232. package/dist/connectors/RedisCloudConnector.js +70 -0
  233. package/dist/connectors/RingCentralConnector.d.ts +12 -0
  234. package/dist/connectors/RingCentralConnector.js +94 -0
  235. package/dist/connectors/SAPSuccessFactorsConnector.d.ts +12 -0
  236. package/dist/connectors/SAPSuccessFactorsConnector.js +103 -0
  237. package/dist/connectors/SailPointConnector.d.ts +12 -0
  238. package/dist/connectors/SailPointConnector.js +97 -0
  239. package/dist/connectors/SalesforceConnector.d.ts +12 -0
  240. package/dist/connectors/SalesforceConnector.js +91 -0
  241. package/dist/connectors/SendGridConnector.d.ts +12 -0
  242. package/dist/connectors/SendGridConnector.js +69 -0
  243. package/dist/connectors/SentinelOneConnector.d.ts +12 -0
  244. package/dist/connectors/SentinelOneConnector.js +89 -0
  245. package/dist/connectors/ServiceNowConnector.d.ts +12 -0
  246. package/dist/connectors/ServiceNowConnector.js +123 -0
  247. package/dist/connectors/SlackConnector.d.ts +12 -0
  248. package/dist/connectors/SlackConnector.js +109 -0
  249. package/dist/connectors/SnowflakeConnector.d.ts +12 -0
  250. package/dist/connectors/SnowflakeConnector.js +105 -0
  251. package/dist/connectors/SnykConnector.d.ts +12 -0
  252. package/dist/connectors/SnykConnector.js +84 -0
  253. package/dist/connectors/SnykMonitorConnector.d.ts +12 -0
  254. package/dist/connectors/SnykMonitorConnector.js +131 -0
  255. package/dist/connectors/SophosConnector.d.ts +12 -0
  256. package/dist/connectors/SophosConnector.js +87 -0
  257. package/dist/connectors/SpinnakerConnector.d.ts +12 -0
  258. package/dist/connectors/SpinnakerConnector.js +70 -0
  259. package/dist/connectors/SplunkConnector.d.ts +12 -0
  260. package/dist/connectors/SplunkConnector.js +126 -0
  261. package/dist/connectors/StripeConnector.d.ts +12 -0
  262. package/dist/connectors/StripeConnector.js +97 -0
  263. package/dist/connectors/TableauConnector.d.ts +12 -0
  264. package/dist/connectors/TableauConnector.js +101 -0
  265. package/dist/connectors/TaniumConnector.d.ts +12 -0
  266. package/dist/connectors/TaniumConnector.js +97 -0
  267. package/dist/connectors/TeamCityConnector.d.ts +12 -0
  268. package/dist/connectors/TeamCityConnector.js +71 -0
  269. package/dist/connectors/TeamsConnector.d.ts +12 -0
  270. package/dist/connectors/TeamsConnector.js +96 -0
  271. package/dist/connectors/TenableIOConnector.d.ts +12 -0
  272. package/dist/connectors/TenableIOConnector.js +130 -0
  273. package/dist/connectors/TerraformCloudConnector.d.ts +12 -0
  274. package/dist/connectors/TerraformCloudConnector.js +106 -0
  275. package/dist/connectors/TravisCIConnector.d.ts +12 -0
  276. package/dist/connectors/TravisCIConnector.js +95 -0
  277. package/dist/connectors/TrendMicroConnector.d.ts +12 -0
  278. package/dist/connectors/TrendMicroConnector.js +85 -0
  279. package/dist/connectors/TwilioConnector.d.ts +12 -0
  280. package/dist/connectors/TwilioConnector.js +70 -0
  281. package/dist/connectors/VercelConnector.d.ts +12 -0
  282. package/dist/connectors/VercelConnector.js +70 -0
  283. package/dist/connectors/VultrConnector.d.ts +12 -0
  284. package/dist/connectors/VultrConnector.js +70 -0
  285. package/dist/connectors/WebexConnector.d.ts +12 -0
  286. package/dist/connectors/WebexConnector.js +94 -0
  287. package/dist/connectors/WizConnector.d.ts +12 -0
  288. package/dist/connectors/WizConnector.js +172 -0
  289. package/dist/connectors/WorkdayConnector.d.ts +12 -0
  290. package/dist/connectors/WorkdayConnector.js +100 -0
  291. package/dist/connectors/XeroConnector.d.ts +12 -0
  292. package/dist/connectors/XeroConnector.js +96 -0
  293. package/dist/connectors/ZapierConnector.d.ts +12 -0
  294. package/dist/connectors/ZapierConnector.js +70 -0
  295. package/dist/connectors/ZendeskConnector.d.ts +12 -0
  296. package/dist/connectors/ZendeskConnector.js +71 -0
  297. package/dist/connectors/ZenefitsConnector.d.ts +12 -0
  298. package/dist/connectors/ZenefitsConnector.js +93 -0
  299. package/dist/connectors/ZoomConnector.d.ts +12 -0
  300. package/dist/connectors/ZoomConnector.js +97 -0
  301. package/dist/connectors/ZscalerConnector.d.ts +12 -0
  302. package/dist/connectors/ZscalerConnector.js +97 -0
  303. package/dist/connectors/index.d.ts +150 -0
  304. package/dist/connectors/index.js +157 -0
  305. package/dist/index.d.ts +5 -0
  306. package/dist/index.js +16 -0
  307. package/dist/index.test.d.ts +1 -0
  308. package/dist/index.test.js +139 -0
  309. package/dist/types.d.ts +57 -0
  310. package/dist/types.js +8 -0
  311. package/package.json +33 -0
@@ -0,0 +1,143 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "lacework-alerts",
5
+ name: "Alerts & Anomalies",
6
+ description: "Fetch Lacework anomaly detection alerts and threat findings",
7
+ evidenceCategories: ["threat_detection", "anomaly_detection"],
8
+ },
9
+ {
10
+ id: "lacework-compliance",
11
+ name: "Compliance Assessment",
12
+ description: "Fetch Lacework compliance posture across cloud accounts",
13
+ evidenceCategories: ["compliance", "configuration"],
14
+ },
15
+ {
16
+ id: "lacework-activity",
17
+ name: "Activity Analysis",
18
+ description: "Fetch host and cloud activity analysis results",
19
+ evidenceCategories: ["audit", "monitoring"],
20
+ },
21
+ {
22
+ id: "lacework-vulnerabilities",
23
+ name: "Vulnerability Assessment",
24
+ description: "Fetch Lacework vulnerability findings for containers and hosts",
25
+ evidenceCategories: ["vulnerability_management", "container_security"],
26
+ },
27
+ ];
28
+ export class LaceworkConnector {
29
+ id = "lacework";
30
+ name = "Lacework";
31
+ category = "monitoring";
32
+ authType = "api_key";
33
+ capabilities = capabilities;
34
+ frameworks = [
35
+ "SOC2",
36
+ "ISO27001",
37
+ "NIST_CSF",
38
+ "PCI_DSS",
39
+ "HIPAA",
40
+ ];
41
+ async generateSignature(config, timestamp, method, path, body) {
42
+ const stringToSign = `${method}\n${path}\n\n\n${timestamp}`;
43
+ const key = Buffer.from(config.clientSecret || "", "base64");
44
+ const hmac = await crypto.subtle.importKey("raw", key, { name: "HMAC", hash: "SHA-256" }, false, ["sign"]);
45
+ const sig = await crypto.subtle.sign("HMAC", hmac, Buffer.from(stringToSign));
46
+ return Buffer.from(sig).toString("base64");
47
+ }
48
+ async fetchApi(config, path, body) {
49
+ const base = config.baseUrl || "https://api.lacework.net";
50
+ const timestamp = new Date().toISOString();
51
+ const bodyStr = body ? JSON.stringify(body) : "";
52
+ const signature = await this.generateSignature(config, timestamp, body ? "POST" : "GET", path, bodyStr);
53
+ const resp = await fetch(`${base}${path}`, {
54
+ method: body ? "POST" : "GET",
55
+ headers: {
56
+ Authorization: `ACCESS:${config.clientId}:${signature}`,
57
+ "X-LW-Date": timestamp,
58
+ "Content-Type": "application/json",
59
+ Accept: "application/json",
60
+ },
61
+ body: body ? bodyStr : undefined,
62
+ });
63
+ if (!resp.ok)
64
+ throw new Error(`Lacework API ${resp.status}: ${resp.statusText}`);
65
+ return (await resp.json());
66
+ }
67
+ async testConnection(config) {
68
+ try {
69
+ await this.fetchApi(config, "/api/v1/alerts/2.0/alerts/OWASP_TOP_10");
70
+ return true;
71
+ }
72
+ catch {
73
+ return false;
74
+ }
75
+ }
76
+ async collectEvidence(config) {
77
+ const artifacts = [];
78
+ const now = new Date().toISOString();
79
+ const account = config.extra?.accountAlias || "default";
80
+ const alerts = await this.fetchApi(config, "/api/v1/alerts/2.0/alerts/RECOMMENDATIONS").catch(() => ({ data: [] }));
81
+ const alertData = Array.isArray(alerts.data) ? alerts.data : [];
82
+ const criticalAlerts = alertData.filter((a) => a.severity === "Critical");
83
+ artifacts.push({
84
+ id: generateEvidenceId(),
85
+ connectorId: this.id,
86
+ capabilityId: "lacework-alerts",
87
+ timestamp: now,
88
+ hash: hashEvidence({ count: alertData.length }),
89
+ framework: "SOC2",
90
+ controlId: "CC7.2",
91
+ source: `lacework/${account}/alerts`,
92
+ status: criticalAlerts.length === 0 ? "compliant" : "non_compliant",
93
+ data: { totalAlerts: alertData.length, criticalAlerts: criticalAlerts.length },
94
+ metadata: { account },
95
+ });
96
+ const compliance = await this.fetchApi(config, "/api/v1/compliance/posture/aws").catch(() => ({ data: [] }));
97
+ const compData = Array.isArray(compliance.data) ? compliance.data : [];
98
+ artifacts.push({
99
+ id: generateEvidenceId(),
100
+ connectorId: this.id,
101
+ capabilityId: "lacework-compliance",
102
+ timestamp: now,
103
+ hash: hashEvidence({ count: compData.length }),
104
+ framework: "ISO27001",
105
+ controlId: "A.12.1.1",
106
+ source: `lacework/${account}/compliance`,
107
+ status: compData.length > 0 ? "compliant" : "partial",
108
+ data: { complianceStandards: compData.length },
109
+ metadata: { account },
110
+ });
111
+ const activity = await this.fetchApi(config, "/api/v1/Activity/evaluate?timeRange=7&timeRangeUnit=day").catch(() => ({ data: [] }));
112
+ const activityData = Array.isArray(activity.data) ? activity.data : [];
113
+ artifacts.push({
114
+ id: generateEvidenceId(),
115
+ connectorId: this.id,
116
+ capabilityId: "lacework-activity",
117
+ timestamp: now,
118
+ hash: hashEvidence({ count: activityData.length }),
119
+ framework: "NIST_CSF",
120
+ controlId: "DE.CM",
121
+ source: `lacework/${account}/activity`,
122
+ status: "compliant",
123
+ data: { activityEvents: activityData.length },
124
+ metadata: { account },
125
+ });
126
+ const vulnerabilities = await this.fetchApi(config, "/api/v1/Vulnerabilities/Container?severity=CRITICAL,HIGH&limit=100").catch(() => ({ data: [] }));
127
+ const vulnData = Array.isArray(vulnerabilities.data) ? vulnerabilities.data : [];
128
+ artifacts.push({
129
+ id: generateEvidenceId(),
130
+ connectorId: this.id,
131
+ capabilityId: "lacework-vulnerabilities",
132
+ timestamp: now,
133
+ hash: hashEvidence({ count: vulnData.length }),
134
+ framework: "PCI_DSS",
135
+ controlId: "6.5.1",
136
+ source: `lacework/${account}/vulnerabilities`,
137
+ status: vulnData.length === 0 ? "compliant" : "non_compliant",
138
+ data: { containerVulns: vulnData.length },
139
+ metadata: { account },
140
+ });
141
+ return artifacts;
142
+ }
143
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class LaunchDarklyConnector implements IntegrationConnector {
3
+ readonly id = "launchdarkly";
4
+ readonly name = "LaunchDarkly";
5
+ readonly category: "ci_cd";
6
+ readonly authType: "api_key";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,86 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "launchdarkly-flags",
5
+ name: "Feature Flags",
6
+ description: "Fetch LaunchDarkly feature flag configurations and targeting rules",
7
+ evidenceCategories: ["configuration", "change_management"],
8
+ },
9
+ {
10
+ id: "launchdarkly-audit",
11
+ name: "Audit Log",
12
+ description: "Fetch LaunchDarkly audit log events for flag changes and approvals",
13
+ evidenceCategories: ["audit", "change_management"],
14
+ },
15
+ {
16
+ id: "launchdarkly-access",
17
+ name: "Access Controls",
18
+ description: "Fetch LaunchDarkly role assignments and API key management",
19
+ evidenceCategories: ["access_control", "secret_management"],
20
+ },
21
+ ];
22
+ export class LaunchDarklyConnector {
23
+ id = "launchdarkly";
24
+ name = "LaunchDarkly";
25
+ category = "ci_cd";
26
+ authType = "api_key";
27
+ capabilities = capabilities;
28
+ frameworks = ["SOC2", "ISO27001"];
29
+ async fetchApi(config, endpoint) {
30
+ const base = config.baseUrl || "https://app.launchdarkly.com/api/v2";
31
+ const resp = await fetch(`${base}${endpoint}`, {
32
+ headers: {
33
+ Authorization: `${config.apiToken}`,
34
+ "Content-Type": "application/json",
35
+ },
36
+ });
37
+ if (!resp.ok)
38
+ throw new Error(`LaunchDarkly API ${resp.status}: ${resp.statusText}`);
39
+ return (await resp.json());
40
+ }
41
+ async testConnection(config) {
42
+ try {
43
+ await this.fetchApi(config, "/projects");
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async collectEvidence(config) {
51
+ const artifacts = [];
52
+ const now = new Date().toISOString();
53
+ const project = config.extra?.project || "default";
54
+ const flags = await this.fetchApi(config, `/projects/${project}/flags?limit=100`).catch(() => ({ items: [] }));
55
+ const flagList = (flags.items || []);
56
+ artifacts.push({
57
+ id: generateEvidenceId(),
58
+ connectorId: this.id,
59
+ capabilityId: "launchdarkly-flags",
60
+ timestamp: now,
61
+ hash: hashEvidence({ flagCount: flagList.length }),
62
+ framework: "SOC2",
63
+ controlId: "CC8.1",
64
+ source: "launchdarkly/flags",
65
+ status: "unknown",
66
+ data: { flagCount: flagList.length },
67
+ metadata: { project },
68
+ });
69
+ const auditLog = await this.fetchApi(config, `/auditlog?limit=100`).catch(() => ({ items: [] }));
70
+ const auditList = (auditLog.items || []);
71
+ artifacts.push({
72
+ id: generateEvidenceId(),
73
+ connectorId: this.id,
74
+ capabilityId: "launchdarkly-audit",
75
+ timestamp: now,
76
+ hash: hashEvidence({ auditCount: auditList.length }),
77
+ framework: "SOC2",
78
+ controlId: "CC7.2",
79
+ source: "launchdarkly/auditlog",
80
+ status: "unknown",
81
+ data: { recentAuditEvents: auditList.length },
82
+ metadata: {},
83
+ });
84
+ return artifacts;
85
+ }
86
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class LinodeConnector implements IntegrationConnector {
3
+ readonly id = "linode";
4
+ readonly name = "Linode (Akamai)";
5
+ readonly category: "cloud_provider";
6
+ readonly authType: "bearer_token";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,70 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "linode-linodes",
5
+ name: "Linode Instances",
6
+ description: "Fetch Linode instance configurations and status",
7
+ evidenceCategories: ["cloud_configuration", "infrastructure"],
8
+ },
9
+ {
10
+ id: "linode-firewalls",
11
+ name: "Cloud Firewalls",
12
+ description: "Fetch cloud firewall rules and network policies",
13
+ evidenceCategories: ["network_security", "access_control"],
14
+ },
15
+ {
16
+ id: "linode-volumes",
17
+ name: "Block Storage",
18
+ description: "Fetch block storage volume configurations and encryption status",
19
+ evidenceCategories: ["data_protection", "cloud_configuration"],
20
+ },
21
+ ];
22
+ export class LinodeConnector {
23
+ id = "linode";
24
+ name = "Linode (Akamai)";
25
+ category = "cloud_provider";
26
+ authType = "bearer_token";
27
+ capabilities = capabilities;
28
+ frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
29
+ async fetchApi(config, endpoint) {
30
+ const base = config.baseUrl || "https://api.linode.com/v4";
31
+ const resp = await fetch(`${base}${endpoint}`, {
32
+ headers: {
33
+ Authorization: `Bearer ${config.apiToken}`,
34
+ "Content-Type": "application/json",
35
+ },
36
+ });
37
+ if (!resp.ok)
38
+ throw new Error(`Linode API ${resp.status}: ${resp.statusText}`);
39
+ return (await resp.json());
40
+ }
41
+ async testConnection(config) {
42
+ try {
43
+ await this.fetchApi(config, "/linode/instances?pageSize=1");
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async collectEvidence(config) {
51
+ const artifacts = [];
52
+ const now = new Date().toISOString();
53
+ const linodes = await this.fetchApi(config, "/linode/instances?pageSize=100").catch(() => ({ data: [] }));
54
+ const linodeList = (linodes.data || []);
55
+ artifacts.push({
56
+ id: generateEvidenceId(),
57
+ connectorId: this.id,
58
+ capabilityId: "linode-linodes",
59
+ timestamp: now,
60
+ hash: hashEvidence({ instanceCount: linodeList.length }),
61
+ framework: "SOC2",
62
+ controlId: "CC6.1",
63
+ source: "linode/instances",
64
+ status: "unknown",
65
+ data: { instanceCount: linodeList.length },
66
+ metadata: {},
67
+ });
68
+ return artifacts;
69
+ }
70
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class LookerConnector implements IntegrationConnector {
3
+ readonly id = "looker";
4
+ readonly name = "Looker";
5
+ readonly category: "data_warehouse";
6
+ readonly authType: "api_key";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,94 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "looker-projects",
5
+ name: "Project Security",
6
+ description: "Fetch LookML project permissions and Git connection settings",
7
+ evidenceCategories: ["access_control", "change_management"],
8
+ },
9
+ {
10
+ id: "looker-roles",
11
+ name: "Role-Based Access",
12
+ description: "Fetch roles, model sets, and permission sets",
13
+ evidenceCategories: ["access_control", "configuration"],
14
+ },
15
+ {
16
+ id: "looker-content",
17
+ name: "Content Access",
18
+ description: "Fetch dashboard and look permissions and scheduling",
19
+ evidenceCategories: ["access_control", "data_protection"],
20
+ },
21
+ {
22
+ id: "looker-queries",
23
+ name: "Query History",
24
+ description: "Fetch user query history and data access patterns",
25
+ evidenceCategories: ["monitoring", "access_control"],
26
+ },
27
+ ];
28
+ export class LookerConnector {
29
+ id = "looker";
30
+ name = "Looker";
31
+ category = "data_warehouse";
32
+ authType = "api_key";
33
+ capabilities = capabilities;
34
+ frameworks = [
35
+ "SOC2",
36
+ "ISO27001",
37
+ "NIST_CSF",
38
+ "HIPAA",
39
+ ];
40
+ async fetchApi(config, endpoint) {
41
+ const base = config.baseUrl || "https://looker.example.com/api/4.0";
42
+ const resp = await fetch(`${base}${endpoint}`, {
43
+ headers: {
44
+ Authorization: `Bearer ${config.apiToken}`,
45
+ "Content-Type": "application/json",
46
+ },
47
+ });
48
+ if (!resp.ok)
49
+ throw new Error(`Looker API ${resp.status}: ${resp.statusText}`);
50
+ return (await resp.json());
51
+ }
52
+ async testConnection(config) {
53
+ try {
54
+ await this.fetchApi(config, "/user");
55
+ return true;
56
+ }
57
+ catch {
58
+ return false;
59
+ }
60
+ }
61
+ async collectEvidence(config) {
62
+ const artifacts = [];
63
+ const now = new Date().toISOString();
64
+ const roles = await this.fetchApi(config, "/roles").catch(() => []);
65
+ artifacts.push({
66
+ id: generateEvidenceId(),
67
+ connectorId: this.id,
68
+ capabilityId: "looker-roles",
69
+ timestamp: now,
70
+ hash: hashEvidence(Array.isArray(roles) ? { count: roles.length } : roles),
71
+ framework: "SOC2",
72
+ controlId: "CC6.1",
73
+ source: "looker/roles",
74
+ status: Array.isArray(roles) && roles.length > 0 ? "compliant" : "unknown",
75
+ data: { roleCount: Array.isArray(roles) ? roles.length : 0 },
76
+ metadata: {},
77
+ });
78
+ const projects = await this.fetchApi(config, "/projects").catch(() => []);
79
+ artifacts.push({
80
+ id: generateEvidenceId(),
81
+ connectorId: this.id,
82
+ capabilityId: "looker-projects",
83
+ timestamp: now,
84
+ hash: hashEvidence(Array.isArray(projects) ? { count: projects.length } : projects),
85
+ framework: "ISO27001",
86
+ controlId: "A.6.2.1",
87
+ source: "looker/projects",
88
+ status: Array.isArray(projects) && projects.length > 0 ? "compliant" : "non_compliant",
89
+ data: { projectCount: Array.isArray(projects) ? projects.length : 0 },
90
+ metadata: {},
91
+ });
92
+ return artifacts;
93
+ }
94
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class MailchimpConnector implements IntegrationConnector {
3
+ readonly id = "mailchimp";
4
+ readonly name = "Mailchimp";
5
+ readonly category: "communication";
6
+ readonly authType: "api_key";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,71 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "mailchimp-lists",
5
+ name: "Audience Lists",
6
+ description: "Fetch Mailchimp audience lists, subscriber counts, and segmentation",
7
+ evidenceCategories: ["data_protection", "configuration"],
8
+ },
9
+ {
10
+ id: "mailchimp-security",
11
+ name: "Security Settings",
12
+ description: "Fetch Mailchimp API key permissions, 2FA status, and login history",
13
+ evidenceCategories: ["access_control", "audit"],
14
+ },
15
+ {
16
+ id: "mailchimp-campaigns",
17
+ name: "Campaign Statistics",
18
+ description: "Fetch email campaign performance and delivery metrics",
19
+ evidenceCategories: ["monitoring", "configuration"],
20
+ },
21
+ ];
22
+ export class MailchimpConnector {
23
+ id = "mailchimp";
24
+ name = "Mailchimp";
25
+ category = "communication";
26
+ authType = "api_key";
27
+ capabilities = capabilities;
28
+ frameworks = ["SOC2", "ISO27001"];
29
+ async fetchApi(config, endpoint) {
30
+ const dc = config.extra?.dc || "us1";
31
+ const base = config.baseUrl || `https://${dc}.api.mailchimp.com/3.0`;
32
+ const resp = await fetch(`${base}${endpoint}`, {
33
+ headers: {
34
+ Authorization: `Bearer ${config.apiToken}`,
35
+ "Content-Type": "application/json",
36
+ },
37
+ });
38
+ if (!resp.ok)
39
+ throw new Error(`Mailchimp API ${resp.status}: ${resp.statusText}`);
40
+ return (await resp.json());
41
+ }
42
+ async testConnection(config) {
43
+ try {
44
+ await this.fetchApi(config, "/ping");
45
+ return true;
46
+ }
47
+ catch {
48
+ return false;
49
+ }
50
+ }
51
+ async collectEvidence(config) {
52
+ const artifacts = [];
53
+ const now = new Date().toISOString();
54
+ const lists = await this.fetchApi(config, "/lists?count=100").catch(() => ({ lists: [] }));
55
+ const listList = (lists.lists || []);
56
+ artifacts.push({
57
+ id: generateEvidenceId(),
58
+ connectorId: this.id,
59
+ capabilityId: "mailchimp-lists",
60
+ timestamp: now,
61
+ hash: hashEvidence({ listCount: listList.length }),
62
+ framework: "SOC2",
63
+ controlId: "CC6.1",
64
+ source: "mailchimp/lists",
65
+ status: "unknown",
66
+ data: { audienceCount: listList.length },
67
+ metadata: {},
68
+ });
69
+ return artifacts;
70
+ }
71
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class MalwarebytesConnector implements IntegrationConnector {
3
+ readonly id = "malwarebytes";
4
+ readonly name = "Malwarebytes";
5
+ readonly category: "endpoint";
6
+ readonly authType: "api_key";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,85 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "malwarebytes-endpoints",
5
+ name: "Endpoint Protection",
6
+ description: "Fetch Malwarebytes agent deployment status and protection health",
7
+ evidenceCategories: ["endpoint_security", "monitoring"],
8
+ },
9
+ {
10
+ id: "malwarebytes-detections",
11
+ name: "Threat Detections",
12
+ description: "Fetch threat detection and remediation events",
13
+ evidenceCategories: ["vulnerability_management", "monitoring"],
14
+ },
15
+ {
16
+ id: "malwarebytes-policies",
17
+ name: "Protection Policies",
18
+ description: "Fetch policy configurations and scan schedules",
19
+ evidenceCategories: ["policy_compliance", "configuration"],
20
+ },
21
+ ];
22
+ export class MalwarebytesConnector {
23
+ id = "malwarebytes";
24
+ name = "Malwarebytes";
25
+ category = "endpoint";
26
+ authType = "api_key";
27
+ capabilities = capabilities;
28
+ frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
29
+ async fetchApi(config, endpoint) {
30
+ const base = config.baseUrl || "https://api.malwarebytes.com/v2";
31
+ const resp = await fetch(`${base}${endpoint}`, {
32
+ headers: {
33
+ Authorization: `Bearer ${config.apiToken}`,
34
+ "Content-Type": "application/json",
35
+ },
36
+ });
37
+ if (!resp.ok)
38
+ throw new Error(`Malwarebytes API ${resp.status}: ${resp.statusText}`);
39
+ return (await resp.json());
40
+ }
41
+ async testConnection(config) {
42
+ try {
43
+ await this.fetchApi(config, "/machines?limit=1");
44
+ return true;
45
+ }
46
+ catch {
47
+ return false;
48
+ }
49
+ }
50
+ async collectEvidence(config) {
51
+ const artifacts = [];
52
+ const now = new Date().toISOString();
53
+ const machines = await this.fetchApi(config, "/machines?limit=100").catch(() => ({ items: [] }));
54
+ const machineList = (machines.items || []);
55
+ artifacts.push({
56
+ id: generateEvidenceId(),
57
+ connectorId: this.id,
58
+ capabilityId: "malwarebytes-endpoints",
59
+ timestamp: now,
60
+ hash: hashEvidence({ machineCount: machineList.length }),
61
+ framework: "SOC2",
62
+ controlId: "CC6.8",
63
+ source: "malwarebytes/machines",
64
+ status: machineList.length > 0 ? "compliant" : "unknown",
65
+ data: { endpointCount: machineList.length },
66
+ metadata: {},
67
+ });
68
+ const threats = await this.fetchApi(config, "/threats?limit=10").catch(() => ({ items: [] }));
69
+ const threatList = (threats.items || []);
70
+ artifacts.push({
71
+ id: generateEvidenceId(),
72
+ connectorId: this.id,
73
+ capabilityId: "malwarebytes-detections",
74
+ timestamp: now,
75
+ hash: hashEvidence({ threatCount: threatList.length }),
76
+ framework: "ISO27001",
77
+ controlId: "A.12.2.1",
78
+ source: "malwarebytes/threats",
79
+ status: threatList.length === 0 ? "compliant" : "non_compliant",
80
+ data: { recentThreats: threatList.length },
81
+ metadata: {},
82
+ });
83
+ return artifacts;
84
+ }
85
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class McAfeeConnector implements IntegrationConnector {
3
+ readonly id = "mcafee";
4
+ readonly name = "McAfee (Trellix)";
5
+ readonly category: "endpoint";
6
+ readonly authType: "api_key";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private fetchApi;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }