openhound-github 0.13.1__tar.gz → 0.14.2.dev2__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 (437) hide show
  1. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/PKG-INFO +1 -1
  2. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Organization.md +1 -0
  3. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Repository.md +3 -1
  4. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/pyproject.toml +1 -1
  5. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/graph.py +10 -0
  6. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/main.py +1 -1
  7. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org.py +4 -0
  8. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository.py +12 -1
  9. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/scim_user.py +4 -5
  10. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/organization.py +2 -0
  11. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_repository_rulesets.py +65 -4
  12. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_models.py +9 -5
  13. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_saml_models.py +6 -0
  14. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_scim_models.py +3 -2
  15. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_source_org_canonicalization.py +4 -0
  16. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/uv.lock +4 -4
  17. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/CODE_OF_CONDUCT.md +0 -0
  18. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/CONTRIBUTING.md +0 -0
  19. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GOVERNANCE.md +0 -0
  20. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-COC-Header.png +0 -0
  21. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-CONTRIB-Header.png +0 -0
  22. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-GOV-Header.png +0 -0
  23. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-Header.png +0 -0
  24. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-LIC-Header.png +0 -0
  25. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-SEC-Header.png +0 -0
  26. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SECURITY.md +0 -0
  27. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-Dark.svg +0 -0
  28. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-FOSS-Dark.svg +0 -0
  29. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-FOSS-Light.svg +0 -0
  30. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-Light.svg +0 -0
  31. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/publish.yml +0 -0
  32. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/release-on-merge.yml +0 -0
  33. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/validate-branch.yml +0 -0
  34. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.gitignore +0 -0
  35. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.gitmodules +0 -0
  36. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.pre-commit-config.yaml +0 -0
  37. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/LICENSE.md +0 -0
  38. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/README.md +0 -0
  39. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddAssignee.md +0 -0
  40. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddCollaborator.md +0 -0
  41. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddLabel.md +0 -0
  42. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddMember.md +0 -0
  43. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddedDeployKey.md +0 -0
  44. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AdminTo.md +0 -0
  45. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
  46. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AssignedTo.md +0 -0
  47. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  48. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  49. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  50. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAccess.md +0 -0
  51. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAccessSecret.md +0 -0
  52. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  53. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  54. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
  55. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
  56. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
  57. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
  58. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
  59. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
  60. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
  61. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
  62. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditProtection.md +0 -0
  63. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanInterceptJob.md +0 -0
  64. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  65. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanReadSecret.md +0 -0
  66. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  67. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
  68. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanUseRunner.md +0 -0
  69. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  70. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  71. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CloseIssue.md +0 -0
  72. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  73. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_Contains.md +0 -0
  74. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  75. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  76. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
  77. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateRepository.md +0 -0
  78. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  79. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateTag.md +0 -0
  80. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateTeam.md +0 -0
  81. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  82. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  83. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  84. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteIssue.md +0 -0
  85. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteTag.md +0 -0
  86. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DependsOn.md +0 -0
  87. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeploysTo.md +0 -0
  88. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  89. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  90. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  91. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
  92. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  93. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  94. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  95. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  96. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasBaseRole.md +0 -0
  97. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  98. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasMember.md +0 -0
  99. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  100. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  101. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasRole.md +0 -0
  102. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasRunner.md +0 -0
  103. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  104. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasSecret.md +0 -0
  105. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasVariable.md +0 -0
  106. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InheritedFrom.md +0 -0
  107. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InstalledAs.md +0 -0
  108. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InviteMember.md +0 -0
  109. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_IsEligibleFor.md +0 -0
  110. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  111. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  112. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  113. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
  114. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
  115. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
  116. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
  117. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
  118. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
  119. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
  120. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  121. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  122. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  123. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  124. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  125. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  126. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  127. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageTopics.md +0 -0
  128. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  129. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MapsToUser.md +0 -0
  130. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  131. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
  132. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MemberOf.md +0 -0
  133. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  134. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  135. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  136. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  137. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_Owns.md +0 -0
  138. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ProtectedBy.md +0 -0
  139. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  140. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  141. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
  142. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
  143. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
  144. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
  145. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
  146. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  147. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  148. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  149. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  150. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  151. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RemoveLabel.md +0 -0
  152. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  153. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenIssue.md +0 -0
  154. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  155. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RequestPrReview.md +0 -0
  156. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  157. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  158. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  159. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  160. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RunsOn.md +0 -0
  161. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
  162. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  163. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetIssueType.md +0 -0
  164. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetMilestone.md +0 -0
  165. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  166. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SyncedTo.md +0 -0
  167. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  168. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  169. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_TransferRepository.md +0 -0
  170. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_UsesSecret.md +0 -0
  171. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_UsesVariable.md +0 -0
  172. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ValidToken.md +0 -0
  173. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  174. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
  175. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
  176. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
  177. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  178. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  179. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
  180. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
  181. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
  182. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
  183. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
  184. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  185. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  186. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  187. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  188. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  189. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  190. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  191. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  192. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_App.md +0 -0
  193. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_AppInstallation.md +0 -0
  194. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Branch.md +0 -0
  195. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  196. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_DeployKey.md +0 -0
  197. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Enterprise.md +0 -0
  198. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
  199. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
  200. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
  201. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
  202. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
  203. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Environment.md +0 -0
  204. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
  205. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  206. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  207. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  208. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRole.md +0 -0
  209. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRunner.md +0 -0
  210. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
  211. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgSecret.md +0 -0
  212. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgVariable.md +0 -0
  213. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  214. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  215. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoRole.md +0 -0
  216. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoRunner.md +0 -0
  217. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoSecret.md +0 -0
  218. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoVariable.md +0 -0
  219. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Runner.md +0 -0
  220. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RunnerGroup.md +0 -0
  221. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  222. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Secret.md +0 -0
  223. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  224. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Team.md +0 -0
  225. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_TeamRole.md +0 -0
  226. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_User.md +0 -0
  227. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Variable.md +0 -0
  228. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Workflow.md +0 -0
  229. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  230. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  231. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/docs/og-docs.json +0 -0
  232. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  233. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
  234. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
  235. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
  236. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  237. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  238. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  239. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  240. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
  241. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  242. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  243. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  244. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/README.md +0 -0
  245. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  246. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/active-leaked-secrets.json +0 -0
  247. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  248. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/all-actions-allowed.json +0 -0
  249. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/app-installations-all-repos.json +0 -0
  250. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  251. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  252. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  253. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  254. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  255. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  256. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  257. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  258. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  259. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  260. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/default-repository-permissions.json +0 -0
  261. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  262. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  263. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  264. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  265. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/environments-admin-bypass.json +0 -0
  266. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/expired-pats.json +0 -0
  267. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/external-identities-without-scim.json +0 -0
  268. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/github-to-azure-identity.json +0 -0
  269. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/global-repo-perms.json +0 -0
  270. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/hybrid-identities.json +0 -0
  271. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  272. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-create-pages.json +0 -0
  273. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  274. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-delete-repos.json +0 -0
  275. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  276. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  277. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/org-owners.json +0 -0
  278. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/orgs-without-2fa.json +0 -0
  279. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/pats-all-repo-access.json +0 -0
  280. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/pending-pat-requests.json +0 -0
  281. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  282. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  283. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  284. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/public-repos.json +0 -0
  285. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  286. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/push-to-protected-branches.json +0 -0
  287. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  288. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  289. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repository-workflows.json +0 -0
  290. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/saml-configuration.json +0 -0
  291. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  292. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  293. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  294. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
  295. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
  296. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/team-membership-admin.json +0 -0
  297. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/team-structure.json +0 -0
  298. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-branches.json +0 -0
  299. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  300. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-default-branches.json +0 -0
  301. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  302. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
  303. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
  304. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
  305. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
  306. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
  307. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/schema.json +0 -0
  308. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/justfile +0 -0
  309. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/scripts/generate_gh_description_docs.py +0 -0
  310. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/main.py +0 -0
  311. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/__init__.py +0 -0
  312. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/auth.py +0 -0
  313. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/extension.yaml +0 -0
  314. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/github_rest_client.py +0 -0
  315. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/github_retry.py +0 -0
  316. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/graphql.py +0 -0
  317. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/helpers.py +0 -0
  318. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/kinds/edges.py +0 -0
  319. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/kinds/nodes.py +0 -0
  320. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/lookup.py +0 -0
  321. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/__init__.py +0 -0
  322. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/actions_permission.py +0 -0
  323. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/app_installation.py +0 -0
  324. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch.py +0 -0
  325. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  326. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_protection_rule.py +0 -0
  327. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_push_allowance.py +0 -0
  328. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/deploy_key.py +0 -0
  329. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise.py +0 -0
  330. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_admin.py +0 -0
  331. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_helpers.py +0 -0
  332. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  333. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_member.py +0 -0
  334. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_organization.py +0 -0
  335. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role.py +0 -0
  336. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role_team.py +0 -0
  337. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role_user.py +0 -0
  338. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team.py +0 -0
  339. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_member.py +0 -0
  340. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  341. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_role.py +0 -0
  342. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_user.py +0 -0
  343. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/env_secret.py +0 -0
  344. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/env_variable.py +0 -0
  345. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/environment.py +0 -0
  346. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/environment_branch_policy.py +0 -0
  347. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/external_identity.py +0 -0
  348. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role.py +0 -0
  349. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role_member.py +0 -0
  350. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role_team.py +0 -0
  351. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_secret.py +0 -0
  352. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_variable.py +0 -0
  353. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/permissions.py +0 -0
  354. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token.py +0 -0
  355. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token_access.py +0 -0
  356. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token_request.py +0 -0
  357. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  358. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repo_role_assignment.py +0 -0
  359. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_role.py +0 -0
  360. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_secret.py +0 -0
  361. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_variable.py +0 -0
  362. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/runner.py +0 -0
  363. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
  364. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_helpers.py +0 -0
  365. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_issuer.py +0 -0
  366. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_provider.py +0 -0
  367. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_service_provider.py +0 -0
  368. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  369. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team.py +0 -0
  370. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team_member.py +0 -0
  371. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team_role.py +0 -0
  372. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/user.py +0 -0
  373. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow.py +0 -0
  374. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_job.py +0 -0
  375. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_reference.py +0 -0
  376. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_step.py +0 -0
  377. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/__init__.py +0 -0
  378. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/enterprise.py +0 -0
  379. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/runner_ids.py +0 -0
  380. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/source.py +0 -0
  381. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/transforms.py +0 -0
  382. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_app_auth.py +0 -0
  383. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_branch_collection_gate.py +0 -0
  384. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_branch_protection_traversability.py +0 -0
  385. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_credential_permission_models.py +0 -0
  386. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/actions-permissions.json +0 -0
  387. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/actionsecrets.json +0 -0
  388. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/app.json +0 -0
  389. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/appinstalls.json +0 -0
  390. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branch-policies.json +0 -0
  391. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branch-prot-rules.json +0 -0
  392. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branches.json +0 -0
  393. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/custom-roles.json +0 -0
  394. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/environments.json +0 -0
  395. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-pat-request.json +0 -0
  396. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-pat.json +0 -0
  397. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-role-teams.json +0 -0
  398. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-role-users.json +0 -0
  399. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-roles.json +0 -0
  400. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org.json +0 -0
  401. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/pat-repositories.json +0 -0
  402. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repo-collaborators.json +0 -0
  403. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repo-teams.json +0 -0
  404. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repositories.json +0 -0
  405. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/scimusers.json +0 -0
  406. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/secrets.json +0 -0
  407. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/secretscanningalert.json +0 -0
  408. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/selected-org-secrets.json +0 -0
  409. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/variables.json +0 -0
  410. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/workflows.json +0 -0
  411. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_deploy_key_models.py +0 -0
  412. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_deploy_key_resources.py +0 -0
  413. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_description_docs.py +0 -0
  414. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_capabilities.py +0 -0
  415. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_organization.py +0 -0
  416. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_resources.py +0 -0
  417. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_model.py +0 -0
  418. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_resources.py +0 -0
  419. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_reviewer_lookup.py +0 -0
  420. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_error_resilience.py +0 -0
  421. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_app_retry.py +0 -0
  422. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_rest_client.py +0 -0
  423. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_retry.py +0 -0
  424. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_helpers.py +0 -0
  425. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_lookup.py +0 -0
  426. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_role_model.py +0 -0
  427. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_scim_resources.py +0 -0
  428. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_secret_models.py +0 -0
  429. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_ids.py +0 -0
  430. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_resources.py +0 -0
  431. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_saml_helpers.py +0 -0
  432. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_source_endpoints.py +0 -0
  433. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_team_external_groups.py +0 -0
  434. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_variable_models.py +0 -0
  435. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_interception_path.py +0 -0
  436. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_model.py +0 -0
  437. {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_resources.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: openhound-github
3
- Version: 0.13.1
3
+ Version: 0.14.2.dev2
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
@@ -13,6 +13,7 @@ Represents a GitHub organization. This is the root node of the graph and serves
13
13
  | `environmentid` | `string` | The identifier of the GitHub environment where this node was collected. |
14
14
  | `last_seen` | `datetime` | The timestamp when this node was last observed during collection. |
15
15
  | `node_id` | `string` | The stable identifier used as the OpenGraph node ID; this is the native GitHub node ID where available. |
16
+ | `database_id` | `integer` | The organization's numeric GitHub database ID used in immutable OIDC subjects. |
16
17
  | `login` | `string` | The organization's login handle (URL slug). |
17
18
  | `org_name` | `string` | The organization's display name (from the `name` field in the GitHub API). |
18
19
  | `description` | `string` | The organization's description. |
@@ -18,6 +18,7 @@ The `branch_count` and `environment_count` properties preserve GitHub-reported t
18
18
  | `last_seen` | `datetime` | The timestamp when this node was last observed during collection. |
19
19
  | `node_id` | `string` | The stable identifier used as the OpenGraph node ID; this is the native GitHub node ID where available. |
20
20
  | `collected` | `boolean` | Collected/generated by OpenHound. |
21
+ | `database_id` | `integer` | The repository's numeric GitHub database ID used in immutable OIDC subjects. |
21
22
  | `full_name` | `string` | The fully qualified name (e.g., `org/repo`). |
22
23
  | `private` | `boolean` | Whether the repository is private. |
23
24
  | `html_url` | `string` | URL to the repository on GitHub. |
@@ -37,7 +38,8 @@ The `branch_count` and `environment_count` properties preserve GitHub-reported t
37
38
  | `open_issues` | `integer` | Number of open issues (includes pull requests). |
38
39
  | `watchers` | `integer` | Number of watchers. |
39
40
  | `owner_name` | `string` | The login of the repository owner. |
40
- | `owner_id` | `string` | The owner id property. |
41
+ | `owner_id` | `string` | The opaque GraphQL node ID of the repository owner. |
42
+ | `owner_database_id` | `integer` | The numeric GitHub database ID of the repository owner used in immutable OIDC subjects. |
41
43
  | `environment_name` | `string` | The name of the environment (GitHub organization). |
42
44
  | `actions_enabled` | `boolean` | Whether GitHub Actions is enabled for this repository. |
43
45
  | `self_hosted_runners_enabled` | `boolean` | Whether the repository may use self-hosted runners. |
@@ -28,7 +28,7 @@ local_scheme = "no-local-version"
28
28
 
29
29
  [dependency-groups]
30
30
  dev = [
31
- "openhound>=0.2.7",
31
+ "openhound>=0.4.0",
32
32
  "pre-commit>=4.5.1",
33
33
  "pytest>=9.0.1",
34
34
  "ruff>=0.15.5",
@@ -4,6 +4,9 @@ from openhound.core.models.entries_dataclass import EdgeProperties
4
4
  from openhound.core.models.entries_dataclass import Node as BaseNode
5
5
  from openhound.core.models.entries_dataclass import NodeProperties as BaseProperties
6
6
 
7
+ GITHUB_SOURCE_KIND = "GitHub"
8
+ SAML_SOURCE_KIND = "SAML"
9
+
7
10
 
8
11
  @dataclass
9
12
  class GHNodeProperties(BaseProperties):
@@ -22,6 +25,13 @@ class GHNode(BaseNode):
22
25
  # Use GitHub's native node_id as the OpenGraph node id so edges can
23
26
  # reference nodes by the same identifier used during collection.
24
27
  self.id = self.properties.node_id
28
+ source_kind = (
29
+ SAML_SOURCE_KIND
30
+ if any(kind.startswith("SAML_") for kind in self.kinds)
31
+ else GITHUB_SOURCE_KIND
32
+ )
33
+ if source_kind not in self.kinds:
34
+ self.kinds.append(source_kind)
25
35
 
26
36
 
27
37
  @dataclass
@@ -8,7 +8,7 @@ from openhound.core.preproc import PreProcContext
8
8
  from .lookup import GithubLookup
9
9
  from .transforms import transforms
10
10
 
11
- app = OpenHound("github", source_kind="GitHub", help="OpenGraph collector for GitHub")
11
+ app = OpenHound("github", help="OpenGraph collector for GitHub")
12
12
 
13
13
 
14
14
  @app.collect()
@@ -15,6 +15,7 @@ class GHOrganizationProperties(GHNodeProperties):
15
15
  """Organization-specific properties and accordion panel queries.
16
16
 
17
17
  Attributes:
18
+ database_id: The organization's numeric GitHub database ID used in immutable OIDC subjects.
18
19
  login: The organization's login handle (URL slug).
19
20
  org_name: The organization's display name (from the `name` field in the GitHub API).
20
21
  description: The organization's description.
@@ -88,6 +89,7 @@ class GHOrganizationProperties(GHNodeProperties):
88
89
  collected: The collected property.
89
90
  """
90
91
 
92
+ database_id: int | None = None
91
93
  login: str | None = None
92
94
  org_name: str | None = None
93
95
  description: str | None = None
@@ -176,6 +178,7 @@ class Organization(BaseAsset):
176
178
 
177
179
  node_id: str
178
180
  login: str
181
+ database_id: int | None = None
179
182
  name: str | None = None
180
183
  description: str | None = None
181
184
  company: str | None = None
@@ -245,6 +248,7 @@ class Organization(BaseAsset):
245
248
  name=self.login,
246
249
  displayname=self.name or self.login,
247
250
  node_id=oid,
251
+ database_id=self.database_id,
248
252
  login=self.login,
249
253
  org_name=self.name or "",
250
254
  description=self.description,
@@ -18,6 +18,7 @@ class GHRepositoryProperties(GHNodeProperties):
18
18
 
19
19
  Attributes:
20
20
  collected: Collected/generated by OpenHound
21
+ database_id: The repository's numeric GitHub database ID used in immutable OIDC subjects.
21
22
  full_name: The fully qualified name (e.g., `org/repo`).
22
23
  private: Whether the repository is private.
23
24
  html_url: URL to the repository on GitHub.
@@ -37,7 +38,8 @@ class GHRepositoryProperties(GHNodeProperties):
37
38
  open_issues: Number of open issues (includes pull requests).
38
39
  watchers: Number of watchers.
39
40
  owner_name: The login of the repository owner.
40
- owner_id: The owner id property.
41
+ owner_id: The opaque GraphQL node ID of the repository owner.
42
+ owner_database_id: The numeric GitHub database ID of the repository owner used in immutable OIDC subjects.
41
43
  environment_name: The name of the environment (GitHub organization).
42
44
  actions_enabled: Whether GitHub Actions is enabled for this repository.
43
45
  self_hosted_runners_enabled: Whether the repository may use self-hosted runners.
@@ -70,6 +72,7 @@ class GHRepositoryProperties(GHNodeProperties):
70
72
  collected: bool = True
71
73
 
72
74
  # TODO: Check owner_node_id
75
+ database_id: int | None = None
73
76
  full_name: str | None = None
74
77
  private: bool | None = None
75
78
  html_url: str | None = None
@@ -90,6 +93,7 @@ class GHRepositoryProperties(GHNodeProperties):
90
93
  watchers: int | None = None
91
94
  owner_name: str | None = None
92
95
  owner_id: str | None = None
96
+ owner_database_id: int | None = None
93
97
  environment_name: str | None = None
94
98
  actions_enabled: bool | None = None
95
99
  self_hosted_runners_enabled: bool | None = None
@@ -201,6 +205,7 @@ class Repository(BaseAsset):
201
205
  node_id: str
202
206
  name: str
203
207
  full_name: str
208
+ database_id: int | None = None
204
209
 
205
210
  private: bool
206
211
  owner: Owner
@@ -238,6 +243,10 @@ class Repository(BaseAsset):
238
243
  def owner_name(self) -> str:
239
244
  return self.owner.login
240
245
 
246
+ @property
247
+ def owner_database_id(self) -> int:
248
+ return self.owner.id
249
+
241
250
  @property
242
251
  def as_node(self) -> GHNode:
243
252
  rid = self.node_id
@@ -255,6 +264,7 @@ class Repository(BaseAsset):
255
264
  name=self.name,
256
265
  displayname=self.full_name,
257
266
  node_id=rid,
267
+ database_id=self.database_id,
258
268
  full_name=self.full_name,
259
269
  private=self.private,
260
270
  html_url=self.html_url,
@@ -275,6 +285,7 @@ class Repository(BaseAsset):
275
285
  watchers=self.watchers,
276
286
  owner_name=self.owner_name or "",
277
287
  owner_id=self.owner_id or "",
288
+ owner_database_id=self.owner_database_id,
278
289
  environment_name=self.org_login,
279
290
  environmentid=self.org_node_id,
280
291
  actions_enabled=self.actions_enabled,
@@ -23,6 +23,8 @@ from openhound_github.kinds import nodes as nk
23
23
  from openhound_github.main import app
24
24
  from openhound_github.models.saml_helpers import detect_foreign_idp
25
25
 
26
+ SCIM_SOURCE_KIND = "SCIM"
27
+
26
28
 
27
29
  def scim_organization_id(scope_node_id: str) -> str:
28
30
  return f"SCIM_Organization_{scope_node_id}"
@@ -40,7 +42,6 @@ class ScimNodeProperties(NodeProperties):
40
42
  profile_url: str | None = None
41
43
  enterprise: str | None = None
42
44
  organization: str | None = None
43
- source_kind: str | None = None
44
45
 
45
46
 
46
47
  @dataclass
@@ -48,7 +49,8 @@ class ScimNode(Node):
48
49
  id: str
49
50
 
50
51
  def __post_init__(self):
51
- return None
52
+ if SCIM_SOURCE_KIND not in self.kinds:
53
+ self.kinds.append(SCIM_SOURCE_KIND)
52
54
 
53
55
 
54
56
  class Name(BaseModel):
@@ -128,7 +130,6 @@ class ScimOrganization(ScimScopeAsset):
128
130
  environmentid=self.scope_node_id,
129
131
  enterprise=self.enterprise_slug,
130
132
  organization=self.org_login,
131
- source_kind="GitHub",
132
133
  ),
133
134
  )
