openhound-github 0.3.1__tar.gz → 0.3.2__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (332) hide show
  1. {openhound_github-0.3.1 → openhound_github-0.3.2}/PKG-INFO +1 -1
  2. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/workflow.py +39 -31
  3. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/workflow_job.py +42 -4
  4. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/CODE_OF_CONDUCT.md +0 -0
  5. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/CONTRIBUTING.md +0 -0
  6. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GOVERNANCE.md +0 -0
  7. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-COC-Header.png +0 -0
  8. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-CONTRIB-Header.png +0 -0
  9. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-GOV-Header.png +0 -0
  10. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-Header.png +0 -0
  11. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-LIC-Header.png +0 -0
  12. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/GitHub-SEC-Header.png +0 -0
  13. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/SECURITY.md +0 -0
  14. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/SO-Dark.svg +0 -0
  15. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/SO-FOSS-Dark.svg +0 -0
  16. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/SO-FOSS-Light.svg +0 -0
  17. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/SO-Light.svg +0 -0
  18. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/workflows/publish.yml +0 -0
  19. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/workflows/release-on-merge.yml +0 -0
  20. {openhound_github-0.3.1 → openhound_github-0.3.2}/.github/workflows/validate-branch.yml +0 -0
  21. {openhound_github-0.3.1 → openhound_github-0.3.2}/.gitignore +0 -0
  22. {openhound_github-0.3.1 → openhound_github-0.3.2}/.gitmodules +0 -0
  23. {openhound_github-0.3.1 → openhound_github-0.3.2}/.pre-commit-config.yaml +0 -0
  24. {openhound_github-0.3.1 → openhound_github-0.3.2}/LICENSE.md +0 -0
  25. {openhound_github-0.3.1 → openhound_github-0.3.2}/README.md +0 -0
  26. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_AddAssignee.md +0 -0
  27. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_AddCollaborator.md +0 -0
  28. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_AddLabel.md +0 -0
  29. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_AddMember.md +0 -0
  30. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_AdminTo.md +0 -0
  31. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_BypassBranchProtection.md +0 -0
  32. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_BypassPullRequestAllowances.md +0 -0
  33. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CallsWorkflow.md +0 -0
  34. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanAccess.md +0 -0
  35. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanAssumeIdentity.md +0 -0
  36. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanCreateBranch.md +0 -0
  37. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanEditProtection.md +0 -0
  38. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanPwnRequest.md +0 -0
  39. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanReadSecretScanningAlert.md +0 -0
  40. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CanWriteBranch.md +0 -0
  41. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CloseDiscussion.md +0 -0
  42. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CloseIssue.md +0 -0
  43. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ClosePullRequest.md +0 -0
  44. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_Contains.md +0 -0
  45. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ConvertIssuesToDiscussions.md +0 -0
  46. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CreateDiscussionCategory.md +0 -0
  47. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CreateRepository.md +0 -0
  48. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CreateSoloMergeQueueEntry.md +0 -0
  49. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CreateTag.md +0 -0
  50. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_CreateTeam.md +0 -0
  51. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeleteAlertsCodeScanning.md +0 -0
  52. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeleteDiscussion.md +0 -0
  53. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeleteDiscussionComment.md +0 -0
  54. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeleteIssue.md +0 -0
  55. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeleteTag.md +0 -0
  56. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DependsOn.md +0 -0
  57. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_DeploysTo.md +0 -0
  58. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditCategoryOnDiscussion.md +0 -0
  59. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditDiscussionCategory.md +0 -0
  60. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditDiscussionComment.md +0 -0
  61. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditRepoAnnouncementBanners.md +0 -0
  62. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditRepoCustomPropertiesValues.md +0 -0
  63. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditRepoMetadata.md +0 -0
  64. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_EditRepoProtections.md +0 -0
  65. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasBaseRole.md +0 -0
  66. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasBranch.md +0 -0
  67. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasEnvironment.md +0 -0
  68. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasExternalIdentity.md +0 -0
  69. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasJob.md +0 -0
  70. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasMember.md +0 -0
  71. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasPersonalAccessToken.md +0 -0
  72. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasPersonalAccessTokenRequest.md +0 -0
  73. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasRole.md +0 -0
  74. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasSamlIdentityProvider.md +0 -0
  75. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasSecret.md +0 -0
  76. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasStep.md +0 -0
  77. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasVariable.md +0 -0
  78. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_HasWorkflow.md +0 -0
  79. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_InstalledAs.md +0 -0
  80. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_InviteMember.md +0 -0
  81. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_JumpMergeQueue.md +0 -0
  82. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageDeployKeys.md +0 -0
  83. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageDiscussionBadges.md +0 -0
  84. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageOrganizationWebhooks.md +0 -0
  85. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageRepoSecurityProducts.md +0 -0
  86. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageSecurityProducts.md +0 -0
  87. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageSettingsMergeTypes.md +0 -0
  88. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageSettingsPages.md +0 -0
  89. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageSettingsProjects.md +0 -0
  90. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageSettingsWiki.md +0 -0
  91. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageTopics.md +0 -0
  92. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ManageWebhooks.md +0 -0
  93. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_MapsToUser.md +0 -0
  94. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_MarkAsDuplicate.md +0 -0
  95. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_MemberOf.md +0 -0
  96. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_OrgBypassCodeScanningDismissalRequests.md +0 -0
  97. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_OrgBypassSecretScanningClosureRequests.md +0 -0
  98. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningBypassRequests.md +0 -0
  99. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_OrgReviewAndManageSecretScanningClosureRequests.md +0 -0
  100. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_Owns.md +0 -0
  101. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ProtectedBy.md +0 -0
  102. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_PushProtectedBranch.md +0 -0
  103. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReadCodeScanning.md +0 -0
  104. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReadOrganizationActionsUsageMetrics.md +0 -0
  105. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReadOrganizationCustomOrgRole.md +0 -0
  106. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReadOrganizationCustomRepoRole.md +0 -0
  107. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReadRepoContents.md +0 -0
  108. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_RemoveAssignee.md +0 -0
  109. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_RemoveLabel.md +0 -0
  110. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReopenDiscussion.md +0 -0
  111. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReopenIssue.md +0 -0
  112. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ReopenPullRequest.md +0 -0
  113. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_RequestPrReview.md +0 -0
  114. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ResolveDependabotAlerts.md +0 -0
  115. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ResolveSecretScanningAlerts.md +0 -0
  116. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_RestrictionsCanPush.md +0 -0
  117. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_RunOrgMigration.md +0 -0
  118. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_SetInteractionLimits.md +0 -0
  119. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_SetIssueType.md +0 -0
  120. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_SetMilestone.md +0 -0
  121. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_SetSocialPreview.md +0 -0
  122. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_SyncedTo.md +0 -0
  123. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ToggleDiscussionAnswer.md +0 -0
  124. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ToggleDiscussionCommentMinimize.md +0 -0
  125. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_TransferRepository.md +0 -0
  126. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_UsesSecret.md +0 -0
  127. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_UsesVariable.md +0 -0
  128. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ValidToken.md +0 -0
  129. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ViewDependabotAlerts.md +0 -0
  130. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_ViewSecretScanningAlerts.md +0 -0
  131. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteCodeScanning.md +0 -0
  132. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationActionsSecrets.md +0 -0
  133. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationActionsSettings.md +0 -0
  134. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationActionsVariables.md +0 -0
  135. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationCustomOrgRole.md +0 -0
  136. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationCustomRepoRole.md +0 -0
  137. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteOrganizationNetworkConfigurations.md +0 -0
  138. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteRepoContents.md +0 -0
  139. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/edges/GH_WriteRepoPullRequests.md +0 -0
  140. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_App.md +0 -0
  141. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_AppInstallation.md +0 -0
  142. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Branch.md +0 -0
  143. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_BranchProtectionRule.md +0 -0
  144. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Environment.md +0 -0
  145. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_EnvironmentSecret.md +0 -0
  146. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_EnvironmentVariable.md +0 -0
  147. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_ExternalIdentity.md +0 -0
  148. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_OrgRole.md +0 -0
  149. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_OrgSecret.md +0 -0
  150. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_OrgVariable.md +0 -0
  151. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Organization.md +0 -0
  152. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_PersonalAccessToken.md +0 -0
  153. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_PersonalAccessTokenRequest.md +0 -0
  154. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_RepoRole.md +0 -0
  155. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_RepoSecret.md +0 -0
  156. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_RepoVariable.md +0 -0
  157. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Repository.md +0 -0
  158. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_SamlIdentityProvider.md +0 -0
  159. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_SecretScanningAlert.md +0 -0
  160. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Team.md +0 -0
  161. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_TeamRole.md +0 -0
  162. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_User.md +0 -0
  163. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_Workflow.md +0 -0
  164. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_WorkflowJob.md +0 -0
  165. {openhound_github-0.3.1 → openhound_github-0.3.2}/descriptions/nodes/GH_WorkflowStep.md +0 -0
  166. {openhound_github-0.3.1 → openhound_github-0.3.2}/docs/og-docs.json +0 -0
  167. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-all-repo-admin-role.json +0 -0
  168. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-app-installations-all-repos.json +0 -0
  169. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-apps-all-repos.json +0 -0
  170. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-external-identities-owners.json +0 -0
  171. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-organizations.json +0 -0
  172. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-owner-users.json +0 -0
  173. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-owners-role.json +0 -0
  174. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-pats-all-repos.json +0 -0
  175. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-privilege-escalation-roles.json +0 -0
  176. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-privilege-escalation-users.json +0 -0
  177. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/privilege_zone_rules/t0-saml-identity-providers.json +0 -0
  178. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/README.md +0 -0
  179. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/actions-sha-pinning-not-required.json +0 -0
  180. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/active-leaked-secrets.json +0 -0
  181. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/advanced-security-disabled-new-repos.json +0 -0
  182. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/all-actions-allowed.json +0 -0
  183. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/app-installations-all-repos.json +0 -0
  184. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-admins-not-enforced.json +0 -0
  185. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-deletions-allowed.json +0 -0
  186. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-force-pushes.json +0 -0
  187. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-no-code-owner-reviews.json +0 -0
  188. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-no-pr-reviews.json +0 -0
  189. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-no-status-checks.json +0 -0
  190. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-self-approval.json +0 -0
  191. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/branch-protection-stale-reviews.json +0 -0
  192. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/bypass-pr-requirements.json +0 -0
  193. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/dangerous-branch-perms.json +0 -0
  194. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/default-repository-permissions.json +0 -0
  195. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/demo-sso-to-cloud-round-trip.json +0 -0
  196. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/dependabot-alerts-disabled-new-repos.json +0 -0
  197. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/dependabot-updates-disabled-new-repos.json +0 -0
  198. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/dependency-graph-disabled-new-repos.json +0 -0
  199. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/environments-admin-bypass.json +0 -0
  200. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/expired-pats.json +0 -0
  201. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/external-identities-without-scim.json +0 -0
  202. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/github-to-azure-identity.json +0 -0
  203. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/global-repo-perms.json +0 -0
  204. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/hybrid-identities.json +0 -0
  205. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-change-repo-visibility.json +0 -0
  206. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-create-pages.json +0 -0
  207. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-create-public-repos.json +0 -0
  208. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-delete-repos.json +0 -0
  209. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-fork-private-repos.json +0 -0
  210. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/members-can-invite-outside-collaborators.json +0 -0
  211. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/org-owners.json +0 -0
  212. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/orgs-without-2fa.json +0 -0
  213. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/pats-all-repo-access.json +0 -0
  214. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/pending-pat-requests.json +0 -0
  215. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/private-repos-forking-allowed.json +0 -0
  216. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/privileged-custom-org-roles.json +0 -0
  217. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/privileged-hybrid-identities.json +0 -0
  218. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/public-repos.json +0 -0
  219. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/push-protection-disabled-new-repos.json +0 -0
  220. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/push-to-protected-branches.json +0 -0
  221. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/repos-secret-scanning-disabled.json +0 -0
  222. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/repos-vulnerable-to-workflow-secret-exfil.json +0 -0
  223. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/repository-workflows.json +0 -0
  224. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/saml-configuration.json +0 -0
  225. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/secret-scanning-alerts.json +0 -0
  226. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/secret-scanning-disabled-new-repos.json +0 -0
  227. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/secrets-reachable-by-user.json +0 -0
  228. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/team-membership-admin.json +0 -0
  229. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/team-structure.json +0 -0
  230. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/unprotected-branches.json +0 -0
  231. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/unprotected-default-branch-with-workflow.json +0 -0
  232. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/unprotected-default-branches.json +0 -0
  233. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/saved_searches/web-commit-signoff-not-required.json +0 -0
  234. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension/schema.json +0 -0
  235. {openhound_github-0.3.1 → openhound_github-0.3.2}/extension.yaml +0 -0
  236. {openhound_github-0.3.1 → openhound_github-0.3.2}/justfile +0 -0
  237. {openhound_github-0.3.1 → openhound_github-0.3.2}/pyproject.toml +0 -0
  238. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/main.py +0 -0
  239. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/__init__.py +0 -0
  240. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/auth.py +0 -0
  241. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/graph.py +0 -0
  242. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/graphql.py +0 -0
  243. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/helpers.py +0 -0
  244. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/kinds/edges.py +0 -0
  245. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/kinds/nodes.py +0 -0
  246. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/lookup.py +0 -0
  247. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/main.py +0 -0
  248. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/__init__.py +0 -0
  249. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/actions_permission.py +0 -0
  250. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/app_installation.py +0 -0
  251. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/branch.py +0 -0
  252. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/branch_pr_bypass_allowance.py +0 -0
  253. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/branch_protection_rule.py +0 -0
  254. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/branch_push_allowance.py +0 -0
  255. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise.py +0 -0
  256. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_admin.py +0 -0
  257. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_external_identity.py +0 -0
  258. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_helpers.py +0 -0
  259. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_managed_user.py +0 -0
  260. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_member.py +0 -0
  261. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_organization.py +0 -0
  262. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_role.py +0 -0
  263. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_role_team.py +0 -0
  264. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_role_user.py +0 -0
  265. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_saml_provider.py +0 -0
  266. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_team.py +0 -0
  267. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_team_member.py +0 -0
  268. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_team_organization.py +0 -0
  269. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_team_role.py +0 -0
  270. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/enterprise_user.py +0 -0
  271. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/env_secret.py +0 -0
  272. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/env_variable.py +0 -0
  273. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/environment.py +0 -0
  274. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/environment_branch_policy.py +0 -0
  275. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/external_identity.py +0 -0
  276. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org.py +0 -0
  277. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org_role.py +0 -0
  278. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org_role_member.py +0 -0
  279. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org_role_team.py +0 -0
  280. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org_secret.py +0 -0
  281. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/org_variable.py +0 -0
  282. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/personal_access_token.py +0 -0
  283. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/personal_access_token_access.py +0 -0
  284. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/personal_access_token_request.py +0 -0
  285. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/projected_enterprise_team.py +0 -0
  286. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/repo_role_assignment.py +0 -0
  287. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/repository.py +0 -0
  288. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/repository_role.py +0 -0
  289. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/repository_secret.py +0 -0
  290. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/repository_variable.py +0 -0
  291. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/runner.py +0 -0
  292. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/saml_provider.py +0 -0
  293. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/scim_user.py +0 -0
  294. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/secret_scanning_alert.py +0 -0
  295. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/team.py +0 -0
  296. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/team_member.py +0 -0
  297. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/team_role.py +0 -0
  298. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/user.py +0 -0
  299. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/models/workflow_step.py +0 -0
  300. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/resources/__init__.py +0 -0
  301. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/resources/enterprise.py +0 -0
  302. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/resources/organization.py +0 -0
  303. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/source.py +0 -0
  304. {openhound_github-0.3.1 → openhound_github-0.3.2}/src/openhound_github/transforms.py +0 -0
  305. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/actions-permissions.json +0 -0
  306. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/actionsecrets.json +0 -0
  307. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/app.json +0 -0
  308. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/appinstalls.json +0 -0
  309. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/branch-policies.json +0 -0
  310. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/branch-prot-rules.json +0 -0
  311. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/branches.json +0 -0
  312. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/custom-roles.json +0 -0
  313. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/environments.json +0 -0
  314. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org-pat-request.json +0 -0
  315. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org-pat.json +0 -0
  316. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org-role-teams.json +0 -0
  317. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org-role-users.json +0 -0
  318. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org-roles.json +0 -0
  319. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/org.json +0 -0
  320. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/pat-repositories.json +0 -0
  321. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/repo-collaborators.json +0 -0
  322. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/repo-teams.json +0 -0
  323. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/repositories.json +0 -0
  324. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/scimusers.json +0 -0
  325. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/secrets.json +0 -0
  326. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/secretscanningalert.json +0 -0
  327. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/selected-org-secrets.json +0 -0
  328. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/variables.json +0 -0
  329. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_data/api/workflows.json +0 -0
  330. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_github_rest_client.py +0 -0
  331. {openhound_github-0.3.1 → openhound_github-0.3.2}/tests/test_github_retry.py +0 -0
  332. {openhound_github-0.3.1 → openhound_github-0.3.2}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: openhound-github
