@homeflare/alchemy 0.27.4 → 0.29.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 (217) hide show
  1. package/README.md +2 -0
  2. package/dist/caddy/admin-address.d.ts +27 -0
  3. package/dist/caddy/admin-address.d.ts.map +1 -0
  4. package/dist/caddy/admin-calls.d.ts +25 -28
  5. package/dist/caddy/admin-calls.d.ts.map +1 -1
  6. package/dist/caddy/admin.d.ts +28 -38
  7. package/dist/caddy/admin.d.ts.map +1 -1
  8. package/dist/caddy/caddy-http-client.d.ts +25 -0
  9. package/dist/caddy/caddy-http-client.d.ts.map +1 -0
  10. package/dist/caddy/config-errors.d.ts +24 -0
  11. package/dist/caddy/config-errors.d.ts.map +1 -0
  12. package/dist/caddy/config-lifecycle.d.ts +20 -49
  13. package/dist/caddy/config-lifecycle.d.ts.map +1 -1
  14. package/dist/caddy/config-reconcile.d.ts +45 -0
  15. package/dist/caddy/config-reconcile.d.ts.map +1 -0
  16. package/dist/caddy/config.d.ts +4 -3
  17. package/dist/caddy/config.d.ts.map +1 -1
  18. package/dist/caddy/fake-caddy.d.ts +10 -2
  19. package/dist/caddy/fake-caddy.d.ts.map +1 -1
  20. package/dist/caddy/index.d.ts +3 -3
  21. package/dist/caddy/index.d.ts.map +1 -1
  22. package/dist/caddy/index.js +487 -444
  23. package/dist/caddy/index.js.map +16 -12
  24. package/dist/caddy/local-admin.d.ts +20 -34
  25. package/dist/caddy/local-admin.d.ts.map +1 -1
  26. package/dist/caddy/providers.d.ts +19 -3
  27. package/dist/caddy/providers.d.ts.map +1 -1
  28. package/dist/cloudflare/mesh-node-token.d.ts +1 -1
  29. package/dist/cloudflare/mesh-node-token.d.ts.map +1 -1
  30. package/dist/forgejo/branch-protection.d.ts +4 -4
  31. package/dist/forgejo/org-actions-secrets.d.ts +4 -4
  32. package/dist/forgejo/org-label.d.ts +4 -4
  33. package/dist/forgejo/org-team.d.ts +4 -4
  34. package/dist/forgejo/repo-webhook.d.ts +4 -4
  35. package/dist/forgejo/repository.d.ts +4 -4
  36. package/dist/forgejo/team-member.d.ts +4 -4
  37. package/dist/github/declare-repo-baseline.d.ts +1 -1
  38. package/dist/github/declare-repo-baseline.d.ts.map +1 -1
  39. package/dist/github/index.d.ts +9 -5
  40. package/dist/github/index.d.ts.map +1 -1
  41. package/dist/github/index.js +161 -25
  42. package/dist/github/index.js.map +15 -13
  43. package/dist/github/repo-baseline-data.d.ts +10 -1
  44. package/dist/github/repo-baseline-data.d.ts.map +1 -1
  45. package/dist/github/repo-policy.d.ts +1 -1
  46. package/dist/github/repo-policy.d.ts.map +1 -1
  47. package/dist/github/repository-ruleset-errors.d.ts +37 -3
  48. package/dist/github/repository-ruleset-errors.d.ts.map +1 -1
  49. package/dist/github/repository-ruleset-form.d.ts.map +1 -1
  50. package/dist/github/repository-ruleset-guards.d.ts +15 -2
  51. package/dist/github/repository-ruleset-guards.d.ts.map +1 -1
  52. package/dist/github/repository-ruleset-narrowing-guards.d.ts +39 -0
  53. package/dist/github/repository-ruleset-narrowing-guards.d.ts.map +1 -0
  54. package/dist/github/repository-ruleset-octokit.d.ts +49 -0
  55. package/dist/github/repository-ruleset-octokit.d.ts.map +1 -1
  56. package/dist/github/repository-ruleset-probe.d.ts +2 -1
  57. package/dist/github/repository-ruleset-probe.d.ts.map +1 -1
  58. package/dist/github/repository-ruleset-props.d.ts +91 -0
  59. package/dist/github/repository-ruleset-props.d.ts.map +1 -0
  60. package/dist/github/repository-ruleset-providers.d.ts +42 -0
  61. package/dist/github/repository-ruleset-providers.d.ts.map +1 -0
  62. package/dist/github/repository-ruleset-reconcile.d.ts.map +1 -1
  63. package/dist/github/repository-ruleset.d.ts +28 -34
  64. package/dist/github/repository-ruleset.d.ts.map +1 -1
  65. package/dist/litellm/fake-litellm.d.ts +27 -16
  66. package/dist/litellm/fake-litellm.d.ts.map +1 -1
  67. package/dist/litellm/fake-stack.d.ts +9 -4
  68. package/dist/litellm/fake-stack.d.ts.map +1 -1
  69. package/dist/litellm/index.d.ts +7 -5
  70. package/dist/litellm/index.d.ts.map +1 -1
  71. package/dist/litellm/index.js +53 -123
  72. package/dist/litellm/index.js.map +8 -8
  73. package/dist/litellm/operations.d.ts +60 -0
  74. package/dist/litellm/operations.d.ts.map +1 -0
  75. package/dist/litellm/pass-through-endpoint.d.ts +10 -28
  76. package/dist/litellm/pass-through-endpoint.d.ts.map +1 -1
  77. package/dist/litellm/pass-through-errors.d.ts +37 -0
  78. package/dist/litellm/pass-through-errors.d.ts.map +1 -0
  79. package/dist/litellm/pass-through-form.d.ts +11 -4
  80. package/dist/litellm/pass-through-form.d.ts.map +1 -1
  81. package/dist/litellm/providers.d.ts +7 -5
  82. package/dist/litellm/providers.d.ts.map +1 -1
  83. package/dist/netbox/prefix.d.ts +4 -4
  84. package/dist/paperless/custom-field.d.ts +21 -21
  85. package/dist/paperless/custom-field.d.ts.map +1 -1
  86. package/dist/paperless/document-type.d.ts +34 -4
  87. package/dist/paperless/document-type.d.ts.map +1 -1
  88. package/dist/paperless/fake-paperless.d.ts +36 -19
  89. package/dist/paperless/fake-paperless.d.ts.map +1 -1
  90. package/dist/paperless/index.d.ts +7 -2
  91. package/dist/paperless/index.d.ts.map +1 -1
  92. package/dist/paperless/index.js +164 -228
  93. package/dist/paperless/index.js.map +10 -13
  94. package/dist/paperless/matching-locate.d.ts +42 -20
  95. package/dist/paperless/matching-locate.d.ts.map +1 -1
  96. package/dist/paperless/matching-types.d.ts +47 -18
  97. package/dist/paperless/matching-types.d.ts.map +1 -1
  98. package/dist/paperless/matching.d.ts +30 -27
  99. package/dist/paperless/matching.d.ts.map +1 -1
  100. package/dist/paperless/providers.d.ts +13 -7
  101. package/dist/paperless/providers.d.ts.map +1 -1
  102. package/dist/paperless/storage-path.d.ts +34 -4
  103. package/dist/paperless/storage-path.d.ts.map +1 -1
  104. package/dist/paperless/tag.d.ts +43 -8
  105. package/dist/paperless/tag.d.ts.map +1 -1
  106. package/dist/proxmox/acl.d.ts +30 -23
  107. package/dist/proxmox/acl.d.ts.map +1 -1
  108. package/dist/proxmox/distilled-pve.d.ts +89 -0
  109. package/dist/proxmox/distilled-pve.d.ts.map +1 -0
  110. package/dist/proxmox/index.js +663 -609
  111. package/dist/proxmox/index.js.map +12 -11
  112. package/dist/proxmox/members.d.ts +29 -10
  113. package/dist/proxmox/members.d.ts.map +1 -1
  114. package/docs/caddy-admin.md +1 -1
  115. package/docs/caddy.md +3 -2
  116. package/docs/credentials.md +16 -0
  117. package/docs/litellm.md +21 -13
  118. package/docs/paperless.md +12 -0
  119. package/docs/peers.md +5 -0
  120. package/docs/repo-policy.md +16 -1
  121. package/docs/repository-ruleset.md +53 -13
  122. package/docs/upstream-conformance.md +126 -10
  123. package/package.json +9 -2
  124. package/src/caddy/admin-address.ts +71 -0
  125. package/src/caddy/admin-calls.ts +48 -100
  126. package/src/caddy/admin.ts +37 -41
  127. package/src/caddy/adopt-scope.test.ts +1 -1
  128. package/src/caddy/caddy-http-client.ts +229 -0
  129. package/src/caddy/config-adopt-provider.test.ts +139 -0
  130. package/src/caddy/config-adopt.test.ts +60 -126
  131. package/src/caddy/config-errors.ts +47 -0
  132. package/src/caddy/config-lifecycle.test.ts +55 -42
  133. package/src/caddy/config-lifecycle.ts +72 -162
  134. package/src/caddy/config-reconcile.ts +138 -0
  135. package/src/caddy/config.ts +36 -42
  136. package/src/caddy/fake-caddy.ts +20 -2
  137. package/src/caddy/index.ts +3 -8
  138. package/src/caddy/local-admin.test.ts +35 -21
  139. package/src/caddy/local-admin.ts +60 -167
  140. package/src/caddy/providers.test.ts +14 -6
  141. package/src/caddy/providers.ts +20 -4
  142. package/src/github/declare-repo-baseline.ts +6 -6
  143. package/src/github/index.ts +10 -4
  144. package/src/github/repo-baseline-data.test.ts +13 -0
  145. package/src/github/repo-baseline-data.ts +11 -2
  146. package/src/github/repo-policy-stack.test.ts +59 -0
  147. package/src/github/repo-policy.ts +3 -2
  148. package/src/github/repository-ruleset-errors.ts +51 -4
  149. package/src/github/repository-ruleset-exact-adopt-k1.test.ts +109 -0
  150. package/src/github/repository-ruleset-exact-adopt.test.ts +184 -0
  151. package/src/github/repository-ruleset-form.ts +7 -3
  152. package/src/github/repository-ruleset-guards.ts +11 -4
  153. package/src/github/repository-ruleset-narrowing-guards.ts +141 -0
  154. package/src/github/repository-ruleset-narrowing.test.ts +210 -0
  155. package/src/github/repository-ruleset-octokit.test.ts +141 -0
  156. package/src/github/repository-ruleset-octokit.ts +121 -30
  157. package/src/github/repository-ruleset-probe.ts +2 -1
  158. package/src/github/repository-ruleset-props.ts +95 -0
  159. package/src/github/repository-ruleset-providers.ts +46 -0
  160. package/src/github/repository-ruleset-reconcile.ts +35 -0
  161. package/src/github/repository-ruleset-wire.test.ts +38 -27
  162. package/src/github/repository-ruleset-write-refusals.test.ts +6 -26
  163. package/src/github/repository-ruleset.ts +53 -43
  164. package/src/litellm/fake-litellm.ts +83 -78
  165. package/src/litellm/fake-stack.ts +13 -5
  166. package/src/litellm/index.ts +7 -21
  167. package/src/litellm/operations.ts +149 -0
  168. package/src/litellm/pass-through-endpoint-delete-swallow.test.ts +17 -20
  169. package/src/litellm/pass-through-endpoint-replace.test.ts +3 -4
  170. package/src/litellm/pass-through-endpoint.test.ts +8 -8
  171. package/src/litellm/pass-through-endpoint.ts +21 -31
  172. package/src/litellm/pass-through-errors.ts +37 -0
  173. package/src/litellm/pass-through-form.ts +20 -10
  174. package/src/litellm/providers.ts +8 -7
  175. package/src/paperless/custom-field.test.ts +49 -40
  176. package/src/paperless/custom-field.ts +57 -33
  177. package/src/paperless/document-type.test.ts +48 -0
  178. package/src/paperless/document-type.ts +51 -22
  179. package/src/paperless/fake-paperless.ts +63 -72
  180. package/src/paperless/index.ts +7 -13
  181. package/src/paperless/matching-locate.test.ts +102 -0
  182. package/src/paperless/matching-locate.ts +80 -86
  183. package/src/paperless/matching-types.ts +49 -16
  184. package/src/paperless/matching.ts +77 -90
  185. package/src/paperless/providers.ts +14 -10
  186. package/src/paperless/storage-path.test.ts +56 -0
  187. package/src/paperless/storage-path.ts +53 -24
  188. package/src/paperless/tag-identity.test.ts +127 -0
  189. package/src/paperless/tag.test.ts +100 -0
  190. package/src/paperless/tag.ts +62 -32
  191. package/src/proxmox/acl.test.ts +145 -0
  192. package/src/proxmox/acl.ts +128 -150
  193. package/src/proxmox/distilled-pve.test.ts +231 -0
  194. package/src/proxmox/distilled-pve.ts +147 -0
  195. package/src/proxmox/members-timeout.test.ts +161 -0
  196. package/src/proxmox/members.test.ts +9 -0
  197. package/src/proxmox/members.ts +36 -2
  198. package/dist/litellm/client.d.ts +0 -76
  199. package/dist/litellm/client.d.ts.map +0 -1
  200. package/dist/litellm/credentials.d.ts +0 -48
  201. package/dist/litellm/credentials.d.ts.map +0 -1
  202. package/dist/litellm/generated/pass-through.d.ts +0 -71
  203. package/dist/litellm/generated/pass-through.d.ts.map +0 -1
  204. package/dist/paperless/client.d.ts +0 -37
  205. package/dist/paperless/client.d.ts.map +0 -1
  206. package/dist/paperless/credentials.d.ts +0 -40
  207. package/dist/paperless/credentials.d.ts.map +0 -1
  208. package/dist/paperless/errors.d.ts +0 -49
  209. package/dist/paperless/errors.d.ts.map +0 -1
  210. package/src/litellm/client.ts +0 -195
  211. package/src/litellm/credentials.ts +0 -73
  212. package/src/litellm/generated/pass-through.ts +0 -73
  213. package/src/paperless/client.ts +0 -88
  214. package/src/paperless/credentials.ts +0 -69
  215. package/src/paperless/errors.ts +0 -62
  216. package/src/paperless/matching-identity.test.ts +0 -194
  217. package/src/paperless/matching.test.ts +0 -128
