openhound-github 0.4.0__tar.gz → 0.5.0__tar.gz

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 (371) hide show
  1. {openhound_github-0.4.0 → openhound_github-0.5.0}/PKG-INFO +2 -2
  2. openhound_github-0.5.0/descriptions/edges/GH_AssignedTo.md +5 -0
  3. openhound_github-0.5.0/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +9 -0
  4. openhound_github-0.5.0/descriptions/edges/GH_CanUseRunner.md +5 -0
  5. openhound_github-0.5.0/descriptions/edges/GH_Contains.md +3 -0
  6. openhound_github-0.5.0/descriptions/edges/GH_GrantsAccessTo.md +5 -0
  7. openhound_github-0.5.0/descriptions/edges/GH_InheritedFrom.md +5 -0
  8. openhound_github-0.5.0/descriptions/nodes/GH_EnterpriseRunner.md +5 -0
  9. openhound_github-0.5.0/descriptions/nodes/GH_EnterpriseRunnerGroup.md +5 -0
  10. openhound_github-0.5.0/descriptions/nodes/GH_OrgRunner.md +5 -0
  11. openhound_github-0.5.0/descriptions/nodes/GH_OrgRunnerGroup.md +5 -0
  12. openhound_github-0.5.0/descriptions/nodes/GH_RepoRunner.md +5 -0
  13. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/schema.json +71 -9
  14. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/kinds/edges.py +3 -0
  15. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/kinds/nodes.py +3 -0
  16. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/lookup.py +80 -0
  17. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/main.py +4 -0
  18. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/__init__.py +17 -2
  19. openhound_github-0.5.0/src/openhound_github/models/runner.py +879 -0
  20. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/resources/enterprise.py +168 -0
  21. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/resources/organization.py +65 -24
  22. openhound_github-0.5.0/src/openhound_github/runner_ids.py +10 -0
  23. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/transforms.py +48 -0
  24. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_enterprise_resources.py +156 -0
  25. openhound_github-0.5.0/tests/test_runner_ids.py +18 -0
  26. openhound_github-0.5.0/tests/test_runner_models.py +518 -0
  27. openhound_github-0.5.0/tests/test_runner_resources.py +147 -0
  28. openhound_github-0.4.0/descriptions/edges/GH_Contains.md +0 -3
  29. openhound_github-0.4.0/src/openhound_github/models/runner.py +0 -393
  30. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/CODE_OF_CONDUCT.md +0 -0
  31. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/CONTRIBUTING.md +0 -0
  32. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GOVERNANCE.md +0 -0
  33. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-COC-Header.png +0 -0
  34. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-CONTRIB-Header.png +0 -0
  35. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-GOV-Header.png +0 -0
  36. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-Header.png +0 -0
  37. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-LIC-Header.png +0 -0
  38. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/GitHub-SEC-Header.png +0 -0
  39. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/SECURITY.md +0 -0
  40. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/SO-Dark.svg +0 -0
  41. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/SO-FOSS-Dark.svg +0 -0
  42. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/SO-FOSS-Light.svg +0 -0
  43. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/SO-Light.svg +0 -0
  44. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/workflows/publish.yml +0 -0
  45. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/workflows/release-on-merge.yml +0 -0
  46. {openhound_github-0.4.0 → openhound_github-0.5.0}/.github/workflows/validate-branch.yml +0 -0
  47. {openhound_github-0.4.0 → openhound_github-0.5.0}/.gitignore +0 -0
  48. {openhound_github-0.4.0 → openhound_github-0.5.0}/.gitmodules +0 -0
  49. {openhound_github-0.4.0 → openhound_github-0.5.0}/.pre-commit-config.yaml +0 -0
  50. {openhound_github-0.4.0 → openhound_github-0.5.0}/LICENSE.md +0 -0
  51. {openhound_github-0.4.0 → openhound_github-0.5.0}/README.md +0 -0
  52. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_AddAssignee.md +0 -0
  53. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_AddCollaborator.md +0 -0
  54. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_AddLabel.md +0 -0
  55. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_AddMember.md +0 -0
  56. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_AdminTo.md +0 -0
  57. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  58. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  59. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  60. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  61. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanAccess.md +0 -0
  62. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  63. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  64. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  65. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  66. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  67. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanEditProtection.md +0 -0
  68. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  69. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  70. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  71. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  72. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CloseIssue.md +0 -0
  73. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  74. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  75. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  76. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CreateRepository.md +0 -0
  77. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  78. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CreateTag.md +0 -0
  79. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_CreateTeam.md +0 -0
  80. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  81. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  82. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  83. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeleteIssue.md +0 -0
  84. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeleteTag.md +0 -0
  85. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DependsOn.md +0 -0
  86. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_DeploysTo.md +0 -0
  87. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  88. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  89. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  90. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  91. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  92. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  93. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  94. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasBaseRole.md +0 -0
  95. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasBranch.md +0 -0
  96. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasEnvironment.md +0 -0
  97. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  98. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasJob.md +0 -0
  99. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasMember.md +0 -0
  100. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  101. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  102. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasRole.md +0 -0
  103. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  104. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasSecret.md +0 -0
  105. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasStep.md +0 -0
  106. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasVariable.md +0 -0
  107. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_HasWorkflow.md +0 -0
  108. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_InstalledAs.md +0 -0
  109. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_InviteMember.md +0 -0
  110. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  111. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  112. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  113. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  114. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  115. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  116. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  117. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  118. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  119. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  120. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageTopics.md +0 -0
  121. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  122. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_MapsToUser.md +0 -0
  123. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  124. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  125. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_MemberOf.md +0 -0
  126. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  127. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  128. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  129. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  130. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_Owns.md +0 -0
  131. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ProtectedBy.md +0 -0
  132. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  133. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  134. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  135. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  136. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  137. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  138. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  139. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_RemoveLabel.md +0 -0
  140. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  141. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReopenIssue.md +0 -0
  142. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  143. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_RequestPrReview.md +0 -0
  144. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  145. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  146. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  147. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  148. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  149. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_SetIssueType.md +0 -0
  150. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_SetMilestone.md +0 -0
  151. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  152. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_SyncedTo.md +0 -0
  153. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  154. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  155. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_TransferRepository.md +0 -0
  156. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_UsesSecret.md +0 -0
  157. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_UsesVariable.md +0 -0
  158. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ValidToken.md +0 -0
  159. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  160. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  161. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  162. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  163. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  164. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  165. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  166. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  167. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  168. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  169. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  170. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_App.md +0 -0
  171. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_AppInstallation.md +0 -0
  172. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Branch.md +0 -0
  173. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  174. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Environment.md +0 -0
  175. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  176. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  177. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  178. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  179. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_OrgRole.md +0 -0
  180. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_OrgSecret.md +0 -0
  181. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
  182. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Organization.md +0 -0
  183. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  184. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  185. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_RepoRole.md +0 -0
  186. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_RepoSecret.md +0 -0
  187. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
  188. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Repository.md +0 -0
  189. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  190. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  191. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Team.md +0 -0
  192. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_TeamRole.md +0 -0
  193. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_User.md +0 -0
  194. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_Workflow.md +0 -0
  195. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  196. {openhound_github-0.4.0 → openhound_github-0.5.0}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  197. {openhound_github-0.4.0 → openhound_github-0.5.0}/docs/og-docs.json +0 -0
  198. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  199. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
  200. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
  201. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  202. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  203. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  204. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  205. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
  206. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  207. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  208. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  209. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/README.md +0 -0
  210. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  211. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/active-leaked-secrets.json +0 -0
  212. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  213. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/all-actions-allowed.json +0 -0
  214. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/app-installations-all-repos.json +0 -0
  215. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  216. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  217. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  218. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  219. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  220. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  221. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  222. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  223. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  224. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  225. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/default-repository-permissions.json +0 -0
  226. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  227. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  228. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  229. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  230. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/environments-admin-bypass.json +0 -0
  231. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/expired-pats.json +0 -0
  232. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/external-identities-without-scim.json +0 -0
  233. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/github-to-azure-identity.json +0 -0
  234. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/global-repo-perms.json +0 -0
  235. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/hybrid-identities.json +0 -0
  236. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  237. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-create-pages.json +0 -0
  238. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  239. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-delete-repos.json +0 -0
  240. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  241. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  242. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/org-owners.json +0 -0
  243. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/orgs-without-2fa.json +0 -0
  244. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/pats-all-repo-access.json +0 -0
  245. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/pending-pat-requests.json +0 -0
  246. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  247. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  248. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  249. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/public-repos.json +0 -0
  250. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  251. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/push-to-protected-branches.json +0 -0
  252. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  253. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  254. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/repository-workflows.json +0 -0
  255. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/saml-configuration.json +0 -0
  256. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  257. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  258. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  259. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/team-membership-admin.json +0 -0
  260. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/team-structure.json +0 -0
  261. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/unprotected-branches.json +0 -0
  262. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  263. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/unprotected-default-branches.json +0 -0
  264. {openhound_github-0.4.0 → openhound_github-0.5.0}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  265. {openhound_github-0.4.0 → openhound_github-0.5.0}/justfile +0 -0
  266. {openhound_github-0.4.0 → openhound_github-0.5.0}/pyproject.toml +0 -0
  267. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/main.py +0 -0
  268. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/__init__.py +0 -0
  269. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/auth.py +0 -0
  270. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/extension.yaml +0 -0
  271. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/graph.py +0 -0
  272. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/graphql.py +0 -0
  273. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/helpers.py +0 -0
  274. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/actions_permission.py +0 -0
  275. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/app_installation.py +0 -0
  276. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/branch.py +0 -0
  277. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  278. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/branch_protection_rule.py +0 -0
  279. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
  280. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise.py +0 -0
  281. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_admin.py +0 -0
  282. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_helpers.py +0 -0
  283. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  284. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_member.py +0 -0
  285. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_organization.py +0 -0
  286. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_role.py +0 -0
  287. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_role_team.py +0 -0
  288. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_role_user.py +0 -0
  289. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_team.py +0 -0
  290. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_team_member.py +0 -0
  291. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  292. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_team_role.py +0 -0
  293. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/enterprise_user.py +0 -0
  294. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/env_secret.py +0 -0
  295. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/env_variable.py +0 -0
  296. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/environment.py +0 -0
  297. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/environment_branch_policy.py +0 -0
  298. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/external_identity.py +0 -0
  299. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org.py +0 -0
  300. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org_role.py +0 -0
  301. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org_role_member.py +0 -0
  302. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org_role_team.py +0 -0
  303. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org_secret.py +0 -0
  304. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/org_variable.py +0 -0
  305. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/personal_access_token.py +0 -0
  306. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/personal_access_token_access.py +0 -0
  307. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/personal_access_token_request.py +0 -0
  308. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  309. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/repo_role_assignment.py +0 -0
  310. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/repository.py +0 -0
  311. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/repository_role.py +0 -0
  312. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/repository_secret.py +0 -0
  313. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/repository_variable.py +0 -0
  314. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  315. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/saml_helpers.py +0 -0
  316. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/saml_issuer.py +0 -0
  317. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/saml_provider.py +0 -0
  318. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/saml_service_provider.py +0 -0
  319. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/scim_user.py +0 -0
  320. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  321. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/team.py +0 -0
  322. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/team_member.py +0 -0
  323. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/team_role.py +0 -0
  324. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/user.py +0 -0
  325. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/workflow.py +0 -0
  326. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/workflow_job.py +0 -0
  327. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/models/workflow_step.py +0 -0
  328. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/resources/__init__.py +0 -0
  329. {openhound_github-0.4.0 → openhound_github-0.5.0}/src/openhound_github/source.py +0 -0
  330. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_branch_collection_gate.py +0 -0
  331. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_branch_protection_traversability.py +0 -0
  332. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/actions-permissions.json +0 -0
  333. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/actionsecrets.json +0 -0
  334. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/app.json +0 -0
  335. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/appinstalls.json +0 -0
  336. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/branch-policies.json +0 -0
  337. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/branch-prot-rules.json +0 -0
  338. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/branches.json +0 -0
  339. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/custom-roles.json +0 -0
  340. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/environments.json +0 -0
  341. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org-pat-request.json +0 -0
  342. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org-pat.json +0 -0
  343. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org-role-teams.json +0 -0
  344. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org-role-users.json +0 -0
  345. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org-roles.json +0 -0
  346. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/org.json +0 -0
  347. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/pat-repositories.json +0 -0
  348. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/repo-collaborators.json +0 -0
  349. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/repo-teams.json +0 -0
  350. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/repositories.json +0 -0
  351. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/scimusers.json +0 -0
  352. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/secrets.json +0 -0
  353. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/secretscanningalert.json +0 -0
  354. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/selected-org-secrets.json +0 -0
  355. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/variables.json +0 -0
  356. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_data/api/workflows.json +0 -0
  357. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_enterprise_capabilities.py +0 -0
  358. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_enterprise_organization.py +0 -0
  359. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_environment_model.py +0 -0
  360. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_error_resilience.py +0 -0
  361. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_external_identity_tenant_matching.py +0 -0
  362. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_github_rest_client.py +0 -0
  363. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_github_retry.py +0 -0
  364. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_org_secret_models.py +0 -0
  365. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_repository_rulesets.py +0 -0
  366. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_saml_helpers.py +0 -0
  367. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_saml_models.py +0 -0
  368. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_scim_models.py +0 -0
  369. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_variable_models.py +0 -0
  370. {openhound_github-0.4.0 → openhound_github-0.5.0}/tests/test_workflow_model.py +0 -0
  371. {openhound_github-0.4.0 → openhound_github-0.5.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
- Metadata-Version: 2.4
1
+ Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.4.0
3
+ Version: 0.5.0
4
4
  Summary: Github collector for OpenHound
5
5
  Author-email: "jdreijer@specterops.io" <jdreijer@specterops.io>, Jared Atkinson <jatkinson@specterops.io>
6
6
  License-File: LICENSE.md
@@ -0,0 +1,5 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_AssignedTo edge represents an enterprise-scoped object being assigned to an organization. It is currently used for enterprise teams and enterprise runner groups. For runner groups, this edge indicates that an organization is allowed to inherit and use the enterprise-owned runner group.
4
+
5
+ This edge is not traversable because assignment alone does not directly grant a principal a privilege path.
@@ -0,0 +1,9 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CanCreateRepositoryWithRunnerAccess edge is a computed edge indicating that a GH_OrgRole can create a repository whose visibility automatically places it in scope for a GH_OrgRunnerGroup.
4
+
5
+ This edge is emitted only for runner groups with `visibility=all` or `visibility=private`. Groups with `visibility=selected` require explicit repository assignment, so creating a repository does not automatically grant access to the group.
6
+
7
+ The computation follows repository-creation capability edges from the org role to the organization and then GH_Contains to the runner group. For `visibility=all`, public repository creation is included only when `allows_public_repositories=true`; otherwise the composition is limited to private and internal repository creation. Each edge includes a `query_composition` Cypher query showing the underlying graph evidence.
8
+
9
+ This edge represents latent repository eligibility subject to runner-group workflow policy. It is non-traversable because creating an eligible repository does not by itself prove that arbitrary jobs can dispatch to the group's runners.
@@ -0,0 +1,5 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_CanUseRunner edge represents that a repository can dispatch GitHub Actions jobs to a self-hosted runner. Repository-scoped runners receive this edge directly from their containing repository. Organization and enterprise runners receive composed GH_CanUseRunner edges derived from runner group containment and repository access policy.
4
+
5
+ For native organization runner groups, the composition path is `GH_Repository <- GH_GrantsAccessTo - GH_OrgRunnerGroup - GH_Contains -> GH_OrgRunner`. For inherited groups, the path continues through `GH_InheritedFrom` to the enterprise runner group and its contained GH_EnterpriseRunner nodes.
@@ -0,0 +1,3 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_Contains edge represents structural containment within the GitHub resource hierarchy. The enterprise contains enterprise teams, roles, managed users, runner groups, and enterprise runners through their groups. The organization serves as a top-level container for users, teams, repositories, roles, secrets, app installations, personal access tokens, and organization runner groups. Native organization runner groups contain organization runners. Repositories contain branches, workflows, branch protection rules, environments, repo-level secrets and variables, and repository-scoped runners. Environments contain environment branch policies, environment-scoped secrets, and environment-scoped variables. This edge is created by the collector to establish the resource hierarchy and is not traversable because containment alone does not imply privilege escalation.
@@ -0,0 +1,5 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_GrantsAccessTo edge represents that a GH_OrgRunnerGroup allows a repository to use the runners exposed by that group. For native groups, those runners are GH_OrgRunner nodes contained by the group. For inherited groups, those runners are GH_EnterpriseRunner nodes reached through GH_InheritedFrom.
4
+
5
+ This edge is used as part of the composition path for GH_CanUseRunner and is not traversable on its own because repository eligibility alone is not a privilege escalation path.
@@ -0,0 +1,5 @@
1
+ ## General Information
2
+
3
+ The non-traversable GH_InheritedFrom edge links an inherited GH_OrgRunnerGroup to the GH_EnterpriseRunnerGroup that owns the underlying runner set. This preserves the organization-local view of a runner group while still identifying the enterprise source that provides the runners.
4
+
5
+ This edge is not traversable because inheritance describes resource provenance rather than a direct privilege path.
@@ -0,0 +1,5 @@
1
+ ## Description
2
+
3
+ Represents a self-hosted runner owned at the GitHub Enterprise level. Enterprise runners are contained by GH_EnterpriseRunnerGroup nodes and become usable by repositories when an inherited organization runner group grants access to those repositories.
4
+
5
+ The node captures runner metadata such as operating system, status, busy state, labels, and whether the runner is ephemeral when GitHub returns that property.
@@ -0,0 +1,5 @@
1
+ ## Description
2
+
3
+ Represents a self-hosted runner group owned by a GitHub Enterprise account. Enterprise runner groups control which organizations may use a shared set of enterprise runners. Groups with `visibility=all` are assigned to every organization in the enterprise, while groups with `visibility=selected` are assigned only to explicitly selected organizations.
4
+
5
+ Enterprise runner groups contain GH_EnterpriseRunner nodes and may be projected into organizations as inherited GH_OrgRunnerGroup nodes. The GH_InheritedFrom edge links the organization view back to the enterprise-owned group.
@@ -0,0 +1,5 @@
1
+ ## Description
2
+
3
+ Represents a self-hosted runner owned by a GitHub organization. Organization runners are contained by native GH_OrgRunnerGroup nodes and become usable by repositories through the runner group's repository access policy.
4
+
5
+ The node captures runner metadata such as operating system, status, busy state, labels, and whether the runner is ephemeral when GitHub returns that property.
@@ -0,0 +1,5 @@
1
+ ## Description
2
+
3
+ Represents a self-hosted runner group visible within a GitHub organization. Organization runner groups may either be native to the organization or inherited from an enterprise runner group.
4
+
5
+ Native organization runner groups contain GH_OrgRunner nodes directly. Inherited organization runner groups do not directly contain organization runners; instead, they link to the source GH_EnterpriseRunnerGroup through GH_InheritedFrom and gain access to the enterprise runners contained there. GH_GrantsAccessTo edges describe which repositories may use the runners exposed by the group.
@@ -0,0 +1,5 @@
1
+ ## Description
2
+
3
+ Represents a self-hosted runner registered directly to a single GitHub repository. Repository runners are contained by that repository and may only be used by workflows in that repository.
4
+
5
+ The node captures runner metadata such as operating system, status, busy state, labels, and whether the runner is ephemeral when GitHub returns that property.
@@ -2,7 +2,7 @@
2
2
  "schema": {
3
3
  "name": "SOGitHub",
4
4
  "display_name": "GitHub Extension (by SpecterOps)",
5
- "version": "v1.3.0",
5
+ "version": "v1.3.1",
6
6
  "namespace": "GH"
7
7
  },
8
8
  "node_kinds": [
@@ -12,7 +12,7 @@
12
12
  "description": "A GitHub Enterprise account that contains organizations, enterprise teams, roles, and managed users",
13
13
  "is_display_kind": true,
14
14
  "icon": "globe",
15
- "color": "#6EA8FE"
15
+ "color": "#7C6FF2"
16
16
  },
17
17
  {
18
18
  "name": "GH_EnterpriseTeam",
@@ -180,7 +180,7 @@
180
180
  "description": "An organization-level GitHub Actions variable that can be scoped to all, private, or selected repositories. Unlike secrets, variable values are readable.",
181
181
  "is_display_kind": true,
182
182
  "icon": "lock-open",
183
- "color": "#E8B84D"
183
+ "color": "#78D98B"
184
184
  },
185
185
  {
186
186
  "name": "GH_RepoVariable",
@@ -188,15 +188,55 @@
188
188
  "description": "A repository-level GitHub Actions variable accessible only to workflows in that repository. Unlike secrets, variable values are readable.",
189
189
  "is_display_kind": true,
190
190
  "icon": "lock-open",
191
- "color": "#E89B5C"
191
+ "color": "#66C7E8"
192
+ },
193
+ {
194
+ "name": "GH_Secret",
195
+ "display_name": "GitHub Secret",
196
+ "description": "Generic label applied to GitHub secret nodes across organization, repository, and environment scope",
197
+ "is_display_kind": false
198
+ },
199
+ {
200
+ "name": "GH_Variable",
201
+ "display_name": "GitHub Variable",
202
+ "description": "Generic label applied to GitHub variable nodes across organization, repository, and environment scope",
203
+ "is_display_kind": false
192
204
  },
193
205
  {
194
206
  "name": "GH_RunnerGroup",
195
207
  "display_name": "GitHub Runner Group",
196
- "description": "A GitHub self-hosted runner group that controls runner access and visibility",
208
+ "description": "Generic label applied to GitHub self-hosted runner group nodes across enterprise and organization scope",
209
+ "is_display_kind": false
210
+ },
211
+ {
212
+ "name": "GH_Runner",
213
+ "display_name": "GitHub Runner",
214
+ "description": "Generic label applied to GitHub self-hosted runner nodes across enterprise, organization, and repository scope",
215
+ "is_display_kind": false
216
+ },
217
+ {
218
+ "name": "GH_EnterpriseRunnerGroup",
219
+ "display_name": "GitHub Enterprise Runner Group",
220
+ "description": "An enterprise-scoped GitHub self-hosted runner group that controls runner access and visibility",
197
221
  "is_display_kind": true,
198
222
  "icon": "server",
199
- "color": "#94A3B8"
223
+ "color": "#9A8CF5"
224
+ },
225
+ {
226
+ "name": "GH_OrgRunnerGroup",
227
+ "display_name": "GitHub Org Runner Group",
228
+ "description": "An organization-scoped GitHub self-hosted runner group that controls runner access and visibility",
229
+ "is_display_kind": true,
230
+ "icon": "server",
231
+ "color": "#7BE89A"
232
+ },
233
+ {
234
+ "name": "GH_EnterpriseRunner",
235
+ "display_name": "GitHub Enterprise Runner",
236
+ "description": "An enterprise-scoped GitHub self-hosted runner available to organizations through enterprise runner groups",
237
+ "is_display_kind": true,
238
+ "icon": "microchip",
239
+ "color": "#5F54D9"
200
240
  },
201
241
  {
202
242
  "name": "GH_OrgRunner",
@@ -220,7 +260,7 @@
220
260
  "description": "An environment-level GitHub Actions variable scoped to a specific deployment environment. Unlike secrets, variable values are readable.",
221
261
  "is_display_kind": true,
222
262
  "icon": "lock-open",
223
- "color": "#D4A84B"
263
+ "color": "#A7D77B"
224
264
  },
225
265
  {
226
266
  "name": "GH_SecretScanningAlert",
@@ -402,7 +442,17 @@
402
442
  },
403
443
  {
404
444
  "name": "GH_AssignedTo",
405
- "description": "Enterprise team is assigned to an organization",
445
+ "description": "Enterprise-scoped team or runner group is assigned to an organization",
446
+ "is_traversable": false
447
+ },
448
+ {
449
+ "name": "GH_InheritedFrom",
450
+ "description": "Organization runner group is inherited from an enterprise runner group",
451
+ "is_traversable": false
452
+ },
453
+ {
454
+ "name": "GH_GrantsAccessTo",
455
+ "description": "Organization runner group grants a repository access to its available runners",
406
456
  "is_traversable": false
407
457
  },
408
458
  {
@@ -917,7 +967,12 @@
917
967
  },
918
968
  {
919
969
  "name": "GH_CanUseRunner",
920
- "description": "Repository can dispatch jobs to this runner",
970
+ "description": "Repository can dispatch jobs to this self-hosted runner",
971
+ "is_traversable": false
972
+ },
973
+ {
974
+ "name": "GH_CanCreateRepositoryWithRunnerAccess",
975
+ "description": "Org role can create a repository that inherits access to this runner group",
921
976
  "is_traversable": false
922
977
  },
923
978
  {
@@ -1008,6 +1063,13 @@
1008
1063
  "principal_kinds": [
1009
1064
  "GH_User"
1010
1065
  ]
1066
+ },
1067
+ {
1068
+ "environment_kind": "GH_Enterprise",
1069
+ "source_kind": "GitHub",
1070
+ "principal_kinds": [
1071
+ "GH_User"
1072
+ ]
1011
1073
  }
1012
1074
  ],