3
- Version: 0.3.1
3
+ Version: 0.3.2
4
4
  Summary: Github collector for OpenHound
5
5
  Author-email: "jdreijer@specterops.io" <jdreijer@specterops.io>, Jared Atkinson <jatkinson@specterops.io>
6
6
  License-File: LICENSE.md
@@ -51,8 +51,8 @@ class WorkflowStepDefinition(BaseModel):
51
51
  name: str | None = None
52
52
  uses: str | None = None
53
53
  run: str | None = None
54
- with_: dict[str, Any] = Field(default_factory=dict, alias="with")
55
- env: dict[str, Any] = Field(default_factory=dict)
54
+ with_: dict[str, str] = Field(default_factory=dict, alias="with")
55
+ env: dict[str, str] = Field(default_factory=dict)
56
56
 
57
57
  @field_validator("with_", "env", mode="before")
58
58
  @classmethod
@@ -79,23 +79,45 @@ class WorkflowStepDefinition(BaseModel):
79
79
  return "unknown"
80
80
 
81
81
 
82
+ class Container(BaseModel):
83
+ image: str
84
+ credentials: dict[str, str] | None = None
85
+ env: dict[str, str] | None = None
86
+ ports: list[int] | None = None
87
+
88
+ def __str__(self) -> str:
89
+ return self.image
90
+
91
+
92
+ class RunsOn(BaseModel):
93
+ group: str | None = None
94
+ labels: list[str] | str | None = None
95
+
96
+
82
97
  class WorkflowJobDefinition(BaseModel):
