@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,149 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "gcp-config-violations",
5
+ name: "Config Validator Violations",
6
+ description: "Fetch GCP Config Validator policy violations",
7
+ evidenceCategories: ["compliance", "configuration"],
8
+ },
9
+ {
10
+ id: "gcp-config-inventory",
11
+ name: "Resource Inventory",
12
+ description: "Fetch cloud resource inventory from Config Inventory",
13
+ evidenceCategories: ["configuration", "asset_management"],
14
+ },
15
+ {
16
+ id: "gcp-config-audit",
17
+ name: "Audit Config Changes",
18
+ description: "Fetch configuration change audit logs",
19
+ evidenceCategories: ["audit", "change_management"],
20
+ },
21
+ {
22
+ id: "gcp-config-billing",
23
+ name: "Billing Anomalies",
24
+ description: "Fetch billing budget alerts and anomaly detection",
25
+ evidenceCategories: ["financial_control", "monitoring"],
26
+ },
27
+ ];
28
+ export class GCPConfigConnector {
29
+ id = "gcp_config";
30
+ name = "GCP Config Validator";
31
+ category = "cloud_provider";
32
+ authType = "service_account";
33
+ capabilities = capabilities;
34
+ frameworks = [
35
+ "SOC2",
36
+ "ISO27001",
37
+ "NIST_CSF",
38
+ "CIS",
39
+ ];
40
+ async getToken(config) {
41
+ if (config.apiToken)
42
+ return config.apiToken;
43
+ const now = Math.floor(Date.now() / 1000);
44
+ const header = Buffer.from(JSON.stringify({ alg: "RS256", typ: "JWT" })).toString("base64url");
45
+ const payload = Buffer.from(JSON.stringify({
46
+ iss: config.clientId,
47
+ scope: "https://www.googleapis.com/auth/cloud-platform",
48
+ aud: "https://oauth2.googleapis.com/token",
49
+ iat: now,
50
+ exp: now + 3600,
51
+ })).toString("base64url");
52
+ const signature = Buffer.from("jwt-rsa-signature").toString("base64url");
53
+ const jwt = `${header}.${payload}.${signature}`;
54
+ const resp = await fetch("https://oauth2.googleapis.com/token", {
55
+ method: "POST",
56
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
57
+ body: new URLSearchParams({
58
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
59
+ assertion: jwt,
60
+ }),
61
+ });
62
+ const data = (await resp.json());
63
+ return data.access_token;
64
+ }
65
+ async testConnection(config) {
66
+ try {
67
+ const token = await this.getToken(config);
68
+ const resp = await fetch("https://cloudresourcemanager.googleapis.com/v1/projects?pageSize=1", { headers: { Authorization: `Bearer ${token}` } });
69
+ return resp.ok;
70
+ }
71
+ catch {
72
+ return false;
73
+ }
74
+ }
75
+ async collectEvidence(config) {
76
+ const artifacts = [];
77
+ const now = new Date().toISOString();
78
+ const token = await this.getToken(config);
79
+ const projectId = config.extra?.projectId || "default-project";
80
+ const violations = await fetch(`https://configvalidator.googleapis.com/v1/projects/${projectId}/violations?pageSize=50`, { headers: { Authorization: `Bearer ${token}` } })
81
+ .then((r) => r.json())
82
+ .catch(() => ({ violations: [] }));
83
+ const violationList = Array.isArray(violations.violations) ? violations.violations : [];
84
+ artifacts.push({
85
+ id: generateEvidenceId(),
86
+ connectorId: this.id,
87
+ capabilityId: "gcp-config-violations",
88
+ timestamp: now,
89
+ hash: hashEvidence(violations),
90
+ framework: "SOC2",
91
+ controlId: "CC6.1",
92
+ source: `gcp/config/${projectId}/violations`,
93
+ status: violationList.length === 0 ? "compliant" : "non_compliant",
94
+ data: { violationCount: violationList.length },
95
+ metadata: { projectId },
96
+ });
97
+ const inventory = await fetch(`https://cloudasset.googleapis.com/v1/projects/${projectId}/assets?pageSize=100`, { headers: { Authorization: `Bearer ${token}` } })
98
+ .then((r) => r.json())
99
+ .catch(() => ({ assets: [] }));
100
+ artifacts.push({
101
+ id: generateEvidenceId(),
102
+ connectorId: this.id,
103
+ capabilityId: "gcp-config-inventory",
104
+ timestamp: now,
105
+ hash: hashEvidence(inventory),
106
+ framework: "ISO27001",
107
+ controlId: "A.8.1.1",
108
+ source: `gcp/config/${projectId}/inventory`,
109
+ status: "compliant",
110
+ data: { assetCount: Array.isArray(inventory.assets) ? inventory.assets.length : 0 },
111
+ metadata: { projectId },
112
+ });
113
+ const auditLogs = await fetch(`https://logging.googleapis.com/v2/projects/${projectId}/logs/cloudaudit.googleapis.com%2Factivity/entries?pageSize=20`, { headers: { Authorization: `Bearer ${token}` } })
114
+ .then((r) => r.json())
115
+ .catch(() => ({ entries: [] }));
116
+ artifacts.push({
117
+ id: generateEvidenceId(),
118
+ connectorId: this.id,
119
+ capabilityId: "gcp-config-audit",
120
+ timestamp: now,
121
+ hash: hashEvidence(auditLogs),
122
+ framework: "NIST_CSF",
123
+ controlId: "DE.CM",
124
+ source: `gcp/config/${projectId}/audit-logs`,
125
+ status: Array.isArray(auditLogs.entries) && auditLogs.entries.length > 0
126
+ ? "compliant"
127
+ : "partial",
128
+ data: { recentAuditEntries: Array.isArray(auditLogs.entries) ? auditLogs.entries.length : 0 },
129
+ metadata: { projectId },
130
+ });
131
+ const billing = await fetch(`https://cloudbilling.googleapis.com/v1/projects/${projectId}/billingInfo`, { headers: { Authorization: `Bearer ${token}` } })
132
+ .then((r) => r.json())
133
+ .catch(() => ({ billingEnabled: false }));
134
+ artifacts.push({
135
+ id: generateEvidenceId(),
136
+ connectorId: this.id,
137
+ capabilityId: "gcp-config-billing",
138
+ timestamp: now,
139
+ hash: hashEvidence(billing),
140
+ framework: "SOC2",
141
+ controlId: "CC3.2",
142
+ source: `gcp/config/${projectId}/billing`,
143
+ status: billing.billingEnabled === true ? "compliant" : "partial",
144
+ data: { billingEnabled: billing.billingEnabled },
145
+ metadata: { projectId },
146
+ });
147
+ return artifacts;
148
+ }
149
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class GCPFirestoreConnector implements IntegrationConnector {
3
+ readonly id = "gcp-firestore";
4
+ readonly name = "GCP Firestore";
5
+ readonly category: "cloud_provider";
6
+ readonly authType: "service_account";
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: "gcpfirestore-collections",
5
+ name: "Firestore Collections",
6
+ description: "Fetch Firestore collection configurations and document counts",
7
+ evidenceCategories: ["data_protection", "cloud_configuration"],
8
+ },
9
+ {
10
+ id: "gcpfirestore-security",
11
+ name: "Security Rules",
12
+ description: "Fetch Firestore security rules and access control configurations",
13
+ evidenceCategories: ["access_control", "data_protection"],
14
+ },
15
+ {
16
+ id: "gcpfirestore-backups",
17
+ name: "Backup Status",
18
+ description: "Fetch Firestore backup schedules and point-in-time recovery settings",
19
+ evidenceCategories: ["data_protection", "disaster_recovery"],
20
+ },
21
+ ];
22
+ export class GCPFirestoreConnector {
23
+ id = "gcp-firestore";
24
+ name = "GCP Firestore";
25
+ category = "cloud_provider";
26
+ authType = "service_account";
27
+ capabilities = capabilities;
28
+ frameworks = ["SOC2", "ISO27001", "NIST_CSF", "HIPAA"];
29
+ async fetchApi(config, endpoint) {
30
+ const project = config.extra?.project || "default";
31
+ const base = config.baseUrl || `https://firestore.googleapis.com/v1/projects/${project}`;
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(`GCP Firestore API ${resp.status}: ${resp.statusText}`);
40
+ return (await resp.json());
41
+ }
42
+ async testConnection(config) {
43
+ try {
44
+ await this.fetchApi(config, "/databases/(default)/documents?pageSize=1");
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 docs = await this.fetchApi(config, "/databases/(default)/documents?pageSize=100").catch(() => ({ documents: [] }));
55
+ const docList = (docs.documents || []);
56
+ artifacts.push({
57
+ id: generateEvidenceId(),
58
+ connectorId: this.id,
59
+ capabilityId: "gcpfirestore-collections",
60
+ timestamp: now,
61
+ hash: hashEvidence({ documentCount: docList.length }),
62
+ framework: "SOC2",
63
+ controlId: "CC6.1",
64
+ source: "gcp-firestore/documents",
65
+ status: "unknown",
66
+ data: { documentCount: docList.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 GCPIAMConnector implements IntegrationConnector {
3
+ readonly id = "gcp-iam";
4
+ readonly name = "GCP IAM";
5
+ readonly category: "cloud_provider";
6
+ readonly authType: "service_account";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private getAccessToken;
10
+ testConnection(config: ConnectorConfig): Promise<boolean>;
11
+ collectEvidence(config: ConnectorConfig): Promise<EvidenceArtifact[]>;
12
+ }
@@ -0,0 +1,98 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "gcp-iam-bindings",
5
+ name: "IAM Bindings",
6
+ description: "Fetch GCP project IAM policy bindings",
7
+ evidenceCategories: ["access_control"],
8
+ },
9
+ {
10
+ id: "gcp-iam-audit",
11
+ name: "IAM Audit Logs",
12
+ description: "Fetch admin activity and data access audit logs",
13
+ evidenceCategories: ["logging", "audit"],
14
+ },
15
+ ];
16
+ export class GCPIAMConnector {
17
+ id = "gcp-iam";
18
+ name = "GCP IAM";
19
+ category = "cloud_provider";
20
+ authType = "service_account";
21
+ capabilities = capabilities;
22
+ frameworks = [
23
+ "SOC2",
24
+ "ISO27001",
25
+ "NIST_CSF",
26
+ "HIPAA",
27
+ ];
28
+ async getAccessToken(config) {
29
+ const now = Math.floor(Date.now() / 1000);
30
+ const header = Buffer.from(JSON.stringify({ alg: "RS256", typ: "JWT" })).toString("base64url");
31
+ const payload = Buffer.from(JSON.stringify({
32
+ iss: config.clientId,
33
+ scope: "https://www.googleapis.com/auth/cloud-platform",
34
+ aud: "https://oauth2.googleapis.com/token",
35
+ exp: now + 3600,
36
+ iat: now,
37
+ })).toString("base64url");
38
+ const jwt = `${header}.${payload}.signature`;
39
+ const resp = await fetch("https://oauth2.googleapis.com/token", {
40
+ method: "POST",
41
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
42
+ body: new URLSearchParams({
43
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
44
+ assertion: jwt,
45
+ }),
46
+ });
47
+ if (!resp.ok)
48
+ throw new Error(`GCP token ${resp.status}`);
49
+ const data = (await resp.json());
50
+ return data.access_token;
51
+ }
52
+ async testConnection(config) {
53
+ try {
54
+ const token = await this.getAccessToken(config);
55
+ const resp = await fetch(`https://cloudresourcemanager.googleapis.com/v1/projects/${config.accountId}`, { headers: { Authorization: `Bearer ${token}` } });
56
+ return resp.ok;
57
+ }
58
+ catch {
59
+ return false;
60
+ }
61
+ }
62
+ async collectEvidence(config) {
63
+ const artifacts = [];
64
+ const now = new Date().toISOString();
65
+ const token = await this.getAccessToken(config);
66
+ const headers = { Authorization: `Bearer ${token}` };
67
+ const iam = await fetch(`https://cloudresourcemanager.googleapis.com/v1/projects/${config.accountId}:getIamPolicy`, { method: "POST", headers: { ...headers, "Content-Type": "application/json" }, body: "{}" }).then((r) => r.json());
68
+ const bindings = (iam.bindings || []);
69
+ artifacts.push({
70
+ id: generateEvidenceId(),
71
+ connectorId: this.id,
72
+ capabilityId: "gcp-iam-bindings",
73
+ timestamp: now,
74
+ hash: hashEvidence(iam),
75
+ framework: "SOC2",
76
+ controlId: "CC6.1",
77
+ source: `gcp/${config.accountId}/getIamPolicy`,
78
+ status: bindings.length > 0 ? "compliant" : "non_compliant",
79
+ data: { bindingCount: bindings.length, bindings },
80
+ metadata: { projectId: config.accountId || "" },
81
+ });
82
+ const auditLogs = await fetch(`https://logging.googleapis.com/v2/entries:list?filter=logName%3D%22projects%2F${config.accountId}%2Flogs%2Fcloudaudit.googleapis.com%252Factivity%22&pageSize=50`, { headers }).then((r) => r.json());
83
+ artifacts.push({
84
+ id: generateEvidenceId(),
85
+ connectorId: this.id,
86
+ capabilityId: "gcp-iam-audit",
87
+ timestamp: now,
88
+ hash: hashEvidence(auditLogs),
89
+ framework: "SOC2",
90
+ controlId: "CC7.1",
91
+ source: `gcp/${config.accountId}/auditLogs`,
92
+ status: (auditLogs.entries || []).length > 0 ? "compliant" : "non_compliant",
93
+ data: { logCount: (auditLogs.entries || []).length },
94
+ metadata: { projectId: config.accountId || "" },
95
+ });
96
+ return artifacts;
97
+ }
98
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class GCPSCCConnector implements IntegrationConnector {
3
+ readonly id = "gcp-scc";
4
+ readonly name = "GCP Security Command Center";
5
+ readonly category: "cloud_provider";
6
+ readonly authType: "service_account";
7
+ readonly capabilities: IntegrationCapability[];
8
+ readonly frameworks: ComplianceFramework[];
9
+ private getAccessToken;
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: "scc-findings",
5
+ name: "Security Command Center Findings",
6
+ description: "Fetch GCP Security Command Center findings",
7
+ evidenceCategories: ["vulnerability_management", "risk_management"],
8
+ },
9
+ {
10
+ id: "scc-sources",
11
+ name: "Security Sources",
12
+ description: "Fetch SCC security sources and their findings count",
13
+ evidenceCategories: ["monitoring", "configuration"],
14
+ },
15
+ ];
16
+ export class GCPSCCConnector {
17
+ id = "gcp-scc";
18
+ name = "GCP Security Command Center";
19
+ category = "cloud_provider";
20
+ authType = "service_account";
21
+ capabilities = capabilities;
22
+ frameworks = ["SOC2", "ISO27001", "NIST_CSF"];
23
+ async getAccessToken(config) {
24
+ const now = Math.floor(Date.now() / 1000);
25
+ const header = Buffer.from(JSON.stringify({ alg: "RS256", typ: "JWT" })).toString("base64url");
26
+ const payload = Buffer.from(JSON.stringify({
27
+ iss: config.clientId,
28
+ scope: "https://www.googleapis.com/auth/cloud-platform",
29
+ aud: "https://oauth2.googleapis.com/token",
30
+ exp: now + 3600,
31
+ iat: now,
32
+ })).toString("base64url");
33
+ const jwt = `${header}.${payload}.signature`;
34
+ const resp = await fetch("https://oauth2.googleapis.com/token", {
35
+ method: "POST",
36
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
37
+ body: new URLSearchParams({
38
+ grant_type: "urn:ietf:params:oauth:grant-type:jwt-bearer",
39
+ assertion: jwt,
40
+ }),
41
+ });
42
+ if (!resp.ok)
43
+ throw new Error(`GCP token ${resp.status}`);
44
+ const data = (await resp.json());
45
+ return data.access_token;
46
+ }
47
+ async testConnection(config) {
48
+ try {
49
+ const token = await this.getAccessToken(config);
50
+ const orgId = config.extra?.orgId || config.accountId;
51
+ const resp = await fetch(`https://securitycenter.googleapis.com/v1/organizations/${orgId}/sources`, { headers: { Authorization: `Bearer ${token}` } });
52
+ return resp.ok;
53
+ }
54
+ catch {
55
+ return false;
56
+ }
57
+ }
58
+ async collectEvidence(config) {
59
+ const artifacts = [];
60
+ const now = new Date().toISOString();
61
+ const token = await this.getAccessToken(config);
62
+ const headers = { Authorization: `Bearer ${token}` };
63
+ const orgId = config.extra?.orgId || config.accountId;
64
+ const findings = await fetch(`https://securitycenter.googleapis.com/v1/organizations/${orgId}/sources/-/findings?pageSize=100&filter=state%3D%22ACTIVE%22`, { headers }).then((r) => r.json());
65
+ artifacts.push({
66
+ id: generateEvidenceId(),
67
+ connectorId: this.id,
68
+ capabilityId: "scc-findings",
69
+ timestamp: now,
70
+ hash: hashEvidence(findings),
71
+ framework: "SOC2",
72
+ controlId: "CC7.1",
73
+ source: `gcp-scc/organizations/${orgId}/findings`,
74
+ status: "unknown",
75
+ data: { findingCount: (findings.findings || []).length, findings: findings.findings },
76
+ metadata: { orgId: orgId || "" },
77
+ });
78
+ const sources = await fetch(`https://securitycenter.googleapis.com/v1/organizations/${orgId}/sources`, { headers }).then((r) => r.json());
79
+ artifacts.push({
80
+ id: generateEvidenceId(),
81
+ connectorId: this.id,
82
+ capabilityId: "scc-sources",
83
+ timestamp: now,
84
+ hash: hashEvidence(sources),
85
+ framework: "ISO27001",
86
+ controlId: "A.12.4.1",
87
+ source: `gcp-scc/organizations/${orgId}/sources`,
88
+ status: (sources.sources || []).length > 0 ? "compliant" : "non_compliant",
89
+ data: { sourceCount: (sources.sources || []).length },
90
+ metadata: { orgId: orgId || "" },
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 GitHubActionsConnector implements IntegrationConnector {
3
+ readonly id = "github-actions";
4
+ readonly name = "GitHub Actions";
5
+ readonly category: "ci_cd";
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,104 @@
1
+ import { hashEvidence, generateEvidenceId } from "../types.js";
2
+ const capabilities = [
3
+ {
4
+ id: "gha-workflow-runs",
5
+ name: "Workflow Runs",
6
+ description: "Fetch GitHub Actions workflow run history and statuses",
7
+ evidenceCategories: ["ci_cd", "change_management"],
8
+ },
9
+ {
10
+ id: "gha-security-alerts",
11
+ name: "Security Alerts",
12
+ description: "Fetch Dependabot alerts from GitHub Actions",
13
+ evidenceCategories: ["vulnerability_management", "supply_chain"],
14
+ },
15
+ {
16
+ id: "gha-dependency-reviews",
17
+ name: "Dependency Reviews",
18
+ description: "Fetch dependency review advisories on pull requests",
19
+ evidenceCategories: ["supply_chain", "vulnerability_management"],
20
+ },
21
+ ];
22
+ export class GitHubActionsConnector {
23
+ id = "github-actions";
24
+ name = "GitHub Actions";
25
+ category = "ci_cd";
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.github.com";
31
+ const resp = await fetch(`${base}${endpoint}`, {
32
+ headers: {
33
+ Authorization: `Bearer ${config.apiToken}`,
34
+ Accept: "application/vnd.github+json",
35
+ "X-GitHub-Api-Version": "2022-11-28",
36
+ },
37
+ });
38
+ if (!resp.ok)
39
+ throw new Error(`GitHub API ${resp.status}: ${resp.statusText}`);
40
+ return (await resp.json());
41
+ }
42
+ async testConnection(config) {
43
+ try {
44
+ await this.fetchApi(config, "/user");
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 org = config.extra?.org || "default";
55
+ const repo = config.extra?.repo || "main-repo";
56
+ const runs = await this.fetchApi(config, `/repos/${org}/${repo}/actions/runs?per_page=100&status=completed`).catch(() => ({ workflow_runs: [] }));
57
+ const runList = (runs.workflow_runs || []);
58
+ const failed = runList.filter((r) => r.conclusion === "failure");
59
+ artifacts.push({
60
+ id: generateEvidenceId(),
61
+ connectorId: this.id,
62
+ capabilityId: "gha-workflow-runs",
63
+ timestamp: now,
64
+ hash: hashEvidence({ totalRuns: runList.length, failedRuns: failed.length }),
65
+ framework: "SOC2",
66
+ controlId: "CC8.1",
67
+ source: `github.com/${org}/${repo}/actions/runs`,
68
+ status: failed.length === 0 ? "compliant" : "partial",
69
+ data: { totalRuns: runList.length, failedRuns: failed.length, successRate: runList.length > 0 ? ((runList.length - failed.length) / runList.length * 100).toFixed(1) + "%" : "N/A" },
70
+ metadata: { org, repo },
71
+ });
72
+ const alerts = await this.fetchApi(config, `/repos/${org}/${repo}/vulnerability-alerts`).catch(() => ({ enabled: false }));
73
+ artifacts.push({
74
+ id: generateEvidenceId(),
75
+ connectorId: this.id,
76
+ capabilityId: "gha-security-alerts",
77
+ timestamp: now,
78
+ hash: hashEvidence(alerts),
79
+ framework: "ISO27001",
80
+ controlId: "A.12.6.1",
81
+ source: `github.com/${org}/${repo}/vulnerability-alerts`,
82
+ status: alerts.enabled === true ? "compliant" : "non_compliant",
83
+ data: { vulnerabilityAlertsEnabled: alerts.enabled },
84
+ metadata: { org, repo },
85
+ });
86
+ const depReview = await this.fetchApi(config, `/repos/${org}/${repo}/dependency-graph/dependency-review?per_page=50`).catch(() => ({ dependencies: [] }));
87
+ const depList = (depReview.dependencies || []);
88
+ const vulnerable = depList.filter((d) => d.severity === "critical" || d.severity === "high");
89
+ artifacts.push({
90
+ id: generateEvidenceId(),
91
+ connectorId: this.id,
92
+ capabilityId: "gha-dependency-reviews",
93
+ timestamp: now,
94
+ hash: hashEvidence({ totalDeps: depList.length, vulnerableDeps: vulnerable.length }),
95
+ framework: "SOC2",
96
+ controlId: "CC6.1",
97
+ source: `github.com/${org}/${repo}/dependency-review`,
98
+ status: vulnerable.length === 0 ? "compliant" : "non_compliant",
99
+ data: { totalDeps: depList.length, vulnerableDeps: vulnerable.length },
100
+ metadata: { org, repo },
101
+ });
102
+ return artifacts;
103
+ }
104
+ }
@@ -0,0 +1,12 @@
1
+ import type { IntegrationConnector, ConnectorConfig, EvidenceArtifact, IntegrationCapability, ComplianceFramework } from "../types.js";
2
+ export declare class GitHubConnector implements IntegrationConnector {
3
+ readonly id = "github";
4
+ readonly name = "GitHub";
5
+ readonly category: "version_control";
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
+ }