1013
1075
  "relationship_findings": []
@@ -1,6 +1,8 @@
1
1
  # Generic
2
2
  CONTAINS = "GH_Contains"
3
3
  ASSIGNED_TO = "GH_AssignedTo"
4
+ INHERITED_FROM = "GH_InheritedFrom"
5
+ GRANTS_ACCESS_TO = "GH_GrantsAccessTo"
4
6
 
5
7
  # Administrative edges
6
8
  ADMIN_TO = "GH_AdminTo"
@@ -16,6 +18,7 @@ MEMBER_OF = "GH_MemberOf"
16
18
  # Access and capability edges
17
19
  CAN_ACCESS = "GH_CanAccess"
18
20
  CAN_USE_RUNNER = "GH_CanUseRunner"
21
+ CAN_CREATE_REPOSITORY_WITH_RUNNER_ACCESS = "GH_CanCreateRepositoryWithRunnerAccess"
19
22
  CAN_CREATE_BRANCH = "GH_CanCreateBranch"
20
23
  CAN_CREATE_ENVIRONMENT = "GH_CanCreateEnvironment"
21
24
  CAN_EDIT_ENVIRONMENT = "GH_CanEditEnvironment"
@@ -39,7 +39,10 @@ DEFAULT_ROLE = "GH_RepoRole"
39
39
  # Runner nodes
