forges 0.0.0 → 0.1.0

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 (152) hide show
  1. package/LICENCE +21 -0
  2. package/README.md +72 -0
  3. package/dist/azure-devops/index.d.mts +2 -0
  4. package/dist/azure-devops/index.mjs +1 -0
  5. package/dist/azure-devops-DwQvL4TV.mjs +1355 -0
  6. package/dist/bitbucket/index.d.mts +2 -0
  7. package/dist/bitbucket/index.mjs +1 -0
  8. package/dist/bitbucket-CpcfJlYi.mjs +1171 -0
  9. package/dist/crypto-CQNEyYHD.mjs +156 -0
  10. package/dist/cursor-origin/index.d.mts +2 -0
  11. package/dist/cursor-origin/index.mjs +1 -0
  12. package/dist/cursor-origin-BhqYx2oW.mjs +980 -0
  13. package/dist/define-B2_4ob2i.d.mts +307 -0
  14. package/dist/define-D3yEXtKK.mjs +2276 -0
  15. package/dist/env.d.mts +46 -0
  16. package/dist/env.mjs +283 -0
  17. package/dist/fake/index.d.mts +227 -0
  18. package/dist/fake/index.mjs +1001 -0
  19. package/dist/fetch-D4pSRvvA.d.mts +1723 -0
  20. package/dist/forgejo/index.d.mts +2 -0
  21. package/dist/forgejo/index.mjs +1 -0
  22. package/dist/forgejo-BCefbHUN.mjs +2005 -0
  23. package/dist/gitea/index.d.mts +2 -0
  24. package/dist/gitea/index.mjs +22 -0
  25. package/dist/gitee/index.d.mts +2 -0
  26. package/dist/gitee/index.mjs +1 -0
  27. package/dist/gitee-CA-f7Rs8.mjs +1272 -0
  28. package/dist/github/index.d.mts +2 -0
  29. package/dist/github/index.mjs +1 -0
  30. package/dist/github-B0umL8_f.mjs +3259 -0
  31. package/dist/gitlab/index.d.mts +2 -0
  32. package/dist/gitlab/index.mjs +1 -0
  33. package/dist/gitlab-Bsr__Z0C.mjs +2378 -0
  34. package/dist/graphql-D7uGzZTf.mjs +366 -0
  35. package/dist/index-BQ6VS31s.d.mts +32 -0
  36. package/dist/index-C-jz9Mo3.d.mts +16 -0
  37. package/dist/index-C4fYzmK3.d.mts +102 -0
  38. package/dist/index-CQiIX4SH.d.mts +27 -0
  39. package/dist/index-CTj5gQzl.d.mts +35 -0
  40. package/dist/index-CliBWzOF.d.mts +23 -0
  41. package/dist/index-Cz_y-t3d.d.mts +36 -0
  42. package/dist/index-DEt25E1w.d.mts +77 -0
  43. package/dist/index-DIuS0EOy.d.mts +43 -0
  44. package/dist/index-uSpsMCrC.d.mts +26 -0
  45. package/dist/index.d.mts +41 -0
  46. package/dist/index.mjs +13 -0
  47. package/dist/kit.d.mts +183 -0
  48. package/dist/kit.mjs +4 -0
  49. package/dist/provider-CoZ7cCxp.d.mts +1439 -0
  50. package/dist/provider-Ed1YhkQN.mjs +169 -0
  51. package/dist/pushin/index.d.mts +2 -0
  52. package/dist/pushin/index.mjs +1 -0
  53. package/dist/pushin-CkxgJ2cU.mjs +343 -0
  54. package/dist/schema/Actor.json +96 -0
  55. package/dist/schema/AlertSupport.json +49 -0
  56. package/dist/schema/AuthKind.json +15 -0
  57. package/dist/schema/Branch.json +31 -0
  58. package/dist/schema/ChangedFile.json +58 -0
  59. package/dist/schema/Check.json +169 -0
  60. package/dist/schema/CheckRef.json +114 -0
  61. package/dist/schema/CheckState.json +14 -0
  62. package/dist/schema/ChecksSummary.json +34 -0
  63. package/dist/schema/CiJob.json +186 -0
  64. package/dist/schema/CiJobRef.json +132 -0
  65. package/dist/schema/CiRun.json +234 -0
  66. package/dist/schema/CiRunRef.json +103 -0
  67. package/dist/schema/CodeFragment.json +19 -0
  68. package/dist/schema/CodeMatch.json +128 -0
  69. package/dist/schema/Collaborator.json +169 -0
  70. package/dist/schema/Comment.json +336 -0
  71. package/dist/schema/CommentRef.json +158 -0
  72. package/dist/schema/Commit.json +307 -0
  73. package/dist/schema/CommitRef.json +104 -0
  74. package/dist/schema/CommitSignature.json +118 -0
  75. package/dist/schema/Comparison.json +355 -0
  76. package/dist/schema/Cursor.json +21 -0
  77. package/dist/schema/EventAction.json +33 -0
  78. package/dist/schema/EventDetail.json +649 -0
  79. package/dist/schema/EventKind.json +26 -0
  80. package/dist/schema/FileContent.json +73 -0
  81. package/dist/schema/FileStatus.json +15 -0
  82. package/dist/schema/ForgeCapabilities.json +737 -0
  83. package/dist/schema/ForgeEvent.json +789 -0
  84. package/dist/schema/ForgeInstance.json +7 -0
  85. package/dist/schema/ForgeKind.json +32 -0
  86. package/dist/schema/ForgeWarning.json +49 -0
  87. package/dist/schema/ForgeWarningCode.json +7 -0
  88. package/dist/schema/GetManyResult.json +699 -0
  89. package/dist/schema/Installation.json +131 -0
  90. package/dist/schema/InstallationToken.json +31 -0
  91. package/dist/schema/KnownForgeKind.json +19 -0
  92. package/dist/schema/Label.json +22 -0
  93. package/dist/schema/MergeMethod.json +14 -0
  94. package/dist/schema/Milestone.json +40 -0
  95. package/dist/schema/Notification.json +498 -0
  96. package/dist/schema/NotificationReason.json +28 -0
  97. package/dist/schema/NotificationRef.json +60 -0
  98. package/dist/schema/NotificationSubject.json +376 -0
  99. package/dist/schema/PerKind.json +49 -0
  100. package/dist/schema/PullBranches.json +125 -0
  101. package/dist/schema/PushCommit.json +24 -0
  102. package/dist/schema/Reaction.json +148 -0
  103. package/dist/schema/ReactionContent.json +17 -0
  104. package/dist/schema/ReactionSummary.json +70 -0
  105. package/dist/schema/Release.json +286 -0
  106. package/dist/schema/ReleaseAsset.json +169 -0
  107. package/dist/schema/ReleaseAssetRef.json +138 -0
  108. package/dist/schema/ReleaseRef.json +107 -0
  109. package/dist/schema/Repo.json +354 -0
  110. package/dist/schema/RepoFeatures.json +35 -0
  111. package/dist/schema/RepoPermissions.json +35 -0
  112. package/dist/schema/RepoRef.json +77 -0
  113. package/dist/schema/RepoRole.json +15 -0
  114. package/dist/schema/RepoVisibility.json +12 -0
  115. package/dist/schema/Review.json +371 -0
  116. package/dist/schema/ReviewComment.json +280 -0
  117. package/dist/schema/ReviewCommentInput.json +34 -0
  118. package/dist/schema/ReviewRef.json +158 -0
  119. package/dist/schema/ReviewState.json +15 -0
  120. package/dist/schema/Reviewer.json +133 -0
  121. package/dist/schema/SecurityAlert.json +219 -0
  122. package/dist/schema/SecurityAlertKind.json +14 -0
  123. package/dist/schema/SecurityAlertRef.json +122 -0
  124. package/dist/schema/SecuritySeverity.json +14 -0
  125. package/dist/schema/SourceKind.json +12 -0
  126. package/dist/schema/SubscriptionState.json +12 -0
  127. package/dist/schema/Support.json +23 -0
  128. package/dist/schema/Tag.json +25 -0
  129. package/dist/schema/TextLimits.json +18 -0
  130. package/dist/schema/Thread.json +653 -0
  131. package/dist/schema/ThreadKind.json +14 -0
  132. package/dist/schema/ThreadRef.json +131 -0
  133. package/dist/schema/ThreadStack.json +146 -0
  134. package/dist/schema/ThreadState.json +13 -0
  135. package/dist/schema/TreeEntry.json +46 -0
  136. package/dist/schema/TreeEntryType.json +13 -0
  137. package/dist/schema/UpsertCommentResult.json +355 -0
  138. package/dist/schema/User.json +123 -0
  139. package/dist/schema/Webhook.json +188 -0
  140. package/dist/schema/WebhookDeliveryRecord.json +173 -0
  141. package/dist/schema/WebhookDeliveryRef.json +135 -0
  142. package/dist/schema/WebhookRef.json +105 -0
  143. package/dist/schema/index.d.mts +4 -0
  144. package/dist/schema/index.mjs +3219 -0
  145. package/dist/tangled/index.d.mts +2 -0
  146. package/dist/tangled/index.mjs +1 -0
  147. package/dist/tangled-ChdPmiv-.mjs +1570 -0
  148. package/dist/testing/index.d.mts +123 -0
  149. package/dist/testing/index.mjs +242 -0
  150. package/dist/webhooks-rn9-8lxT.mjs +70 -0
  151. package/package.json +115 -3
  152. package/dist/.gitkeep +0 -0
