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.
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/PKG-INFO +1 -1
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Organization.md +1 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Repository.md +3 -1
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/pyproject.toml +1 -1
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/graph.py +10 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/main.py +1 -1
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org.py +4 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository.py +12 -1
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/scim_user.py +4 -5
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/organization.py +2 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_repository_rulesets.py +65 -4
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_models.py +9 -5
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_saml_models.py +6 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_scim_models.py +3 -2
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_source_org_canonicalization.py +4 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/uv.lock +4 -4
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/CODE_OF_CONDUCT.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/CONTRIBUTING.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GOVERNANCE.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-COC-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-CONTRIB-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-GOV-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-LIC-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/GitHub-SEC-Header.png +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SECURITY.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-Dark.svg +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-FOSS-Dark.svg +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-FOSS-Light.svg +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/SO-Light.svg +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/publish.yml +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/release-on-merge.yml +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/validate-branch.yml +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.gitignore +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.gitmodules +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.pre-commit-config.yaml +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/LICENSE.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/README.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddAssignee.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddCollaborator.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddLabel.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddMember.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddedDeployKey.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AdminTo.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AssignedTo.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CallsWorkflow.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAccess.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAccessSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateBranch.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditProtection.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanInterceptJob.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanPwnRequest.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanReadSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanUseRunner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanWriteBranch.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CloseDiscussion.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CloseIssue.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ClosePullRequest.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_Contains.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateRepository.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateTag.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CreateTeam.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteIssue.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeleteTag.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DependsOn.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_DeploysTo.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_EditRepoProtections.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasBaseRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasMember.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasRunner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_HasVariable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InheritedFrom.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InstalledAs.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_InviteMember.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_IsEligibleFor.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageTopics.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ManageWebhooks.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MapsToUser.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_MemberOf.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_Owns.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ProtectedBy.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReadRepoContents.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RemoveAssignee.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RemoveLabel.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenIssue.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RequestPrReview.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RunOrgMigration.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_RunsOn.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetIssueType.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetMilestone.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SetSocialPreview.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_SyncedTo.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_TransferRepository.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_UsesSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_UsesVariable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ValidToken.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteRepoContents.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_App.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_AppInstallation.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Branch.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_DeployKey.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Enterprise.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRunner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Environment.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRunner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_OrgVariable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoRunner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoSecret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RepoVariable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Runner.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_RunnerGroup.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Secret.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Team.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_TeamRole.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_User.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Variable.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Workflow.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_WorkflowJob.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_WorkflowStep.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/docs/og-docs.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-organizations.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/README.md +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/active-leaked-secrets.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/all-actions-allowed.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/app-installations-all-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-self-approval.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/bypass-pr-requirements.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dangerous-branch-perms.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/default-repository-permissions.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/environments-admin-bypass.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/expired-pats.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/external-identities-without-scim.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/github-to-azure-identity.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/global-repo-perms.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/hybrid-identities.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-create-pages.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-create-public-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-delete-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/org-owners.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/orgs-without-2fa.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/pats-all-repo-access.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/pending-pat-requests.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/public-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/push-to-protected-branches.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/repository-workflows.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/saml-configuration.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secret-scanning-alerts.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
- {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
- {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
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/team-membership-admin.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/team-structure.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-branches.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/unprotected-default-branches.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
- {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
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/extension/schema.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/justfile +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/scripts/generate_gh_description_docs.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/main.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/__init__.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/auth.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/extension.yaml +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/github_rest_client.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/github_retry.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/graphql.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/helpers.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/kinds/edges.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/kinds/nodes.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/lookup.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/__init__.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/actions_permission.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/app_installation.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_protection_rule.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/branch_push_allowance.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/deploy_key.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_admin.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_helpers.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_managed_user.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_member.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_organization.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role_team.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_role_user.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_member.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_organization.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_team_role.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/enterprise_user.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/env_secret.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/env_variable.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/environment.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/environment_branch_policy.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/external_identity.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role_member.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_role_team.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_secret.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/org_variable.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/permissions.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token_access.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/personal_access_token_request.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/projected_enterprise_team.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repo_role_assignment.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_role.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_secret.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository_variable.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/runner.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_helpers.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_issuer.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_provider.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/saml_service_provider.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/secret_scanning_alert.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team_member.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/team_role.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/user.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_job.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_reference.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/workflow_step.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/__init__.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/resources/enterprise.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/runner_ids.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/source.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/transforms.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_app_auth.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_branch_collection_gate.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_branch_protection_traversability.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_credential_permission_models.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/actions-permissions.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/actionsecrets.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/app.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/appinstalls.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branch-policies.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branch-prot-rules.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/branches.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/custom-roles.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/environments.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-pat-request.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-pat.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-role-teams.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-role-users.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org-roles.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/org.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/pat-repositories.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repo-collaborators.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repo-teams.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/repositories.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/scimusers.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/secrets.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/secretscanningalert.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/selected-org-secrets.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/variables.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_data/api/workflows.json +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_deploy_key_models.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_deploy_key_resources.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_description_docs.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_capabilities.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_organization.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_enterprise_resources.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_model.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_resources.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_environment_reviewer_lookup.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_error_resilience.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_app_retry.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_rest_client.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_github_retry.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_helpers.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_lookup.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_role_model.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_scim_resources.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_org_secret_models.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_ids.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_runner_resources.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_saml_helpers.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_source_endpoints.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_team_external_groups.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_variable_models.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_interception_path.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_model.py +0 -0
- {openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_workflow_resources.py +0 -0
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Organization.md
RENAMED
|
@@ -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. |
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/nodes/GH_Repository.md
RENAMED
|
@@ -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
|
|
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. |
|
|
@@ -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",
|
|
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,
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/repository.py
RENAMED
|
@@ -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
|
|
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,
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/src/openhound_github/models/scim_user.py
RENAMED
|
@@ -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
|
-
|
|
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=
|
|
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": "
|
|
109
|
-
"id":
|
|
110
|
-
"node_id": "
|
|
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 == [
|
|
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
|
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/tests/test_source_org_canonicalization.py
RENAMED
|
@@ -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.
|
|
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/
|
|
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/
|
|
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.
|
|
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" },
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/release-on-merge.yml
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/.github/workflows/validate-branch.yml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddAssignee.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddCollaborator.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AddedDeployKey.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_AssignedTo.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CallsWorkflow.md
RENAMED
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAccessSecret.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanAssumeIdentity.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanCreateBranch.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditEnvironment.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanEditProtection.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanInterceptJob.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanPwnRequest.md
RENAMED
|
File without changes
|
{openhound_github-0.13.1 → openhound_github-0.14.2.dev2}/descriptions/edges/GH_CanReadSecret.md
RENAMED
|
File without changes
|
|
File without changes
|