40
40
  RUNNER = "GH_Runner"
41
41
  RUNNER_GROUP = "GH_RunnerGroup"
42
+ ENTERPRISE_RUNNER = "GH_EnterpriseRunner"
43
+ ENTERPRISE_RUNNER_GROUP = "GH_EnterpriseRunnerGroup"
42
44
  ORG_RUNNER = "GH_OrgRunner"
45
+ ORG_RUNNER_GROUP = "GH_OrgRunnerGroup"
43
46
 
44
47
  # Security nodes
45
48
  SECRET_SCANNING_ALERT = "GH_SecretScanningAlert"
@@ -4,6 +4,8 @@ import duckdb
4
4
  from duckdb import DuckDBPyConnection
5
5
  from openhound.core.lookup import LookupManager, logger
6
6
 
7
+ from openhound_github.runner_ids import runner_group_node_id, runner_node_id
8
+
7
9
 
8
10
  class GithubLookup(LookupManager):
9
11
  def __init__(self, client: DuckDBPyConnection, schema: str = "github"):
@@ -51,6 +53,84 @@ class GithubLookup(LookupManager):
51
53
  res = self._find_single_object(f"""SELECT id FROM {self.schema}.enterprise""")
52
54
  return res
53
55
 
56
+ @lru_cache
57
+ def enterprise_organization_node_ids(self, enterprise_node_id: str):
58
+ return self._find_all_objects(
59
+ f"""SELECT id FROM {self.schema}.enterprise_organizations WHERE enterprise_node_id = ?""",
60
+ [enterprise_node_id],
61
+ )
62
+
63
+ @lru_cache
64
+ def _enterprise_runner_group_identity_for_inherited_org_group(
65
+ self, org_node_id: str, group_name: str
66
+ ) -> tuple[str, int] | None:
67
+ rows = self._find_all_objects(
68
+ f"""
69
+ WITH candidate_groups AS (
70
+ SELECT erg.enterprise_node_id, erg.id
71
+ FROM {self.schema}.enterprise_runner_groups erg
72
+ JOIN {self.schema}.enterprise_organizations eo
73
+ ON eo.enterprise_node_id = erg.enterprise_node_id
74
+ WHERE eo.id = ?
75
+ AND erg.visibility = 'all'
76
+ AND erg.name = ?
77
+
78
+ UNION
79
+
80
+ SELECT erg.enterprise_node_id, erg.id
81
+ FROM {self.schema}.enterprise_runner_groups erg
82
+ JOIN {self.schema}.enterprise_runner_group_organizations ergo
83
+ ON ergo.enterprise_node_id = erg.enterprise_node_id
84
+ AND ergo.runner_group_id = erg.id
85
+ WHERE ergo.node_id = ?
86
+ AND erg.name = ?
87
+ )
88
+ SELECT enterprise_node_id, id
89
+ FROM candidate_groups
90
+ """,
91
+ [org_node_id, group_name, org_node_id, group_name],
92
+ )
93
+ if not rows or len(rows) != 1:
94
+ return None
95
+
96
+ enterprise_node_id, runner_group_id = rows[0]
97
+ return str(enterprise_node_id), int(runner_group_id)
98
+
99
+ @lru_cache
100
+ def enterprise_runner_group_node_id_for_inherited_org_group(
101
+ self, org_node_id: str, group_name: str
102
+ ) -> str | None:
103
+ identity = self._enterprise_runner_group_identity_for_inherited_org_group(
104
+ org_node_id, group_name
105
+ )
106
+ if not identity:
107
+ return None
108
+
109
+ enterprise_node_id, runner_group_id = identity
110
+ return runner_group_node_id(enterprise_node_id, runner_group_id)
111
+
112
+ @lru_cache
113
+ def enterprise_runner_node_ids_for_inherited_org_group(
114
+ self, org_node_id: str, group_name: str
115
+ ):
116
+ identity = self._enterprise_runner_group_identity_for_inherited_org_group(
117
+ org_node_id, group_name
118
+ )
119
+ if not identity:
120
+ return []
121
+
122
+ enterprise_node_id, runner_group_id = identity
123
+ rows = self._find_all_objects(
124
+ f"""
125
+ SELECT runner_id
126
+ FROM {self.schema}.enterprise_runner_group_memberships
127
+ WHERE enterprise_node_id = ?
128
+ AND runner_group_id = ?
129
+ """,
130
+ [enterprise_node_id, runner_group_id],
131
+ )
132
+ return [(runner_node_id(enterprise_node_id, int(runner_id)),) for (runner_id,) in rows]
133
+
54
134
  @lru_cache