@@ -208,6 +208,18 @@ class BypassActorWidened extends Data.TaggedError("BypassActorWidened") {
208
208
  }
209
209
  }
210
210
 
211
+ class BypassActorNarrowed extends Data.TaggedError("BypassActorNarrowed") {
212
+ get message() {
213
+ return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the ` + `declaration drops a bypass actor the live ruleset has (${this.narrowed.join(", ")}), and ` + "the declaration carries no `acknowledgeBypassNarrowing`. Add one with a reason once the " + "removal is deliberate, or restore the actor to match live.";
214
+ }
215
+ }
216
+
217
+ class RuleNarrowed extends Data.TaggedError("RuleNarrowed") {
218
+ get message() {
219
+ return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the ` + `declaration drops a live "${this.ruleType}" rule, and carries no ` + "`acknowledgeRuleNarrowing`. Add one with a reason once the removal is deliberate, or " + "declare the rule to match live.";
220
+ }
221
+ }
222
+
211
223
  class UndeclaredLiveRule extends Data.TaggedError("UndeclaredLiveRule") {
212
224
  get message() {
213
225
  return `GitHub.RepositoryRuleset "${this.name}" on ${this.owner}/${this.repository}: the live ` + `ruleset has a "${this.ruleType}" rule this resource does not model. Declare it (if it is ` + "now modeled) or an explicit `false` to remove it — the PUT replaces `rules` wholesale, so " + "nothing may be dropped silently.";
@@ -222,7 +234,7 @@ class RequiredChecksOmitted extends Data.TaggedError("RequiredChecksOmitted") {
222
234
 
223
235
  class NeverReportedContext extends Data.TaggedError("NeverReportedContext") {
224
236
  get message() {
225
- return `GitHub.RepositoryRuleset: "${this.context}" has never reported success on ` + `${this.owner}/${this.repository}'s default branch. Requiring it now would leave every ` + "pull request waiting on a check that has never once reported — refused before any write.";
237
+ return `GitHub.RepositoryRuleset: "${this.context}" has never reported success on ` + `${this.owner}/${this.repository}'s default branch tip or any of its recent merged pull ` + "requests. Requiring it now would leave every pull request waiting on a check that has " + "never once reported — refused before any write.";
226
238
  }
227
239
  }
228
240
 
@@ -247,6 +259,53 @@ var octokitFor = (baseUrl) => Effect.gen(function* () {
247
259
  return baseUrl === undefined ? creds.octokit() : creds.octokit({ baseUrl });
248
260
  }).pipe(Effect.mapError(asError));
249
261
  var is404 = (e) => e?.status === 404;
262
+ var RECENT_MERGED_PR_LIMIT = 10;
263
+ var RECENT_CLOSED_PR_PAGE_SIZE = 100;
264
+ var hasRefReportedSuccess = (octokit, owner, repo, ref, context) => Effect.gen(function* () {
265
+ const [checkRuns, statuses] = yield* Effect.all([
266
+ Effect.tryPromise({
267
+ try: () => octokit.rest.checks.listForRef({ owner, repo, ref, check_name: context }),
268
+ catch: asError
269
+ }),
270
+ Effect.tryPromise({
271
+ try: () => octokit.rest.repos.listCommitStatusesForRef({ owner, repo, ref }),
272
+ catch: asError
273
+ })
274
+ ]);
275
+ const checkReported = checkRuns.data.check_runs.some((run) => run.name === context && run.conclusion === "success");
276
+ const statusReported = statuses.data.some((status) => status.context === context && status.state === "success");
277
+ return checkReported || statusReported;
278
+ });
279
+ var recentMergedHeadShas = (octokit, owner, repo, base) => Effect.gen(function* () {
280
+ const closed = yield* Effect.tryPromise({
281
+ try: () => octokit.rest.pulls.list({
282
+ owner,
283
+ repo,
284
+ state: "closed",
285
+ base,
286
+ sort: "updated",
287
+ direction: "desc",
288
+ per_page: RECENT_CLOSED_PR_PAGE_SIZE
289
+ }),
290
+ catch: asError
291
+ });
292
+ return closed.data.filter((pr) => pr.merged_at !== null).slice(0, RECENT_MERGED_PR_LIMIT).map((pr) => pr.head.sha);
293
+ });
294
+ var contextReportedSuccess = (octokit, owner, repo, context) => Effect.gen(function* () {
295
+ const repository = yield* Effect.tryPromise({
296
+ try: () => octokit.rest.repos.get({ owner, repo }),
297
+ catch: asError
298
+ });
299
+ const ref = repository.data.default_branch;
300
+ if (yield* hasRefReportedSuccess(octokit, owner, repo, ref, context))
301
+ return true;
302
+ const heads = yield* recentMergedHeadShas(octokit, owner, repo, ref);
303
+ for (const sha of heads) {
304
+ if (yield* hasRefReportedSuccess(octokit, owner, repo, sha, context))
305
+ return true;
306
+ }
307
+ return false;
308
+ });
250
309
  var makeRulesetOctokit = (baseUrl) => ({
251
310
  list: ({ owner, repo }) => Effect.gen(function* () {
252
311
  const octokit = yield* octokitFor(baseUrl);
@@ -302,24 +361,7 @@ var makeRulesetOctokit = (baseUrl) => ({
302
361
  }),
303
362
  hasContextReportedSuccess: ({ owner, repo, context }) => Effect.gen(function* () {
304
363
  const octokit = yield* octokitFor(baseUrl);
305
- const repository = yield* Effect.tryPromise({
306
- try: () => octokit.rest.repos.get({ owner, repo }),
307
- catch: asError
308
- });
309
- const ref = repository.data.default_branch;
310
- const [checkRuns, statuses] = yield* Effect.all([
311
- Effect.tryPromise({
312
- try: () => octokit.rest.checks.listForRef({ owner, repo, ref, check_name: context }),
313
- catch: asError
314
- }),
315
- Effect.tryPromise({
316
- try: () => octokit.rest.repos.listCommitStatusesForRef({ owner, repo, ref }),
317
- catch: asError
318
- })
319
- ]);
320
- const checkReported = checkRuns.data.check_runs.some((run) => run.name === context && run.conclusion === "success");
321
- const statusReported = statuses.data.some((status) => status.context === context && status.state === "success");
322
- return checkReported || statusReported;
364
+ return yield* contextReportedSuccess(octokit, owner, repo, context);
323
365
  })
324
366
  });
325
367
 
@@ -371,7 +413,9 @@ function buildPullRequestRule(rule) {
371
413
  minimum_approvals: r.minimumApprovals,
372
414
  reviewer: { id: r.reviewer.actorId, type: r.reviewer.actorType }
373
415
  })),
374
- ...rule.extraApprovalForUnattributedChanges === undefined ? {} : { require_extra_approval_for_unattributed_changes: false }
416
+ ...rule.extraApprovalForUnattributedChanges === undefined ? {} : {
417
+ require_extra_approval_for_unattributed_changes: rule.extraApprovalForUnattributedChanges
418
+ }
375
419
  }
376
420
  };
377
421
  }