@@ -0,0 +1,31 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "name": {
6
+ "type": "string"
7
+ },
8
+ "sha": {
9
+ "type": "string",
10
+ "description": "The commit that the branch points at."
11
+ },
12
+ "isDefault": {
13
+ "type": "boolean"
14
+ },
15
+ "isProtected": {
16
+ "type": "boolean"
17
+ },
18
+ "url": {
19
+ "type": "string"
20
+ },
21
+ "raw": {}
22
+ },
23
+ "required": [
24
+ "name",
25
+ "sha",
26
+ "raw"
27
+ ],
28
+ "description": "A branch of a repository.",
29
+ "x-forges-type": "Branch",
30
+ "definitions": {}
31
+ }
@@ -0,0 +1,58 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "path": {
6
+ "type": "string"
7
+ },
8
+ "previousPath": {
9
+ "type": "string",
10
+ "description": "Path before a rename or copy."
11
+ },
12
+ "status": {
13
+ "$ref": "#/definitions/FileStatus"
14
+ },
15
+ "statusRaw": {
16
+ "type": "string"
17
+ },
18
+ "additions": {
19
+ "type": "number"
20
+ },
21
+ "deletions": {
22
+ "type": "number"
23
+ },
24
+ "patch": {
25
+ "type": "string",
26
+ "description": "Unified diff for the file, where the forge returns one inline."
27
+ },
28
+ "sha": {
29
+ "type": "string",
30
+ "description": "Blob sha after the change."
31
+ },
32
+ "isBinary": {
33
+ "type": "boolean",
34
+ "description": "The file is binary, so it has no patch."
35
+ }
36
+ },
37
+ "required": [
38
+ "path",
39
+ "status"
40
+ ],
41
+ "description": "A file that a commit or pull request changed.",
42
+ "x-forges-type": "ChangedFile",
43
+ "definitions": {
44
+ "FileStatus": {
45
+ "type": "string",
46
+ "enum": [
47
+ "added",
48
+ "modified",
49
+ "removed",
50
+ "renamed",
51
+ "copied",
52
+ "changed"
53
+ ],
54
+ "description": "How a commit or pull request changed a file.",
55
+ "x-forges-type": "FileStatus"
56
+ }
57
+ }
58
+ }
@@ -0,0 +1,169 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "ref": {
6
+ "$ref": "#/definitions/CheckRef"
7
+ },
8
+ "name": {
9
+ "type": "string"
10
+ },
11
+ "state": {
12
+ "$ref": "#/definitions/CheckState"
13
+ },
14
+ "stateRaw": {
15
+ "type": "string",
16
+ "description": "Forge-native status, for example `in_progress` or `running`."
17
+ },
18
+ "conclusionRaw": {
19
+ "type": "string",
20
+ "description": "Forge-native conclusion, where the forge reports one apart from the status."
21
+ },
22
+ "url": {
23
+ "type": "string"
24
+ },
25
+ "startedAt": {
26
+ "type": "string",
27
+ "format": "date-time"
28
+ },
29
+ "completedAt": {
30
+ "type": "string",
31
+ "format": "date-time"
32
+ },
33
+ "raw": {}
34
+ },
35
+ "required": [
36
+ "ref",
37
+ "name",
38
+ "state",
39
+ "stateRaw",
40
+ "raw"
41
+ ],
42
+ "description": "One check on a commit: a check run, a commit status, a job or a policy evaluation.",
43
+ "x-forges-type": "Check",
44
+ "definitions": {
45
+ "CheckRef": {
46
+ "type": "object",
47
+ "properties": {
48
+ "forge": {
49
+ "$ref": "#/definitions/ForgeKind"
50
+ },
51
+ "instance": {
52
+ "$ref": "#/definitions/ForgeInstance",
53
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
54
+ },
55
+ "repo": {
56
+ "$ref": "#/definitions/RepoRef"
57
+ },
58
+ "id": {
59
+ "type": "string"
60
+ },
61
+ "type": {
62
+ "type": "string",
63
+ "enum": [
64
+ "check_run",
65
+ "status",
66
+ "job",
67
+ "policy"
68
+ ],
69
+ "description": "What the id addresses: a check run, a commit status, a CI job, or a branch policy evaluation."
70
+ }
71
+ },
72
+ "required": [
73
+ "forge",
74
+ "id",
75
+ "instance",
76
+ "repo",
77
+ "type"
78
+ ],
79
+ "description": "One check run, commit status or CI job.",
80
+ "x-forges-type": "CheckRef"
81
+ },
82
+ "CheckState": {
83
+ "type": "string",
84
+ "enum": [
85
+ "pending",
86
+ "success",
87
+ "failure",
88
+ "neutral",
89
+ "unknown"
90
+ ],
91
+ "description": "`neutral` covers skipped and informational results, which neither pass nor fail.",
92
+ "x-forges-type": "CheckState"
93
+ },
94
+ "ForgeInstance": {
95
+ "type": "string",
96
+ "description": "Host of a single forge deployment, for example `github.com` or `codeberg.org`.",
97
+ "x-forges-type": "ForgeInstance"
98
+ },
99
+ "ForgeKind": {
100
+ "anyOf": [
101
+ {
102
+ "$ref": "#/definitions/KnownForgeKind"
103
+ },
104
+ {
105
+ "type": "string"
106
+ }
107
+ ],
108
+ "description": "Identifier of a forge implementation. Unknown forges are permitted so that third-party providers can be registered without a core release.",
109
+ "x-forges-type": "ForgeKind"
110
+ },
111
+ "KnownForgeKind": {
112
+ "type": "string",
113
+ "enum": [
114
+ "github",
115
+ "gitlab",
116
+ "bitbucket",
117
+ "forgejo",
118
+ "gitea",
119
+ "tangled",
120
+ "gitee",
121
+ "azure-devops",
122
+ "cursor-origin",
123
+ "pushin"
124
+ ],
125
+ "description": "The forges this package ships providers for.",
126
+ "x-forges-type": "KnownForgeKind"
127
+ },
128
+ "RepoRef": {
129
+ "type": "object",
130
+ "properties": {
131
+ "forge": {
132
+ "$ref": "#/definitions/ForgeKind"
133
+ },
134
+ "instance": {
135
+ "$ref": "#/definitions/ForgeInstance",
136
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
137
+ },
138
+ "owner": {
139
+ "type": "string",
140
+ "description": "Full namespace path. On forges with nested groups (GitLab) this contains slashes, for example `acme/platform`; `name` never does."
141
+ },
142
+ "name": {
143
+ "type": "string",
144
+ "description": "Repository name. Empty for namespace-scoped refs."
145
+ },
146
+ "kind": {
147
+ "type": "string",
148
+ "enum": [
149
+ "repo",
150
+ "namespace"
151
+ ],
152
+ "description": "`'namespace'` for subjects that belong to a group rather than a repository (GitLab epics). Absent means a repository."
153
+ },
154
+ "externalId": {
155
+ "type": "string",
156
+ "description": "Stable forge-native identifier that survives renames and transfers: a GitHub, Forgejo or Gitea numeric id, a GitLab project or group id, a Bitbucket UUID or a Tangled repo DID. {@link repoKey} prefers it over `owner` and `name`."
157
+ }
158
+ },
159
+ "required": [
160
+ "forge",
161
+ "instance",
162
+ "name",
163
+ "owner"
164
+ ],
165
+ "description": "Addresses a repository by its forge, instance, owner and name.",
166
+ "x-forges-type": "RepoRef"
167
+ }
168
+ }
169
+ }
@@ -0,0 +1,114 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "forge": {
6
+ "$ref": "#/definitions/ForgeKind"
7
+ },
8
+ "instance": {
9
+ "$ref": "#/definitions/ForgeInstance",
10
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
11
+ },
12
+ "repo": {
13
+ "$ref": "#/definitions/RepoRef"
14
+ },
15
+ "id": {
16
+ "type": "string"
17
+ },
18
+ "type": {
19
+ "type": "string",
20
+ "enum": [
21
+ "check_run",
22
+ "status",
23
+ "job",
24
+ "policy"
25
+ ],
26
+ "description": "What the id addresses: a check run, a commit status, a CI job, or a branch policy evaluation."
27
+ }
28
+ },
29
+ "required": [
30
+ "forge",
31
+ "id",
32
+ "instance",
33
+ "repo",
34
+ "type"
35
+ ],
36
+ "description": "One check run, commit status or CI job.",
37
+ "x-forges-type": "CheckRef",
38
+ "definitions": {
39
+ "ForgeInstance": {
40
+ "type": "string",
41
+ "description": "Host of a single forge deployment, for example `github.com` or `codeberg.org`.",
42
+ "x-forges-type": "ForgeInstance"
43
+ },
44
+ "ForgeKind": {
45
+ "anyOf": [
46
+ {
47
+ "$ref": "#/definitions/KnownForgeKind"
48
+ },
49
+ {
50
+ "type": "string"
51
+ }
52
+ ],
53
+ "description": "Identifier of a forge implementation. Unknown forges are permitted so that third-party providers can be registered without a core release.",
54
+ "x-forges-type": "ForgeKind"
55
+ },
56
+ "KnownForgeKind": {
57
+ "type": "string",
58
+ "enum": [
59
+ "github",
60
+ "gitlab",
61
+ "bitbucket",
62
+ "forgejo",
63
+ "gitea",
64
+ "tangled",
65
+ "gitee",
66
+ "azure-devops",
67
+ "cursor-origin",
68
+ "pushin"
69
+ ],
70
+ "description": "The forges this package ships providers for.",
71
+ "x-forges-type": "KnownForgeKind"
72
+ },
73
+ "RepoRef": {
74
+ "type": "object",
75
+ "properties": {
76
+ "forge": {
77
+ "$ref": "#/definitions/ForgeKind"
78
+ },
79
+ "instance": {
80
+ "$ref": "#/definitions/ForgeInstance",
81
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
82
+ },
83
+ "owner": {
84
+ "type": "string",
85
+ "description": "Full namespace path. On forges with nested groups (GitLab) this contains slashes, for example `acme/platform`; `name` never does."
86
+ },
87
+ "name": {
88
+ "type": "string",
89
+ "description": "Repository name. Empty for namespace-scoped refs."
90
+ },
91
+ "kind": {
92
+ "type": "string",
93
+ "enum": [
94
+ "repo",
95
+ "namespace"
96
+ ],
97
+ "description": "`'namespace'` for subjects that belong to a group rather than a repository (GitLab epics). Absent means a repository."
98
+ },
99
+ "externalId": {
100
+ "type": "string",
101
+ "description": "Stable forge-native identifier that survives renames and transfers: a GitHub, Forgejo or Gitea numeric id, a GitLab project or group id, a Bitbucket UUID or a Tangled repo DID. {@link repoKey} prefers it over `owner` and `name`."
102
+ }
103
+ },
104
+ "required": [
105
+ "forge",
106
+ "instance",
107
+ "name",
108
+ "owner"
109
+ ],
110
+ "description": "Addresses a repository by its forge, instance, owner and name.",
111
+ "x-forges-type": "RepoRef"
112
+ }
113
+ }
114
+ }
@@ -0,0 +1,14 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "string",
4
+ "enum": [
5
+ "pending",
6
+ "success",
7
+ "failure",
8
+ "neutral",
9
+ "unknown"
10
+ ],
11
+ "description": "`neutral` covers skipped and informational results, which neither pass nor fail.",
12
+ "x-forges-type": "CheckState",
13
+ "definitions": {}
14
+ }
@@ -0,0 +1,34 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "state": {
6
+ "type": "string",
7
+ "enum": [
8
+ "pending",
9
+ "success",
10
+ "failure",
11
+ "unknown"
12
+ ]
13
+ },
14
+ "stateRaw": {
15
+ "type": "string"
16
+ },
17
+ "total": {
18
+ "type": "number",
19
+ "description": "Absent when the forge reports only a combined state."
20
+ },
21
+ "failed": {
22
+ "type": "number"
23
+ },
24
+ "url": {
25
+ "type": "string"
26
+ }
27
+ },
28
+ "required": [
29
+ "state"
30
+ ],
31
+ "description": "Combined state of the checks on a pull request's head commit. `failure` when any check failed, else `pending` while any runs, else `success`.",
32
+ "x-forges-type": "ChecksSummary",
33
+ "definitions": {}
34
+ }
@@ -0,0 +1,186 @@
1
+ {
2
+ "$schema": "http://json-schema.org/draft-07/schema#",
3
+ "type": "object",
4
+ "properties": {
5
+ "ref": {
6
+ "$ref": "#/definitions/CiJobRef"
7
+ },
8
+ "name": {
9
+ "type": "string"
10
+ },
11
+ "state": {
12
+ "$ref": "#/definitions/CheckState"
13
+ },
14
+ "stateRaw": {
15
+ "type": "string"
16
+ },
17
+ "stage": {
18
+ "type": "string",
19
+ "description": "Stage or group the job belongs to, where the forge has one."
20
+ },
21
+ "url": {
22
+ "type": "string"
23
+ },
24
+ "startedAt": {
25
+ "type": "string",
26
+ "format": "date-time"
27
+ },
28
+ "completedAt": {
29
+ "type": "string",
30
+ "format": "date-time"
31
+ },
32
+ "raw": {}
33
+ },
34
+ "required": [
35
+ "ref",
36
+ "name",
37
+ "state",
38
+ "stateRaw",
39
+ "raw"
40
+ ],
41
+ "description": "One job of a CI run.",
42
+ "x-forges-type": "CiJob",
43
+ "definitions": {
44
+ "CheckState": {
45
+ "type": "string",
46
+ "enum": [
47
+ "pending",
48
+ "success",
49
+ "failure",
50
+ "neutral",
51
+ "unknown"
52
+ ],
53
+ "description": "`neutral` covers skipped and informational results, which neither pass nor fail.",
54
+ "x-forges-type": "CheckState"
55
+ },
56
+ "CiJobRef": {
57
+ "type": "object",
58
+ "properties": {
59
+ "forge": {
60
+ "$ref": "#/definitions/ForgeKind"
61
+ },
62
+ "instance": {
63
+ "$ref": "#/definitions/ForgeInstance",
64
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
65
+ },
66
+ "repo": {
67
+ "$ref": "#/definitions/RepoRef"
68
+ },
69
+ "id": {
70
+ "type": "string"
71
+ },
72
+ "run": {
73
+ "$ref": "#/definitions/CiRunRef"
74
+ }
75
+ },
76
+ "required": [
77
+ "forge",
78
+ "id",
79
+ "instance",
80
+ "repo"
81
+ ],
82
+ "description": "One job inside a run. `run` is absent when the job was addressed on its own.",
83
+ "x-forges-type": "CiJobRef"
84
+ },
85
+ "CiRunRef": {
86
+ "type": "object",
87
+ "properties": {
88
+ "forge": {
89
+ "$ref": "#/definitions/ForgeKind"
90
+ },
91
+ "instance": {
92
+ "$ref": "#/definitions/ForgeInstance",
93
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
94
+ },
95
+ "repo": {
96
+ "$ref": "#/definitions/RepoRef"
97
+ },
98
+ "id": {
99
+ "type": "string"
100
+ }
101
+ },
102
+ "required": [
103
+ "forge",
104
+ "id",
105
+ "instance",
106
+ "repo"
107
+ ],
108
+ "description": "A CI run: a workflow run, a pipeline, or a build.",
109
+ "x-forges-type": "CiRunRef"
110
+ },
111
+ "ForgeInstance": {
112
+ "type": "string",
113
+ "description": "Host of a single forge deployment, for example `github.com` or `codeberg.org`.",
114
+ "x-forges-type": "ForgeInstance"
115
+ },
116
+ "ForgeKind": {
117
+ "anyOf": [
118
+ {
119
+ "$ref": "#/definitions/KnownForgeKind"
120
+ },
121
+ {
122
+ "type": "string"
123
+ }
124
+ ],
125
+ "description": "Identifier of a forge implementation. Unknown forges are permitted so that third-party providers can be registered without a core release.",
126
+ "x-forges-type": "ForgeKind"
127
+ },
128
+ "KnownForgeKind": {
129
+ "type": "string",
130
+ "enum": [
131
+ "github",
132
+ "gitlab",
133
+ "bitbucket",
134
+ "forgejo",
135
+ "gitea",
136
+ "tangled",
137
+ "gitee",
138
+ "azure-devops",
139
+ "cursor-origin",
140
+ "pushin"
141
+ ],
142
+ "description": "The forges this package ships providers for.",
143
+ "x-forges-type": "KnownForgeKind"
144
+ },
145
+ "RepoRef": {
146
+ "type": "object",
147
+ "properties": {
148
+ "forge": {
149
+ "$ref": "#/definitions/ForgeKind"
150
+ },
151
+ "instance": {
152
+ "$ref": "#/definitions/ForgeInstance",
153
+ "description": "The host of the instance, such as `github.com` or `git.example.com`."
154
+ },
155
+ "owner": {
156
+ "type": "string",
157
+ "description": "Full namespace path. On forges with nested groups (GitLab) this contains slashes, for example `acme/platform`; `name` never does."
158
+ },
159
+ "name": {
160
+ "type": "string",
161
+ "description": "Repository name. Empty for namespace-scoped refs."
162
+ },
163
+ "kind": {
164
+ "type": "string",
165
+ "enum": [
166
+ "repo",
167
+ "namespace"
168
+ ],
169
+ "description": "`'namespace'` for subjects that belong to a group rather than a repository (GitLab epics). Absent means a repository."
170
+ },
171
+ "externalId": {
172
+ "type": "string",
173
+ "description": "Stable forge-native identifier that survives renames and transfers: a GitHub, Forgejo or Gitea numeric id, a GitLab project or group id, a Bitbucket UUID or a Tangled repo DID. {@link repoKey} prefers it over `owner` and `name`."
174
+ }
175
+ },
176
+ "required": [
177
+ "forge",
178
+ "instance",
179
+ "name",
180
+ "owner"
181
+ ],
182
+ "description": "Addresses a repository by its forge, instance, owner and name.",
183
+ "x-forges-type": "RepoRef"
184
+ }
185
+ }
186
+ }