55
135
  def enterprise_idp_for_scope(
56
136
  self, enterprise_node_id: str
@@ -62,6 +62,10 @@ def preproc(ctx: PreProcContext):
62
62
  "saml_provider": "saml_provider",
63
63
  "applications": "applications",
64
64
  "enterprise": "enterprise",
65
+ "enterprise_organizations": "enterprise_organizations",
66
+ "enterprise_runner_groups": "enterprise_runner_groups",
67
+ "enterprise_runner_group_organizations": "enterprise_runner_group_organizations",
68
+ "enterprise_runner_group_memberships": "enterprise_runner_group_memberships",
65
69
  "org_roles": "org_roles",
66
70
  "projected_enterprise_teams": "projected_enterprise_teams",
67
71
  "environments": "environments",
@@ -38,7 +38,17 @@ from .repository import Repository, RepositoryQL
38
38
  from .repository_role import BaseRepoRole, RepoRole
39
39
  from .repository_secret import RepoSecret
40
40
  from .repository_variable import RepoVariable
41
- from .runner import OrgRunner, OrgRunnerGroupMembership, RepoRunner, RunnerGroup
41
+ from .runner import (
42
+ EnterpriseRunner,
43
+ EnterpriseRunnerGroup,
44
+ EnterpriseRunnerGroupMembership,
45
+ EnterpriseRunnerGroupOrganization,
46
+ OrgRunner,
47
+ OrgRunnerGroup,
48
+ OrgRunnerGroupAccess,
49
+ OrgRunnerGroupMembership,
50
+ RepoRunner,
51
+ )
42
52
  from .saml_assertion_consumer_service import SamlAssertionConsumerService
43
53
  from .saml_provider import SamlProvider
44
54
  from .saml_service_provider import SamlServiceProvider
@@ -79,8 +89,13 @@ __all__ = [
79
89
  "SelectedOrgVariable",
80
90
  "RepoSecret",
81
91
  "RepoVariable",
82
- "RunnerGroup",
92
+ "EnterpriseRunner",
93
+ "EnterpriseRunnerGroup",
94
+ "EnterpriseRunnerGroupMembership",
95
+ "EnterpriseRunnerGroupOrganization",
83
96
  "OrgRunner",
97
+ "OrgRunnerGroup",
98
+ "OrgRunnerGroupAccess",
84
99
  "OrgRunnerGroupMembership",
85
100
  "RepoRunner",
86
101
  "SecretScanningAlert",