@@ -587,6 +631,65 @@ var refuseUnreportedContexts = (octokit, owner, repo, contexts) => Effect3.gen(f
587
631
  }
588
632
  });
589
633
 
634
+ // src/github/repository-ruleset-narrowing-guards.ts
635
+ var isBypassNarrowingAcknowledged = (props) => props.acknowledgeBypassNarrowing !== undefined && props.acknowledgeBypassNarrowing.reason.trim().length > 0;
636
+ var isRuleNarrowingAcknowledged = (props) => props.acknowledgeRuleNarrowing !== undefined && props.acknowledgeRuleNarrowing.reason.trim().length > 0;
637
+ function bypassNarrowingRefusal(input) {
638
+ if (input.acknowledged)
639
+ return;
640
+ if (input.live === undefined)
641
+ return;
642
+ const liveActors = input.live.bypass_actors ?? [];
643
+ const declaredKeys = new Set((input.declared ?? []).map((a) => bypassKey({
644
+ actor_type: a.actorType,
645
+ actor_id: a.actorId,
646
+ bypass_mode: a.bypassMode ?? "always"
647
+ })));
648
+ const narrowed = liveActors.map(bypassKey).filter((k) => !declaredKeys.has(k));
649
+ if (narrowed.length === 0)
650
+ return;
651
+ return new BypassActorNarrowed({
652
+ owner: input.owner,
653
+ repository: input.repository,
654
+ name: input.name,
655
+ narrowed
656
+ });
657
+ }
658
+ function droppedBooleanOrPullRequestType(rules, live) {
659
+ const declaredFalse = [
660
+ [rules.creation, "creation"],
661
+ [rules.update, "update"],
662
+ [rules.deletion, "deletion"],
663
+ [rules.requiredLinearHistory, "required_linear_history"],
664
+ [rules.requiredSignatures, "required_signatures"],
665
+ [rules.nonFastForward, "non_fast_forward"]
666
+ ];
667
+ for (const [declared, type] of declaredFalse) {
668
+ if (declared === false && live.has(type))
669
+ return type;
670
+ }
671
+ if (rules.pullRequest === false && live.has("pull_request"))
672
+ return "pull_request";
673
+ return;
674
+ }
675
+ function ruleNarrowingRefusal(input) {
676
+ if (input.acknowledged)
677
+ return;
678
+ const rules = input.declared;
679
+ if (rules === undefined)
680
+ return;
681
+ const live = liveRuleTypes(input.live);
682
+ const ruleType = droppedBooleanOrPullRequestType(rules, live) ?? (rules.requiredStatusChecks === false && live.has("required_status_checks") ? "required_status_checks" : undefined);
683
+ if (ruleType === undefined)
684
+ return;
685
+ return new RuleNarrowed({
686
+ owner: input.owner,
687
+ repository: input.repository,
688
+ name: input.name,
689
+ ruleType
690
+ });
691
+ }
692
+
590
693
  // src/github/repository-ruleset-reconcile.ts
