openhound-github 0.10.1__tar.gz → 0.11.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {openhound_github-0.10.1 → openhound_github-0.11.0}/PKG-INFO +1 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_AppInstallation.md +4 -2
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Enterprise.md +2 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunner.md +0 -3
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentSecret.md +1 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunner.md +0 -3
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgSecret.md +1 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Organization.md +2 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessToken.md +6 -4
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +5 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRunner.md +0 -3
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoSecret.md +1 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Runner.md +3 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowJob.md +24 -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.1 → openhound_github-0.11.0}/scripts/generate_gh_description_docs.py +6 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/lookup.py +11 -4
- {openhound_github-0.10.1 → 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.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token.py +10 -14
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_request.py +13 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow.py +1 -16
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_job.py +7 -2
- {openhound_github-0.10.1 → 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.1 → openhound_github-0.11.0}/tests/test_runner_models.py +15 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_model.py +29 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_resources.py +59 -0
- openhound_github-0.10.1/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -8
- openhound_github-0.10.1/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -8
- openhound_github-0.10.1/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -8
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/CODE_OF_CONDUCT.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/CONTRIBUTING.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GOVERNANCE.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-COC-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-CONTRIB-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-GOV-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-LIC-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/GitHub-SEC-Header.png +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SECURITY.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-Dark.svg +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-FOSS-Dark.svg +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-FOSS-Light.svg +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/SO-Light.svg +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/publish.yml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/release-on-merge.yml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.github/workflows/validate-branch.yml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.gitignore +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.gitmodules +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/.pre-commit-config.yaml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/LICENSE.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/README.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddAssignee.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddCollaborator.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddLabel.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AddMember.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AdminTo.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ApprovesDeploymentTo.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_AssignedTo.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CallsWorkflow.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccess.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAccessSecret.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateBranch.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateEnvironment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateInternalRepositories.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePrivateRepositories.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreatePublicRepositories.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositories.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanCreateRepositoryWithRunnerAccess.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanDeployToEnvironment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditEnvironment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanEditProtection.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanInterceptJob.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanPwnRequest.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecret.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanRequestOIDCTokenFor.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanUseRunner.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CanWriteBranch.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CloseDiscussion.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CloseIssue.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ClosePullRequest.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_Contains.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateEnterpriseOrganizations.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateRepository.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTag.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_CreateTeam.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteIssue.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeleteTag.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DependsOn.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_DeploysTo.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditEnterpriseCustomPropertiesForOrganizations.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_EditRepoProtections.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasBaseRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasMember.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasRunner.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasSecret.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_HasVariable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InheritedFrom.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InstalledAs.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_InviteMember.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_IsEligibleFor.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseAdmins.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseIdentityProvider.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseMembers.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizationAdmins.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseOrganizations.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseReferrals.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageEnterpriseTeams.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageTopics.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ManageWebhooks.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MapsToUser.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MatchesEnvironmentPolicy.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_MemberOf.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_Owns.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ProtectedBy.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseAuditLog.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseDomainVerification.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseMembers.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrgProjects.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadEnterpriseOrganizationAdmin.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReadRepoContents.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveAssignee.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RemoveLabel.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenIssue.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RequestPrReview.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RunOrgMigration.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_RunsOn.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetEnterpriseInteractionLimits.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetIssueType.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetMilestone.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SetSocialPreview.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_SyncedTo.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_TransferRepository.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_UsesSecret.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_UsesVariable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ValidToken.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseActionsUsageMetrics.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseBilling.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewEnterpriseSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseActionsPolicies.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseBilling.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterprisePersonalAccessTokenPolicies.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseSso.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteEnterpriseTeamMembers.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoContents.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_App.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Branch.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseManagedUser.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseRunnerGroup.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnterpriseTeam.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Environment.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentBranchPolicy.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgRunnerGroup.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_OrgVariable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RepoVariable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Repository.md +2 -2
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_RunnerGroup.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Secret.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Team.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_TeamRole.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_User.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Variable.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_Workflow.md +1 -1
- {openhound_github-0.10.1 → openhound_github-0.11.0}/descriptions/nodes/GH_WorkflowStep.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/docs/og-docs.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-enterprise-owners-role.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-organizations.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/README.md +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/active-leaked-secrets.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/all-actions-allowed.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/app-installations-all-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-self-approval.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/bypass-pr-requirements.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dangerous-branch-perms.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/default-repository-permissions.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/environments-admin-bypass.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/expired-pats.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/external-identities-without-scim.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/github-to-azure-identity.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/global-repo-perms.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/hybrid-identities.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-pages.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-create-public-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-delete-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/org-owners.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/orgs-without-2fa.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/pats-all-repo-access.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/pending-pat-requests.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/public-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/push-to-protected-branches.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/repository-workflows.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/saml-configuration.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-alerts.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/self-hosted-runners-can-intercept-broad-token-jobs.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/shared-self-hosted-runners-can-intercept-secret-bearing-jobs.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/team-membership-admin.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/team-structure.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-branches.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/unprotected-default-branches.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-interceptable-by-self-hosted-runners.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-broad-token-write-permissions.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write-on-self-hosted-runners.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-id-token-write.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/saved_searches/workflow-jobs-with-observed-oidc-auth-steps.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/extension/schema.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/justfile +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/pyproject.toml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/main.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/__init__.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/auth.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/extension.yaml +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/github_rest_client.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/github_retry.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/graph.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/graphql.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/helpers.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/kinds/edges.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/kinds/nodes.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/main.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/__init__.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/actions_permission.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_protection_rule.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/branch_push_allowance.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_admin.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_helpers.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_managed_user.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_member.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_organization.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_team.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_role_user.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_member.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_organization.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_team_role.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/enterprise_user.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/env_secret.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/env_variable.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/environment.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/environment_branch_policy.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/external_identity.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role_member.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_role_team.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_secret.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/org_variable.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/personal_access_token_access.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/projected_enterprise_team.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repo_role_assignment.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_role.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_secret.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/repository_variable.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/runner.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_assertion_consumer_service.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_helpers.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_issuer.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_provider.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/saml_service_provider.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/scim_user.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/secret_scanning_alert.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team_member.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/team_role.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/user.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_reference.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_step.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/__init__.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/enterprise.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/runner_ids.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/source.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/transforms.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_app_auth.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_branch_collection_gate.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_branch_protection_traversability.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/actions-permissions.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/actionsecrets.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/app.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/appinstalls.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branch-policies.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branch-prot-rules.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/branches.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/custom-roles.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/environments.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-pat-request.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-pat.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-role-teams.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-role-users.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org-roles.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/org.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/pat-repositories.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repo-collaborators.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repo-teams.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/repositories.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/scimusers.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/secrets.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/secretscanningalert.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/selected-org-secrets.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/variables.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_data/api/workflows.json +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_description_docs.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_capabilities.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_organization.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_enterprise_resources.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_model.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_resources.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_environment_reviewer_lookup.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_error_resilience.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_app_retry.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_rest_client.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_github_retry.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_helpers.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_lookup.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_org_scim_resources.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_org_secret_models.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_repository_rulesets.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_runner_ids.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_runner_resources.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_saml_helpers.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_saml_models.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_scim_models.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_source_endpoints.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_source_org_canonicalization.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_team_external_groups.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_variable_models.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/tests/test_workflow_interception_path.py +0 -0
- {openhound_github-0.10.1 → openhound_github-0.11.0}/uv.lock +0 -0
{openhound_github-0.10.1 → 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.1 → 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
|
```
|
|
@@ -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.1 → 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
|
```
|
|
@@ -47,32 +47,32 @@ When `runs_on_is_dynamic` is true, runner matching and interception status remai
|
|
|
47
47
|
|
|
48
48
|
```mermaid
|
|
49
49
|
graph LR
|
|
50
|
-
n0["
|
|
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
|
-
n1
|
|
74
|
-
|
|
75
|
-
n1 -.->|GH_CallsWorkflow|
|
|
61
|
+
n0 -->|GH_CanInterceptJob| n1
|
|
62
|
+
n2 -.->|GH_Contains| n1
|
|
63
|
+
n1 -->|GH_CanRequestOIDCTokenFor| n3
|
|
64
|
+
n1 -.->|GH_DeploysTo| n3
|
|
65
|
+
n1 -->|GH_CanAccessSecret| n4
|
|
66
|
+
n1 -.->|GH_UsesSecret| n4
|
|
67
|
+
n1 -.->|GH_UsesVariable| n5
|
|
68
|
+
n1 -->|GH_CanAccessSecret| n6
|
|
69
|
+
n1 -.->|GH_UsesSecret| n6
|
|
70
|
+
n1 -.->|GH_UsesVariable| n7
|
|
71
|
+
n1 -->|GH_CanAccessSecret| n8
|
|
72
|
+
n1 -.->|GH_UsesSecret| n8
|
|
73
|
+
n1 -.->|GH_UsesVariable| n9
|
|
74
|
+
n1 -.->|GH_RunsOn| n0
|
|
75
|
+
n1 -.->|GH_CallsWorkflow| n2
|
|
76
76
|
n1 -.->|GH_DependsOn| n1
|
|
77
77
|
n1 -.->|GH_Contains| n10
|
|
78
78
|
```
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero App Installations (All Repositories)",
|
|
3
|
+
"description": "GitHub App installations scoped to all repositories in the organization that have repository-control write permissions. A compromised app credential may grant code, workflow, Actions, or administrative control across every repository. Installations with only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN n.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero Apps (All-Repository Installations)",
|
|
3
|
+
"description": "GitHub App definitions whose installations have repository-control write permissions across all repositories. The app owner controls the private key that can generate tokens for any installation. Compromise of the app's private key may grant code, workflow, Actions, or administrative control across every repository in organizations where it is installed. Apps whose installations have only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_App)-[:GH_InstalledAs]->(i:GH_AppInstallation {repository_selection:'all'})\nWHERE ANY(permission IN i.permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "GitHub: Tier Zero PATs (All Repositories)",
|
|
3
|
+
"description": "Fine-grained personal access tokens scoped to all repositories in the organization that have repository-control write permissions. A single compromised token may grant code, workflow, Actions, or administrative control across every repository. PATs with only read or lower-impact write permissions are excluded.",
|
|
4
|
+
"cypher": "MATCH (n:GH_PersonalAccessToken {repository_selection:'all'})\nWHERE ANY(permission IN n.repository_permissions WHERE permission IN ['contents:write', 'administration:write', 'workflows:write', 'actions:write'])\nRETURN n",
|
|
5
|
+
"enabled": true,
|
|
6
|
+
"zone": "Tier Zero",
|
|
7
|
+
"allow_disable": true
|
|
8
|
+
}
|
|
@@ -175,7 +175,12 @@ def extract_general_information(path: Path) -> str | None:
|
|
|
175
175
|
text = text[match.end() :].strip()
|
|
176
176
|
else:
|
|
177
177
|
text = re.sub(r"^# .+?\n+", "", text, count=1).strip()
|
|
178
|
-
text = re.split(
|
|
178
|
+
text = re.split(
|
|
179
|
+
r"^## (?:Properties|Edge Schema|Diagram)\s*$",
|
|
180
|
+
text,
|
|
181
|
+
maxsplit=1,
|
|
182
|
+
flags=re.MULTILINE,
|
|
183
|
+
)[0].strip()
|
|
179
184
|
text = re.sub(r"\n```mermaid\n.*?\n```\s*$", "", text, flags=re.DOTALL).strip()
|
|
180
185
|
return text or None
|
|
181
186
|
|
|
@@ -278,6 +278,16 @@ class GithubLookup(LookupManager):
|
|
|
278
278
|
if actions_enabled is not True:
|
|
279
279
|
return []
|
|
280
280
|
|
|
281
|
+
org_node_id = self.org_id_for_login(org_login)
|
|
282
|
+
if not org_node_id:
|
|
283
|
+
return [
|
|
284
|
+
(node_id, ephemeral)
|
|
285
|
+
for _source_order, node_id, ephemeral in sorted(
|
|
286
|
+
matching_runners,
|
|
287
|
+
key=lambda runner: (runner[0], runner[1]),
|
|
288
|
+
)
|
|
289
|
+
]
|
|
290
|
+
|
|
281
291
|
for (
|
|
282
292
|
runner_group_id,
|
|
283
293
|
runner_group_name,
|
|
@@ -320,9 +330,6 @@ class GithubLookup(LookupManager):
|
|
|
320
330
|
continue
|
|
321
331
|
|
|
322
332
|
if inherited:
|
|
323
|
-
org_node_id = self.org_id_for_login(org_login)
|
|
324
|
-
if not org_node_id:
|
|
325
|
-
continue
|
|
326
333
|
if (
|
|
327
334
|
self.enterprise_runner_group_restricted_to_workflows_for_inherited_org_group(
|
|
328
335
|
org_node_id, runner_group_name
|
|
@@ -370,7 +377,7 @@ class GithubLookup(LookupManager):
|
|
|
370
377
|
):
|
|
371
378
|
add_matching_runner(
|
|
372
379
|
1,
|
|
373
|
-
runner_node_id(
|
|
380
|
+
runner_node_id(org_node_id, int(runner_id)),
|
|
374
381
|
raw_labels,
|
|
375
382
|
ephemeral,
|
|
376
383
|
)
|
{openhound_github-0.10.1 → 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",
|
|
@@ -24,6 +24,7 @@ from openhound_github.graph import GHNode, GHNodeProperties
|
|
|
24
24
|
from openhound_github.kinds import edges as ek
|
|
25
25
|
from openhound_github.kinds import nodes as nk
|
|
26
26
|
from openhound_github.main import app
|
|
27
|
+
from openhound_github.models.permissions import normalize_permission_declaration
|
|
27
28
|
|
|
28
29
|
|
|
29
30
|
class GithubActionsLoader(yaml.SafeLoader):
|
|
@@ -124,22 +125,6 @@ READ_ONLY_GITHUB_TOKEN_PERMISSION_SCOPES = {"models", "vulnerability-alerts"}
|
|
|
124
125
|
WRITE_ONLY_GITHUB_TOKEN_PERMISSION_SCOPES = {"id-token"}
|
|
125
126
|
|
|
126
127
|
|
|
127
|
-
def normalize_permission_declaration(value: Any) -> list[str] | None:
|
|
128
|
-
if value is None:
|
|
129
|
-
return None
|
|
130
|
-
|
|
131
|
-
if isinstance(value, str):
|
|
132
|
-
return [value]
|
|
133
|
-
|
|
134
|
-
if isinstance(value, list):
|
|
135
|
-
return [str(item) for item in value]
|
|
136
|
-
|
|
137
|
-
if isinstance(value, dict):
|
|
138
|
-
return [f"{key!s}:{item!s}" for key, item in value.items()]
|
|
139
|
-
|
|
140
|
-
return [str(value)]
|
|
141
|
-
|
|
142
|
-
|
|
143
128
|
def _empty_github_token_permissions() -> dict[str, str]:
|
|
144
129
|
return {scope: "none" for scope in GITHUB_TOKEN_PERMISSION_SCOPES}
|
|
145
130
|
|
{openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/models/workflow_job.py
RENAMED
|
@@ -21,8 +21,8 @@ from openhound_github.graph import GHEdgeProperties, GHNode, GHNodeProperties
|
|
|
21
21
|
from openhound_github.kinds import edges as ek
|
|
22
22
|
from openhound_github.kinds import nodes as nk
|
|
23
23
|
from openhound_github.main import app
|
|
24
|
+
from openhound_github.models.permissions import normalize_permission_declaration
|
|
24
25
|
from openhound_github.models.workflow import (
|
|
25
|
-
normalize_permission_declaration,
|
|
26
26
|
parse_runs_on_selector,
|
|
27
27
|
resolve_effective_github_token_permissions,
|
|
28
28
|
)
|
|
@@ -34,6 +34,10 @@ from openhound_github.models.workflow_reference import (
|
|
|
34
34
|
TEMPLATE_RE = re.compile(r"\$\{\{\s*[^}]+?\s*\}\}")
|
|
35
35
|
|
|
36
36
|
|
|
37
|
+
def _escape_cypher_string(value: Any) -> str:
|
|
38
|
+
return str(value).replace("\\", "\\\\").replace("'", "\\'")
|
|
39
|
+
|
|
40
|
+
|
|
37
41
|
@dataclass
|
|
38
42
|
class GHWorkflowJobProperties(GHNodeProperties):
|
|
39
43
|
"""Workflow job-specific properties.
|
|
@@ -542,7 +546,8 @@ class WorkflowJob(BaseAsset):
|
|
|
542
546
|
source: str,
|
|
543
547
|
) -> str:
|
|
544
548
|
properties = ", ".join(
|
|
545
|
-
f"{matcher.key}:'{matcher.value}'"
|
|
549
|
+
f"{matcher.key}:'{_escape_cypher_string(matcher.value)}'"
|
|
550
|
+
for matcher in property_matchers
|
|
546
551
|
)
|
|
547
552
|
if source == "job":
|
|
548
553
|
return (
|
{openhound_github-0.10.1 → openhound_github-0.11.0}/src/openhound_github/resources/organization.py
RENAMED
|
@@ -11,6 +11,7 @@ from dlt.sources.helpers.rest_client.client import RESTClient
|
|
|
11
11
|
from dlt.sources.helpers.rest_client.paginators import (
|
|
12
12
|
OffsetPaginator,
|
|
13
13
|
)
|
|
14
|
+
from requests.exceptions import JSONDecodeError
|
|
14
15
|
|
|
15
16
|
from openhound_github.graphql import (
|
|
16
17
|
MEMBERS_WITH_ROLE_QUERY,
|
|
@@ -240,9 +241,17 @@ def _repository_workflow_permissions(
|
|
|
240
241
|
if cache_key not in ctx.repository_workflow_permissions_cache:
|
|
241
242
|
with ctx.cache_lock:
|
|
242
243
|
if cache_key not in ctx.repository_workflow_permissions_cache:
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
244
|
+
try:
|
|
245
|
+
ctx.repository_workflow_permissions_cache[cache_key] = client.get(
|
|
246
|
+
f"/repos/{repository_full_name}/actions/permissions/workflow"
|
|
247
|
+
).json()
|
|
248
|
+
except (requests.HTTPError, JSONDecodeError) as e:
|
|
249
|
+
logger.warning(
|
|
250
|
+
"Unable to fetch workflow permissions for repository '%s': %s",
|
|
251
|
+
repository_full_name,
|
|
252
|
+
e,
|
|
253
|
+
)
|
|
254
|
+
ctx.repository_workflow_permissions_cache[cache_key] = {}
|
|
246
255
|
return ctx.repository_workflow_permissions_cache[cache_key]
|
|
247
256
|
|
|
248
257
|
|