openhound-github 0.10.1__tar.gz → 0.11.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 (434) hide show
  1. {openhound_github-0.10.1 → openhound_github-0.11.0}/PKG-INFO +1 -1
  2. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_AppInstallation.md +4 -2
  3. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Enterprise.md +2 -1
  4. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunner.md +0 -3
  5. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentSecret.md +1 -0
  6. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunner.md +0 -3
  7. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgSecret.md +1 -0
  8. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Organization.md +2 -0
  9. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessToken.md +6 -4
  10. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +5 -1
  11. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRunner.md +0 -3
  12. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoSecret.md +1 -0
  13. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Runner.md +3 -0
  14. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowJob.md +24 -24
  15. openhound_github-0.11.0/extension/privilege_zone_rules/t0-app-installations-all-repos.json +8 -0
  16. openhound_github-0.11.0/extension/privilege_zone_rules/t0-apps-all-repos.json +8 -0
  17. openhound_github-0.11.0/extension/privilege_zone_rules/t0-pats-all-repos.json +8 -0
  18. {openhound_github-0.10.1 → openhound_github-0.11.0}/scripts/generate_gh_description_docs.py +6 -1
  19. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/lookup.py +11 -4
  20. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/app_installation.py +4 -3
  21. openhound_github-0.11.0/src/openhound_github/models/permissions.py +18 -0
  22. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token.py +10 -14
  23. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_request.py +13 -1
  24. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow.py +1 -16
  25. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_job.py +7 -2
  26. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/organization.py +12 -3
  27. openhound_github-0.11.0/tests/test_credential_permission_models.py +112 -0
  28. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_runner_models.py +15 -0
  29. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_model.py +29 -0
  30. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_resources.py +59 -0
  31. openhound_github-0.10.1/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -8
  32. openhound_github-0.10.1/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -8
  33. openhound_github-0.10.1/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -8
  34. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/CODE_OF_CONDUCT.md +0 -0
  35. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/CONTRIBUTING.md +0 -0
  36. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GOVERNANCE.md +0 -0
  37. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-COC-Header.png +0 -0
  38. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-CONTRIB-Header.png +0 -0
  39. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-GOV-Header.png +0 -0
  40. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-Header.png +0 -0
  41. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-LIC-Header.png +0 -0
  42. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-SEC-Header.png +0 -0
  43. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SECURITY.md +0 -0
  44. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-Dark.svg +0 -0
  45. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-FOSS-Dark.svg +0 -0
  46. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-FOSS-Light.svg +0 -0
  47. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-Light.svg +0 -0
  48. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/publish.yml +0 -0
  49. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/release-on-merge.yml +0 -0
  50. {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/validate-branch.yml +0 -0
  51. {openhound_github-0.10.1 → openhound_github-0.11.0}/.gitignore +0 -0
  52. {openhound_github-0.10.1 → openhound_github-0.11.0}/.gitmodules +0 -0
  53. {openhound_github-0.10.1 → openhound_github-0.11.0}/.pre-commit-config.yaml +0 -0
  54. {openhound_github-0.10.1 → openhound_github-0.11.0}/LICENSE.md +0 -0
  55. {openhound_github-0.10.1 → openhound_github-0.11.0}/README.md +0 -0
  56. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddAssignee.md +0 -0
  57. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddCollaborator.md +0 -0
  58. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddLabel.md +0 -0
  59. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddMember.md +0 -0
  60. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AdminTo.md +0 -0
  61. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  62. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AssignedTo.md +0 -0
  63. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  64. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  65. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  66. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccess.md +0 -0
  67. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccessSecret.md +0 -0
  68. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  69. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  70. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  71. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
  72. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
  73. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
  74. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
  75. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
  76. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  77. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  78. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditProtection.md +0 -0
  79. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanInterceptJob.md +0 -0
  80. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  81. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecret.md +0 -0
  82. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  83. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
  84. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanUseRunner.md +0 -0
  85. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  86. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  87. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CloseIssue.md +0 -0
  88. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  89. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_Contains.md +0 -0
  90. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  91. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  92. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
  93. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateRepository.md +0 -0
  94. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  95. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTag.md +0 -0
  96. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTeam.md +0 -0
  97. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  98. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  99. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  100. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteIssue.md +0 -0
  101. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteTag.md +0 -0
  102. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DependsOn.md +0 -0
  103. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeploysTo.md +0 -0
  104. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  105. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  106. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  107. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
  108. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  109. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  110. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  111. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  112. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasBaseRole.md +0 -0
  113. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  114. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasMember.md +0 -0
  115. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  116. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  117. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasRole.md +0 -0
  118. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasRunner.md +0 -0
  119. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  120. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasSecret.md +0 -0
  121. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasVariable.md +0 -0
  122. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InheritedFrom.md +0 -0
  123. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InstalledAs.md +0 -0
  124. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InviteMember.md +0 -0
  125. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_IsEligibleFor.md +0 -0
  126. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  127. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  128. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  129. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
  130. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
  131. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
  132. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
  133. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
  134. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
  135. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
  136. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  137. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  138. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  139. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  140. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  141. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  142. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  143. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageTopics.md +0 -0
  144. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  145. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MapsToUser.md +0 -0
  146. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  147. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  148. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MemberOf.md +0 -0
  149. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  150. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  151. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  152. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  153. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_Owns.md +0 -0
  154. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ProtectedBy.md +0 -0
  155. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  156. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  157. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
  158. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
  159. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
  160. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
  161. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
  162. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  163. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  164. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  165. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  166. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  167. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveLabel.md +0 -0
  168. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  169. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenIssue.md +0 -0
  170. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  171. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RequestPrReview.md +0 -0
  172. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  173. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  174. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  175. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  176. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RunsOn.md +0 -0
  177. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
  178. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  179. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetIssueType.md +0 -0
  180. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetMilestone.md +0 -0
  181. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  182. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SyncedTo.md +0 -0
  183. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  184. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  185. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_TransferRepository.md +0 -0
  186. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_UsesSecret.md +0 -0
  187. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_UsesVariable.md +0 -0
  188. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ValidToken.md +0 -0
  189. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  190. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
  191. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
  192. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
  193. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  194. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  195. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
  196. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
  197. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
  198. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
  199. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
  200. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  201. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  202. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  203. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  204. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  205. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  206. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  207. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  208. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_App.md +0 -0
  209. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Branch.md +0 -0
  210. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  211. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
  212. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
  213. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
  214. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
  215. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Environment.md +0 -0
  216. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  217. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  218. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  219. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRole.md +0 -0
  220. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
  221. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
  222. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRole.md +0 -0
  223. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
  224. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Repository.md +2 -2
  225. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RunnerGroup.md +0 -0
  226. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  227. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Secret.md +0 -0
  228. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  229. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Team.md +0 -0
  230. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_TeamRole.md +0 -0
  231. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_User.md +0 -0
  232. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Variable.md +0 -0
  233. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Workflow.md +1 -1
  234. {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  235. {openhound_github-0.10.1 → openhound_github-0.11.0}/docs/og-docs.json +0 -0
  236. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  237. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
  238. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  239. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  240. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  241. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  242. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  243. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  244. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  245. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/README.md +0 -0
  246. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  247. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/active-leaked-secrets.json +0 -0
  248. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  249. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/all-actions-allowed.json +0 -0
  250. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/app-installations-all-repos.json +0 -0
  251. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  252. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  253. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  254. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  255. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  256. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  257. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  258. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  259. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  260. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  261. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/default-repository-permissions.json +0 -0
  262. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  263. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  264. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  265. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  266. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/environments-admin-bypass.json +0 -0
  267. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/expired-pats.json +0 -0
  268. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/external-identities-without-scim.json +0 -0
  269. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/github-to-azure-identity.json +0 -0
  270. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/global-repo-perms.json +0 -0
  271. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/hybrid-identities.json +0 -0
  272. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  273. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-pages.json +0 -0
  274. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  275. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-delete-repos.json +0 -0
  276. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  277. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  278. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/org-owners.json +0 -0
  279. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/orgs-without-2fa.json +0 -0
  280. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/pats-all-repo-access.json +0 -0
  281. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/pending-pat-requests.json +0 -0
  282. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  283. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  284. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  285. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/public-repos.json +0 -0
  286. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  287. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/push-to-protected-branches.json +0 -0
  288. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  289. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  290. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repository-workflows.json +0 -0
  291. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/saml-configuration.json +0 -0
  292. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  293. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  294. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  295. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
  296. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
  297. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/team-membership-admin.json +0 -0
  298. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/team-structure.json +0 -0
  299. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-branches.json +0 -0
  300. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  301. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branches.json +0 -0
  302. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  303. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
  304. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
  305. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
  306. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
  307. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
  308. {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/schema.json +0 -0
  309. {openhound_github-0.10.1 → openhound_github-0.11.0}/justfile +0 -0
  310. {openhound_github-0.10.1 → openhound_github-0.11.0}/pyproject.toml +0 -0
  311. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/main.py +0 -0
  312. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/__init__.py +0 -0
  313. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/auth.py +0 -0
  314. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/extension.yaml +0 -0
  315. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/github_rest_client.py +0 -0
  316. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/github_retry.py +0 -0
  317. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/graph.py +0 -0
  318. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/graphql.py +0 -0
  319. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/helpers.py +0 -0
  320. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/kinds/edges.py +0 -0
  321. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/kinds/nodes.py +0 -0
  322. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/main.py +0 -0
  323. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/__init__.py +0 -0
  324. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/actions_permission.py +0 -0
  325. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch.py +0 -0
  326. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  327. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_protection_rule.py +0 -0
  328. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
  329. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise.py +0 -0
  330. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_admin.py +0 -0
  331. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_helpers.py +0 -0
  332. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  333. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_member.py +0 -0
  334. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_organization.py +0 -0
  335. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role.py +0 -0
  336. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_team.py +0 -0
  337. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_user.py +0 -0
  338. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team.py +0 -0
  339. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_member.py +0 -0
  340. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  341. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_role.py +0 -0
  342. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_user.py +0 -0
  343. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/env_secret.py +0 -0
  344. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/env_variable.py +0 -0
  345. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/environment.py +0 -0
  346. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/environment_branch_policy.py +0 -0
  347. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/external_identity.py +0 -0
  348. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org.py +0 -0
  349. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role.py +0 -0
  350. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role_member.py +0 -0
  351. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role_team.py +0 -0
  352. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_secret.py +0 -0
  353. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_variable.py +0 -0
  354. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_access.py +0 -0
  355. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  356. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repo_role_assignment.py +0 -0
  357. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository.py +0 -0
  358. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_role.py +0 -0
  359. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_secret.py +0 -0
  360. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_variable.py +0 -0
  361. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/runner.py +0 -0
  362. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  363. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_helpers.py +0 -0
  364. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_issuer.py +0 -0
  365. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_provider.py +0 -0
  366. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_service_provider.py +0 -0
  367. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/scim_user.py +0 -0
  368. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  369. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team.py +0 -0
  370. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team_member.py +0 -0
  371. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team_role.py +0 -0
  372. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/user.py +0 -0
  373. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_reference.py +0 -0
  374. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_step.py +0 -0
  375. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/__init__.py +0 -0
  376. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/enterprise.py +0 -0
  377. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/runner_ids.py +0 -0
  378. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/source.py +0 -0
  379. {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/transforms.py +0 -0
  380. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_app_auth.py +0 -0
  381. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_branch_collection_gate.py +0 -0
  382. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_branch_protection_traversability.py +0 -0
  383. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/actions-permissions.json +0 -0
  384. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/actionsecrets.json +0 -0
  385. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/app.json +0 -0
  386. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/appinstalls.json +0 -0
  387. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branch-policies.json +0 -0
  388. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branch-prot-rules.json +0 -0
  389. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branches.json +0 -0
  390. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/custom-roles.json +0 -0
  391. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/environments.json +0 -0
  392. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-pat-request.json +0 -0
  393. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-pat.json +0 -0
  394. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-role-teams.json +0 -0
  395. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-role-users.json +0 -0
  396. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-roles.json +0 -0
  397. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org.json +0 -0
  398. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/pat-repositories.json +0 -0
  399. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repo-collaborators.json +0 -0
  400. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repo-teams.json +0 -0
  401. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repositories.json +0 -0
  402. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/scimusers.json +0 -0
  403. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/secrets.json +0 -0
  404. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/secretscanningalert.json +0 -0
  405. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/selected-org-secrets.json +0 -0
  406. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/variables.json +0 -0
  407. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/workflows.json +0 -0
  408. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_description_docs.py +0 -0
  409. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_capabilities.py +0 -0
  410. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_organization.py +0 -0
  411. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_resources.py +0 -0
  412. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_model.py +0 -0
  413. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_resources.py +0 -0
  414. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_reviewer_lookup.py +0 -0
  415. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_error_resilience.py +0 -0
  416. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_app_retry.py +0 -0
  417. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_rest_client.py +0 -0
  418. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_retry.py +0 -0
  419. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_helpers.py +0 -0
  420. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_lookup.py +0 -0
  421. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_org_scim_resources.py +0 -0
  422. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_org_secret_models.py +0 -0
  423. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_repository_rulesets.py +0 -0
  424. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_runner_ids.py +0 -0
  425. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_runner_resources.py +0 -0
  426. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_saml_helpers.py +0 -0
  427. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_saml_models.py +0 -0
  428. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_scim_models.py +0 -0
  429. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_source_endpoints.py +0 -0
  430. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_source_org_canonicalization.py +0 -0
  431. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_team_external_groups.py +0 -0
  432. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_variable_models.py +0 -0
  433. {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_interception_path.py +0 -0
  434. {openhound_github-0.10.1 → openhound_github-0.11.0}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.10.1
3
+ Version: 0.11.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
@@ -2,7 +2,9 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents a GitHub App installed on an organization. App installations have specific permissions and can be scoped to all repositories or a selection of repositories. The permissions granted to the app are captured as a JSON string in the properties.
5
+ Represents a GitHub App installed on an organization. App installations have specific permissions and can be scoped to all repositories or a selection of repositories. The permissions granted to the installation are stored as `scope:access` values such as `contents:write` in the `permissions` property.
6
+
7
+ Unlike fine-grained personal access tokens, GitHub does not expose separate organization and repository permission buckets for app installations, so this property remains a single flat permission list.
6
8
 
7
9
  Each installation is linked to its parent GH_App via a GH_InstalledAs edge. For installations with `repository_selection` set to `all`, GH_CanAccess edges are created to every repository in the organization. For installations with `repository_selection` set to `selected`, repository-level edges cannot be enumerated with a PAT (requires app installation token authentication).
8
10
 
@@ -24,7 +26,7 @@ Each installation is linked to its parent GH_App via a GH_InstalledAs edge. For
24
26
  | `repositories_url` | `string` | API URL to list repositories accessible to this installation. |
25
27
  | `repository_selection` | `string` | Whether the app has access to `all` repositories or `selected` repositories. |
26
28
  | `target_type` | `string` | The target type of the installation (e.g., `Organization`). |
27
- | `permissions` | `string` | JSON string of the permissions granted to the app (e.g., `{"contents": "read", "metadata": "read"}`). |
29
+ | `permissions` | `list[string]` | Permissions granted to the installation in `scope:access` form. |
28
30
  | `events` | `string` | JSON string of the webhook events the app subscribes to. |
29
31
  | `created_at` | `datetime` | When the app was installed. |
30
32
  | `updated_at` | `datetime` | When the installation was last updated. |
@@ -23,8 +23,9 @@ A GitHub Enterprise account that contains organizations, enterprise teams, roles
23
23
  | `created_at` | `string` | When the enterprise was created. |
24
24
  | `updated_at` | `string` | When the enterprise was last updated. |
25
25
  | `billing_email` | `string` | The enterprise billing email. |
26
- | `security_contact_email` | `string` | The enterprise security contact email. |
27
26
  | `viewer_is_admin` | `boolean` | Whether the authenticated viewer is an enterprise admin. |
27
+ | `github_deployment_type` | `string` | The GitHub deployment type, such as `ghec` or `ghes`. |
28
+ | `ghes_version` | `string` | The GitHub Enterprise Server version, when applicable. |
28
29
  | `environment_name` | `string` | The enterprise environment name. |
29
30
  | `query_organizations` | `string` | Query for contained organizations. |
30
31
 
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
44
44
  graph LR
45
45
  n0["GH_EnterpriseRunnerGroup"]
46
46
  n1["GH_EnterpriseRunner"]
47
- n2["GH_WorkflowJob"]
48
47
  n0 -.->|GH_Contains| n1
49
48
  n0 -->|GH_HasRunner| n1
50
- n2 -.->|GH_RunsOn| n1
51
- n1 -->|GH_CanInterceptJob| n2
52
49
  ```
@@ -33,6 +33,7 @@ graph LR
33
33
  n3["GH_WorkflowStep"]
34
34
  n0 -.->|GH_Contains| n1
35
35
  n0 -->|GH_HasSecret| n1
36
+ n2 -->|GH_CanAccessSecret| n1
36
37
  n2 -.->|GH_UsesSecret| n1
37
38
  n3 -.->|GH_UsesSecret| n1
38
39
  ```
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
44
44
  graph LR
45
45
  n0["GH_OrgRunnerGroup"]
46
46
  n1["GH_OrgRunner"]
47
- n2["GH_WorkflowJob"]
48
47
  n0 -.->|GH_Contains| n1
49
48
  n0 -->|GH_HasRunner| n1
50
- n2 -.->|GH_RunsOn| n1
51
- n1 -->|GH_CanInterceptJob| n2
52
49
  ```
@@ -33,6 +33,7 @@ graph LR
33
33
  n0 -->|GH_CanReadSecret| n1
34
34
  n2 -.->|GH_Contains| n1
35
35
  n3 -->|GH_HasSecret| n1
36
+ n4 -->|GH_CanAccessSecret| n1
36
37
  n4 -.->|GH_UsesSecret| n1
37
38
  n5 -.->|GH_UsesSecret| n1
38
39
  ```
@@ -72,6 +72,8 @@ Represents a GitHub organization. This is the root node of the graph and serves
72
72
  | `self_hosted_runners_enabled_repositories` | `string` | Which repositories may use self-hosted runners: `all`, `selected`, or `none`. |
73
73
  | `default_workflow_permissions` | `string` | The default workflow permissions property. |
74
74
  | `can_approve_pull_request_reviews` | `boolean` | The can approve pull request reviews property. |
75
+ | `github_deployment_type` | `string` | The GitHub deployment type, such as `ghec` or `ghes`. |
76
+ | `ghes_version` | `string` | The GitHub Enterprise Server version, when applicable. |
75
77
  | `query_organization_roles` | `string` | Query for organization roles. |
76
78
  | `query_users` | `string` | Query for users. |
77
79
  | `query_teams` | `string` | Query for teams. |
@@ -2,7 +2,9 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access. The permissions granted to the token are captured as a JSON string in the properties.
5
+ Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access.
6
+
7
+ The granted permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
6
8
 
7
9
  ## Properties
8
10
 
@@ -18,9 +20,9 @@ Represents a fine-grained personal access token that has been granted access to
18
20
  | `owner_node_id` | `string` | The GraphQL node ID of the token owner. |
19
21
  | `token_expires_at` | `datetime` | The ISO 8601 timestamp of when the token expires. |
20
22
  | `token_last_used_at` | `datetime` | The ISO 8601 timestamp of when the token was last used. |
21
- | `access_granted_at` | `datetime` | The ISO 8601 timestamp of when the token was granted to the organization. |. |
22
- | `organization_permissions` | `string` | JSON string of the PAT's organization-scoped permissions. |
23
- | `repository_permissions` | `string` | JSON string of the PAT's repository-scoped permissions. |
23
+ | `access_granted_at` | `datetime` | The ISO 8601 timestamp of when the token was granted to the organization. |
24
+ | `organization_permissions` | `list[string]` | Organization-scoped permissions in `scope:access` form. |
25
+ | `repository_permissions` | `list[string]` | Repository-scoped permissions in `scope:access` form. |
24
26
  | `token_name` | `string` | The user-assigned display name of the token. |
25
27
  | `owner_login` | `string` | The login handle of the user who owns the token. |
26
28
  | `repository_selection` | `string` | Whether the token has access to `all`, `subset`, or `none` of the organization's repositories. |
@@ -2,7 +2,9 @@
2
2
 
3
3
  ## General Information
4
4
 
5
- Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization. The requested permissions are captured as a JSON string in the properties.
5
+ Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization.
6
+
7
+ The requested permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
6
8
 
7
9
  ## Properties
8
10
 
@@ -18,6 +20,8 @@ Represents a pending request from an organization member to access organization
18
20
  | `repository_selection` | `string` | Whether the request targets `all`, `subset`, or `none` of the organization's repositories. |
19
21
  | `reason` | `string` | The rationale provided by the requester for the access request. |
20
22
  | `org_name` | `string` | The org name property. |
23
+ | `organization_permissions` | `list[string]` | Requested organization-scoped permissions in `scope:access` form. |
24
+ | `repository_permissions` | `list[string]` | Requested repository-scoped permissions in `scope:access` form. |
21
25
  | `query_organization_permissions` | `string` | Query for organization permissions. |
22
26
  | `query_user` | `string` | Query for user. |
23
27
  | `query_repositories` | `string` | Query for repositories. |
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
44
44
  graph LR
45
45
  n0["GH_Repository"]
46
46
  n1["GH_RepoRunner"]
47
- n2["GH_WorkflowJob"]
48
47
  n0 -.->|GH_CanUseRunner| n1
49
48
  n0 -.->|GH_Contains| n1
50
- n2 -.->|GH_RunsOn| n1
51
- n1 -->|GH_CanInterceptJob| n2
52
49
  ```
@@ -31,6 +31,7 @@ graph LR
31
31
  n3["GH_WorkflowStep"]
32
32
  n0 -.->|GH_Contains| n1
33
33
  n0 -->|GH_HasSecret| n1
34
+ n2 -->|GH_CanAccessSecret| n1
34
35
  n2 -.->|GH_UsesSecret| n1
35
36
  n3 -.->|GH_UsesSecret| n1
36
37
  ```
@@ -19,4 +19,7 @@ Generic label applied to GitHub self-hosted runner nodes across enterprise, orga
19
19
  ```mermaid
20
20
  graph LR
21
21
  n0["GH_Runner"]
22
+ n1["GH_WorkflowJob"]
23
+ n0 -->|GH_CanInterceptJob| n1
24
+ n1 -.->|GH_RunsOn| n0
22
25
  ```
@@ -47,32 +47,32 @@ When `runs_on_is_dynamic` is true, runner matching and interception status remai
47
47
 
48
48
  ```mermaid
49
49
  graph LR
50
- n0["GH_Workflow"]
50
+ n0["GH_Runner"]
51
51
  n1["GH_WorkflowJob"]
52
- n2["GH_Environment"]
53
- n3["GH_EnvironmentSecret"]
54
- n4["GH_EnvironmentVariable"]
55
- n5["GH_OrgSecret"]
56
- n6["GH_OrgVariable"]
57
- n7["GH_RepoSecret"]
58
- n8["GH_RepoVariable"]
59
- n9["GH_Runner"]
52
+ n2["GH_Workflow"]
53
+ n3["GH_Environment"]
54
+ n4["GH_EnvironmentSecret"]
55
+ n5["GH_EnvironmentVariable"]
56
+ n6["GH_OrgSecret"]
57
+ n7["GH_OrgVariable"]
58
+ n8["GH_RepoSecret"]
59
+ n9["GH_RepoVariable"]
60
60
  n10["GH_WorkflowStep"]
61
- n0 -.->|GH_Contains| n1
62
- n1 -.->|GH_DeploysTo| n2
63
- n1 -.->|GH_UsesSecret| n3
64
- n1 -.->|GH_UsesVariable| n4
65
- n1 -.->|GH_UsesSecret| n5
66
- n1 -.->|GH_UsesVariable| n6
67
- n1 -.->|GH_UsesSecret| n7
68
- n1 -.->|GH_UsesVariable| n8
69
- n1 -.->|GH_RunsOn| n9
70
- n1 -->|GH_CanAccessSecret| n3
71
- n1 -->|GH_CanAccessSecret| n5
72
- n1 -->|GH_CanAccessSecret| n7
73
- n1 -->|GH_CanRequestOIDCTokenFor| n2
74
- n9 -->|GH_CanInterceptJob| n1
75
- n1 -.->|GH_CallsWorkflow| n0
61
+ n0 -->|GH_CanInterceptJob| n1
62
+ n2 -.->|GH_Contains| n1
63
+ n1 -->|GH_CanRequestOIDCTokenFor| n3
64
+ n1 -.->|GH_DeploysTo| n3
65
+ n1 -->|GH_CanAccessSecret| n4
66
+ n1 -.->|GH_UsesSecret| n4
67
+ n1 -.->|GH_UsesVariable| n5
68
+ n1 -->|GH_CanAccessSecret| n6
69
+ n1 -.->|GH_UsesSecret| n6
70
+ n1 -.->|GH_UsesVariable| n7
71
+ n1 -->|GH_CanAccessSecret| n8
72
+ n1 -.->|GH_UsesSecret| n8
73
+ n1 -.->|GH_UsesVariable| n9
74
+ n1 -.->|GH_RunsOn| n0
75
+ n1 -.->|GH_CallsWorkflow| n2
76
76
  n1 -.->|GH_DependsOn| n1
77
77
  n1 -.->|GH_Contains| n10
78
78
  ```
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "GitHub: Tier Zero App Installations (All Repositories)",
3
+ "description": "GitHub App installations scoped to all repositories in the organization that have repository-control write permissions. A compromised app credential may grant code, workflow, Actions, or administrative control across every repository. Installations with only read or lower-impact write permissions are excluded.",
4
+ "cypher": "MATCH (n:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN n.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
5
+ "enabled": true,
6
+ "zone": "Tier Zero",
7
+ "allow_disable": true
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "GitHub: Tier Zero Apps (All-Repository Installations)",
3
+ "description": "GitHub App definitions whose installations have repository-control write permissions across all repositories. The app owner controls the private key that can generate tokens for any installation. Compromise of the app's private key may grant code, workflow, Actions, or administrative control across every repository in organizations where it is installed. Apps whose installations have only read or lower-impact write permissions are excluded.",
4
+ "cypher": "MATCH (n:GH_App)-[:GH_InstalledAs]->(i:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN i.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
5
+ "enabled": true,
6
+ "zone": "Tier Zero",
7
+ "allow_disable": true
8
+ }
@@ -0,0 +1,8 @@
1
+ {
2
+ "name": "GitHub: Tier Zero PATs (All Repositories)",
3
+ "description": "Fine-grained personal access tokens scoped to all repositories in the organization that have repository-control write permissions. A single compromised token may grant code, workflow, Actions, or administrative control across every repository. PATs with only read or lower-impact write permissions are excluded.",
4
+ "cypher": "MATCH (n:GH_PersonalAccessToken {repository_selection:'all'})\nWHERE ANY(permission IN n.repository_permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
5
+ "enabled": true,
6
+ "zone": "Tier Zero",
7
+ "allow_disable": true
8
+ }
@@ -175,7 +175,12 @@ def extract_general_information(path: Path) -> str | None:
175
175
  text = text[match.end() :].strip()
176
176
  else:
177
177
  text = re.sub(r"^# .+?\n+", "", text, count=1).strip()
178
- text = re.split(r"^## Diagram\s*$", text, maxsplit=1, flags=re.MULTILINE)[0].strip()
178
+ text = re.split(
179
+ r"^## (?:Properties|Edge Schema|Diagram)\s*$",
180
+ text,
181
+ maxsplit=1,
182
+ flags=re.MULTILINE,
183
+ )[0].strip()
179
184
  text = re.sub(r"\n```mermaid\n.*?\n```\s*$", "", text, flags=re.DOTALL).strip()
180
185
  return text or None
181
186
 
@@ -278,6 +278,16 @@ class GithubLookup(LookupManager):
278
278
  if actions_enabled is not True:
279
279
  return []
280
280
 
281
+ org_node_id = self.org_id_for_login(org_login)
282
+ if not org_node_id:
283
+ return [
284
+ (node_id, ephemeral)
285
+ for _source_order, node_id, ephemeral in sorted(
286
+ matching_runners,
287
+ key=lambda runner: (runner[0], runner[1]),
288
+ )
289
+ ]
290
+
281
291
  for (
282
292
  runner_group_id,
283
293
  runner_group_name,
@@ -320,9 +330,6 @@ class GithubLookup(LookupManager):
320
330
  continue
321
331
 
322
332
  if inherited:
323
- org_node_id = self.org_id_for_login(org_login)
324
- if not org_node_id:
325
- continue
326
333
  if (
327
334
  self.enterprise_runner_group_restricted_to_workflows_for_inherited_org_group(
328
335
  org_node_id, runner_group_name
@@ -370,7 +377,7 @@ class GithubLookup(LookupManager):
370
377
  ):
371
378
  add_matching_runner(
372
379
  1,
373
- runner_node_id(self.org_id_for_login(org_login), int(runner_id)),
380
+ runner_node_id(org_node_id, int(runner_id)),
374
381
  raw_labels,
375
382
  ephemeral,
376
383
  )
@@ -12,6 +12,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
12
12
  from openhound_github.kinds import edges as ek
13
13
  from openhound_github.kinds import nodes as nk
14
14
  from openhound_github.main import app
15
+ from openhound_github.models.permissions import normalize_permission_declaration
15
16
 
16
17
 
17
18
  @dataclass
@@ -28,7 +29,7 @@ class GHAppInstallationProperties(GHNodeProperties):
28
29
  repositories_url: API URL to list repositories accessible to this installation.
29
30
  repository_selection: Whether the app has access to `all` repositories or `selected` repositories.
30
31
  target_type: The target type of the installation (e.g., `Organization`).
31
- permissions: JSON string of the permissions granted to the app (e.g., `{"contents": "read", "metadata": "read"}`).
32
+ permissions: Permissions granted to the installation in `scope:access` form.
32
33
  events: JSON string of the webhook events the app subscribes to.
33
34
  created_at: When the app was installed.
34
35
  updated_at: When the installation was last updated.
@@ -47,7 +48,7 @@ class GHAppInstallationProperties(GHNodeProperties):
47
48
  repositories_url: str | None = None
48
49
  repository_selection: str | None = None
49
50
  target_type: str | None = None
50
- permissions: str | None = None
51
+ permissions: list[str] | None = None
51
52
  events: str | None = None
52
53
  created_at: datetime | None = None
53
54
  updated_at: datetime | None = None
@@ -141,7 +142,7 @@ class AppInstallation(BaseAsset):
141
142
  repositories_url=self.repositories_url,
142
143
  repository_selection=self.repository_selection,
143
144
  target_type=self.target_type,
144
- permissions=json.dumps(self.permissions) if self.permissions else None,
145
+ permissions=normalize_permission_declaration(self.permissions),
145
146
  events=json.dumps(self.events) if self.events else None,
146
147
  created_at=self.created_at,
147
148
  updated_at=self.updated_at,
@@ -0,0 +1,18 @@
1
+ from typing import Any
2
+
3
+
4
+ def normalize_permission_declaration(value: Any) -> list[str] | None:
5
+ """Normalize GitHub permission payloads into query-friendly scope:access values."""
6
+ if value is None:
7
+ return None
8
+
9
+ if isinstance(value, str):
10
+ return [value]
11
+
12
+ if isinstance(value, list):
13
+ return [str(item) for item in value]
14
+
15
+ if isinstance(value, dict):
16
+ return [f"{key!s}:{item!s}" for key, item in value.items()]
17
+
18
+ return [str(value)]
@@ -2,7 +2,6 @@ from dataclasses import dataclass
2
2
  from datetime import datetime
3
3
  from typing import ClassVar
4
4
 
5
- from dlt.common import json
6
5
  from dlt.common.libs.pydantic import DltConfig
7
6
  from openhound.core.asset import BaseAsset, EdgeDef, NodeDef
8
7
  from openhound.core.models.entries_dataclass import Edge, EdgePath, EdgeProperties
@@ -12,6 +11,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
12
11
  from openhound_github.kinds import edges as ek
13
12
  from openhound_github.kinds import nodes as nk
14
13
  from openhound_github.main import app
14
+ from openhound_github.models.permissions import normalize_permission_declaration
15
15
 
16
16
 
17
17
  class Permissions(BaseModel):
@@ -35,10 +35,10 @@ class GHPersonalAccessTokenProperties(GHNodeProperties):
35
35
  owner_id: The GitHub ID of the token owner.
36
36
  owner_node_id: The GraphQL node ID of the token owner.
37
37
  token_expires_at: The ISO 8601 timestamp of when the token expires.
38
- organization_permissions: JSON string of the PAT's organization-scoped permissions.
39
- repository_permissions: JSON string of the PAT's repository-scoped permissions.
38
+ organization_permissions: Organization-scoped permissions in `scope:access` form.
39
+ repository_permissions: Repository-scoped permissions in `scope:access` form.
40
40
  token_last_used_at: The ISO 8601 timestamp of when the token was last used.
41
- access_granted_at: The ISO 8601 timestamp of when the token was granted to the organization. |
41
+ access_granted_at: The ISO 8601 timestamp of when the token was granted to the organization.
42
42
  token_name: The user-assigned display name of the token.
43
43
  owner_login: The login handle of the user who owns the token.
44
44
  repository_selection: Whether the token has access to `all`, `subset`, or `none` of the organization's repositories.
@@ -55,8 +55,8 @@ class GHPersonalAccessTokenProperties(GHNodeProperties):
55
55
  token_expires_at: datetime | None = None
56
56
  token_last_used_at: datetime | None = None
57
57
  access_granted_at: datetime | None = None
58
- organization_permissions: str | None = None
59
- repository_permissions: str | None = None
58
+ organization_permissions: list[str] | None = None
59
+ repository_permissions: list[str] | None = None
60
60
  token_name: str | None = None
61
61
  owner_login: str | None = None
62
62
  repository_selection: str | None = None
@@ -144,15 +144,11 @@ class PersonalAccessToken(BaseAsset):
144
144
  environment_name=self.org_login,
145
145
  token_expires_at=self.token_expires_at,
146
146
  owner_id=self.owner.id if self.owner else None,
147
- organization_permissions=(
148
- json.dumps(self.permissions.organization)
149
- if self.permissions and self.permissions.organization
150
- else None
147
+ organization_permissions=normalize_permission_declaration(
148
+ self.permissions.organization if self.permissions else None
151
149
  ),
152
- repository_permissions=(
153
- json.dumps(self.permissions.repository)
154
- if self.permissions and self.permissions.repository
155
- else None
150
+ repository_permissions=normalize_permission_declaration(
151
+ self.permissions.repository if self.permissions else None
156
152
  ),
157
153
  token_last_used_at=self.token_last_used_at,
158
154
  query_organization_permissions=f"MATCH p=(:GH_PersonalAccessToken {{node_id:'{pid}'}})-[:GH_CanAccess]->(:GH_Organization) RETURN p",
@@ -9,6 +9,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
9
9
  from openhound_github.kinds import edges as ek
10
10
  from openhound_github.kinds import nodes as nk
11
11
  from openhound_github.main import app
12
+ from openhound_github.models.permissions import normalize_permission_declaration
12
13
 
13
14
 
14
15
  class Owner(BaseModel):
@@ -29,19 +30,23 @@ class GHPersonalAccessTokenRequestProperties(GHNodeProperties):
29
30
  repository_selection: Whether the request targets `all`, `subset`, or `none` of the organization's repositories.
30
31
  reason: The rationale provided by the requester for the access request.
31
32
  org_name: The org name property.
33
+ organization_permissions: Requested organization-scoped permissions in `scope:access` form.
34
+ repository_permissions: Requested repository-scoped permissions in `scope:access` form.
32
35
  query_organization_permissions: Query for organization permissions.
33
36
  query_user: Query for user.
34
37
  query_repositories: Query for repositories.
35
38
  """
36
39
 
37
40
  # TODO: Check for the following fields
38
- # owner_id, owner_node_id, toke_id, token_expires_at, token_last_used_at, permissions, and environment_name
41
+ # owner_id, owner_node_id, toke_id, token_expires_at, token_last_used_at, and environment_name
39
42
 
40
43
  token_name: str | None = None
41
44
  owner_login: str | None = None
42
45
  repository_selection: str | None = None
43
46
  reason: str | None = None
44
47
  org_name: str | None = None
48
+ organization_permissions: list[str] | None = None
49
+ repository_permissions: list[str] | None = None
45
50
  query_organization_permissions: str | None = None
46
51
  query_user: str | None = None
47
52
  query_repositories: str | None = None
@@ -102,6 +107,7 @@ class PersonalAccessTokenRequest(BaseAsset):
102
107
  @property
103
108
  def as_node(self) -> GHNode:
104
109
  rid = self.node_id
110
+ permissions = self.permissions or {}
105
111
  return GHNode(
106
112
  kinds=[nk.PERSONAL_ACCESS_TOKEN_REQUEST],
107
113
  properties=GHPersonalAccessTokenRequestProperties(
@@ -114,6 +120,12 @@ class PersonalAccessTokenRequest(BaseAsset):
114
120
  repository_selection=self.repository_selection,
115
121
  reason=self.reason,
116
122
  org_name=self.org_login,
123
+ organization_permissions=normalize_permission_declaration(
124
+ permissions.get("organization")
125
+ ),
126
+ repository_permissions=normalize_permission_declaration(
127
+ permissions.get("repository")
128
+ ),
117
129
  query_organization_permissions=f"MATCH p=(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}})-[:GH_CanAccess]->(:GH_Organization) RETURN p",
118
130
  query_user=f"MATCH p=(:GH_User)-[:GH_HasPersonalAccessTokenRequest]->(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}}) RETURN p",
119
131
  query_repositories=f"MATCH p=(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}})-[:GH_CanAccess]->(:GH_Repository) RETURN p LIMIT 1000",
@@ -24,6 +24,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
24
24
  from openhound_github.kinds import edges as ek
25
25
  from openhound_github.kinds import nodes as nk
26
26
  from openhound_github.main import app
27
+ from openhound_github.models.permissions import normalize_permission_declaration
27
28
 
28
29
 
29
30
  class GithubActionsLoader(yaml.SafeLoader):
@@ -124,22 +125,6 @@ READ_ONLY_GITHUB_TOKEN_PERMISSION_SCOPES = {"models", "vulnerability-alerts"}
124
125
  WRITE_ONLY_GITHUB_TOKEN_PERMISSION_SCOPES = {"id-token"}
125
126
 
126
127
 
127
- def normalize_permission_declaration(value: Any) -> list[str] | None:
128
- if value is None:
129
- return None
130
-
131
- if isinstance(value, str):
132
- return [value]
133
-
134
- if isinstance(value, list):
135
- return [str(item) for item in value]
136
-
137
- if isinstance(value, dict):
138
- return [f"{key!s}:{item!s}" for key, item in value.items()]
139
-
140
- return [str(value)]
141
-
142
-
143
128
  def _empty_github_token_permissions() -> dict[str, str]:
144
129
  return {scope: "none" for scope in GITHUB_TOKEN_PERMISSION_SCOPES}
145
130
 
@@ -21,8 +21,8 @@ from openhound_github.graph import GHEdgeProperties, GHNode, GHNodeProperties
21
21
  from openhound_github.kinds import edges as ek
22
22
  from openhound_github.kinds import nodes as nk
23
23
  from openhound_github.main import app
24
+ from openhound_github.models.permissions import normalize_permission_declaration
24
25
  from openhound_github.models.workflow import (
25
- normalize_permission_declaration,
26
26
  parse_runs_on_selector,
27
27
  resolve_effective_github_token_permissions,
28
28
  )
@@ -34,6 +34,10 @@ from openhound_github.models.workflow_reference import (
34
34
  TEMPLATE_RE = re.compile(r"\$\{\{\s*[^}]+?\s*\}\}")
35
35
 
36
36
 
37
+ def _escape_cypher_string(value: Any) -> str:
38
+ return str(value).replace("\\", "\\\\").replace("'", "\\'")
39
+
40
+
37
41
  @dataclass
38
42
  class GHWorkflowJobProperties(GHNodeProperties):
39
43
  """Workflow job-specific properties.
@@ -542,7 +546,8 @@ class WorkflowJob(BaseAsset):
542
546
  source: str,
543
547
  ) -> str:
544
548
  properties = ", ".join(
545
- f"{matcher.key}:'{matcher.value}'" for matcher in property_matchers
549
+ f"{matcher.key}:'{_escape_cypher_string(matcher.value)}'"
550
+ for matcher in property_matchers
546
551
  )
547
552
  if source == "job":
548
553
  return (
@@ -11,6 +11,7 @@ from dlt.sources.helpers.rest_client.client import RESTClient
11
11
  from dlt.sources.helpers.rest_client.paginators import (
12
12
  OffsetPaginator,
13
13
  )
14
+ from requests.exceptions import JSONDecodeError
14
15
 
15
16
  from openhound_github.graphql import (
16
17
  MEMBERS_WITH_ROLE_QUERY,
@@ -240,9 +241,17 @@ def _repository_workflow_permissions(
240
241
  if cache_key not in ctx.repository_workflow_permissions_cache:
241
242
  with ctx.cache_lock:
242
243
  if cache_key not in ctx.repository_workflow_permissions_cache:
243
- ctx.repository_workflow_permissions_cache[cache_key] = client.get(
244
- f"/repos/{repository_full_name}/actions/permissions/workflow"
245
- ).json()
244
+ try:
245
+ ctx.repository_workflow_permissions_cache[cache_key] = client.get(
246
+ f"/repos/{repository_full_name}/actions/permissions/workflow"
247
+ ).json()
248
+ except (requests.HTTPError, JSONDecodeError) as e:
249
+ logger.warning(
250
+ "Unable to fetch workflow permissions for repository '%s': %s",
251
+ repository_full_name,
252
+ e,
253
+ )
254
+ ctx.repository_workflow_permissions_cache[cache_key] = {}
246
255
  return ctx.repository_workflow_permissions_cache[cache_key]
247
256
 
248
257