83
98
  model_config = ConfigDict(extra="allow", populate_by_name=True)
84
99
 
85
- runs_on: Any = Field(default=None, alias="runs-on")
86
- needs: Any = None
87
- environment: Any = None
88
- permissions: Any = None
100
+ runs_on: str | list[str] | RunsOn | None = Field(default=None, alias="runs-on")
101
+ needs: str | list[str] | None = None
102
+ environment: str | dict[str, str] | None = None
103
+ permissions: str | dict[str, str] | None = None
89
104
  uses: str | None = None
90
- container: Any = None
91
- env: dict[str, Any] = Field(default_factory=dict)
92
- secrets: dict[str, Any] | str | None = None
105
+ container: str | Container | None = None
106
+ env: dict[str, str] = Field(default_factory=dict)
107
+ secrets: dict[str, str] = Field(default_factory=dict)
93
108
  steps: list[WorkflowStepDefinition] = Field(default_factory=list)
94
109
 
95
- @field_validator("env", mode="before")
110
+ # This may seem strange, but the GitHub yaml format accepts empty values for keys
111
+ # additionally, to prevent other yaml parsing issues, make sure we always convert the key/value to string first
112
+ # for both env and secrets
113
+ @field_validator("env", "secrets", mode="before")
96
114
  @classmethod