591
694
  var guardedPullRequestFields = (rule) => {
592
695
  const params = rule?.parameters ?? {};
@@ -631,6 +734,8 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
631
734
  if (observed === undefined) {
632
735
  observed = yield* probeByName(octokit, { owner, repo, name: news.name, target });
633
736
  }
737
+ const bypassAcknowledged = isBypassNarrowingAcknowledged(news);
738
+ const ruleAcknowledged = isRuleNarrowingAcknowledged(news);
634
739
  const bypassRefusal = news.bypassActors === undefined ? undefined : bypassWideningRefusal({
635
740
  owner,
636
741
  repository: repo,
@@ -640,6 +745,16 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
640
745
  });
641
746
  if (bypassRefusal !== undefined)
642
747
  return yield* Effect4.fail(bypassRefusal);
748
+ const bypassNarrowRefusal = news.bypassActors === undefined ? undefined : bypassNarrowingRefusal({
749
+ owner,
750
+ repository: repo,
751
+ name: news.name,
752
+ declared: news.bypassActors,
753
+ live: observed,
754
+ acknowledged: bypassAcknowledged
755
+ });
756
+ if (bypassNarrowRefusal !== undefined)
757
+ return yield* Effect4.fail(bypassNarrowRefusal);
643
758
  const ruleRefusal = undeclaredLiveRuleRefusal({
644
759
  owner,
645
760
  repository: repo,
@@ -649,6 +764,16 @@ var reconcileRuleset = (input) => Effect4.gen(function* () {
649
764
  });
650
765
  if (ruleRefusal !== undefined)
651
766
  return yield* Effect4.fail(ruleRefusal);
767
+ const ruleNarrowRefusal = ruleNarrowingRefusal({
768
+ owner,
769
+ repository: repo,
770
+ name: news.name,
771
+ declared: news.rules,
772
+ live: observed,
773
+ acknowledged: ruleAcknowledged
774
+ });
775
+ if (ruleNarrowRefusal !== undefined)
776
+ return yield* Effect4.fail(ruleNarrowRefusal);
652
777
  const checksRefusal = requiredChecksOmissionRefusal({
653
778
  owner,
654
779
  repository: repo,
@@ -700,7 +825,8 @@ var attrsOf = (r) => ({
700
825
  updatedAt: r.updated_at
701
826
  });
702
827
  function constraintRefusal(props) {
703
- const approvals = props.rules?.pullRequest?.requiredApprovingReviewCount;
828
+ const pr = props.rules?.pullRequest === false ? undefined : props.rules?.pullRequest;
829
+ const approvals = pr?.requiredApprovingReviewCount;
704
830
  if (approvals !== undefined) {
705
831
  const reason = approvalCountRefusal(approvals);
706
832
  if (reason !== undefined) {
@@ -710,7 +836,7 @@ function constraintRefusal(props) {
710
836
  });
711
837
  }
712
838
  }
713
- const methods = props.rules?.pullRequest?.allowedMergeMethods;
839
+ const methods = pr?.allowedMergeMethods;
714
840
  if (methods !== undefined) {
715
841
  const reason = allowedMergeMethodsRefusal(methods);
716
842
  if (reason !== undefined) {
@@ -796,7 +922,7 @@ function repoBaselineSettings(input) {
796
922
  allowSquashMerge: true,
797
923
  allowMergeCommit: false,
798
924
  allowRebaseMerge: false,
799
- allowAutoMerge: true,
925
+ allowAutoMerge: input.checks.length > 0,
800
926
  deleteBranchOnMerge: true,
801
927
  hasWiki: false
802
928
  };
@@ -849,7 +975,15 @@ var declareRepoBaseline = (id, options) => Effect7.gen(function* () {
849
975
  const ruleset = yield* owned(RepositoryRuleset(`${id}-ruleset`, repoBaselineRuleset(options)));
850
976
  return { repository, ruleset };
851
977
  });
978
+ // src/github/repository-ruleset-providers.ts
979
+ import * as GitHub3 from "alchemy/GitHub";
980
+ import * as Layer from "effect/Layer";
981
+ var repoPolicyProviders = (options) => {
982
+ const github = GitHub3.providers(options);
983
+ return Layer.mergeAll(github, RepositoryRulesetProvider().pipe(Layer.provideMerge(github)));
984
+ };
852
985
  export {
986
+ BypassActorNarrowed,
853
987
  BypassActorWidened,
854
988
  DuplicateRuleset,
855
989
  NeverReportedContext,
@@ -859,14 +993,16 @@ export {
859
993
  RepositoryRuleset,
860
994
  RepositoryRulesetProvider,
861
995
  RequiredChecksOmitted,
996
+ RuleNarrowed,
862
997
  RulesetConstraintRefused,
863
998
  UndeclaredLiveRule,
864
999
  declareRepoBaseline,
865
1000
  declareRepoPolicy,
866
1001
  repoBaselineRuleset,
867
1002
  repoBaselineSettings,
868
- repoPolicy
1003
+ repoPolicy,
1004
+ repoPolicyProviders
869
1005
  };
870
1006
 
871
- //# debugId=45989F9C0ABF077664756E2164756E21
1007
+ //# debugId=4642631C8C22EC1064756E2164756E21
872
1008
  //# sourceMappingURL=index.js.map