openhound-github 0.10.0__tar.gz → 0.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openhound_github-0.10.0 → openhound_github-0.11.0}/PKG-INFO +1 -1
- openhound_github-0.11.0/descriptions/edges/GH_CanRequestOIDCTokenFor.md +26 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_AppInstallation.md +4 -2
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Enterprise.md +2 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunner.md +0 -3
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Environment.md +3 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentSecret.md +1 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunner.md +0 -3
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgSecret.md +1 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Organization.md +2 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessToken.md +6 -4
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +5 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRunner.md +0 -3
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoSecret.md +1 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Runner.md +3 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowJob.md +25 -24
- openhound_github-0.11.0/extension/privilege_zone_rules/t0-app-installations-all-repos.json +8 -0
- openhound_github-0.11.0/extension/privilege_zone_rules/t0-apps-all-repos.json +8 -0
- openhound_github-0.11.0/extension/privilege_zone_rules/t0-pats-all-repos.json +8 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/schema.json +5 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/scripts/generate_gh_description_docs.py +6 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/kinds/edges.py +2 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/lookup.py +30 -8
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/app_installation.py +4 -3
- openhound_github-0.11.0/src/openhound_github/models/permissions.py +18 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token.py +10 -14
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_request.py +13 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/workflow.py +1 -16
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/workflow_job.py +47 -4
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/resources/organization.py +12 -3
- openhound_github-0.11.0/tests/test_credential_permission_models.py +112 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_repository_rulesets.py +2 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_runner_models.py +18 -3
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_workflow_interception_path.py +37 -2
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_workflow_model.py +158 -0
- openhound_github-0.11.0/tests/test_workflow_resources.py +272 -0
- openhound_github-0.10.0/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -8
- openhound_github-0.10.0/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -8
- openhound_github-0.10.0/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -8
- openhound_github-0.10.0/tests/test_workflow_resources.py +0 -98
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/CONTRIBUTING.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GOVERNANCE.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-COC-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-CONTRIB-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-GOV-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-LIC-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/GitHub-SEC-Header.png +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/SECURITY.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/SO-Dark.svg +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/SO-FOSS-Dark.svg +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/SO-FOSS-Light.svg +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/SO-Light.svg +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/workflows/publish.yml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/workflows/release-on-merge.yml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.github/workflows/validate-branch.yml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.gitignore +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.gitmodules +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/.pre-commit-config.yaml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/LICENSE.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/README.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AddAssignee.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AddCollaborator.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AddLabel.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AddMember.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AdminTo.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_AssignedTo.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CallsWorkflow.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccess.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccessSecret.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateBranch.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditProtection.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanInterceptJob.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanPwnRequest.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecret.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanUseRunner.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CanWriteBranch.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CloseDiscussion.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CloseIssue.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ClosePullRequest.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_Contains.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateRepository.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTag.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTeam.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteIssue.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteTag.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DependsOn.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_DeploysTo.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoProtections.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasBaseRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasMember.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasRunner.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasSecret.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_HasVariable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_InheritedFrom.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_InstalledAs.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_InviteMember.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_IsEligibleFor.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageTopics.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ManageWebhooks.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_MapsToUser.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_MemberOf.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_Owns.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ProtectedBy.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReadRepoContents.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveAssignee.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveLabel.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenIssue.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RequestPrReview.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RunOrgMigration.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_RunsOn.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SetIssueType.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SetMilestone.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SetSocialPreview.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_SyncedTo.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_TransferRepository.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_UsesSecret.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_UsesVariable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ValidToken.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoContents.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_App.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Branch.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Repository.md +2 -2
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_RunnerGroup.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Secret.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Team.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_TeamRole.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_User.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Variable.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_Workflow.md +1 -1
- {openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowStep.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/docs/og-docs.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-organizations.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/README.md +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/active-leaked-secrets.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/all-actions-allowed.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/app-installations-all-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-self-approval.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/bypass-pr-requirements.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/dangerous-branch-perms.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/default-repository-permissions.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/environments-admin-bypass.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/expired-pats.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/external-identities-without-scim.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/github-to-azure-identity.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/global-repo-perms.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/hybrid-identities.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-pages.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-public-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-delete-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/org-owners.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/orgs-without-2fa.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/pats-all-repo-access.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/pending-pat-requests.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/public-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/push-to-protected-branches.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/repository-workflows.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/saml-configuration.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-alerts.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/team-membership-admin.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/team-structure.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/unprotected-branches.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branches.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/justfile +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/pyproject.toml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/main.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/__init__.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/auth.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/extension.yaml +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/github_rest_client.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/github_retry.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/graph.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/graphql.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/helpers.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/kinds/nodes.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/main.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/__init__.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/actions_permission.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/branch.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/branch_protection_rule.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_admin.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_helpers.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_managed_user.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_member.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_organization.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_team.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_user.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_member.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_organization.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_role.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_user.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/env_secret.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/env_variable.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/environment.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/environment_branch_policy.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/external_identity.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org_role.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org_role_member.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org_role_team.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org_secret.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/org_variable.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_access.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/projected_enterprise_team.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/repo_role_assignment.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/repository.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/repository_role.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/repository_secret.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/repository_variable.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/runner.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/saml_helpers.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/saml_issuer.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/saml_provider.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/saml_service_provider.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/scim_user.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/secret_scanning_alert.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/team.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/team_member.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/team_role.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/user.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/workflow_reference.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/workflow_step.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/resources/__init__.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/resources/enterprise.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/runner_ids.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/source.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/transforms.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_app_auth.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_branch_collection_gate.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_branch_protection_traversability.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/actions-permissions.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/actionsecrets.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/app.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/appinstalls.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/branch-policies.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/branch-prot-rules.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/branches.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/custom-roles.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/environments.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org-pat-request.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org-pat.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org-role-teams.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org-role-users.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org-roles.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/org.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/pat-repositories.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/repo-collaborators.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/repo-teams.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/repositories.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/scimusers.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/secrets.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/secretscanningalert.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/selected-org-secrets.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/variables.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_data/api/workflows.json +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_description_docs.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_enterprise_capabilities.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_enterprise_organization.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_enterprise_resources.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_environment_model.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_environment_resources.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_environment_reviewer_lookup.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_error_resilience.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_github_app_retry.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_github_rest_client.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_github_retry.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_helpers.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_lookup.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_org_scim_resources.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_org_secret_models.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_runner_ids.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_runner_resources.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_saml_helpers.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_saml_models.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_scim_models.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_source_endpoints.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_source_org_canonicalization.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_team_external_groups.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/tests/test_variable_models.py +0 -0
- {openhound_github-0.10.0 → openhound_github-0.11.0}/uv.lock +0 -0
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# GH_CanRequestOIDCTokenFor
|
|
2
|
+
|
|
3
|
+
## General Information
|
|
4
|
+
|
|
5
|
+
The traversable GH_CanRequestOIDCTokenFor edge represents a static upper-bound capability: based on the collected workflow configuration, a GitHub Actions workflow job execution context may be able to request a GitHub-signed OIDC token containing claims for its associated GitHub Environment.
|
|
6
|
+
|
|
7
|
+
This edge is derived from the existing GH_DeploysTo relationship and the job's calculated `effective_github_token_permissions`. The collector emits it only when the job targets a statically resolved environment and its effective permissions include `id-token:write`.
|
|
8
|
+
|
|
9
|
+
This is a capability edge, not evidence that the workflow has historically requested a token or contains an explicit OIDC-related step. Code executing in a job with `id-token:write` can request the token directly.
|
|
10
|
+
|
|
11
|
+
The edge does not model run-specific permission recalculation. In particular, a `pull_request` run originating from a fork may receive downgraded `GITHUB_TOKEN` permissions at runtime and therefore may not be able to request an OIDC token even when this edge exists. The edge should not be interpreted as proof that every execution of the job can request OIDC.
|
|
12
|
+
|
|
13
|
+
## Edge Schema
|
|
14
|
+
|
|
15
|
+
| Source | Destination | Traversable |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| `GH_WorkflowJob` | `GH_Environment` | `true` |
|
|
18
|
+
|
|
19
|
+
## Diagram
|
|
20
|
+
|
|
21
|
+
```mermaid
|
|
22
|
+
graph LR
|
|
23
|
+
n0["GH_WorkflowJob"]
|
|
24
|
+
n1["GH_Environment"]
|
|
25
|
+
n0 -->|GH_CanRequestOIDCTokenFor| n1
|
|
26
|
+
```
|
{openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_AppInstallation.md
RENAMED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## General Information
|
|
4
4
|
|
|
5
|
-
Represents a GitHub App installed on an organization. App installations have specific permissions and can be scoped to all repositories or a selection of repositories. The permissions granted to the
|
|
5
|
+
Represents a GitHub App installed on an organization. App installations have specific permissions and can be scoped to all repositories or a selection of repositories. The permissions granted to the installation are stored as `scope:access` values such as `contents:write` in the `permissions` property.
|
|
6
|
+
|
|
7
|
+
Unlike fine-grained personal access tokens, GitHub does not expose separate organization and repository permission buckets for app installations, so this property remains a single flat permission list.
|
|
6
8
|
|
|
7
9
|
Each installation is linked to its parent GH_App via a GH_InstalledAs edge. For installations with `repository_selection` set to `all`, GH_CanAccess edges are created to every repository in the organization. For installations with `repository_selection` set to `selected`, repository-level edges cannot be enumerated with a PAT (requires app installation token authentication).
|
|
8
10
|
|
|
@@ -24,7 +26,7 @@ Each installation is linked to its parent GH_App via a GH_InstalledAs edge. For
|
|
|
24
26
|
| `repositories_url` | `string` | API URL to list repositories accessible to this installation. |
|
|
25
27
|
| `repository_selection` | `string` | Whether the app has access to `all` repositories or `selected` repositories. |
|
|
26
28
|
| `target_type` | `string` | The target type of the installation (e.g., `Organization`). |
|
|
27
|
-
| `permissions` | `string` |
|
|
29
|
+
| `permissions` | `list[string]` | Permissions granted to the installation in `scope:access` form. |
|
|
28
30
|
| `events` | `string` | JSON string of the webhook events the app subscribes to. |
|
|
29
31
|
| `created_at` | `datetime` | When the app was installed. |
|
|
30
32
|
| `updated_at` | `datetime` | When the installation was last updated. |
|
|
@@ -23,8 +23,9 @@ A GitHub Enterprise account that contains organizations, enterprise teams, roles
|
|
|
23
23
|
| `created_at` | `string` | When the enterprise was created. |
|
|
24
24
|
| `updated_at` | `string` | When the enterprise was last updated. |
|
|
25
25
|
| `billing_email` | `string` | The enterprise billing email. |
|
|
26
|
-
| `security_contact_email` | `string` | The enterprise security contact email. |
|
|
27
26
|
| `viewer_is_admin` | `boolean` | Whether the authenticated viewer is an enterprise admin. |
|
|
27
|
+
| `github_deployment_type` | `string` | The GitHub deployment type, such as `ghec` or `ghes`. |
|
|
28
|
+
| `ghes_version` | `string` | The GitHub Enterprise Server version, when applicable. |
|
|
28
29
|
| `environment_name` | `string` | The enterprise environment name. |
|
|
29
30
|
| `query_organizations` | `string` | Query for contained organizations. |
|
|
30
31
|
|
{openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunner.md
RENAMED
|
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
|
|
|
44
44
|
graph LR
|
|
45
45
|
n0["GH_EnterpriseRunnerGroup"]
|
|
46
46
|
n1["GH_EnterpriseRunner"]
|
|
47
|
-
n2["GH_WorkflowJob"]
|
|
48
47
|
n0 -.->|GH_Contains| n1
|
|
49
48
|
n0 -->|GH_HasRunner| n1
|
|
50
|
-
n2 -.->|GH_RunsOn| n1
|
|
51
|
-
n1 -->|GH_CanInterceptJob| n2
|
|
52
49
|
```
|
|
@@ -6,6 +6,8 @@ Represents a GitHub Actions deployment environment configured on a repository. E
|
|
|
6
6
|
|
|
7
7
|
Repositories always contain their environments. When custom branch policies are configured, the environment also contains one or more GH_EnvironmentBranchPolicy nodes that describe which branches are allowed to deploy. Environment-scoped secrets and variables are modeled as child nodes of the environment and become available to workflow jobs that reference it.
|
|
8
8
|
|
|
9
|
+
GH_CanRequestOIDCTokenFor edges from GH_WorkflowJob nodes identify jobs with a static upper-bound capability to request a GitHub-signed OIDC token for this environment because their effective `GITHUB_TOKEN` permissions include `id-token:write`. Runtime permission recalculation, such as forked `pull_request` permission downgrades, may prevent a specific execution from requesting OIDC even when this edge exists.
|
|
10
|
+
|
|
9
11
|
## Properties
|
|
10
12
|
|
|
11
13
|
| Property | Type | Description |
|
|
@@ -57,4 +59,5 @@ graph LR
|
|
|
57
59
|
n8 -.->|GH_ApprovesDeploymentTo| n1
|
|
58
60
|
n8 -->|GH_CanDeployToEnvironment| n1
|
|
59
61
|
n9 -.->|GH_DeploysTo| n1
|
|
62
|
+
n9 -->|GH_CanRequestOIDCTokenFor| n1
|
|
60
63
|
```
|
|
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
|
|
|
44
44
|
graph LR
|
|
45
45
|
n0["GH_OrgRunnerGroup"]
|
|
46
46
|
n1["GH_OrgRunner"]
|
|
47
|
-
n2["GH_WorkflowJob"]
|
|
48
47
|
n0 -.->|GH_Contains| n1
|
|
49
48
|
n0 -->|GH_HasRunner| n1
|
|
50
|
-
n2 -.->|GH_RunsOn| n1
|
|
51
|
-
n1 -->|GH_CanInterceptJob| n2
|
|
52
49
|
```
|
|
@@ -72,6 +72,8 @@ Represents a GitHub organization. This is the root node of the graph and serves
|
|
|
72
72
|
| `self_hosted_runners_enabled_repositories` | `string` | Which repositories may use self-hosted runners: `all`, `selected`, or `none`. |
|
|
73
73
|
| `default_workflow_permissions` | `string` | The default workflow permissions property. |
|
|
74
74
|
| `can_approve_pull_request_reviews` | `boolean` | The can approve pull request reviews property. |
|
|
75
|
+
| `github_deployment_type` | `string` | The GitHub deployment type, such as `ghec` or `ghes`. |
|
|
76
|
+
| `ghes_version` | `string` | The GitHub Enterprise Server version, when applicable. |
|
|
75
77
|
| `query_organization_roles` | `string` | Query for organization roles. |
|
|
76
78
|
| `query_users` | `string` | Query for users. |
|
|
77
79
|
| `query_teams` | `string` | Query for teams. |
|
{openhound_github-0.10.0 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessToken.md
RENAMED
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## General Information
|
|
4
4
|
|
|
5
|
-
Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access.
|
|
5
|
+
Represents a fine-grained personal access token that has been granted access to organization resources. PATs are linked to their owning user, the organization, and the repositories they can access.
|
|
6
|
+
|
|
7
|
+
The granted permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
|
|
6
8
|
|
|
7
9
|
## Properties
|
|
8
10
|
|
|
@@ -18,9 +20,9 @@ Represents a fine-grained personal access token that has been granted access to
|
|
|
18
20
|
| `owner_node_id` | `string` | The GraphQL node ID of the token owner. |
|
|
19
21
|
| `token_expires_at` | `datetime` | The ISO 8601 timestamp of when the token expires. |
|
|
20
22
|
| `token_last_used_at` | `datetime` | The ISO 8601 timestamp of when the token was last used. |
|
|
21
|
-
| `access_granted_at` | `datetime` | The ISO 8601 timestamp of when the token was granted to the organization.
|
|
22
|
-
| `organization_permissions` | `string` |
|
|
23
|
-
| `repository_permissions` | `string` |
|
|
23
|
+
| `access_granted_at` | `datetime` | The ISO 8601 timestamp of when the token was granted to the organization. |
|
|
24
|
+
| `organization_permissions` | `list[string]` | Organization-scoped permissions in `scope:access` form. |
|
|
25
|
+
| `repository_permissions` | `list[string]` | Repository-scoped permissions in `scope:access` form. |
|
|
24
26
|
| `token_name` | `string` | The user-assigned display name of the token. |
|
|
25
27
|
| `owner_login` | `string` | The login handle of the user who owns the token. |
|
|
26
28
|
| `repository_selection` | `string` | Whether the token has access to `all`, `subset`, or `none` of the organization's repositories. |
|
|
@@ -2,7 +2,9 @@
|
|
|
2
2
|
|
|
3
3
|
## General Information
|
|
4
4
|
|
|
5
|
-
Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization.
|
|
5
|
+
Represents a pending request from an organization member to access organization resources with a fine-grained personal access token. PAT requests are linked to their owning user and the organization.
|
|
6
|
+
|
|
7
|
+
The requested permissions are stored separately as `organization_permissions` and `repository_permissions`. Each property is a list of `scope:access` values such as `members:read` or `contents:write`, matching the permission format used on GH_WorkflowJob nodes.
|
|
6
8
|
|
|
7
9
|
## Properties
|
|
8
10
|
|
|
@@ -18,6 +20,8 @@ Represents a pending request from an organization member to access organization
|
|
|
18
20
|
| `repository_selection` | `string` | Whether the request targets `all`, `subset`, or `none` of the organization's repositories. |
|
|
19
21
|
| `reason` | `string` | The rationale provided by the requester for the access request. |
|
|
20
22
|
| `org_name` | `string` | The org name property. |
|
|
23
|
+
| `organization_permissions` | `list[string]` | Requested organization-scoped permissions in `scope:access` form. |
|
|
24
|
+
| `repository_permissions` | `list[string]` | Requested repository-scoped permissions in `scope:access` form. |
|
|
21
25
|
| `query_organization_permissions` | `string` | Query for organization permissions. |
|
|
22
26
|
| `query_user` | `string` | Query for user. |
|
|
23
27
|
| `query_repositories` | `string` | Query for repositories. |
|
|
@@ -44,9 +44,6 @@ When the runner is not explicitly marked ephemeral, GH_CanInterceptJob edges ide
|
|
|
44
44
|
graph LR
|
|
45
45
|
n0["GH_Repository"]
|
|
46
46
|
n1["GH_RepoRunner"]
|
|
47
|
-
n2["GH_WorkflowJob"]
|
|
48
47
|
n0 -.->|GH_CanUseRunner| n1
|
|
49
48
|
n0 -.->|GH_Contains| n1
|
|
50
|
-
n2 -.->|GH_RunsOn| n1
|
|
51
|
-
n1 -->|GH_CanInterceptJob| n2
|
|
52
49
|
```
|
|
@@ -8,7 +8,7 @@ When the job has a statically resolvable self-hosted `runs-on` selector, GH_Runs
|
|
|
8
8
|
|
|
9
9
|
When present, `job_permissions` captures the job-level `permissions` declaration from the workflow YAML. `effective_github_token_permissions` captures the calculated static `GITHUB_TOKEN` permissions after applying the repository default, workflow-level declaration, and job-level declaration.
|
|
10
10
|
|
|
11
|
-
GH_CanAccessSecret edges identify secrets statically referenced by the job's modeled steps or job-level `env` block that the job execution context can access. GH_CanInterceptJob edges from GH_Runner nodes not explicitly marked ephemeral identify jobs whose future execution context may be exposed if that runner is controlled.
|
|
11
|
+
GH_CanAccessSecret edges identify secrets statically referenced by the job's modeled steps or job-level `env` block that the job execution context can access. GH_CanInterceptJob edges from GH_Runner nodes not explicitly marked ephemeral identify jobs whose future execution context may be exposed if that runner is controlled. When a job targets an environment and its effective permissions include `id-token:write`, GH_CanRequestOIDCTokenFor identifies a static upper-bound OIDC capability for that environment. Runtime permission recalculation, such as forked `pull_request` permission downgrades, may prevent a specific execution from requesting OIDC even when this edge exists.
|
|
12
12
|
|
|
13
13
|
When `runs_on_is_dynamic` is true, runner matching and interception status remain unresolved: the collector does not emit GH_CanInterceptJob edges for the job, so `query_interceptable_jobs` cannot match it and the absence of an edge must not be treated as evidence that the job is definitively non-interceptable.
|
|
14
14
|
|
|
@@ -47,31 +47,32 @@ When `runs_on_is_dynamic` is true, runner matching and interception status remai
|
|
|
47
47
|
|
|
48
48
|
```mermaid
|
|
49
49
|
graph LR
|
|
50
|
-
n0["
|
|
50
|
+
n0["GH_Runner"]
|
|
51
51
|
n1["GH_WorkflowJob"]
|
|
52
|
-
n2["
|
|
53
|
-
n3["
|
|
54
|
-
n4["
|
|
55
|
-
n5["
|
|
56
|
-
n6["
|
|
57
|
-
n7["
|
|
58
|
-
n8["
|
|
59
|
-
n9["
|
|
52
|
+
n2["GH_Workflow"]
|
|
53
|
+
n3["GH_Environment"]
|
|
54
|
+
n4["GH_EnvironmentSecret"]
|
|
55
|
+
n5["GH_EnvironmentVariable"]
|
|
56
|
+
n6["GH_OrgSecret"]
|
|
57
|
+
n7["GH_OrgVariable"]
|
|
58
|
+
n8["GH_RepoSecret"]
|
|
59
|
+
n9["GH_RepoVariable"]
|
|
60
60
|
n10["GH_WorkflowStep"]
|
|
61
|
-
n0
|
|
62
|
-
|
|
63
|
-
n1
|
|
64
|
-
n1 -.->|
|
|
65
|
-
n1
|
|
66
|
-
n1 -.->|
|
|
67
|
-
n1 -.->|
|
|
68
|
-
n1
|
|
69
|
-
n1 -.->|
|
|
70
|
-
n1
|
|
71
|
-
n1 -->|GH_CanAccessSecret|
|
|
72
|
-
n1
|
|
73
|
-
|
|
74
|
-
n1 -.->|
|
|
61
|
+
n0 -->|GH_CanInterceptJob| n1
|
|
62
|
+
n2 -.->|GH_Contains| n1
|
|
63
|
+
n1 -->|GH_CanRequestOIDCTokenFor| n3
|
|
64
|
+
n1 -.->|GH_DeploysTo| n3
|
|
65
|
+
n1 -->|GH_CanAccessSecret| n4
|
|
66
|
+
n1 -.->|GH_UsesSecret| n4
|
|
67
|
+
n1 -.->|GH_UsesVariable| n5
|
|
68
|
+
n1 -->|GH_CanAccessSecret| n6
|
|
69
|
+
n1 -.->|GH_UsesSecret| n6
|
|
70
|
+
n1 -.->|GH_UsesVariable| n7
|
|
71
|
+
n1 -->|GH_CanAccessSecret| n8
|
|
72
|
+
n1 -.->|GH_UsesSecret| n8
|
|
73
|
+
n1 -.->|GH_UsesVariable| n9
|
|
74
|
+
n1 -.->|GH_RunsOn| n0
|
|
75
|
+
n1 -.->|GH_CallsWorkflow| n2
|
|
75
76
|
n1 -.->|GH_DependsOn| n1
|
|
76
77
|
n1 -.->|GH_Contains| n10
|
|
77
78
|
```
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero App Installations (All Repositories)",
|
|
3
|
+
"description": "GitHub App installations scoped to all repositories in the organization that have repository-control write permissions. A compromised app credential may grant code, workflow, Actions, or administrative control across every repository. Installations with only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN n.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero Apps (All-Repository Installations)",
|
|
3
|
+
"description": "GitHub App definitions whose installations have repository-control write permissions across all repositories. The app owner controls the private key that can generate tokens for any installation. Compromise of the app's private key may grant code, workflow, Actions, or administrative control across every repository in organizations where it is installed. Apps whose installations have only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_App)-[:GH_InstalledAs]->(i:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN i.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero PATs (All Repositories)",
|
|
3
|
+
"description": "Fine-grained personal access tokens scoped to all repositories in the organization that have repository-control write permissions. A single compromised token may grant code, workflow, Actions, or administrative control across every repository. PATs with only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_PersonalAccessToken {repository_selection:'all'})\nWHERE ANY(permission IN n.repository_permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -1055,6 +1055,11 @@
|
|
|
1055
1055
|
"description": "[Computed] Workflow job execution context can access a statically referenced secret — GH_WorkflowJob → GH_RepoSecret / GH_OrgSecret / GH_EnvironmentSecret",
|
|
1056
1056
|
"is_traversable": true
|
|
1057
1057
|
},
|
|
1058
|
+
{
|
|
1059
|
+
"name": "GH_CanRequestOIDCTokenFor",
|
|
1060
|
+
"description": "[Computed] Workflow job has a static upper-bound capability to request a GitHub OIDC token for its deployment environment — GH_WorkflowJob → GH_Environment",
|
|
1061
|
+
"is_traversable": true
|
|
1062
|
+
},
|
|
1058
1063
|
{
|
|
1059
1064
|
"name": "GH_UsesVariable",
|
|
1060
1065
|
"description": "[Workflow] Job or step references a variable by name — GH_WorkflowJob / GH_WorkflowStep → GH_RepoVariable / GH_OrgVariable / GH_EnvironmentVariable (scope match)",
|
|
@@ -175,7 +175,12 @@ def extract_general_information(path: Path) -> str | None:
|
|
|
175
175
|
text = text[match.end() :].strip()
|
|
176
176
|
else:
|
|
177
177
|
text = re.sub(r"^# .+?\n+", "", text, count=1).strip()
|
|
178
|
-
text = re.split(
|
|
178
|
+
text = re.split(
|
|
179
|
+
r"^## (?:Properties|Edge Schema|Diagram)\s*$",
|
|
180
|
+
text,
|
|
181
|
+
maxsplit=1,
|
|
182
|
+
flags=re.MULTILINE,
|
|
183
|
+
)[0].strip()
|
|
179
184
|
text = re.sub(r"\n```mermaid\n.*?\n```\s*$", "", text, flags=re.DOTALL).strip()
|
|
180
185
|
return text or None
|
|
181
186
|
|
|
@@ -20,7 +20,8 @@ CAN_ACCESS = "GH_CanAccess"
|
|
|
20
20
|
CAN_USE_RUNNER = "GH_CanUseRunner"
|
|
21
21
|
RUNS_ON = "GH_RunsOn"
|
|
22
22
|
CAN_INTERCEPT_JOB = "GH_CanInterceptJob"
|
|
23
|
-
CAN_ACCESS_SECRET = "GH_CanAccessSecret"
|
|
23
|
+
CAN_ACCESS_SECRET = "GH_CanAccessSecret" # noqa: S105 - OpenGraph edge kind
|
|
24
|
+
CAN_REQUEST_OIDC_TOKEN_FOR = "GH_CanRequestOIDCTokenFor" # noqa: S105 - OpenGraph edge kind
|
|
24
25
|
IS_ELIGIBLE_FOR = "GH_IsEligibleFor"
|
|
25
26
|
CAN_CREATE_REPOSITORY_WITH_RUNNER_ACCESS = "GH_CanCreateRepositoryWithRunnerAccess"
|
|
26
27
|
CAN_CREATE_BRANCH = "GH_CanCreateBranch"
|
|
@@ -243,18 +243,21 @@ class GithubLookup(LookupManager):
|
|
|
243
243
|
|
|
244
244
|
repository_visibility, actions_enabled = repository
|
|
245
245
|
required_labels = {str(label).casefold() for label in labels}
|
|
246
|
-
matching_runners: list[tuple[str, bool | None]] = []
|
|
246
|
+
matching_runners: list[tuple[int, str, bool | None]] = []
|
|
247
247
|
seen_runner_node_ids: set[str] = set()
|
|
248
248
|
|
|
249
249
|
def add_matching_runner(
|
|
250
|
-
|
|
250
|
+
source_order: int,
|
|
251
|
+
node_id: str,
|
|
252
|
+
raw_labels: Any,
|
|
253
|
+
ephemeral: bool | None,
|
|
251
254
|
) -> None:
|
|
252
255
|
if node_id in seen_runner_node_ids:
|
|
253
256
|
return
|
|
254
257
|
if not required_labels.issubset(self._runner_label_names(raw_labels)):
|
|
255
258
|
return
|
|
256
259
|
seen_runner_node_ids.add(node_id)
|
|
257
|
-
matching_runners.append((node_id, ephemeral))
|
|
260
|
+
matching_runners.append((source_order, node_id, ephemeral))
|
|
258
261
|
|
|
259
262
|
if group_name is None:
|
|
260
263
|
for runner_id, raw_labels, ephemeral in self._find_all_objects(
|
|
@@ -266,6 +269,7 @@ class GithubLookup(LookupManager):
|
|
|
266
269
|
[repository_node_id],
|
|
267
270
|
):
|
|
268
271
|
add_matching_runner(
|
|
272
|
+
0,
|
|
269
273
|
runner_node_id(repository_node_id, int(runner_id)),
|
|
270
274
|
raw_labels,
|
|
271
275
|
ephemeral,
|
|
@@ -274,6 +278,16 @@ class GithubLookup(LookupManager):
|
|
|
274
278
|
if actions_enabled is not True:
|
|
275
279
|
return []
|
|
276
280
|
|
|
281
|
+
org_node_id = self.org_id_for_login(org_login)
|
|
282
|
+
if not org_node_id:
|
|
283
|
+
return [
|
|
284
|
+
(node_id, ephemeral)
|
|
285
|
+
for _source_order, node_id, ephemeral in sorted(
|
|
286
|
+
matching_runners,
|
|
287
|
+
key=lambda runner: (runner[0], runner[1]),
|
|
288
|
+
)
|
|
289
|
+
]
|
|
290
|
+
|
|
277
291
|
for (
|
|
278
292
|
runner_group_id,
|
|
279
293
|
runner_group_name,
|
|
@@ -316,9 +330,6 @@ class GithubLookup(LookupManager):
|
|
|
316
330
|
continue
|
|
317
331
|
|
|
318
332
|
if inherited:
|
|
319
|
-
org_node_id = self.org_id_for_login(org_login)
|
|
320
|
-
if not org_node_id:
|
|
321
|
-
continue
|
|
322
333
|
if (
|
|
323
334
|
self.enterprise_runner_group_restricted_to_workflows_for_inherited_org_group(
|
|
324
335
|
org_node_id, runner_group_name
|
|
@@ -345,6 +356,7 @@ class GithubLookup(LookupManager):
|
|
|
345
356
|
[enterprise_node_id, enterprise_runner_group_id],
|
|
346
357
|
):
|
|
347
358
|
add_matching_runner(
|
|
359
|
+
2,
|
|
348
360
|
runner_node_id(enterprise_node_id, int(runner_id)),
|
|
349
361
|
raw_labels,
|
|
350
362
|
ephemeral,
|
|
@@ -364,12 +376,19 @@ class GithubLookup(LookupManager):
|
|
|
364
376
|
[org_login, runner_group_id],
|
|
365
377
|
):
|
|
366
378
|
add_matching_runner(
|
|
367
|
-
|
|
379
|
+
1,
|
|
380
|
+
runner_node_id(org_node_id, int(runner_id)),
|
|
368
381
|
raw_labels,
|
|
369
382
|
ephemeral,
|
|
370
383
|
)
|
|
371
384
|
|
|
372
|
-
return
|
|
385
|
+
return [
|
|
386
|
+
(node_id, ephemeral)
|
|
387
|
+
for _source_order, node_id, ephemeral in sorted(
|
|
388
|
+
matching_runners,
|
|
389
|
+
key=lambda runner: (runner[0], runner[1]),
|
|
390
|
+
)
|
|
391
|
+
]
|
|
373
392
|
|
|
374
393
|
@lru_cache
|
|
375
394
|
def workflow_job_runner_node_ids(
|
|
@@ -594,6 +613,9 @@ class GithubLookup(LookupManager):
|
|
|
594
613
|
repository_can_approve_pull_request_reviews
|
|
595
614
|
FROM {self.schema}.workflows
|
|
596
615
|
WHERE repository_node_id = ?
|
|
616
|
+
ORDER BY
|
|
617
|
+
repository_default_workflow_permissions IS NULL,
|
|
618
|
+
repository_can_approve_pull_request_reviews IS NULL
|
|
597
619
|
LIMIT 1
|
|
598
620
|
""",
|
|
599
621
|
[repository_node_id],
|
{openhound_github-0.10.0 → openhound_github-0.11.0}/src/openhound_github/models/app_installation.py
RENAMED
|
@@ -12,6 +12,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
|
|
|
12
12
|
from openhound_github.kinds import edges as ek
|
|
13
13
|
from openhound_github.kinds import nodes as nk
|
|
14
14
|
from openhound_github.main import app
|
|
15
|
+
from openhound_github.models.permissions import normalize_permission_declaration
|
|
15
16
|
|
|
16
17
|
|
|
17
18
|
@dataclass
|
|
@@ -28,7 +29,7 @@ class GHAppInstallationProperties(GHNodeProperties):
|
|
|
28
29
|
repositories_url: API URL to list repositories accessible to this installation.
|
|
29
30
|
repository_selection: Whether the app has access to `all` repositories or `selected` repositories.
|
|
30
31
|
target_type: The target type of the installation (e.g., `Organization`).
|
|
31
|
-
permissions:
|
|
32
|
+
permissions: Permissions granted to the installation in `scope:access` form.
|
|
32
33
|
events: JSON string of the webhook events the app subscribes to.
|
|
33
34
|
created_at: When the app was installed.
|
|
34
35
|
updated_at: When the installation was last updated.
|
|
@@ -47,7 +48,7 @@ class GHAppInstallationProperties(GHNodeProperties):
|
|
|
47
48
|
repositories_url: str | None = None
|
|
48
49
|
repository_selection: str | None = None
|
|
49
50
|
target_type: str | None = None
|
|
50
|
-
permissions: str | None = None
|
|
51
|
+
permissions: list[str] | None = None
|
|
51
52
|
events: str | None = None
|
|
52
53
|
created_at: datetime | None = None
|
|
53
54
|
updated_at: datetime | None = None
|
|
@@ -141,7 +142,7 @@ class AppInstallation(BaseAsset):
|
|
|
141
142
|
repositories_url=self.repositories_url,
|
|
142
143
|
repository_selection=self.repository_selection,
|
|
143
144
|
target_type=self.target_type,
|
|
144
|
-
permissions=
|
|
145
|
+
permissions=normalize_permission_declaration(self.permissions),
|
|
145
146
|
events=json.dumps(self.events) if self.events else None,
|
|
146
147
|
created_at=self.created_at,
|
|
147
148
|
updated_at=self.updated_at,
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
from typing import Any
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
def normalize_permission_declaration(value: Any) -> list[str] | None:
|
|
5
|
+
"""Normalize GitHub permission payloads into query-friendly scope:access values."""
|
|
6
|
+
if value is None:
|
|
7
|
+
return None
|
|
8
|
+
|
|
9
|
+
if isinstance(value, str):
|
|
10
|
+
return [value]
|
|
11
|
+
|
|
12
|
+
if isinstance(value, list):
|
|
13
|
+
return [str(item) for item in value]
|
|
14
|
+
|
|
15
|
+
if isinstance(value, dict):
|
|
16
|
+
return [f"{key!s}:{item!s}" for key, item in value.items()]
|
|
17
|
+
|
|
18
|
+
return [str(value)]
|
|
@@ -2,7 +2,6 @@ from dataclasses import dataclass
|
|
|
2
2
|
from datetime import datetime
|
|
3
3
|
from typing import ClassVar
|
|
4
4
|
|
|
5
|
-
from dlt.common import json
|
|
6
5
|
from dlt.common.libs.pydantic import DltConfig
|
|
7
6
|
from openhound.core.asset import BaseAsset, EdgeDef, NodeDef
|
|
8
7
|
from openhound.core.models.entries_dataclass import Edge, EdgePath, EdgeProperties
|
|
@@ -12,6 +11,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
|
|
|
12
11
|
from openhound_github.kinds import edges as ek
|
|
13
12
|
from openhound_github.kinds import nodes as nk
|
|
14
13
|
from openhound_github.main import app
|
|
14
|
+
from openhound_github.models.permissions import normalize_permission_declaration
|
|
15
15
|
|
|
16
16
|
|
|
17
17
|
class Permissions(BaseModel):
|
|
@@ -35,10 +35,10 @@ class GHPersonalAccessTokenProperties(GHNodeProperties):
|
|
|
35
35
|
owner_id: The GitHub ID of the token owner.
|
|
36
36
|
owner_node_id: The GraphQL node ID of the token owner.
|
|
37
37
|
token_expires_at: The ISO 8601 timestamp of when the token expires.
|
|
38
|
-
organization_permissions:
|
|
39
|
-
repository_permissions:
|
|
38
|
+
organization_permissions: Organization-scoped permissions in `scope:access` form.
|
|
39
|
+
repository_permissions: Repository-scoped permissions in `scope:access` form.
|
|
40
40
|
token_last_used_at: The ISO 8601 timestamp of when the token was last used.
|
|
41
|
-
access_granted_at: The ISO 8601 timestamp of when the token was granted to the organization.
|
|
41
|
+
access_granted_at: The ISO 8601 timestamp of when the token was granted to the organization.
|
|
42
42
|
token_name: The user-assigned display name of the token.
|
|
43
43
|
owner_login: The login handle of the user who owns the token.
|
|
44
44
|
repository_selection: Whether the token has access to `all`, `subset`, or `none` of the organization's repositories.
|
|
@@ -55,8 +55,8 @@ class GHPersonalAccessTokenProperties(GHNodeProperties):
|
|
|
55
55
|
token_expires_at: datetime | None = None
|
|
56
56
|
token_last_used_at: datetime | None = None
|
|
57
57
|
access_granted_at: datetime | None = None
|
|
58
|
-
organization_permissions: str | None = None
|
|
59
|
-
repository_permissions: str | None = None
|
|
58
|
+
organization_permissions: list[str] | None = None
|
|
59
|
+
repository_permissions: list[str] | None = None
|
|
60
60
|
token_name: str | None = None
|
|
61
61
|
owner_login: str | None = None
|
|
62
62
|
repository_selection: str | None = None
|
|
@@ -144,15 +144,11 @@ class PersonalAccessToken(BaseAsset):
|
|
|
144
144
|
environment_name=self.org_login,
|
|
145
145
|
token_expires_at=self.token_expires_at,
|
|
146
146
|
owner_id=self.owner.id if self.owner else None,
|
|
147
|
-
organization_permissions=(
|
|
148
|
-
|
|
149
|
-
if self.permissions and self.permissions.organization
|
|
150
|
-
else None
|
|
147
|
+
organization_permissions=normalize_permission_declaration(
|
|
148
|
+
self.permissions.organization if self.permissions else None
|
|
151
149
|
),
|
|
152
|
-
repository_permissions=(
|
|
153
|
-
|
|
154
|
-
if self.permissions and self.permissions.repository
|
|
155
|
-
else None
|
|
150
|
+
repository_permissions=normalize_permission_declaration(
|
|
151
|
+
self.permissions.repository if self.permissions else None
|
|
156
152
|
),
|
|
157
153
|
token_last_used_at=self.token_last_used_at,
|
|
158
154
|
query_organization_permissions=f"MATCH p=(:GH_PersonalAccessToken {{node_id:'{pid}'}})-[:GH_CanAccess]->(:GH_Organization) RETURN p",
|
|
@@ -9,6 +9,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
|
|
|
9
9
|
from openhound_github.kinds import edges as ek
|
|
10
10
|
from openhound_github.kinds import nodes as nk
|
|
11
11
|
from openhound_github.main import app
|
|
12
|
+
from openhound_github.models.permissions import normalize_permission_declaration
|
|
12
13
|
|
|
13
14
|
|
|
14
15
|
class Owner(BaseModel):
|
|
@@ -29,19 +30,23 @@ class GHPersonalAccessTokenRequestProperties(GHNodeProperties):
|
|
|
29
30
|
repository_selection: Whether the request targets `all`, `subset`, or `none` of the organization's repositories.
|
|
30
31
|
reason: The rationale provided by the requester for the access request.
|
|
31
32
|
org_name: The org name property.
|
|
33
|
+
organization_permissions: Requested organization-scoped permissions in `scope:access` form.
|
|
34
|
+
repository_permissions: Requested repository-scoped permissions in `scope:access` form.
|
|
32
35
|
query_organization_permissions: Query for organization permissions.
|
|
33
36
|
query_user: Query for user.
|
|
34
37
|
query_repositories: Query for repositories.
|
|
35
38
|
"""
|
|
36
39
|
|
|
37
40
|
# TODO: Check for the following fields
|
|
38
|
-
# owner_id, owner_node_id, toke_id, token_expires_at, token_last_used_at,
|
|
41
|
+
# owner_id, owner_node_id, toke_id, token_expires_at, token_last_used_at, and environment_name
|
|
39
42
|
|
|
40
43
|
token_name: str | None = None
|
|
41
44
|
owner_login: str | None = None
|
|
42
45
|
repository_selection: str | None = None
|
|
43
46
|
reason: str | None = None
|
|
44
47
|
org_name: str | None = None
|
|
48
|
+
organization_permissions: list[str] | None = None
|
|
49
|
+
repository_permissions: list[str] | None = None
|
|
45
50
|
query_organization_permissions: str | None = None
|
|
46
51
|
query_user: str | None = None
|
|
47
52
|
query_repositories: str | None = None
|
|
@@ -102,6 +107,7 @@ class PersonalAccessTokenRequest(BaseAsset):
|
|
|
102
107
|
@property
|
|
103
108
|
def as_node(self) -> GHNode:
|
|
104
109
|
rid = self.node_id
|
|
110
|
+
permissions = self.permissions or {}
|
|
105
111
|
return GHNode(
|
|
106
112
|
kinds=[nk.PERSONAL_ACCESS_TOKEN_REQUEST],
|
|
107
113
|
properties=GHPersonalAccessTokenRequestProperties(
|
|
@@ -114,6 +120,12 @@ class PersonalAccessTokenRequest(BaseAsset):
|
|
|
114
120
|
repository_selection=self.repository_selection,
|
|
115
121
|
reason=self.reason,
|
|
116
122
|
org_name=self.org_login,
|
|
123
|
+
organization_permissions=normalize_permission_declaration(
|
|
124
|
+
permissions.get("organization")
|
|
125
|
+
),
|
|
126
|
+
repository_permissions=normalize_permission_declaration(
|
|
127
|
+
permissions.get("repository")
|
|
128
|
+
),
|
|
117
129
|
query_organization_permissions=f"MATCH p=(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}})-[:GH_CanAccess]->(:GH_Organization) RETURN p",
|
|
118
130
|
query_user=f"MATCH p=(:GH_User)-[:GH_HasPersonalAccessTokenRequest]->(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}}) RETURN p",
|
|
119
131
|
query_repositories=f"MATCH p=(:GH_PersonalAccessTokenRequest {{node_id:'{rid}'}})-[:GH_CanAccess]->(:GH_Repository) RETURN p LIMIT 1000",
|