dorfl 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.
- package/dist/advance-ci-template.d.ts +73 -0
- package/dist/advance-ci-template.d.ts.map +1 -0
- package/dist/advance-ci-template.js +104 -0
- package/dist/advance-ci-template.js.map +1 -0
- package/dist/advance-classify.d.ts +132 -0
- package/dist/advance-classify.d.ts.map +1 -0
- package/dist/advance-classify.js +120 -0
- package/dist/advance-classify.js.map +1 -0
- package/dist/advance-drivers.d.ts +182 -0
- package/dist/advance-drivers.d.ts.map +1 -0
- package/dist/advance-drivers.js +231 -0
- package/dist/advance-drivers.js.map +1 -0
- package/dist/advance-isolated.d.ts +156 -0
- package/dist/advance-isolated.d.ts.map +1 -0
- package/dist/advance-isolated.js +256 -0
- package/dist/advance-isolated.js.map +1 -0
- package/dist/advance-lifecycle-template.d.ts +107 -0
- package/dist/advance-lifecycle-template.d.ts.map +1 -0
- package/dist/advance-lifecycle-template.js +668 -0
- package/dist/advance-lifecycle-template.js.map +1 -0
- package/dist/advance-loop-driver.d.ts +325 -0
- package/dist/advance-loop-driver.d.ts.map +1 -0
- package/dist/advance-loop-driver.js +437 -0
- package/dist/advance-loop-driver.js.map +1 -0
- package/dist/advance-treeless-publish.d.ts +108 -0
- package/dist/advance-treeless-publish.d.ts.map +1 -0
- package/dist/advance-treeless-publish.js +71 -0
- package/dist/advance-treeless-publish.js.map +1 -0
- package/dist/advance.d.ts +340 -0
- package/dist/advance.d.ts.map +1 -0
- package/dist/advance.js +1122 -0
- package/dist/advance.js.map +1 -0
- package/dist/advancing-lock.d.ts +294 -0
- package/dist/advancing-lock.d.ts.map +1 -0
- package/dist/advancing-lock.js +594 -0
- package/dist/advancing-lock.js.map +1 -0
- package/dist/agent-launch.d.ts +79 -0
- package/dist/agent-launch.d.ts.map +1 -0
- package/dist/agent-launch.js +61 -0
- package/dist/agent-launch.js.map +1 -0
- package/dist/agent-stop.d.ts +149 -0
- package/dist/agent-stop.d.ts.map +1 -0
- package/dist/agent-stop.js +307 -0
- package/dist/agent-stop.js.map +1 -0
- package/dist/apply-decide.d.ts +127 -0
- package/dist/apply-decide.d.ts.map +1 -0
- package/dist/apply-decide.js +176 -0
- package/dist/apply-decide.js.map +1 -0
- package/dist/apply-merge-action.d.ts +206 -0
- package/dist/apply-merge-action.d.ts.map +1 -0
- package/dist/apply-merge-action.js +307 -0
- package/dist/apply-merge-action.js.map +1 -0
- package/dist/apply-persist.d.ts +174 -0
- package/dist/apply-persist.d.ts.map +1 -0
- package/dist/apply-persist.js +359 -0
- package/dist/apply-persist.js.map +1 -0
- package/dist/arbiter.d.ts +120 -0
- package/dist/arbiter.d.ts.map +1 -0
- package/dist/arbiter.js +255 -0
- package/dist/arbiter.js.map +1 -0
- package/dist/brand.d.ts +70 -0
- package/dist/brand.d.ts.map +1 -0
- package/dist/brand.js +84 -0
- package/dist/brand.js.map +1 -0
- package/dist/buildable-body.d.ts +132 -0
- package/dist/buildable-body.d.ts.map +1 -0
- package/dist/buildable-body.js +131 -0
- package/dist/buildable-body.js.map +1 -0
- package/dist/categorise.d.ts +66 -0
- package/dist/categorise.d.ts.map +1 -0
- package/dist/categorise.js +106 -0
- package/dist/categorise.js.map +1 -0
- package/dist/claim-cas.d.ts +117 -0
- package/dist/claim-cas.d.ts.map +1 -0
- package/dist/claim-cas.js +312 -0
- package/dist/claim-cas.js.map +1 -0
- package/dist/cli-spinner.d.ts +112 -0
- package/dist/cli-spinner.d.ts.map +1 -0
- package/dist/cli-spinner.js +157 -0
- package/dist/cli-spinner.js.map +1 -0
- package/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3094 -0
- package/dist/cli.js.map +1 -0
- package/dist/close-job-template.d.ts +70 -0
- package/dist/close-job-template.d.ts.map +1 -0
- package/dist/close-job-template.js +180 -0
- package/dist/close-job-template.js.map +1 -0
- package/dist/close-job.d.ts +95 -0
- package/dist/close-job.d.ts.map +1 -0
- package/dist/close-job.js +226 -0
- package/dist/close-job.js.map +1 -0
- package/dist/complete.d.ts +361 -0
- package/dist/complete.d.ts.map +1 -0
- package/dist/complete.js +885 -0
- package/dist/complete.js.map +1 -0
- package/dist/concurrency.d.ts +68 -0
- package/dist/concurrency.d.ts.map +1 -0
- package/dist/concurrency.js +112 -0
- package/dist/concurrency.js.map +1 -0
- package/dist/config-override.d.ts +76 -0
- package/dist/config-override.d.ts.map +1 -0
- package/dist/config-override.js +50 -0
- package/dist/config-override.js.map +1 -0
- package/dist/config.d.ts +668 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +241 -0
- package/dist/config.js.map +1 -0
- package/dist/continue-branch.d.ts +249 -0
- package/dist/continue-branch.d.ts.map +1 -0
- package/dist/continue-branch.js +389 -0
- package/dist/continue-branch.js.map +1 -0
- package/dist/cwd-section.d.ts +186 -0
- package/dist/cwd-section.d.ts.map +1 -0
- package/dist/cwd-section.js +209 -0
- package/dist/cwd-section.js.map +1 -0
- package/dist/decision-engine.d.ts +170 -0
- package/dist/decision-engine.d.ts.map +1 -0
- package/dist/decision-engine.js +136 -0
- package/dist/decision-engine.js.map +1 -0
- package/dist/detect.d.ts +17 -0
- package/dist/detect.d.ts.map +1 -0
- package/dist/detect.js +118 -0
- package/dist/detect.js.map +1 -0
- package/dist/do-autopick.d.ts +85 -0
- package/dist/do-autopick.d.ts.map +1 -0
- package/dist/do-autopick.js +112 -0
- package/dist/do-autopick.js.map +1 -0
- package/dist/do-config.d.ts +312 -0
- package/dist/do-config.d.ts.map +1 -0
- package/dist/do-config.js +358 -0
- package/dist/do-config.js.map +1 -0
- package/dist/do-remote-auto.d.ts +75 -0
- package/dist/do-remote-auto.d.ts.map +1 -0
- package/dist/do-remote-auto.js +111 -0
- package/dist/do-remote-auto.js.map +1 -0
- package/dist/do.d.ts +621 -0
- package/dist/do.d.ts.map +1 -0
- package/dist/do.js +1882 -0
- package/dist/do.js.map +1 -0
- package/dist/drop-source.d.ts +96 -0
- package/dist/drop-source.d.ts.map +1 -0
- package/dist/drop-source.js +91 -0
- package/dist/drop-source.js.map +1 -0
- package/dist/eligibility.d.ts +46 -0
- package/dist/eligibility.d.ts.map +1 -0
- package/dist/eligibility.js +34 -0
- package/dist/eligibility.js.map +1 -0
- package/dist/env-config.d.ts +51 -0
- package/dist/env-config.d.ts.map +1 -0
- package/dist/env-config.js +272 -0
- package/dist/env-config.js.map +1 -0
- package/dist/failure-cause.d.ts +70 -0
- package/dist/failure-cause.d.ts.map +1 -0
- package/dist/failure-cause.js +126 -0
- package/dist/failure-cause.js.map +1 -0
- package/dist/format.d.ts +43 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +256 -0
- package/dist/format.js.map +1 -0
- package/dist/frontmatter.d.ts +215 -0
- package/dist/frontmatter.d.ts.map +1 -0
- package/dist/frontmatter.js +345 -0
- package/dist/frontmatter.js.map +1 -0
- package/dist/gate-readiness.d.ts +84 -0
- package/dist/gate-readiness.d.ts.map +1 -0
- package/dist/gate-readiness.js +103 -0
- package/dist/gate-readiness.js.map +1 -0
- package/dist/gc.d.ts +165 -0
- package/dist/gc.d.ts.map +1 -0
- package/dist/gc.js +313 -0
- package/dist/gc.js.map +1 -0
- package/dist/gh-failure.d.ts +42 -0
- package/dist/gh-failure.d.ts.map +1 -0
- package/dist/gh-failure.js +49 -0
- package/dist/gh-failure.js.map +1 -0
- package/dist/git.d.ts +75 -0
- package/dist/git.d.ts.map +1 -0
- package/dist/git.js +130 -0
- package/dist/git.js.map +1 -0
- package/dist/github.d.ts +187 -0
- package/dist/github.d.ts.map +1 -0
- package/dist/github.js +343 -0
- package/dist/github.js.map +1 -0
- package/dist/harness.d.ts +242 -0
- package/dist/harness.d.ts.map +1 -0
- package/dist/harness.js +157 -0
- package/dist/harness.js.map +1 -0
- package/dist/identity.d.ts +167 -0
- package/dist/identity.d.ts.map +1 -0
- package/dist/identity.js +231 -0
- package/dist/identity.js.map +1 -0
- package/dist/index.d.ts +147 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +76 -0
- package/dist/index.js.map +1 -0
- package/dist/install-ci-branch-protection.d.ts +147 -0
- package/dist/install-ci-branch-protection.d.ts.map +1 -0
- package/dist/install-ci-branch-protection.js +166 -0
- package/dist/install-ci-branch-protection.js.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts +15 -0
- package/dist/install-ci-capabilities/advance-lifecycle.d.ts.map +1 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js +28 -0
- package/dist/install-ci-capabilities/advance-lifecycle.js.map +1 -0
- package/dist/install-ci-capabilities/close-job.d.ts +13 -0
- package/dist/install-ci-capabilities/close-job.d.ts.map +1 -0
- package/dist/install-ci-capabilities/close-job.js +26 -0
- package/dist/install-ci-capabilities/close-job.js.map +1 -0
- package/dist/install-ci-capabilities/example-noop.d.ts +16 -0
- package/dist/install-ci-capabilities/example-noop.d.ts.map +1 -0
- package/dist/install-ci-capabilities/example-noop.js +23 -0
- package/dist/install-ci-capabilities/example-noop.js.map +1 -0
- package/dist/install-ci-capabilities/intake.d.ts +15 -0
- package/dist/install-ci-capabilities/intake.d.ts.map +1 -0
- package/dist/install-ci-capabilities/intake.js +28 -0
- package/dist/install-ci-capabilities/intake.js.map +1 -0
- package/dist/install-ci-capabilities/verify.d.ts +14 -0
- package/dist/install-ci-capabilities/verify.d.ts.map +1 -0
- package/dist/install-ci-capabilities/verify.js +27 -0
- package/dist/install-ci-capabilities/verify.js.map +1 -0
- package/dist/install-ci-core.d.ts +446 -0
- package/dist/install-ci-core.d.ts.map +1 -0
- package/dist/install-ci-core.js +760 -0
- package/dist/install-ci-core.js.map +1 -0
- package/dist/install-ci-github.d.ts +167 -0
- package/dist/install-ci-github.d.ts.map +1 -0
- package/dist/install-ci-github.js +315 -0
- package/dist/install-ci-github.js.map +1 -0
- package/dist/install-ci.d.ts +105 -0
- package/dist/install-ci.d.ts.map +1 -0
- package/dist/install-ci.js +363 -0
- package/dist/install-ci.js.map +1 -0
- package/dist/intake-event.d.ts +88 -0
- package/dist/intake-event.d.ts.map +1 -0
- package/dist/intake-event.js +66 -0
- package/dist/intake-event.js.map +1 -0
- package/dist/intake-marker.d.ts +95 -0
- package/dist/intake-marker.d.ts.map +1 -0
- package/dist/intake-marker.js +127 -0
- package/dist/intake-marker.js.map +1 -0
- package/dist/intake-triage.d.ts +48 -0
- package/dist/intake-triage.d.ts.map +1 -0
- package/dist/intake-triage.js +95 -0
- package/dist/intake-triage.js.map +1 -0
- package/dist/intake-trigger-template.d.ts +185 -0
- package/dist/intake-trigger-template.d.ts.map +1 -0
- package/dist/intake-trigger-template.js +449 -0
- package/dist/intake-trigger-template.js.map +1 -0
- package/dist/intake.d.ts +569 -0
- package/dist/intake.d.ts.map +1 -0
- package/dist/intake.js +1628 -0
- package/dist/intake.js.map +1 -0
- package/dist/integration-core.d.ts +539 -0
- package/dist/integration-core.d.ts.map +1 -0
- package/dist/integration-core.js +2195 -0
- package/dist/integration-core.js.map +1 -0
- package/dist/integrator.d.ts +343 -0
- package/dist/integrator.d.ts.map +1 -0
- package/dist/integrator.js +400 -0
- package/dist/integrator.js.map +1 -0
- package/dist/isolation.d.ts +219 -0
- package/dist/isolation.d.ts.map +1 -0
- package/dist/isolation.js +261 -0
- package/dist/isolation.js.map +1 -0
- package/dist/issue-provider.d.ts +349 -0
- package/dist/issue-provider.d.ts.map +1 -0
- package/dist/issue-provider.js +360 -0
- package/dist/issue-provider.js.map +1 -0
- package/dist/item-lock.d.ts +626 -0
- package/dist/item-lock.d.ts.map +1 -0
- package/dist/item-lock.js +1381 -0
- package/dist/item-lock.js.map +1 -0
- package/dist/item-path.d.ts +49 -0
- package/dist/item-path.d.ts.map +1 -0
- package/dist/item-path.js +66 -0
- package/dist/item-path.js.map +1 -0
- package/dist/ledger-lint.d.ts +129 -0
- package/dist/ledger-lint.d.ts.map +1 -0
- package/dist/ledger-lint.js +249 -0
- package/dist/ledger-lint.js.map +1 -0
- package/dist/ledger-read.d.ts +357 -0
- package/dist/ledger-read.d.ts.map +1 -0
- package/dist/ledger-read.js +442 -0
- package/dist/ledger-read.js.map +1 -0
- package/dist/ledger-write.d.ts +330 -0
- package/dist/ledger-write.d.ts.map +1 -0
- package/dist/ledger-write.js +411 -0
- package/dist/ledger-write.js.map +1 -0
- package/dist/lifecycle-gather.d.ts +30 -0
- package/dist/lifecycle-gather.d.ts.map +1 -0
- package/dist/lifecycle-gather.js +205 -0
- package/dist/lifecycle-gather.js.map +1 -0
- package/dist/lifecycle-pools.d.ts +180 -0
- package/dist/lifecycle-pools.d.ts.map +1 -0
- package/dist/lifecycle-pools.js +78 -0
- package/dist/lifecycle-pools.js.map +1 -0
- package/dist/merge-question-surfacer.d.ts +166 -0
- package/dist/merge-question-surfacer.d.ts.map +1 -0
- package/dist/merge-question-surfacer.js +297 -0
- package/dist/merge-question-surfacer.js.map +1 -0
- package/dist/mint-adr.d.ts +126 -0
- package/dist/mint-adr.d.ts.map +1 -0
- package/dist/mint-adr.js +257 -0
- package/dist/mint-adr.js.map +1 -0
- package/dist/mirror-pool-scan.d.ts +125 -0
- package/dist/mirror-pool-scan.d.ts.map +1 -0
- package/dist/mirror-pool-scan.js +104 -0
- package/dist/mirror-pool-scan.js.map +1 -0
- package/dist/needs-attention.d.ts +341 -0
- package/dist/needs-attention.d.ts.map +1 -0
- package/dist/needs-attention.js +900 -0
- package/dist/needs-attention.js.map +1 -0
- package/dist/orphan-sidecar.d.ts +79 -0
- package/dist/orphan-sidecar.d.ts.map +1 -0
- package/dist/orphan-sidecar.js +71 -0
- package/dist/orphan-sidecar.js.map +1 -0
- package/dist/output.d.ts +48 -0
- package/dist/output.d.ts.map +1 -0
- package/dist/output.js +66 -0
- package/dist/output.js.map +1 -0
- package/dist/pi-harness.d.ts +179 -0
- package/dist/pi-harness.d.ts.map +1 -0
- package/dist/pi-harness.js +342 -0
- package/dist/pi-harness.js.map +1 -0
- package/dist/placement.d.ts +99 -0
- package/dist/placement.d.ts.map +1 -0
- package/dist/placement.js +67 -0
- package/dist/placement.js.map +1 -0
- package/dist/prd-to-spec.d.ts +315 -0
- package/dist/prd-to-spec.d.ts.map +1 -0
- package/dist/prd-to-spec.js +684 -0
- package/dist/prd-to-spec.js.map +1 -0
- package/dist/prepare.d.ts +121 -0
- package/dist/prepare.d.ts.map +1 -0
- package/dist/prepare.js +140 -0
- package/dist/prepare.js.map +1 -0
- package/dist/prompt.d.ts +360 -0
- package/dist/prompt.d.ts.map +1 -0
- package/dist/prompt.js +499 -0
- package/dist/prompt.js.map +1 -0
- package/dist/protocol/ADR-FORMAT.md +47 -0
- package/dist/protocol/CLAIM-PROTOCOL.md +217 -0
- package/dist/protocol/REVIEW-PROTOCOL.md +119 -0
- package/dist/protocol/SURFACE-PROTOCOL.md +121 -0
- package/dist/protocol/TASKING-PROTOCOL.md +122 -0
- package/dist/protocol/WORK-CONTRACT.md +276 -0
- package/dist/protocol/spec-template.md +71 -0
- package/dist/protocol/task-template.md +65 -0
- package/dist/readiness.d.ts +66 -0
- package/dist/readiness.d.ts.map +1 -0
- package/dist/readiness.js +36 -0
- package/dist/readiness.js.map +1 -0
- package/dist/reap-branches.d.ts +102 -0
- package/dist/reap-branches.d.ts.map +1 -0
- package/dist/reap-branches.js +149 -0
- package/dist/reap-branches.js.map +1 -0
- package/dist/recover-isolated.d.ts +72 -0
- package/dist/recover-isolated.d.ts.map +1 -0
- package/dist/recover-isolated.js +188 -0
- package/dist/recover-isolated.js.map +1 -0
- package/dist/registry.d.ts +172 -0
- package/dist/registry.d.ts.map +1 -0
- package/dist/registry.js +296 -0
- package/dist/registry.js.map +1 -0
- package/dist/repo-config.d.ts +201 -0
- package/dist/repo-config.d.ts.map +1 -0
- package/dist/repo-config.js +414 -0
- package/dist/repo-config.js.map +1 -0
- package/dist/repo-key.d.ts +20 -0
- package/dist/repo-key.d.ts.map +1 -0
- package/dist/repo-key.js +68 -0
- package/dist/repo-key.js.map +1 -0
- package/dist/repo-mirror.d.ts +177 -0
- package/dist/repo-mirror.d.ts.map +1 -0
- package/dist/repo-mirror.js +271 -0
- package/dist/repo-mirror.js.map +1 -0
- package/dist/retry-backoff.d.ts +90 -0
- package/dist/retry-backoff.d.ts.map +1 -0
- package/dist/retry-backoff.js +98 -0
- package/dist/retry-backoff.js.map +1 -0
- package/dist/review-gate.d.ts +173 -0
- package/dist/review-gate.d.ts.map +1 -0
- package/dist/review-gate.js +261 -0
- package/dist/review-gate.js.map +1 -0
- package/dist/review-verdict.d.ts +149 -0
- package/dist/review-verdict.d.ts.map +1 -0
- package/dist/review-verdict.js +332 -0
- package/dist/review-verdict.js.map +1 -0
- package/dist/run.d.ts +221 -0
- package/dist/run.d.ts.map +1 -0
- package/dist/run.js +963 -0
- package/dist/run.js.map +1 -0
- package/dist/scan.d.ts +308 -0
- package/dist/scan.d.ts.map +1 -0
- package/dist/scan.js +374 -0
- package/dist/scan.js.map +1 -0
- package/dist/select-order.d.ts +75 -0
- package/dist/select-order.d.ts.map +1 -0
- package/dist/select-order.js +108 -0
- package/dist/select-order.js.map +1 -0
- package/dist/select-priority.d.ts +188 -0
- package/dist/select-priority.d.ts.map +1 -0
- package/dist/select-priority.js +80 -0
- package/dist/select-priority.js.map +1 -0
- package/dist/select.d.ts +25 -0
- package/dist/select.d.ts.map +1 -0
- package/dist/select.js +43 -0
- package/dist/select.js.map +1 -0
- package/dist/session-path.d.ts +36 -0
- package/dist/session-path.d.ts.map +1 -0
- package/dist/session-path.js +129 -0
- package/dist/session-path.js.map +1 -0
- package/dist/sidecar-apply.d.ts +83 -0
- package/dist/sidecar-apply.d.ts.map +1 -0
- package/dist/sidecar-apply.js +111 -0
- package/dist/sidecar-apply.js.map +1 -0
- package/dist/sidecar.d.ts +245 -0
- package/dist/sidecar.d.ts.map +1 -0
- package/dist/sidecar.js +481 -0
- package/dist/sidecar.js.map +1 -0
- package/dist/slug-namespace.d.ts +204 -0
- package/dist/slug-namespace.d.ts.map +1 -0
- package/dist/slug-namespace.js +229 -0
- package/dist/slug-namespace.js.map +1 -0
- package/dist/spec-complete.d.ts +44 -0
- package/dist/spec-complete.d.ts.map +1 -0
- package/dist/spec-complete.js +69 -0
- package/dist/spec-complete.js.map +1 -0
- package/dist/start.d.ts +97 -0
- package/dist/start.d.ts.map +1 -0
- package/dist/start.js +633 -0
- package/dist/start.js.map +1 -0
- package/dist/status.d.ts +199 -0
- package/dist/status.d.ts.map +1 -0
- package/dist/status.js +228 -0
- package/dist/status.js.map +1 -0
- package/dist/surface-gate.d.ts +162 -0
- package/dist/surface-gate.d.ts.map +1 -0
- package/dist/surface-gate.js +206 -0
- package/dist/surface-gate.js.map +1 -0
- package/dist/surface-persist.d.ts +86 -0
- package/dist/surface-persist.d.ts.map +1 -0
- package/dist/surface-persist.js +129 -0
- package/dist/surface-persist.js.map +1 -0
- package/dist/tasker-review-loop.d.ts +249 -0
- package/dist/tasker-review-loop.d.ts.map +1 -0
- package/dist/tasker-review-loop.js +369 -0
- package/dist/tasker-review-loop.js.map +1 -0
- package/dist/tasking-eligibility.d.ts +74 -0
- package/dist/tasking-eligibility.d.ts.map +1 -0
- package/dist/tasking-eligibility.js +52 -0
- package/dist/tasking-eligibility.js.map +1 -0
- package/dist/tasking-lock.d.ts +111 -0
- package/dist/tasking-lock.d.ts.map +1 -0
- package/dist/tasking-lock.js +256 -0
- package/dist/tasking-lock.js.map +1 -0
- package/dist/tasking.d.ts +275 -0
- package/dist/tasking.d.ts.map +1 -0
- package/dist/tasking.js +952 -0
- package/dist/tasking.js.map +1 -0
- package/dist/triage-gate.d.ts +127 -0
- package/dist/triage-gate.d.ts.map +1 -0
- package/dist/triage-gate.js +139 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/triage-persist.d.ts +163 -0
- package/dist/triage-persist.d.ts.map +1 -0
- package/dist/triage-persist.js +387 -0
- package/dist/triage-persist.js.map +1 -0
- package/dist/verdict-json.d.ts +32 -0
- package/dist/verdict-json.d.ts.map +1 -0
- package/dist/verdict-json.js +74 -0
- package/dist/verdict-json.js.map +1 -0
- package/dist/verify-workflow-template.d.ts +60 -0
- package/dist/verify-workflow-template.d.ts.map +1 -0
- package/dist/verify-workflow-template.js +126 -0
- package/dist/verify-workflow-template.js.map +1 -0
- package/dist/verify.d.ts +60 -0
- package/dist/verify.d.ts.map +1 -0
- package/dist/verify.js +62 -0
- package/dist/verify.js.map +1 -0
- package/dist/watch-session.d.ts +112 -0
- package/dist/watch-session.d.ts.map +1 -0
- package/dist/watch-session.js +347 -0
- package/dist/watch-session.js.map +1 -0
- package/dist/work-layout.d.ts +198 -0
- package/dist/work-layout.d.ts.map +1 -0
- package/dist/work-layout.js +217 -0
- package/dist/work-layout.js.map +1 -0
- package/dist/work-on.d.ts +154 -0
- package/dist/work-on.d.ts.map +1 -0
- package/dist/work-on.js +387 -0
- package/dist/work-on.js.map +1 -0
- package/dist/workspace.d.ts +224 -0
- package/dist/workspace.d.ts.map +1 -0
- package/dist/workspace.js +325 -0
- package/dist/workspace.js.map +1 -0
- package/package.json +46 -2
- package/src/advance-ci-template.ts +203 -0
- package/src/advance-classify.ts +197 -0
- package/src/advance-drivers.ts +414 -0
- package/src/advance-isolated.ts +432 -0
- package/src/advance-lifecycle-template.ts +791 -0
- package/src/advance-loop-driver.ts +745 -0
- package/src/advance-treeless-publish.ts +177 -0
- package/src/advance.ts +1564 -0
- package/src/advancing-lock.ts +988 -0
- package/src/agent-launch.ts +137 -0
- package/src/agent-stop.ts +361 -0
- package/src/apply-decide.ts +242 -0
- package/src/apply-merge-action.ts +502 -0
- package/src/apply-persist.ts +518 -0
- package/src/arbiter.ts +372 -0
- package/src/brand.ts +111 -0
- package/src/buildable-body.ts +196 -0
- package/src/categorise.ts +158 -0
- package/src/claim-cas.ts +513 -0
- package/src/cli-spinner.ts +225 -0
- package/src/cli.ts +4369 -0
- package/src/close-job-template.ts +236 -0
- package/src/close-job.ts +319 -0
- package/src/complete.ts +1379 -0
- package/src/concurrency.ts +151 -0
- package/src/config-override.ts +116 -0
- package/src/config.ts +883 -0
- package/src/continue-branch.ts +542 -0
- package/src/cwd-section.ts +392 -0
- package/src/decision-engine.ts +272 -0
- package/src/detect.ts +124 -0
- package/src/do-autopick.ts +223 -0
- package/src/do-config.ts +589 -0
- package/src/do-remote-auto.ts +197 -0
- package/src/do.ts +2623 -0
- package/src/drop-source.ts +194 -0
- package/src/eligibility.ts +79 -0
- package/src/env-config.ts +305 -0
- package/src/failure-cause.ts +142 -0
- package/src/format.ts +313 -0
- package/src/frontmatter.ts +485 -0
- package/src/gate-readiness.ts +147 -0
- package/src/gc.ts +510 -0
- package/src/gh-failure.ts +53 -0
- package/src/git.ts +186 -0
- package/src/github.ts +468 -0
- package/src/harness.ts +355 -0
- package/src/identity.ts +322 -0
- package/src/index.ts +785 -0
- package/src/install-ci-branch-protection.ts +255 -0
- package/src/install-ci-capabilities/advance-lifecycle.ts +34 -0
- package/src/install-ci-capabilities/close-job.ts +32 -0
- package/src/install-ci-capabilities/example-noop.ts +24 -0
- package/src/install-ci-capabilities/intake.ts +34 -0
- package/src/install-ci-capabilities/verify.ts +33 -0
- package/src/install-ci-core.ts +1088 -0
- package/src/install-ci-github.ts +376 -0
- package/src/install-ci.ts +552 -0
- package/src/intake-event.ts +102 -0
- package/src/intake-marker.ts +195 -0
- package/src/intake-triage.ts +138 -0
- package/src/intake-trigger-template.ts +591 -0
- package/src/intake.ts +2445 -0
- package/src/integration-core.ts +3065 -0
- package/src/integrator.ts +771 -0
- package/src/isolation.ts +484 -0
- package/src/issue-provider.ts +733 -0
- package/src/item-lock.ts +1858 -0
- package/src/item-path.ts +75 -0
- package/src/ledger-lint.ts +332 -0
- package/src/ledger-read.ts +924 -0
- package/src/ledger-write.ts +865 -0
- package/src/lifecycle-gather.ts +298 -0
- package/src/lifecycle-pools.ts +250 -0
- package/src/merge-question-surfacer.ts +496 -0
- package/src/mint-adr.ts +362 -0
- package/src/mirror-pool-scan.ts +240 -0
- package/src/needs-attention.ts +1506 -0
- package/src/orphan-sidecar.ts +150 -0
- package/src/output.ts +89 -0
- package/src/pi-harness.ts +403 -0
- package/src/placement.ts +131 -0
- package/src/prd-to-spec.ts +1023 -0
- package/src/prepare.ts +230 -0
- package/src/prompt.ts +760 -0
- package/src/readiness.ts +98 -0
- package/src/reap-branches.ts +278 -0
- package/src/recover-isolated.ts +276 -0
- package/src/registry.ts +475 -0
- package/src/repo-config.ts +550 -0
- package/src/repo-key.ts +74 -0
- package/src/repo-mirror.ts +367 -0
- package/src/retry-backoff.ts +130 -0
- package/src/review-gate.ts +389 -0
- package/src/review-verdict.ts +422 -0
- package/src/run.ts +1430 -0
- package/src/scan.ts +611 -0
- package/src/select-order.ts +143 -0
- package/src/select-priority.ts +266 -0
- package/src/select.ts +62 -0
- package/src/session-path.ts +153 -0
- package/src/sidecar-apply.ts +216 -0
- package/src/sidecar.ts +700 -0
- package/src/slug-namespace.ts +367 -0
- package/src/spec-complete.ts +118 -0
- package/src/start.ts +974 -0
- package/src/status.ts +441 -0
- package/src/surface-gate.ts +337 -0
- package/src/surface-persist.ts +241 -0
- package/src/tasker-review-loop.ts +671 -0
- package/src/tasking-eligibility.ts +114 -0
- package/src/tasking-lock.ts +416 -0
- package/src/tasking.ts +1438 -0
- package/src/triage-gate.ts +248 -0
- package/src/triage-persist.ts +570 -0
- package/src/verdict-json.ts +73 -0
- package/src/verify-workflow-template.ts +159 -0
- package/src/verify.ts +123 -0
- package/src/watch-session.ts +397 -0
- package/src/work-layout.ts +262 -0
- package/src/work-on.ts +660 -0
- package/src/workspace.ts +502 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-ci-core.js","sourceRoot":"","sources":["../src/install-ci-core.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The thin GitHub adapter for `install-ci` (prd `runner-in-ci`, task
|
|
3
|
+
* `install-ci-core-and-github-adapter`). It plugs into the provider-agnostic
|
|
4
|
+
* {@link CIProviderContext} seam from `install-ci-core.ts`: the core owns the
|
|
5
|
+
* wizard / config / `models.json` / `--export-config` / `--fake` / secret
|
|
6
|
+
* orchestration; THIS adapter only supplies the GitHub-specific I/O (repo
|
|
7
|
+
* detection, `gh secret set`, the optional `delete_branch_on_merge` repo
|
|
8
|
+
* setting). Because the seam is the boundary, a second CI provider could be added
|
|
9
|
+
* WITHOUT touching the core (US #7/#10).
|
|
10
|
+
*
|
|
11
|
+
* `install-ci` uses the SEAMS, never `gh` directly in the core: this adapter is
|
|
12
|
+
* the ONLY place that shells out to `gh`, and it does so behind the seam so tests
|
|
13
|
+
* stub it entirely (no network, no real `gh`, no real GitHub repo detection). The
|
|
14
|
+
* adapter NEVER `--force`s and degrades gracefully when `gh` is missing.
|
|
15
|
+
*/
|
|
16
|
+
import type { CIProviderContext } from './install-ci-core.js';
|
|
17
|
+
/**
|
|
18
|
+
* The provider id this adapter exposes through {@link CIProviderContext.providerId}.
|
|
19
|
+
* Matches the key the orchestrator looks up in
|
|
20
|
+
* `CIConfigFile.projectSetup` (the provider-namespaced opaque pass-through).
|
|
21
|
+
*/
|
|
22
|
+
export declare const GITHUB_PROVIDER_ID = "github";
|
|
23
|
+
/**
|
|
24
|
+
* Raised when the GitHub project-setup payload fails its LIGHT structural sanity
|
|
25
|
+
* check (the only check we do — see {@link renderGithubProjectSetupSteps}).
|
|
26
|
+
* Distinct error class so callers can branch on it; message names the field.
|
|
27
|
+
*/
|
|
28
|
+
export declare class GithubProjectSetupError extends Error {
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Validate the user's GitHub project-setup payload with a DELIBERATELY LIGHT
|
|
32
|
+
* structural check — enough to catch obvious typos (string vs. nothing; not a
|
|
33
|
+
* YAML list) without re-introducing the mini-format this escape hatch exists to
|
|
34
|
+
* avoid (ADR `install-ci-project-provisioning-native-passthrough`).
|
|
35
|
+
*
|
|
36
|
+
* Rules: the payload must be a non-empty STRING whose trimmed body parses as a
|
|
37
|
+
* top-level YAML list-of-mappings — at indent level 0, every non-blank line
|
|
38
|
+
* either (a) starts a step item with `- ` / `-` (a YAML sequence entry) or (b)
|
|
39
|
+
* is an indented continuation of the previous step. We do NOT inspect step
|
|
40
|
+
* fields (`uses`, `run`, `name`, …) and we do NOT semantically parse YAML.
|
|
41
|
+
*
|
|
42
|
+
* Returns the canonicalised (trimmed) snippet. Throws {@link GithubProjectSetupError}
|
|
43
|
+
* with a message that NAMES the field (`projectSetup.github`).
|
|
44
|
+
*/
|
|
45
|
+
export declare function validateGithubProjectSetupPayload(payload: unknown): string;
|
|
46
|
+
/**
|
|
47
|
+
* Render the user's GitHub project-setup payload to the YAML fragment the
|
|
48
|
+
* composite setup action splices in FIRST (before setup-node, dorfl-install,
|
|
49
|
+
* and AI-auth). The check is delegated to
|
|
50
|
+
* {@link validateGithubProjectSetupPayload}; this function only INDENTS the
|
|
51
|
+
* verbatim payload so it sits at the 4-space level the composite action's
|
|
52
|
+
* `steps:` body uses. The opacity contract: bytes-in == bytes-out, modulo the
|
|
53
|
+
* 4-space indent applied here — we do NOT transform, normalize, or reflow the
|
|
54
|
+
* snippet (that would re-introduce the mini-format this hook exists to avoid).
|
|
55
|
+
*/
|
|
56
|
+
export declare function renderGithubProjectSetupSteps(payload: unknown): string;
|
|
57
|
+
/** Options for the live GitHub provider context. */
|
|
58
|
+
export interface GitHubCIContextOptions {
|
|
59
|
+
/** The target repo's working directory. */
|
|
60
|
+
workDir: string;
|
|
61
|
+
/** The `owner/repo` slug; auto-detected via `gh` when omitted. */
|
|
62
|
+
repo?: string;
|
|
63
|
+
/** The `gh` CLI binary (default `gh` on PATH). Tests inject a stub. */
|
|
64
|
+
ghBin?: string;
|
|
65
|
+
/** Environment for the `gh` child. */
|
|
66
|
+
env?: NodeJS.ProcessEnv;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* The live GitHub provider context: detects the repo + availability via `gh` and
|
|
70
|
+
* sets secrets via `gh secret set`. This is the PRODUCTION seam implementation;
|
|
71
|
+
* tests use a STUB context instead (see {@link MemoryCIProviderContext}). It
|
|
72
|
+
* NEVER `--force`s and treats a missing `gh` as `ghAvailable: false`.
|
|
73
|
+
*/
|
|
74
|
+
export declare class GitHubCIContext implements CIProviderContext {
|
|
75
|
+
readonly providerId = "github";
|
|
76
|
+
readonly workDir: string;
|
|
77
|
+
repo: string | undefined;
|
|
78
|
+
readonly ghAvailable: boolean;
|
|
79
|
+
private readonly ghBin;
|
|
80
|
+
private readonly env;
|
|
81
|
+
constructor(options: GitHubCIContextOptions);
|
|
82
|
+
/** Is `gh` available + authenticated? (`gh auth status` exits 0 when so.) */
|
|
83
|
+
private probeAvailable;
|
|
84
|
+
/** Detect `owner/repo` via `gh repo view`, or `undefined` when unavailable. */
|
|
85
|
+
private detectRepo;
|
|
86
|
+
/** Set a secret via `gh secret set <name> --body <value>`. Throws on failure. */
|
|
87
|
+
setSecret(name: string, value: string): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Set a GitHub repo-setting (the capability-F residue: `delete_branch_on_merge`)
|
|
90
|
+
* via `gh api -X PATCH repos/<repo> -f <name>=<value>`. Throws on failure. The
|
|
91
|
+
* wizard prompts before calling this — it is NEVER silently toggled.
|
|
92
|
+
*/
|
|
93
|
+
setRepoSetting(name: string, value: boolean): Promise<void>;
|
|
94
|
+
/**
|
|
95
|
+
* Detect whether the configured credential has REPO-ADMIN scope by reading
|
|
96
|
+
* `permissions.admin` from `GET /repos/{owner}/{repo}` — ONE low-cost read
|
|
97
|
+
* that works uniformly for every token kind (classic/fine-grained PAT,
|
|
98
|
+
* GitHub App, or the ambient `GITHUB_TOKEN`). See the rationale recorded in
|
|
99
|
+
* `install-ci-branch-protection.ts` ("pick the cheaper of the two and
|
|
100
|
+
* record the choice"). Returns `undefined` (unknown, treated as non-admin)
|
|
101
|
+
* when `gh` is unavailable / the repo is unknown / the call fails.
|
|
102
|
+
*/
|
|
103
|
+
getRepoAdminScope(): Promise<boolean | undefined>;
|
|
104
|
+
/**
|
|
105
|
+
* Configure Tier-1 branch protection via
|
|
106
|
+
* `PUT /repos/{owner}/{repo}/branches/{branch}/protection`. The `spec` body
|
|
107
|
+
* is JSON-piped on stdin (`gh api --input -`) so a complex shape (the
|
|
108
|
+
* required-status `checks` array) carries cleanly without `gh`'s scalar
|
|
109
|
+
* `-f` field syntax. Throws on a non-zero exit; caller logs + falls back.
|
|
110
|
+
*/
|
|
111
|
+
setBranchProtection(branch: string, spec: unknown): Promise<void>;
|
|
112
|
+
/**
|
|
113
|
+
* Render the GitHub project-setup payload to the steps fragment the
|
|
114
|
+
* composite setup action splices in FIRST. Free-function delegate so the
|
|
115
|
+
* memory stub gets identical behaviour with no I/O.
|
|
116
|
+
*/
|
|
117
|
+
renderProjectSetup(payload: unknown): string;
|
|
118
|
+
/** Run `gh <args>` in workDir, or `undefined` when `gh` cannot be spawned. */
|
|
119
|
+
private runGh;
|
|
120
|
+
/** Like {@link runGh} but pipes `input` on stdin (for `gh api --input -`). */
|
|
121
|
+
private runGhWithInput;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* An in-memory STUB provider context for tests + `--fake` mode: `setSecret`
|
|
125
|
+
* records to memory (NO real secrets store touched), `ghAvailable` is fixed
|
|
126
|
+
* (default `false`), `repo` is a fixture. This is the mechanism the task's
|
|
127
|
+
* shared-write isolation requires — no network, no real `gh`, no real GitHub, no
|
|
128
|
+
* real `~`, no system git config written.
|
|
129
|
+
*/
|
|
130
|
+
export declare class MemoryCIProviderContext implements CIProviderContext {
|
|
131
|
+
readonly providerId: string;
|
|
132
|
+
readonly workDir: string;
|
|
133
|
+
repo: string | undefined;
|
|
134
|
+
readonly ghAvailable: boolean;
|
|
135
|
+
/** Secrets recorded in memory (name → value). */
|
|
136
|
+
readonly secrets: Map<string, string>;
|
|
137
|
+
/** Repo settings recorded in memory (name → value). */
|
|
138
|
+
readonly repoSettings: Map<string, boolean>;
|
|
139
|
+
/** Branch-protection spec recorded in memory (branch → spec). */
|
|
140
|
+
readonly branchProtections: Map<string, unknown>;
|
|
141
|
+
/** What `getRepoAdminScope()` should return (tests configure). */
|
|
142
|
+
private readonly adminScope;
|
|
143
|
+
/** Whether `setBranchProtection` should throw (tests configure). */
|
|
144
|
+
private readonly branchProtectionError;
|
|
145
|
+
constructor(options: {
|
|
146
|
+
workDir: string;
|
|
147
|
+
repo?: string;
|
|
148
|
+
ghAvailable?: boolean;
|
|
149
|
+
/** Fixture admin-scope verdict; `undefined` ⇒ unknown. */
|
|
150
|
+
adminScope?: boolean;
|
|
151
|
+
/** When set, `setBranchProtection` throws with this message (failure path). */
|
|
152
|
+
branchProtectionError?: string;
|
|
153
|
+
/**
|
|
154
|
+
* The provider id this stub claims (default `github`). Tests of the
|
|
155
|
+
* project-setup seam may override to assert the orchestrator's
|
|
156
|
+
* payload-lookup path; the default models GitHub the way the live
|
|
157
|
+
* adapter does.
|
|
158
|
+
*/
|
|
159
|
+
providerId?: string;
|
|
160
|
+
});
|
|
161
|
+
renderProjectSetup(payload: unknown): string;
|
|
162
|
+
setSecret(name: string, value: string): Promise<void>;
|
|
163
|
+
setRepoSetting(name: string, value: boolean): Promise<void>;
|
|
164
|
+
getRepoAdminScope(): Promise<boolean | undefined>;
|
|
165
|
+
setBranchProtection(branch: string, spec: unknown): Promise<void>;
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=install-ci-github.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-ci-github.d.ts","sourceRoot":"","sources":["../src/install-ci-github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,315 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The thin GitHub adapter for `install-ci` (prd `runner-in-ci`, task
|
|
3
|
+
* `install-ci-core-and-github-adapter`). It plugs into the provider-agnostic
|
|
4
|
+
* {@link CIProviderContext} seam from `install-ci-core.ts`: the core owns the
|
|
5
|
+
* wizard / config / `models.json` / `--export-config` / `--fake` / secret
|
|
6
|
+
* orchestration; THIS adapter only supplies the GitHub-specific I/O (repo
|
|
7
|
+
* detection, `gh secret set`, the optional `delete_branch_on_merge` repo
|
|
8
|
+
* setting). Because the seam is the boundary, a second CI provider could be added
|
|
9
|
+
* WITHOUT touching the core (US #7/#10).
|
|
10
|
+
*
|
|
11
|
+
* `install-ci` uses the SEAMS, never `gh` directly in the core: this adapter is
|
|
12
|
+
* the ONLY place that shells out to `gh`, and it does so behind the seam so tests
|
|
13
|
+
* stub it entirely (no network, no real `gh`, no real GitHub repo detection). The
|
|
14
|
+
* adapter NEVER `--force`s and degrades gracefully when `gh` is missing.
|
|
15
|
+
*/
|
|
16
|
+
import { run } from './git.js';
|
|
17
|
+
import { DEFAULT_GH_BIN } from './github.js';
|
|
18
|
+
/**
|
|
19
|
+
* The provider id this adapter exposes through {@link CIProviderContext.providerId}.
|
|
20
|
+
* Matches the key the orchestrator looks up in
|
|
21
|
+
* `CIConfigFile.projectSetup` (the provider-namespaced opaque pass-through).
|
|
22
|
+
*/
|
|
23
|
+
export const GITHUB_PROVIDER_ID = 'github';
|
|
24
|
+
/**
|
|
25
|
+
* Raised when the GitHub project-setup payload fails its LIGHT structural sanity
|
|
26
|
+
* check (the only check we do — see {@link renderGithubProjectSetupSteps}).
|
|
27
|
+
* Distinct error class so callers can branch on it; message names the field.
|
|
28
|
+
*/
|
|
29
|
+
export class GithubProjectSetupError extends Error {
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Validate the user's GitHub project-setup payload with a DELIBERATELY LIGHT
|
|
33
|
+
* structural check — enough to catch obvious typos (string vs. nothing; not a
|
|
34
|
+
* YAML list) without re-introducing the mini-format this escape hatch exists to
|
|
35
|
+
* avoid (ADR `install-ci-project-provisioning-native-passthrough`).
|
|
36
|
+
*
|
|
37
|
+
* Rules: the payload must be a non-empty STRING whose trimmed body parses as a
|
|
38
|
+
* top-level YAML list-of-mappings — at indent level 0, every non-blank line
|
|
39
|
+
* either (a) starts a step item with `- ` / `-` (a YAML sequence entry) or (b)
|
|
40
|
+
* is an indented continuation of the previous step. We do NOT inspect step
|
|
41
|
+
* fields (`uses`, `run`, `name`, …) and we do NOT semantically parse YAML.
|
|
42
|
+
*
|
|
43
|
+
* Returns the canonicalised (trimmed) snippet. Throws {@link GithubProjectSetupError}
|
|
44
|
+
* with a message that NAMES the field (`projectSetup.github`).
|
|
45
|
+
*/
|
|
46
|
+
export function validateGithubProjectSetupPayload(payload) {
|
|
47
|
+
if (typeof payload !== 'string') {
|
|
48
|
+
throw new GithubProjectSetupError('projectSetup.github must be a STRING of native GitHub Actions step ' +
|
|
49
|
+
'YAML (a YAML list of step mappings, e.g. `- name: ...\\n uses: ...`)');
|
|
50
|
+
}
|
|
51
|
+
const trimmed = payload.replace(/^[\r\n\s]+/, '').replace(/\s+$/, '');
|
|
52
|
+
if (trimmed.length === 0) {
|
|
53
|
+
throw new GithubProjectSetupError('projectSetup.github is empty; either supply a YAML list of step ' +
|
|
54
|
+
'mappings or omit the field entirely');
|
|
55
|
+
}
|
|
56
|
+
let sawItem = false;
|
|
57
|
+
for (const line of trimmed.split('\n')) {
|
|
58
|
+
if (line.trim() === '')
|
|
59
|
+
continue;
|
|
60
|
+
// Top-level YAML comments are valid and pass through verbatim.
|
|
61
|
+
if (/^#/.test(line))
|
|
62
|
+
continue;
|
|
63
|
+
if (/^[ \t]/.test(line)) {
|
|
64
|
+
if (!sawItem) {
|
|
65
|
+
throw new GithubProjectSetupError('projectSetup.github must be a YAML list of step mappings ' +
|
|
66
|
+
'(top-level first non-blank line must start with `- `; got an ' +
|
|
67
|
+
`indented continuation: ${JSON.stringify(line)})`);
|
|
68
|
+
}
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
if (!/^-(\s|$)/.test(line)) {
|
|
72
|
+
throw new GithubProjectSetupError('projectSetup.github must be a YAML list of step mappings ' +
|
|
73
|
+
`(unexpected top-level line: ${JSON.stringify(line)})`);
|
|
74
|
+
}
|
|
75
|
+
sawItem = true;
|
|
76
|
+
}
|
|
77
|
+
return trimmed;
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Render the user's GitHub project-setup payload to the YAML fragment the
|
|
81
|
+
* composite setup action splices in FIRST (before setup-node, dorfl-install,
|
|
82
|
+
* and AI-auth). The check is delegated to
|
|
83
|
+
* {@link validateGithubProjectSetupPayload}; this function only INDENTS the
|
|
84
|
+
* verbatim payload so it sits at the 4-space level the composite action's
|
|
85
|
+
* `steps:` body uses. The opacity contract: bytes-in == bytes-out, modulo the
|
|
86
|
+
* 4-space indent applied here — we do NOT transform, normalize, or reflow the
|
|
87
|
+
* snippet (that would re-introduce the mini-format this hook exists to avoid).
|
|
88
|
+
*/
|
|
89
|
+
export function renderGithubProjectSetupSteps(payload) {
|
|
90
|
+
const snippet = validateGithubProjectSetupPayload(payload);
|
|
91
|
+
const indented = snippet
|
|
92
|
+
.split('\n')
|
|
93
|
+
.map((line) => (line.length === 0 ? '' : ` ${line}`))
|
|
94
|
+
.join('\n');
|
|
95
|
+
return indented.endsWith('\n') ? indented : indented + '\n';
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The live GitHub provider context: detects the repo + availability via `gh` and
|
|
99
|
+
* sets secrets via `gh secret set`. This is the PRODUCTION seam implementation;
|
|
100
|
+
* tests use a STUB context instead (see {@link MemoryCIProviderContext}). It
|
|
101
|
+
* NEVER `--force`s and treats a missing `gh` as `ghAvailable: false`.
|
|
102
|
+
*/
|
|
103
|
+
export class GitHubCIContext {
|
|
104
|
+
providerId = GITHUB_PROVIDER_ID;
|
|
105
|
+
workDir;
|
|
106
|
+
repo;
|
|
107
|
+
ghAvailable;
|
|
108
|
+
ghBin;
|
|
109
|
+
env;
|
|
110
|
+
constructor(options) {
|
|
111
|
+
this.workDir = options.workDir;
|
|
112
|
+
this.ghBin = options.ghBin ?? DEFAULT_GH_BIN;
|
|
113
|
+
this.env = options.env;
|
|
114
|
+
this.ghAvailable = this.probeAvailable();
|
|
115
|
+
this.repo = options.repo ?? this.detectRepo();
|
|
116
|
+
}
|
|
117
|
+
/** Is `gh` available + authenticated? (`gh auth status` exits 0 when so.) */
|
|
118
|
+
probeAvailable() {
|
|
119
|
+
const result = this.runGh(['auth', 'status']);
|
|
120
|
+
return result !== undefined && result.status === 0;
|
|
121
|
+
}
|
|
122
|
+
/** Detect `owner/repo` via `gh repo view`, or `undefined` when unavailable. */
|
|
123
|
+
detectRepo() {
|
|
124
|
+
if (!this.ghAvailable) {
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
const result = this.runGh([
|
|
128
|
+
'repo',
|
|
129
|
+
'view',
|
|
130
|
+
'--json',
|
|
131
|
+
'nameWithOwner',
|
|
132
|
+
'--jq',
|
|
133
|
+
'.nameWithOwner',
|
|
134
|
+
]);
|
|
135
|
+
if (result === undefined || result.status !== 0) {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
const slug = result.stdout.trim();
|
|
139
|
+
return slug === '' ? undefined : slug;
|
|
140
|
+
}
|
|
141
|
+
/** Set a secret via `gh secret set <name> --body <value>`. Throws on failure. */
|
|
142
|
+
async setSecret(name, value) {
|
|
143
|
+
const args = ['secret', 'set', name, '--body', value];
|
|
144
|
+
if (this.repo) {
|
|
145
|
+
args.push('--repo', this.repo);
|
|
146
|
+
}
|
|
147
|
+
const result = this.runGh(args);
|
|
148
|
+
if (result === undefined) {
|
|
149
|
+
throw new Error(`gh not available; cannot set secret ${name}`);
|
|
150
|
+
}
|
|
151
|
+
if (result.status !== 0) {
|
|
152
|
+
throw new Error(`gh secret set ${name} failed: ${result.stderr.trim() || 'unknown error'}`);
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Set a GitHub repo-setting (the capability-F residue: `delete_branch_on_merge`)
|
|
157
|
+
* via `gh api -X PATCH repos/<repo> -f <name>=<value>`. Throws on failure. The
|
|
158
|
+
* wizard prompts before calling this — it is NEVER silently toggled.
|
|
159
|
+
*/
|
|
160
|
+
async setRepoSetting(name, value) {
|
|
161
|
+
if (!this.repo) {
|
|
162
|
+
throw new Error(`cannot set repo setting ${name}: repo unknown`);
|
|
163
|
+
}
|
|
164
|
+
const result = this.runGh([
|
|
165
|
+
'api',
|
|
166
|
+
'-X',
|
|
167
|
+
'PATCH',
|
|
168
|
+
`repos/${this.repo}`,
|
|
169
|
+
'-f',
|
|
170
|
+
`${name}=${value}`,
|
|
171
|
+
]);
|
|
172
|
+
if (result === undefined) {
|
|
173
|
+
throw new Error(`gh not available; cannot set repo setting ${name}`);
|
|
174
|
+
}
|
|
175
|
+
if (result.status !== 0) {
|
|
176
|
+
throw new Error(`gh api PATCH repos/${this.repo} ${name}=${value} failed: ` +
|
|
177
|
+
(result.stderr.trim() || 'unknown error'));
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Detect whether the configured credential has REPO-ADMIN scope by reading
|
|
182
|
+
* `permissions.admin` from `GET /repos/{owner}/{repo}` — ONE low-cost read
|
|
183
|
+
* that works uniformly for every token kind (classic/fine-grained PAT,
|
|
184
|
+
* GitHub App, or the ambient `GITHUB_TOKEN`). See the rationale recorded in
|
|
185
|
+
* `install-ci-branch-protection.ts` ("pick the cheaper of the two and
|
|
186
|
+
* record the choice"). Returns `undefined` (unknown, treated as non-admin)
|
|
187
|
+
* when `gh` is unavailable / the repo is unknown / the call fails.
|
|
188
|
+
*/
|
|
189
|
+
async getRepoAdminScope() {
|
|
190
|
+
if (!this.repo) {
|
|
191
|
+
return undefined;
|
|
192
|
+
}
|
|
193
|
+
const result = this.runGh([
|
|
194
|
+
'api',
|
|
195
|
+
`repos/${this.repo}`,
|
|
196
|
+
'--jq',
|
|
197
|
+
'.permissions.admin',
|
|
198
|
+
]);
|
|
199
|
+
if (result === undefined || result.status !== 0) {
|
|
200
|
+
return undefined;
|
|
201
|
+
}
|
|
202
|
+
const out = result.stdout.trim();
|
|
203
|
+
if (out === 'true')
|
|
204
|
+
return true;
|
|
205
|
+
if (out === 'false')
|
|
206
|
+
return false;
|
|
207
|
+
return undefined;
|
|
208
|
+
}
|
|
209
|
+
/**
|
|
210
|
+
* Configure Tier-1 branch protection via
|
|
211
|
+
* `PUT /repos/{owner}/{repo}/branches/{branch}/protection`. The `spec` body
|
|
212
|
+
* is JSON-piped on stdin (`gh api --input -`) so a complex shape (the
|
|
213
|
+
* required-status `checks` array) carries cleanly without `gh`'s scalar
|
|
214
|
+
* `-f` field syntax. Throws on a non-zero exit; caller logs + falls back.
|
|
215
|
+
*/
|
|
216
|
+
async setBranchProtection(branch, spec) {
|
|
217
|
+
if (!this.repo) {
|
|
218
|
+
throw new Error(`cannot set branch protection on ${branch}: repo unknown`);
|
|
219
|
+
}
|
|
220
|
+
const args = [
|
|
221
|
+
'api',
|
|
222
|
+
'-X',
|
|
223
|
+
'PUT',
|
|
224
|
+
'-H',
|
|
225
|
+
'Accept: application/vnd.github+json',
|
|
226
|
+
`repos/${this.repo}/branches/${branch}/protection`,
|
|
227
|
+
'--input',
|
|
228
|
+
'-',
|
|
229
|
+
];
|
|
230
|
+
const result = this.runGhWithInput(args, JSON.stringify(spec));
|
|
231
|
+
if (result === undefined) {
|
|
232
|
+
throw new Error(`gh not available; cannot set branch protection on ${branch}`);
|
|
233
|
+
}
|
|
234
|
+
if (result.status !== 0) {
|
|
235
|
+
throw new Error(`gh api PUT branches/${branch}/protection failed: ` +
|
|
236
|
+
(result.stderr.trim() || 'unknown error'));
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Render the GitHub project-setup payload to the steps fragment the
|
|
241
|
+
* composite setup action splices in FIRST. Free-function delegate so the
|
|
242
|
+
* memory stub gets identical behaviour with no I/O.
|
|
243
|
+
*/
|
|
244
|
+
renderProjectSetup(payload) {
|
|
245
|
+
return renderGithubProjectSetupSteps(payload);
|
|
246
|
+
}
|
|
247
|
+
/** Run `gh <args>` in workDir, or `undefined` when `gh` cannot be spawned. */
|
|
248
|
+
runGh(args) {
|
|
249
|
+
try {
|
|
250
|
+
return run(this.ghBin, args, this.workDir, { env: this.env });
|
|
251
|
+
}
|
|
252
|
+
catch {
|
|
253
|
+
return undefined;
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
/** Like {@link runGh} but pipes `input` on stdin (for `gh api --input -`). */
|
|
257
|
+
runGhWithInput(args, input) {
|
|
258
|
+
try {
|
|
259
|
+
return run(this.ghBin, args, this.workDir, { env: this.env, input });
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return undefined;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* An in-memory STUB provider context for tests + `--fake` mode: `setSecret`
|
|
268
|
+
* records to memory (NO real secrets store touched), `ghAvailable` is fixed
|
|
269
|
+
* (default `false`), `repo` is a fixture. This is the mechanism the task's
|
|
270
|
+
* shared-write isolation requires — no network, no real `gh`, no real GitHub, no
|
|
271
|
+
* real `~`, no system git config written.
|
|
272
|
+
*/
|
|
273
|
+
export class MemoryCIProviderContext {
|
|
274
|
+
providerId;
|
|
275
|
+
workDir;
|
|
276
|
+
repo;
|
|
277
|
+
ghAvailable;
|
|
278
|
+
/** Secrets recorded in memory (name → value). */
|
|
279
|
+
secrets = new Map();
|
|
280
|
+
/** Repo settings recorded in memory (name → value). */
|
|
281
|
+
repoSettings = new Map();
|
|
282
|
+
/** Branch-protection spec recorded in memory (branch → spec). */
|
|
283
|
+
branchProtections = new Map();
|
|
284
|
+
/** What `getRepoAdminScope()` should return (tests configure). */
|
|
285
|
+
adminScope;
|
|
286
|
+
/** Whether `setBranchProtection` should throw (tests configure). */
|
|
287
|
+
branchProtectionError;
|
|
288
|
+
constructor(options) {
|
|
289
|
+
this.workDir = options.workDir;
|
|
290
|
+
this.repo = options.repo;
|
|
291
|
+
this.ghAvailable = options.ghAvailable ?? false;
|
|
292
|
+
this.adminScope = options.adminScope;
|
|
293
|
+
this.branchProtectionError = options.branchProtectionError;
|
|
294
|
+
this.providerId = options.providerId ?? GITHUB_PROVIDER_ID;
|
|
295
|
+
}
|
|
296
|
+
renderProjectSetup(payload) {
|
|
297
|
+
return renderGithubProjectSetupSteps(payload);
|
|
298
|
+
}
|
|
299
|
+
async setSecret(name, value) {
|
|
300
|
+
this.secrets.set(name, value);
|
|
301
|
+
}
|
|
302
|
+
async setRepoSetting(name, value) {
|
|
303
|
+
this.repoSettings.set(name, value);
|
|
304
|
+
}
|
|
305
|
+
async getRepoAdminScope() {
|
|
306
|
+
return this.adminScope;
|
|
307
|
+
}
|
|
308
|
+
async setBranchProtection(branch, spec) {
|
|
309
|
+
if (this.branchProtectionError !== undefined) {
|
|
310
|
+
throw new Error(this.branchProtectionError);
|
|
311
|
+
}
|
|
312
|
+
this.branchProtections.set(branch, spec);
|
|
313
|
+
}
|
|
314
|
+
}
|
|
315
|
+
//# sourceMappingURL=install-ci-github.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-ci-github.js","sourceRoot":"","sources":["../src/install-ci-github.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `install-ci` orchestrator (prd `runner-in-ci`, task
|
|
3
|
+
* `install-ci-core-and-github-adapter`): ties the provider-agnostic core
|
|
4
|
+
* (`install-ci-core.ts`) to a CI-provider adapter (the first being GitHub,
|
|
5
|
+
* `install-ci-github.ts`) through the {@link CIProviderContext} seam. It drives
|
|
6
|
+
* three paths from ONE config shape so they cannot diverge:
|
|
7
|
+
*
|
|
8
|
+
* - the interactive WIZARD (prompts via the injectable {@link WizardPrompts}
|
|
9
|
+
* seam — production wires readline; tests inject a deterministic stub);
|
|
10
|
+
* - the non-interactive `--config <file>` path (loads the same shape, no prompts);
|
|
11
|
+
* - `--export-config` (+ `--include-secrets`) which round-trips the gathered
|
|
12
|
+
* config back to JSON.
|
|
13
|
+
*
|
|
14
|
+
* The artifacts (composite setup action + auth) are assembled by the core and
|
|
15
|
+
* written under `.fake/` in `--fake` snapshot mode (NEVER `.github/`, NO real
|
|
16
|
+
* secret), so the SAME inputs produce byte-identical output whether gathered
|
|
17
|
+
* interactively or from a config file (the equivalence the task pins).
|
|
18
|
+
*/
|
|
19
|
+
import { type CIConfigFile, type ResolvedCIConfig, type InstallSource, type CIProviderContext, type CapabilityEmitter, type SecretSetResult, DEFAULT_HARNESS } from './install-ci-core.js';
|
|
20
|
+
import { type BranchProtectionStepResult } from './install-ci-branch-protection.js';
|
|
21
|
+
/**
|
|
22
|
+
* The interactive prompt SEAM the wizard drives. Production wires readline; tests
|
|
23
|
+
* inject a deterministic stub so the wizard runs with NO TTY, NO network, and the
|
|
24
|
+
* gathered config exactly equals a config-file input (proving the equivalence).
|
|
25
|
+
*/
|
|
26
|
+
export interface WizardPrompts {
|
|
27
|
+
/** A free-text answer (with an optional default). */
|
|
28
|
+
input(message: string, opts?: {
|
|
29
|
+
default?: string;
|
|
30
|
+
}): Promise<string>;
|
|
31
|
+
/** A masked secret answer (never echoed). */
|
|
32
|
+
password(message: string): Promise<string>;
|
|
33
|
+
/** A yes/no answer (with a default). */
|
|
34
|
+
confirm(message: string, opts: {
|
|
35
|
+
default: boolean;
|
|
36
|
+
}): Promise<boolean>;
|
|
37
|
+
/** Pick one of `choices` (each `{name, value}`). */
|
|
38
|
+
select<T extends string>(message: string, choices: {
|
|
39
|
+
name: string;
|
|
40
|
+
value: T;
|
|
41
|
+
}[]): Promise<T>;
|
|
42
|
+
}
|
|
43
|
+
/** Options for {@link installCI}. */
|
|
44
|
+
export interface InstallCIOptions {
|
|
45
|
+
/** The CI-provider seam (GitHub adapter in production; a stub in tests). */
|
|
46
|
+
ctx: CIProviderContext;
|
|
47
|
+
/** Snapshot mode: write to `.fake/` (never `.github/`), set NO real secret. */
|
|
48
|
+
fake?: boolean;
|
|
49
|
+
/** Non-interactive: load the config from this JSON file (skips the wizard). */
|
|
50
|
+
configFile?: string;
|
|
51
|
+
/** Write the gathered config as JSON to this path instead of generating. */
|
|
52
|
+
exportConfig?: string;
|
|
53
|
+
/** With `--export-config`: also gather + include the secret values. */
|
|
54
|
+
includeSecrets?: boolean;
|
|
55
|
+
/**
|
|
56
|
+
* Force the CLI install source (`registry` / `workspace`), overriding the
|
|
57
|
+
* package.json auto-detection in BOTH directions. When omitted, the source
|
|
58
|
+
* comes from the config file (if it set it) else the auto-detection below.
|
|
59
|
+
*/
|
|
60
|
+
installSource?: InstallSource;
|
|
61
|
+
/**
|
|
62
|
+
* Force the advance-lifecycle matrix concurrency cap (`--max-parallel`),
|
|
63
|
+
* overriding the config file's value. When omitted, it comes from the config
|
|
64
|
+
* file (if set) else {@link DEFAULT_MAX_PARALLEL}. Must be a positive integer.
|
|
65
|
+
*/
|
|
66
|
+
maxParallel?: number;
|
|
67
|
+
/** The interactive prompt seam (required unless `configFile` is given). */
|
|
68
|
+
prompts?: WizardPrompts;
|
|
69
|
+
/** The capability emitters to emit workflows for (none in this core task). */
|
|
70
|
+
capabilities?: CapabilityEmitter[];
|
|
71
|
+
/** Sink for human-facing progress lines (default: console.log). */
|
|
72
|
+
log?: (line: string) => void;
|
|
73
|
+
}
|
|
74
|
+
/** The result of an {@link installCI} run. */
|
|
75
|
+
export interface InstallCIResult {
|
|
76
|
+
/** What the run did. */
|
|
77
|
+
outcome: 'exported' | 'generated';
|
|
78
|
+
/** The resolved config that was used. */
|
|
79
|
+
config: ResolvedCIConfig;
|
|
80
|
+
/** Repo-relative paths written (the artifacts), empty on `exported`. */
|
|
81
|
+
written: string[];
|
|
82
|
+
/** The secret-orchestration outcomes (empty on `--fake` / `exported`). */
|
|
83
|
+
secrets: SecretSetResult[];
|
|
84
|
+
/** The Tier-1 branch-protection outcome (undefined on `exported`). */
|
|
85
|
+
branchProtection?: BranchProtectionStepResult;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* Run `install-ci`. Resolves the config (config-file path or the wizard), then
|
|
89
|
+
* either exports it (`--export-config`) or generates the artifacts. In `--fake`
|
|
90
|
+
* mode it writes to `.fake/` and sets NO real secret; otherwise it orchestrates
|
|
91
|
+
* the required secrets through the provider seam. Returns a structured result.
|
|
92
|
+
*/
|
|
93
|
+
export declare function installCI(options: InstallCIOptions): Promise<InstallCIResult>;
|
|
94
|
+
/**
|
|
95
|
+
* The interactive wizard: gather the auth mode, providers/models (models-json) or
|
|
96
|
+
* the default provider/model (auth-json), and the harness, into a
|
|
97
|
+
* {@link CIConfigFile}. Drives the {@link WizardPrompts} seam, so it runs
|
|
98
|
+
* deterministically in tests and the gathered shape exactly equals a config-file
|
|
99
|
+
* input — the equivalence the snapshot test pins. Mirrors whitesmith's prompt
|
|
100
|
+
* flow (provider type → key env var → models → defaults).
|
|
101
|
+
*/
|
|
102
|
+
export declare function runWizard(prompts: WizardPrompts): Promise<CIConfigFile>;
|
|
103
|
+
/** Re-export the default harness for callers building a config programmatically. */
|
|
104
|
+
export { DEFAULT_HARNESS };
|
|
105
|
+
//# sourceMappingURL=install-ci.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"install-ci.d.ts","sourceRoot":"","sources":["../src/install-ci.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAIH,OAAO,EAGN,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,aAAa,EAClB,KAAK,iBAAiB,EACtB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,eAAe,EAOf,MAAM,sBAAsB,CAAC;AAE9B,OAAO,EAEN,KAAK,0BAA0B,EAC/B,MAAM,mCAAmC,CAAC;AAE3C;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC7B,qDAAqD;IACrD,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IACnE,6CAA6C;IAC7C,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC3C,wCAAwC;IACxC,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE;QAAC,OAAO,EAAE,OAAO,CAAA;KAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACrE,oDAAoD;IACpD,MAAM,CAAC,CAAC,SAAS,MAAM,EACtB,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,CAAC,CAAA;KAAC,EAAE,GACjC,OAAO,CAAC,CAAC,CAAC,CAAC;CACd;AAED,qCAAqC;AACrC,MAAM,WAAW,gBAAgB;IAChC,4EAA4E;IAC5E,GAAG,EAAE,iBAAiB,CAAC;IACvB,+EAA+E;IAC/E,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,+EAA+E;IAC/E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,uEAAuE;IACvE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB;;;;OAIG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B;;;;OAIG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,2EAA2E;IAC3E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,8EAA8E;IAC9E,YAAY,CAAC,EAAE,iBAAiB,EAAE,CAAC;IACnC,mEAAmE;IACnE,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC7B;AAED,8CAA8C;AAC9C,MAAM,WAAW,eAAe;IAC/B,wBAAwB;IACxB,OAAO,EAAE,UAAU,GAAG,WAAW,CAAC;IAClC,yCAAyC;IACzC,MAAM,EAAE,gBAAgB,CAAC;IACzB,wEAAwE;IACxE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,0EAA0E;IAC1E,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,sEAAsE;IACtE,gBAAgB,CAAC,EAAE,0BAA0B,CAAC;CAC9C;AAED;;;;;GAKG;AACH,wBAAsB,SAAS,CAC9B,OAAO,EAAE,gBAAgB,GACvB,OAAO,CAAC,eAAe,CAAC,CA8N1B;AAqCD;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,OAAO,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC,CAyC7E;AA6HD,oFAAoF;AACpF,OAAO,EAAC,eAAe,EAAC,CAAC"}
|