97
- def dict_or_empty(cls, value: Any) -> dict[str, Any]:
98
- return value if isinstance(value, dict) else {}
115
+ def dict_or_empty(cls, value: Any) -> dict[str, str]:
116
+ return (
117
+ {f"{str(key)}": f"{str(value)}" for key, value in value.items()}
118
+ if isinstance(value, dict)
119
+ else {}
120
+ )
99
121
 
100
122
  @field_validator("steps", mode="before")
101
123
  @classmethod
@@ -123,27 +145,15 @@ class WorkflowJobDefinition(BaseModel):
123
145
  return str(self.environment["name"])
124
146
  return None
125
147
 
126
- @property
127
- def is_self_hosted(self) -> bool:
128
- if isinstance(self.runs_on, str):
129
- return self.runs_on == "self-hosted"
130
- if isinstance(self.runs_on, list):
131
- return "self-hosted" in [str(item) for item in self.runs_on]
132
- return False
133
-
134
148
  @property
135
149
  def container_value(self) -> str | None:
136
- if self.container is None:
137
- return None
138
- if isinstance(self.container, str):
139
- return self.container
140
- return str(self.container)
150
+ return str(self.container) if self.container else None
141
151
 
142
152
 
143
153
  class WorkflowDocument(BaseModel):
144
154
  model_config = ConfigDict(extra="allow")