134
135
 
@@ -210,7 +211,6 @@ class ScimUser(ScimScopeAsset):
210
211
  profile_url=self.meta.location if self.meta else None,
211
212
  enterprise=self.enterprise_slug,
212
213
  organization=self.org_login,
213
- source_kind="GitHub",
214
214
  ),
215
215
  )
216
216
 
@@ -306,7 +306,6 @@ class ScimGroup(ScimScopeAsset):
306
306
  external_id=self.external_id,
307
307
  enterprise=self.enterprise_slug,
308
308
  organization=self.org_login,
309
- source_kind="GitHub",
310
309
  ),
311
310
  )
312
311
 
@@ -510,6 +510,7 @@ def organizations(ctx: SourceContext):
510
510
  org_data["can_approve_pull_request_reviews"] = workflow_perms.get(
511
511
  "can_approve_pull_request_reviews"
512
512
  )
513
+ org_data["database_id"] = org_data.get("id")
513
514
  org_data["github_deployment_type"] = ctx.deployment_type
514
515
  org_data["ghes_version"] = ctx.ghes_version
515
516
 
@@ -1008,6 +1009,7 @@ def repositories(ctx: SourceContext):
1008
1009
  )
1009
1010
  yield {
1010
1011
  **repo,
1012
+ "database_id": repo.get("id"),
1011
1013
  "actions_enabled": actions_enabled,
1012
1014
  "self_hosted_runners_enabled": self_hosted_runners_enabled,
1013
1015
  "org_login": org_name,
@@ -10,6 +10,7 @@ from openhound_github.models.repository import Repository
10
10
  from openhound_github.resources.organization import (
11
11
  OrgContext,
12
12
  SourceContext,
13
+ repositories,
13
14
  repositories_graphql,
14
15
  )
15
16
 
@@ -33,6 +34,35 @@ class _FakeClient:
33
34
  return response
34
35
 
35
36
 
37
+ class _FakeRepositoryRESTClient:
38
+ def __init__(self) -> None:
39
+ self.get_calls: list[str] = []
40
+ self.paginate_calls: list[str] = []
41
+
42
+ def get(self, path: str):
43
+ self.get_calls.append(path)
44
+ return type(
45
+ "Response",
46
+ (),
47
+ {"json": lambda _self: {"enabled_repositories": "all"}},
48
+ )()
49
+
50
+ def paginate(self, path: str, **_kwargs):
51
+ self.paginate_calls.append(path)
52
+ return iter(
53
+ [
54
+ [
55
+ {
56
+ "id": 1296269,
57
+ "node_id": "R_1",
58
+ "name": "repo",
59
+ "full_name": "org/repo",
60
+ }
61
+ ]
62
+ ]
63
+ )
64
+
65
+
36
66
  def _repository_page_data(
37
67
  repository_id: str,
38
68
  repository_name: str,
@@ -98,16 +128,17 @@ def _request_pages(client: _FakeClient) -> list[tuple[object, object]]:
98
128
 
99
129
  def _make_repository() -> Repository:
100
130
  return Repository(
101
- id=1,
131
+ id=1296269,
102
132
  node_id="R_1",
103
133
  name="repo",
104
134
  full_name="org/repo",
135
+ database_id=1296269,
105
136
  private=False,
106
137
  size=0,
107
138
  owner={
108
- "login": "octocat",
109
- "id": 1,
110
- "node_id": "U_1",
139
+ "login": "org",
140
+ "id": 123456,
141
+ "node_id": "O_1",
111
142
  "avatar_url": "",
112
143
  "gravatar_id": "",
113
144
  "url": "",
@@ -166,6 +197,29 @@ def test_repositories_graphql_flattens_repository_counts() -> None:
166
197
  ]
167
198
 
168
199
 
200
+ def test_repositories_preserve_numeric_database_id_from_rest_payload() -> None:
201
+ client = _FakeRepositoryRESTClient()
202
+ ctx = SourceContext(
203
+ client=client,
204
+ organizations=[OrgContext(client=client, org_name="org")],
205
+ )
206
+
207
+ rows = list(repositories.__wrapped__(ctx))
208
+
209
+ assert rows == [
210
+ {
211
+ "id": 1296269,
212
+ "node_id": "R_1",
213
+ "name": "repo",
214
+ "full_name": "org/repo",
215
+ "database_id": 1296269,
216
+ "actions_enabled": True,
217
+ "self_hosted_runners_enabled": True,
218
+ "org_login": "org",
219
+ }
220
+ ]
221
+
222
+
169
223
  def test_repositories_graphql_uses_dedicated_graphql_client_path() -> None:
170
224
  rest_client = _FakeClient()
171
225
  graphql_client = _FakeClient()
@@ -425,6 +479,13 @@ def test_repository_node_surfaces_branch_ruleset_presence() -> None:
425
479
  assert node.properties.default_workflow_permissions == "read"
426
480
  assert node.properties.can_approve_pull_request_reviews is False
427
481
  assert node.properties.size == 0
482
+ assert node.properties.database_id == 1296269
483
+ assert node.properties.owner_database_id == 123456
484
+ assert node.properties.node_id == "R_1"
485
+ assert node.properties.owner_id == "O_1"
486
+ assert [(edge.start.value, edge.end.value) for edge in repo.edges] == [
487
+ ("O_1", "R_1")
488
+ ]
428
489
  lookup.repository_branch_ruleset_count.assert_called_once_with("R_1")
429
490
  lookup.repository_graphql_counts.assert_called_once_with("R_1")
430
491
  lookup.repository_workflow_permissions.assert_called_once_with("R_1")
@@ -197,7 +197,7 @@ def test_org_runner_group_keeps_generic_runner_group_label() -> None:
197
197
 
198
198
  node = group.as_node
199
199
 
200
- assert node.kinds == [nk.ORG_RUNNER_GROUP, nk.RUNNER_GROUP]
200
+ assert node.kinds == [nk.ORG_RUNNER_GROUP, nk.RUNNER_GROUP, "GitHub"]
201
201
  assert node.properties.scope == "organization"
202
202
  assert node.id == "ORG_1_runner_group_1"
203
203
 
@@ -267,22 +267,26 @@ def test_runner_groups_and_runners_use_scope_owner_prefixes_with_generic_suffixe
267
267
  )
268
268
  repo_runner._lookup = SimpleNamespace(org_id_for_login=lambda _login: "ORG_1")
269
269
 
270
- assert org_runner.as_node.kinds == [nk.ORG_RUNNER, nk.RUNNER]
270
+ assert org_runner.as_node.kinds == [nk.ORG_RUNNER, nk.RUNNER, "GitHub"]
271
271
  assert org_runner.as_node.properties.scope == "organization"
272
272
  assert org_runner.as_node.id == "ORG_1_runner_8"
273
273
  assert org_runner.as_node.properties.name == "acme/org-runner-1"
274
274
  assert org_runner.as_node.properties.displayname == "org-runner-1"
275
- assert group.as_node.kinds == [nk.ENTERPRISE_RUNNER_GROUP, nk.RUNNER_GROUP]
275
+ assert group.as_node.kinds == [
276
+ nk.ENTERPRISE_RUNNER_GROUP,
277
+ nk.RUNNER_GROUP,
278
+ "GitHub",
279
+ ]
276
280
  assert group.as_node.properties.scope == "enterprise"
277
281
  assert group.as_node.id == "ENT_1_runner_group_2"
278
282
 
279
- assert runner.as_node.kinds == [nk.ENTERPRISE_RUNNER, nk.RUNNER]
283
+ assert runner.as_node.kinds == [nk.ENTERPRISE_RUNNER, nk.RUNNER, "GitHub"]
280
284
  assert runner.as_node.properties.scope == "enterprise"
281
285
  assert runner.as_node.id == "ENT_1_runner_9"
282
286
  assert runner.as_node.properties.name == "acme-enterprise/enterprise-runner-1"
283
287
  assert runner.as_node.properties.displayname == "enterprise-runner-1"
284
288
 
285
- assert repo_runner.as_node.kinds == [nk.REPO_RUNNER, nk.RUNNER]
289
+ assert repo_runner.as_node.kinds == [nk.REPO_RUNNER, nk.RUNNER, "GitHub"]
286
290
  assert repo_runner.as_node.properties.scope == "repository"
287
291
  assert repo_runner.as_node.id == "REPO_1_runner_10"
288
292
  assert repo_runner.as_node.properties.name == "acme/repo/repo-runner-1"
@@ -1,6 +1,7 @@
1
1
  from types import SimpleNamespace
2
2
 
3
3
  from openhound_github.kinds import edges as ek
4
+ from openhound_github.kinds import nodes as nk
4
5
  from openhound_github.graphql import ENTERPRISE_SAML_QUERY, SAML_IDENTITIES_QUERY
5
6
  from openhound_github.models.external_identity import ExternalIdentity
6
7
  from openhound_github.models.saml_assertion_consumer_service import (
@@ -58,6 +59,7 @@ def _saml_account_edge(identity: ExternalIdentity):
58
59
  def test_external_identity_prefers_saml_username_for_display_name() -> None:
59
60
  identity = _identity_with_lookup()
60
61
 
62
+ assert identity.as_node.kinds == [nk.EXTERNAL_IDENTITY, "GitHub"]
61
63
  assert identity.as_node.properties.name == "Alice@example.com"
62
64
  assert identity.as_node.properties.displayname == "Alice@example.com"
63
65
 
@@ -106,6 +108,9 @@ def test_normalized_saml_nodes_expose_contract_metadata() -> None:
106
108
  assert service_provider.as_node.id == "github:saml:sp:org:acme"
107
109
  assert issuer.as_node.id == "github:saml:trusted-issuer:org:acme"
108
110
  assert acs.as_node.id == "github:saml:acs:org:acme"
111
+ assert service_provider.as_node.kinds == [nk.SAML_SERVICE_PROVIDER, "SAML"]
112
+ assert issuer.as_node.kinds == [nk.SAML_ISSUER, "SAML"]
113
+ assert acs.as_node.kinds == [nk.SAML_ASSERTION_CONSUMER_SERVICE, "SAML"]
109
114
  assert sp_properties.github_deployment_id == DEFAULT_GITHUB_DEPLOYMENT_ID
110
115
  assert sp_properties.github_web_origin == DEFAULT_GITHUB_WEB_ORIGIN
111
116
  assert sp_properties.schema_contract_version == SAML_CONTRACT_VERSION
@@ -228,6 +233,7 @@ def test_saml_provider_replays_snake_case_fields_and_deployment_metadata() -> No
228
233
  assert provider.sso_url == "https://issuer.example.com/sso"
229
234
  assert provider.signature_method == "rsa-sha256"
230
235
  assert provider.idp_certificate == "certificate-data"
236
+ assert provider.as_node.kinds == [nk.SAML_IDENTITY_PROVIDER, "GitHub"]
231
237
  assert provider.as_node.properties.github_deployment_id == "github.example.com"
232
238
  assert provider.as_node.properties.github_web_origin == "https://github.example.com"
233
239
 
@@ -90,7 +90,7 @@ def test_scim_user_emits_normalized_edges_without_legacy_correlation_by_default(
90
90
  edges = list(user.edges)
91
91
  unmatched_edges = list(unmatched_user.edges)
92
92
 
93
- assert node.kinds == [nk.SCIM_USER]
93
+ assert node.kinds == [nk.SCIM_USER, "SCIM"]
94
94
  assert node.properties.environmentid == "ENT_NODE_1"
95
95
  assert node.properties.external_id == "00u-okta-1"
96
96
  assert node.properties.name == "alice@example.test"
@@ -136,6 +136,7 @@ def test_scim_group_emits_membership_and_tenant_scoped_legacy_correlation() -> N
136
136
 
137
137
  edges = list(group.edges)
138
138
 
139
+ assert group.as_node.kinds == [nk.SCIM_GROUP, "SCIM"]
139
140
  assert [edge.kind for edge in edges] == [
140
141
  ek.SCIM_CONTAINS,
141
142
  ek.SCIM_MEMBER_OF,
@@ -180,7 +181,7 @@ def test_scim_organization_stays_within_github_environment_root() -> None:
180
181
  node = organization.as_node
181
182
 
182
183
  assert node.id == "SCIM_Organization_ENT_NODE_1"
183
- assert node.kinds == [nk.SCIM_ORGANIZATION]
184
+ assert node.kinds == [nk.SCIM_ORGANIZATION, "SCIM"]
184
185
  assert node.properties.environmentid == "ENT_NODE_1"
185
186
 
186
187
 
@@ -60,6 +60,7 @@ def test_organizations_reuses_preflight_org_response() -> None:
60
60
  client = _FakeClient(
61
61
  {
62
62
  "/orgs/spectertst": {
63
+ "id": 123456,
63
64
  "login": "SpecterTst",
64
65
  "node_id": "O_kgDOCoV2OQ",
65
66
  },
@@ -78,9 +79,12 @@ def test_organizations_reuses_preflight_org_response() -> None:
78
79
  rows = list(inspect.unwrap(organizations._pipe.gen)(ctx))
79
80
 
80
81
  assert rows[0]["login"] == "SpecterTst"
82
+ assert rows[0]["database_id"] == 123456
81
83
  assert rows[0]["github_deployment_type"] == "ghes"
82
84
  assert rows[0]["ghes_version"] == "3.22.1"
83
85
  node = Organization(**rows[0]).as_node
86
+ assert node.properties.database_id == 123456
87
+ assert node.properties.node_id == "O_kgDOCoV2OQ"
84
88
  assert node.properties.github_deployment_type == "ghes"
85
89
  assert node.properties.ghes_version == "3.22.1"
86
90
  assert client.get_calls == [
@@ -847,7 +847,7 @@ wheels = [
847
847
 
848
848
  [[package]]
849
849
  name = "openhound"
850
- version = "0.2.7"
850
+ version = "0.4.0"
851
851
  source = { registry = "https://pypi.org/simple" }
852
852
  dependencies = [
853
853
  { name = "alive-progress" },
@@ -865,9 +865,9 @@ dependencies = [
865
865
  { name = "typer" },
866
866
  { name = "types-requests" },
867
867
  ]
868
- sdist = { url = "https://files.pythonhosted.org/packages/79/bb/94e8278a628c92d5eb65fbaa284f2936cf4db69428bb275550f474133d69/openhound-0.2.7.tar.gz", hash = "sha256:a8e87e938024ea0dbd3611818aea99315e87e012a84dffcc1cc3580195fa44d0", size = 3542656, upload-time = "2026-06-24T17:04:48.169Z" }
868
+ sdist = { url = "https://files.pythonhosted.org/packages/3b/03/95cf2dc3d2ea8cc8d2245c894f37a97b53b52dd9fda2f20b5f3757854f5d/openhound-0.4.0.tar.gz", hash = "sha256:7ba9f295f073eea4980aef9776a5cdf09c375d58fac39e6d71c2200d4029af34", size = 3580578, upload-time = "2026-09-08T14:54:20.215Z" }
869
869
  wheels = [
870
- { url = "https://files.pythonhosted.org/packages/37/5b/2d226a995e797142bcda11053fb6e9c8b18db11e73097f3411cdbbb83999/openhound-0.2.7-py3-none-any.whl", hash = "sha256:f758e10e89d3b30b16cd3f5c50bc19f2183f2735296cd50c5c03b2ac3074188a", size = 66881, upload-time = "2026-06-24T17:04:47.041Z" },
870
+ { url = "https://files.pythonhosted.org/packages/da/17/c1d6b7f39a3d08c16982c167f717be63c0fd87b0274e245ccf8cc0a53be2/openhound-0.4.0-py3-none-any.whl", hash = "sha256:f547d34eda0a48e271a316197304dc4c04214e42b9d00a685cea3982d0137567", size = 74608, upload-time = "2026-09-08T14:54:18.895Z" },
871
871
  ]
872
872
 
873
873
  [[package]]
@@ -897,7 +897,7 @@ requires-dist = [
897
897
  [package.metadata.requires-dev]
898
898
  dev = [
899
899
  { name = "mypy", specifier = ">=1.19.1" },
900
- { name = "openhound", specifier = ">=0.2.7" },
900
+ { name = "openhound", specifier = ">=0.4.0" },
901
901
  { name = "pre-commit", specifier = ">=4.5.1" },
902
902
  { name = "pytest", specifier = ">=9.0.1" },
903
903
  { name = "ruff", specifier = ">=0.15.5" },