145
155
 
146
- permissions: Any = None
156
+ permissions: str | dict[str, str] | None = None
147
157
  jobs: dict[str, WorkflowJobDefinition] = Field(default_factory=dict)
148
158
 
149
159
  @field_validator("jobs", mode="before")
@@ -490,10 +500,9 @@ class Workflow(BaseAsset):
490
500
  for job_key, job in document.jobs.items():
491
501
  secret_refs = []
492
502
  variable_refs = []
493
- if isinstance(job.secrets, dict):
494
- secret_refs.extend(
495
- mapping_references(SECRET_REFERENCE_RE, job.secrets, "secrets")
496
- )
503
+ secret_refs.extend(
504
+ mapping_references(SECRET_REFERENCE_RE, job.secrets, "secrets")
505
+ )
497
506
  secret_refs.extend(mapping_references(SECRET_REFERENCE_RE, job.env, "env"))
498
507
  variable_refs.extend(
499
508
  mapping_references(VARIABLE_REFERENCE_RE, job.env, "env")
@@ -505,7 +514,6 @@ class Workflow(BaseAsset):
505
514
  "name": f"{self.repository_name}\\{job_key}",
506
515
  "job_key": job_key,
507
516
  "runs_on": job.runs_on,
508
- "is_self_hosted": job.is_self_hosted,
509
517
  "container": job.container_value,
510
518
  "environment": job.environment_name,
511
519
  "permissions": job.permissions
@@ -21,6 +21,7 @@ from openhound_github.graph import 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.workflow import RunsOn
24
25
 
25
26
  TEMPLATE_RE = re.compile(r"\$\{\{\s*[^}]+?\s*\}\}")
26
27
 
@@ -49,7 +50,7 @@ class GHWorkflowJobProperties(GHNodeProperties):
49
50
  """
50
51
 
51
52
  job_key: str | None = None
52
- runs_on: Any = None
53
+ runs_on: list[str] | None = None
53
54
  is_self_hosted: bool = False
54
55
  container: str | None = None
55
56
  environment: str | None = None
@@ -153,8 +154,7 @@ class WorkflowJob(BaseAsset):
153
154
  repository_name: str
154
155
  repository_node_id: str
155
156
  org_login: str
156
- runs_on: Any = None
157
- is_self_hosted: bool = False
157
+ runs_on: list[str] | None = None
158
158
  container: str | None = None
159
159
  environment: str | None = None
160
160
  permissions: list[str] | None = None
@@ -172,14 +172,52 @@ class WorkflowJob(BaseAsset):
172
172
  def normalize_permissions(cls, value: Any) -> list[str] | None:
173
173
  if value is None:
174
174
  return None
175
+
176
+ if isinstance(value, str):
177
+ return [value]
178
+
179
+ if isinstance(value, list):
180
+ return [str(item) for item in value]
181
+
175
182
  if isinstance(value, dict):
176
- return [f"{key}:{permission}" for key, permission in value.items()]
183
+ return [f"{str(key)}:{str(value)}" for key, value in value.items()]
184
+
185
+ return [str(value)]
186
+
187
+ @field_validator("runs_on", mode="before")
188
+ @classmethod
189
+ def normalize_runs_on(cls, value: Any) -> list[str] | None:
190
+ if value is None:
191
+ return None
192
+
177
193
  if isinstance(value, str):
178
194
  return [value]
195
+
179
196
  if isinstance(value, list):
180
197
  return [str(item) for item in value]
198
+
199
+ if isinstance(value, RunsOn):
200
+ value = value.model_dump()
201
+
202
+ if isinstance(value, dict):
203
+ labels = value.get("labels")
204
+ if labels is None:
205
+ return None
206
+
207
+ if isinstance(labels, str):
208
+ return [labels]
209
+
210
+ if isinstance(labels, list):
211
+ return [str(item) for item in labels]
212
+
213
+ return [str(labels)]
214
+
181
215
  return [str(value)]
182
216
 
217
+ @property
218
+ def is_self_hosted(self) -> bool:
219
+ return "self-hosted" in (self.runs_on or [])
220
+
183
221
  @property
184
222
  def as_node(self) -> GHNode:
185
223
  return GHNode(