@openge/forge-release-vercel 0.1.0-rc.1 → 0.1.0-rc.2

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 (104) hide show
  1. package/README.md +43 -6
  2. package/dist/cli-arguments.js +1 -1
  3. package/dist/cli-arguments.js.map +1 -1
  4. package/dist/cli-runner.js +2 -2
  5. package/dist/cli-runner.js.map +1 -1
  6. package/dist/contracts.d.ts +58 -6
  7. package/dist/contracts.d.ts.map +1 -1
  8. package/dist/contracts.js +2 -0
  9. package/dist/contracts.js.map +1 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/node/config.d.ts.map +1 -1
  13. package/dist/node/config.js +27 -5
  14. package/dist/node/config.js.map +1 -1
  15. package/dist/node/execution.d.ts +4 -1
  16. package/dist/node/execution.d.ts.map +1 -1
  17. package/dist/node/execution.js +48 -10
  18. package/dist/node/execution.js.map +1 -1
  19. package/dist/node/git-context.d.ts +3 -0
  20. package/dist/node/git-context.d.ts.map +1 -0
  21. package/dist/node/git-context.js +9 -0
  22. package/dist/node/git-context.js.map +1 -0
  23. package/dist/node/git-stream.d.ts +5 -0
  24. package/dist/node/git-stream.d.ts.map +1 -0
  25. package/dist/node/git-stream.js +41 -0
  26. package/dist/node/git-stream.js.map +1 -0
  27. package/dist/node/git.js +1 -1
  28. package/dist/node/git.js.map +1 -1
  29. package/dist/node/lock.d.ts +7 -1
  30. package/dist/node/lock.d.ts.map +1 -1
  31. package/dist/node/lock.js +2 -2
  32. package/dist/node/lock.js.map +1 -1
  33. package/dist/node/managed-budget.d.ts +28 -0
  34. package/dist/node/managed-budget.d.ts.map +1 -0
  35. package/dist/node/managed-budget.js +131 -0
  36. package/dist/node/managed-budget.js.map +1 -0
  37. package/dist/node/managed-checkout.d.ts +5 -0
  38. package/dist/node/managed-checkout.d.ts.map +1 -0
  39. package/dist/node/managed-checkout.js +104 -0
  40. package/dist/node/managed-checkout.js.map +1 -0
  41. package/dist/node/managed-closure.d.ts +4 -0
  42. package/dist/node/managed-closure.d.ts.map +1 -0
  43. package/dist/node/managed-closure.js +10 -0
  44. package/dist/node/managed-closure.js.map +1 -0
  45. package/dist/node/managed-io.d.ts +23 -0
  46. package/dist/node/managed-io.d.ts.map +1 -0
  47. package/dist/node/managed-io.js +168 -0
  48. package/dist/node/managed-io.js.map +1 -0
  49. package/dist/node/managed-paths.d.ts +7 -0
  50. package/dist/node/managed-paths.d.ts.map +1 -0
  51. package/dist/node/managed-paths.js +191 -0
  52. package/dist/node/managed-paths.js.map +1 -0
  53. package/dist/node/managed-process.d.ts +3 -0
  54. package/dist/node/managed-process.d.ts.map +1 -0
  55. package/dist/node/managed-process.js +110 -0
  56. package/dist/node/managed-process.js.map +1 -0
  57. package/dist/node/managed-recovery-lock.d.ts +7 -0
  58. package/dist/node/managed-recovery-lock.d.ts.map +1 -0
  59. package/dist/node/managed-recovery-lock.js +61 -0
  60. package/dist/node/managed-recovery-lock.js.map +1 -0
  61. package/dist/node/managed-recovery.d.ts +13 -0
  62. package/dist/node/managed-recovery.d.ts.map +1 -0
  63. package/dist/node/managed-recovery.js +395 -0
  64. package/dist/node/managed-recovery.js.map +1 -0
  65. package/dist/node/managed-release.d.ts +3 -0
  66. package/dist/node/managed-release.d.ts.map +1 -0
  67. package/dist/node/managed-release.js +102 -0
  68. package/dist/node/managed-release.js.map +1 -0
  69. package/dist/node/managed-state.d.ts +7 -0
  70. package/dist/node/managed-state.d.ts.map +1 -0
  71. package/dist/node/managed-state.js +110 -0
  72. package/dist/node/managed-state.js.map +1 -0
  73. package/dist/node/owned-command-runner.d.ts +3 -0
  74. package/dist/node/owned-command-runner.d.ts.map +1 -0
  75. package/dist/node/owned-command-runner.js +10 -0
  76. package/dist/node/owned-command-runner.js.map +1 -0
  77. package/dist/node/process-identities.d.ts +5 -0
  78. package/dist/node/process-identities.d.ts.map +1 -0
  79. package/dist/node/process-identities.js +23 -0
  80. package/dist/node/process-identities.js.map +1 -0
  81. package/dist/node/publication.d.ts +5 -0
  82. package/dist/node/publication.d.ts.map +1 -0
  83. package/dist/node/publication.js +57 -0
  84. package/dist/node/publication.js.map +1 -0
  85. package/dist/node/release-commands.d.ts +4 -0
  86. package/dist/node/release-commands.d.ts.map +1 -0
  87. package/dist/node/release-commands.js +6 -0
  88. package/dist/node/release-commands.js.map +1 -0
  89. package/dist/node/release-context.d.ts +128 -0
  90. package/dist/node/release-context.d.ts.map +1 -0
  91. package/dist/node/release-context.js +2 -0
  92. package/dist/node/release-context.js.map +1 -0
  93. package/dist/node/release.d.ts.map +1 -1
  94. package/dist/node/release.js +20 -139
  95. package/dist/node/release.js.map +1 -1
  96. package/dist/node/source.d.ts +14 -0
  97. package/dist/node/source.d.ts.map +1 -0
  98. package/dist/node/source.js +95 -0
  99. package/dist/node/source.js.map +1 -0
  100. package/dist/node/workspace-release.d.ts +5 -0
  101. package/dist/node/workspace-release.d.ts.map +1 -0
  102. package/dist/node/workspace-release.js +122 -0
  103. package/dist/node/workspace-release.js.map +1 -0
  104. package/package.json +4 -3
package/README.md CHANGED
@@ -9,6 +9,7 @@ pnpm exec forge-vercel-release login
9
9
  pnpm exec forge-vercel-release publish
10
10
  pnpm exec forge-vercel-release status
11
11
  pnpm exec forge-vercel-release verify --sha <full-40-character-sha>
12
+ pnpm exec forge-vercel-release recover
12
13
  ```
13
14
 
14
15
  ## Configuration
@@ -17,7 +18,8 @@ The default file is `release.config.json`, relative to `--cwd` (default: the cur
17
18
 
18
19
  ```json
19
20
  {
20
- "schemaVersion": 1,
21
+ "schemaVersion": 2,
22
+ "source": { "mode": "workspace" },
21
23
  "git": {
22
24
  "remote": "origin",
23
25
  "repository": "github.com/example/site",
@@ -46,7 +48,35 @@ The default file is `release.config.json`, relative to `--cwd` (default: the cur
46
48
 
47
49
  Both command arrays contain 1–32 entries. Each entry accepts only `command`, optional `args` (up to 128 arguments), and optional `timeoutMs`. Times are positive safe integers: commands and deployment waits are capped at one hour, requests at five minutes, and `pollMs` cannot exceed `deploymentMs`. Command-specific timeouts are capped by `commandMs`. Output is bounded per stream to `maxOutputBytes` (at most 1 MiB); configured job output may be truncated, while truncated Git/API protocol output fails closed. Add `.tmp/` to the consuming repository's ignore rules.
48
50
 
49
- Acceptance commands receive `FORGE_RELEASE_SHA`, `FORGE_RELEASE_URL`, and `FORGE_RELEASE_DEPLOYMENT_ID`. They own application-specific assertions. The public build marker must be deployed from source and contain the same full SHA as the Git deployment; do not fabricate it during verification.
51
+ Prepare/check/acceptance commands receive protected `FORGE_RELEASE_COMMAND=check|publish|verify` and `FORGE_RELEASE_SHA`; acceptance also receives `FORGE_RELEASE_URL` and `FORGE_RELEASE_DEPLOYMENT_ID`. Inherited values cannot override this metadata. It describes intent, not business authorization. Consumers own business assertions and any idempotent remote preparation. The build marker must be deployed from source and contain the full SHA; do not fabricate it during verification.
52
+
53
+ ## Managed commit mode
54
+
55
+ Schema 2 requires an explicit source; schema 1 is rejected without conversion. The example above executes directly in the existing clean workspace. To use one reusable checkout, replace `source` with:
56
+
57
+ ```json
58
+ {
59
+ "mode": "managed-commit",
60
+ "slotPath": ".tmp/release-slot",
61
+ "maxBytes": 2147483648,
62
+ "minFreeBytes": 5368709120,
63
+ "sampleIntervalMs": 1000,
64
+ "install": { "packageManager": "pnpm" },
65
+ "prepare": []
66
+ }
67
+ ```
68
+
69
+ Commit ignore rules for the slot and `.tmp/forge-vercel-release/` first. `slotPath` uses relative ASCII components without `.`, `..`, `.git` or overlap with management metadata. Byte limits are positive safe integers; the example allows 2 GiB logical bytes and requires 5 GiB free. Sampling intervals are 250–5000 ms. `prepare` permits 0–32 foreground commands with the same command schema as checks. The public package does not bind a drive, project, or business permission.
70
+
71
+ Managed inputs come from one full SHA on the development branch: committed config, scripts, lockfile and exact `packageManager: "pnpm@<version>"`. Tracked files/index/config must be clean; unrelated untracked files remain untouched. Config objects cannot override managed inputs. A real independent clone fetches unpushed candidate objects from the frozen source, runs `pnpm install --frozen-lockfile`, prepare and checks, and only then permits pushes. The installed pnpm version must match; the tool does not download another pnpm version. It never copies source `.git/config`, creates worktrees, switches the source branch, resets/stashes/cleans, forces installation or relocates the shared store.
72
+
73
+ One owned slot reuses dependencies and same-SHA output; later commits require a clean fast-forward. Dirty/diverged checkouts fail without a second slot. Source symlinks, gitlinks, LFS pointers, unsupported encodings/filenames, external Git object dependencies and replaced/junction roots are rejected. Git tree listings are streamed with bounded records, rather than accepted after capture truncation. Inherited Git directory/index/object-database/namespace overrides are rejected; trusted authentication/routing still applies. An existing anchor cannot silently rebind to a different slot/config, or switch execution to workspace mode.
74
+
75
+ Logical-byte accounting includes every slot entry plus the source anchor; hardlinks count separately, internal links are not traversed, and external/unknown links fail. Each observation visits at most 500000 entries. Metadata writes reserve their temporary peak. Admission, command monitoring and stage observations cancel on limit violations or incomplete observations. Reports expose observed maxima, free-space minima and observation gaps. **Finite sampling is not an OS quota:** writes may briefly exceed a limit between observations. The tool does not modify host quotas or clean shared stores.
76
+
77
+ Commands must finish in the foreground. Managed execution requires Windows x64 Job Objects or Linux/glibc x64 subreaper/wait/pidfd support. A runner manual gate persists the real identity, scope ID and exact run/command binding, rechecks budget/ownership, then authorizes the job. Only matching OS-proven normal/empty closure permits another command or lock release. Cancellation, crash gaps, identity changes or surviving descendants remain unknown even if force cleanup proves emptiness. Historical schema-2 polling witnesses remain readable but cannot establish closure or release a lock. Old gate/result files are never executed or automatically removed.
78
+
79
+ Koffi 3.3.3 is a pinned, lazy native dependency. This repository and tarball consumers disable its install script with `allowBuilds.koffi: false`; consumers should do the same. Missing prebuilds/capabilities fail before the job, with no runtime download, compilation or fallback. Owned scopes manage trusted commands, not a security sandbox: do not delegate work to WMI/system services or other external process owners. Workspace mode retains its existing behavior.
50
80
 
51
81
  ## Commands and side effects
52
82
 
@@ -57,10 +87,13 @@ Acceptance commands receive `FORGE_RELEASE_SHA`, `FORGE_RELEASE_URL`, and `FORGE
57
87
  | `status` | Read a deployment for `--sha`, otherwise the latest publish receipt's frozen SHA, otherwise local HEAD if no receipt exists. Returns deployment state; successful querying alone does not imply READY. No checks, acceptance, or pushes. |
58
88
  | `verify` | Independently query project and deployment, require READY and correct Git source, then verify production alias, anonymous build marker, and acceptance jobs. Uses the same SHA selection as `status`. No pushes. |
59
89
  | `login` | Explicitly delegate to the pinned official Vercel CLI and let the user authorize it. No release config is required. Bounded to ten minutes. The CLI prints login instructions to stderr. |
90
+ | `recover` | Managed mode only: claim recovery, inspect owner/processes/real refs/deployment, reconcile proven facts and release the exact old lock only when closure is established. No install, checks, acceptance, pushes, deployment creation or rollback. |
91
+
92
+ Options are `--cwd DIR`, `--config FILE`, and `--sha SHA` (only `status`/`verify`). `--help` prints JSON usage. Standard output is one structured JSON report. Exit codes: `0` successful command, `1` operational failure, `2` invalid CLI arguments. SIGINT/SIGTERM cancel active work; managed locks are released only with proven closure/effects. No command automatically commits, switches branches, force-pushes, creates/uploads deployments, rolls back, or rewrites history. Vercel requests are GET through `vercel api --raw --non-interactive`, reusing the official CLI session. Only `login` initiates login.
60
93
 
61
- Options are `--cwd DIR`, `--config FILE`, and `--sha SHA` (only `status`/`verify`). `--help` prints JSON usage. Standard output is one structured JSON report. Exit codes: `0` successful command, `1` operational failure, `2` invalid CLI arguments. SIGINT/SIGTERM cancel active work and release owned locks. No command automatically commits, switches branches, force-pushes, creates/uploads deployments, rolls back, or rewrites history. The only Vercel API requests are GET requests through `vercel api --raw --non-interactive`, using the official CLI session. Missing authentication returns `AUTH_REQUIRED`; only `login` initiates login.
94
+ Same-SHA reruns use ordinary exact-SHA pushes and the server's porcelain up-to-date result, locating existing deployments without requesting another upload. Success survives later failure in `effects`. An ambiguous managed push retains `unknown` and its lock: use `recover` before retrying. With proven closure, candidate refs reconcile to `already-current`, ancestor refs to `not-current` (observed state, not “never attempted”). Later/diverged/unavailable refs retain the lock. Original publish effects/errors remain in the receipt; recovery appends observations and status checks current refs before showing reconciled facts. A crash before closure was recorded remains unknown even after processes disappear. No force-confirmation or automatic stale-lock deletion exists. Follow the quoted `recovery.nextCommand`; unresolved identity gaps require maintainer investigation of that exact run.
62
95
 
63
- Same-SHA reruns issue ordinary exact-SHA pushes and let the Git server report up-to-date refs through porcelain output; they never skip a push based on an earlier local snapshot. They find existing deployments and never request another deployment or upload. If a Git push succeeds and a later step fails, that success is retained in `effects`; an ambiguous push is `unknown` and requires inspecting remote state. The next publish re-fetches state before continuing. After the release ref is pushed, `recovery.nextCommand` recommends independent verification of the exact SHA.
96
+ In managed mode, status/verify select the latest publish receipt even after later source/config/check changes; unknown requested SHAs fail. Verify locks and uses the original exact checkout/config/scripts. Missing/untrusted checkouts fail without installing or falling back to current source. Check never overwrites publish selection. The command table's direct-workspace SHA fallback applies only to workspace mode.
64
97
 
65
98
  Project binding checks compare the configured repository and production branch against `project.link`. Deployment details are requested with `withGitRepoInfo=true`; only authoritative `gitSource` provider, repository identifier, SHA and ref establish source identity. GitHub custom-host identity additionally binds the normalized host and port from both link and source; the same repository ID on a different host is rejected. Deployment `source` metrics and caller-supplied `meta` never establish provenance; list metadata only locates detail candidates. Supported Git links are GitHub (including limited/custom-host variants), GitLab and Bitbucket. Missing authoritative identity and unsupported providers fail closed.
66
99
 
@@ -78,9 +111,9 @@ const report = await runRelease({
78
111
  if (!report.ok) console.error(report.error);
79
112
  ```
80
113
 
81
- The root exports only contracts and `releaseErrorCodes`, and is browser-safe. `./node` is explicitly `browser: null` and exports `runRelease`, `validateReleaseConfig`, and `ReleaseError`. `runRelease` accepts `command`, `cwd`, optional `config` or `configPath`, `sha`, `signal`, `transport`, and `onLoginOutput`. Config objects take precedence over files and are cloned/validated. `transport` explicitly supplies `api(path, signal)` and anonymous `buildInfo(url, signal)` operations for controlled external boundaries; implementations must honor abort signals. `onLoginOutput` receives redacted official login output. The CLI supplies this callback; Node callers must supply it to display login instructions live.
114
+ The root exports only contracts and `releaseErrorCodes`, and is browser-safe. `./node` is explicitly `browser: null` and exports `runRelease`, `validateReleaseConfig`, and `ReleaseError`. Options include `command`, `cwd`, `configPath`, workspace-only `config`, `sha`, `signal`, `transport`, and `onLoginOutput`. Config objects are cloned/validated; managed callers must use a committed file. `transport` supplies only explicit `api(path, signal)` and anonymous `buildInfo(url, signal)` boundaries and must honor abort signals. Node callers supply `onLoginOutput` to display redacted official login instructions.
82
115
 
83
- Reports include schema version, timestamps, candidate SHA, config SHA-256, bounded job steps, explicit development/release push effects, deployment identity/state, and structured errors. `.tmp/forge-vercel-release/latest-publish.json` atomically stores the latest acquired publish attempt with a fixed SHA, including partial failures. Status/verify reject a receipt with a different config digest; pass an explicit SHA to make a changed-target selection intentional. Reports are local recovery data, not signed authorization. A lock contains PID, unique ownership token and acquisition time; ownership is checked immediately before each push, before writing the receipt, and before release. An existing or stale lock is never stolen. After a crash, inspect its owner and remote/deployment state before removing that exact stale lock. Abrupt process termination cannot guarantee lock cleanup. Live login output buffers incomplete lines to redact credentials spanning process chunks, and forwarding has the same per-stream byte bound as capture; a final partial line is flushed on completion.
116
+ Reports include schema 2, timestamps, SHA/config digest, source/execution roots, run/slot identity, stage, budget/process summaries, bounded job steps, separate push effects, deployment and errors. Managed metadata lives in the slot: ownership, run/recovery locks, state and separate latest-check/latest-publish receipts. The source `.tmp/forge-vercel-release/managed.json` anchors slot/config/publish identity. A state/receipt is at most 1 MiB, anchor at most 64 KiB, and each persisted step stdout/stderr at most 2048 UTF-8 bytes with `truncated`; effects/diagnostics are never clipped. Writes reserve peak bytes and verify paths/index/HEAD/lock ownership. Foreign slots, stale locks and atomic-write remnants are not automatically removed. Workspace mode retains `.tmp/forge-vercel-release/latest-publish.json` and its config-digest/explicit-SHA selection; recover is unsupported there. Receipts are local recovery evidence, not signed authorization. Abrupt termination may retain locks. Live login output buffers partial lines for cross-chunk redaction and uses the same finite per-stream budget.
84
117
 
85
118
  ## Error codes
86
119
 
@@ -96,6 +129,10 @@ Reports include schema version, timestamps, candidate SHA, config SHA-256, bound
96
129
  | `DEPLOYMENT_SOURCE`, `DEPLOYMENT_MISSING`, `DEPLOYMENT_FAILED`, `DEPLOYMENT_TIMEOUT` | Wrong project/team/SHA/branch/source/target, no exact matching deployment, terminal failure/not READY, or bounded wait exhausted. |
97
130
  | `ALIAS_MISMATCH`, `BUILD_INFO`, `BUILD_REVISION` | Wrong production alias/project/deployment, anonymous marker unavailable/oversized/invalid, or wrong revision. |
98
131
  | `IO_FAILED` | Local file/process/runtime failure outside a more specific contract. |
132
+ | `SOURCE_CHANGED`, `SOURCE_UNSUPPORTED`, `RECEIPT_SHA_MISMATCH` | Changed/unsupported frozen source or unknown receipt SHA. |
133
+ | `SLOT_PATH`, `SLOT_FOREIGN`, `SLOT_STATE`, `SLOT_NOT_FAST_FORWARD` | Unsafe/replaced path, unowned slot, invalid management evidence or non-fast-forward reuse. |
134
+ | `BUDGET_EXCEEDED`, `BUDGET_UNKNOWN` | Admission/observed limit violation or incomplete observation. |
135
+ | `PROCESS_STATE_UNKNOWN`, `RECOVERY_REQUIRED` | Unproven process closure/effects or retained run needing inspection. |
99
136
 
100
137
  Known credential-shaped output is redacted; configured commands remain trusted executable code and must not print secrets. The official CLI is pinned to `64.7.0`; its required transitive WASM peers are explicitly pinned to preserve strict peer installation. This package reuses public Forge command-runner/process-control and artifact-integrity capabilities. No third-party implementation types appear in its public contract.
101
138
 
@@ -2,7 +2,7 @@ import { resolve } from 'node:path';
2
2
  import { ReleaseError } from './node/errors.js';
3
3
  export function parseArguments(args) {
4
4
  const command = args[0];
5
- if (!['check', 'publish', 'status', 'verify', 'login'].includes(command ?? ''))
5
+ if (!['check', 'publish', 'status', 'verify', 'recover', 'login'].includes(command ?? ''))
6
6
  throw new ReleaseError('ARGUMENT_INVALID');
7
7
  const values = new Map();
8
8
  for (let index = 1; index < args.length; index += 2) {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-arguments.js","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;IAC3H,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAChK,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACrJ,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,OAAyB,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7F,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACjG,CAAC"}
1
+ {"version":3,"file":"cli-arguments.js","sourceRoot":"","sources":["../src/cli-arguments.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,UAAU,cAAc,CAAC,IAAuB;IACpD,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;IACxB,IAAI,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACtI,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACpD,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,KAAK,GAAG,IAAI,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;YAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;QAChK,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC1B,CAAC;IACD,MAAM,GAAG,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS,IAAI,CAAC,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,QAAQ,CAAC,OAAO,IAAI,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,kBAAkB,CAAC,CAAC;IACrJ,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC1C,OAAO,EAAE,OAAO,EAAE,OAAyB,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAC7F,GAAG,CAAC,UAAU,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,CAAC;AACjG,CAAC"}
@@ -3,7 +3,7 @@ import { ReleaseError } from './node/errors.js';
3
3
  import { runRelease } from './node/release.js';
4
4
  export async function runCli(args) {
5
5
  if (args.length === 1 && ['--help', '-h'].includes(args[0] ?? '')) {
6
- process.stdout.write(`${JSON.stringify({ usage: 'forge-vercel-release <check|publish|status|verify|login> [--cwd DIR] [--config FILE] [--sha SHA]', config: 'release.config.json', sha: 'status/verify only; full 40-character SHA' })}\n`);
6
+ process.stdout.write(`${JSON.stringify({ usage: 'forge-vercel-release <check|publish|status|verify|recover|login> [--cwd DIR] [--config FILE] [--sha SHA]', config: 'release.config.json', sha: 'status/verify only; full 40-character SHA' })}\n`);
7
7
  return;
8
8
  }
9
9
  const controller = new AbortController();
@@ -17,7 +17,7 @@ export async function runCli(args) {
17
17
  process.exitCode = report.ok ? 0 : report.error?.code === 'ARGUMENT_INVALID' ? 2 : 1;
18
18
  }
19
19
  catch (error) {
20
- process.stdout.write(`${JSON.stringify({ schemaVersion: 1, ok: false, error: { code: error instanceof ReleaseError ? error.code : 'IO_FAILED', details: {} } })}\n`);
20
+ process.stdout.write(`${JSON.stringify({ schemaVersion: 2, ok: false, error: { code: error instanceof ReleaseError ? error.code : 'IO_FAILED', details: {} } })}\n`);
21
21
  process.exitCode = error instanceof ReleaseError && error.code === 'ARGUMENT_INVALID' ? 2 : 1;
22
22
  }
23
23
  finally {
@@ -1 +1 @@
1
- {"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../src/cli-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAuB;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,kGAAkG,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,2CAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5O,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9H,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrK,OAAO,CAAC,QAAQ,GAAG,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;YAAS,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;AACpG,CAAC"}
1
+ {"version":3,"file":"cli-runner.js","sourceRoot":"","sources":["../src/cli-runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAE/C,MAAM,CAAC,KAAK,UAAU,MAAM,CAAC,IAAuB;IAClD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;QAClE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,0GAA0G,EAAE,MAAM,EAAE,qBAAqB,EAAE,GAAG,EAAE,2CAA2C,EAAE,CAAC,IAAI,CAAC,CAAC;QACpP,OAAO;IACT,CAAC;IACD,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,MAAM,GAAG,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;IACxC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAAC,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAChE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAC;QACrC,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9H,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,EAAE,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,KAAK,YAAY,YAAY,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QACrK,OAAO,CAAC,QAAQ,GAAG,KAAK,YAAY,YAAY,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAChG,CAAC;YAAS,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAAC,OAAO,CAAC,cAAc,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IAAC,CAAC;AACpG,CAAC"}
@@ -1,11 +1,36 @@
1
- export type ReleaseCommand = 'check' | 'publish' | 'status' | 'verify' | 'login';
1
+ export type ReleaseCommand = 'check' | 'publish' | 'status' | 'verify' | 'recover' | 'login';
2
2
  export interface ReleaseCheck {
3
3
  readonly command: string;
4
4
  readonly args?: readonly string[];
5
5
  readonly timeoutMs?: number;
6
6
  }
7
+ export type ReleaseSource = {
8
+ readonly mode: 'workspace';
9
+ } | {
10
+ readonly mode: 'managed-commit';
11
+ readonly slotPath: string;
12
+ readonly maxBytes: number;
13
+ readonly minFreeBytes: number;
14
+ readonly sampleIntervalMs: number;
15
+ readonly install: {
16
+ readonly packageManager: 'pnpm';
17
+ };
18
+ readonly prepare: readonly ReleaseCheck[];
19
+ };
20
+ export type ManagedSourceConfig = Extract<ReleaseSource, {
21
+ mode: 'managed-commit';
22
+ }>;
23
+ export type ReleaseStage = 'source' | 'admission' | 'checkout' | 'install' | 'prepare' | 'checks' | 'push-dev' | 'push-main' | 'deployment' | 'acceptance' | 'recover' | 'complete' | 'failed';
24
+ export interface ReleaseBudget {
25
+ readonly sampleCount: number;
26
+ readonly maxObservedBytes: number;
27
+ readonly minObservedFreeBytes: number;
28
+ readonly maxObservationGapMs: number;
29
+ readonly observationsComplete: boolean;
30
+ }
7
31
  export interface ReleaseConfig {
8
- readonly schemaVersion: 1;
32
+ readonly schemaVersion: 2;
33
+ readonly source: ReleaseSource;
9
34
  readonly git: {
10
35
  readonly remote: string;
11
36
  readonly repository: string;
@@ -31,7 +56,7 @@ export interface ReleaseConfig {
31
56
  readonly maxOutputBytes: number;
32
57
  };
33
58
  }
34
- export declare const releaseErrorCodes: readonly ["ARGUMENT_INVALID", "CONFIG_INVALID", "CONFIG_READ", "GIT_FAILED", "GIT_DIRTY", "GIT_BRANCH", "GIT_REPOSITORY", "GIT_DIVERGED", "CANDIDATE_CHANGED", "CHECK_FAILED", "ACCEPTANCE_FAILED", "COMMAND_TIMEOUT", "COMMAND_FAILED", "CANCELLED", "LOCKED", "LOCK_OWNERSHIP", "AUTH_REQUIRED", "VERCEL_API", "DEPLOYMENT_SOURCE", "DEPLOYMENT_FAILED", "DEPLOYMENT_TIMEOUT", "DEPLOYMENT_MISSING", "ALIAS_MISMATCH", "BUILD_REVISION", "BUILD_INFO", "IO_FAILED"];
59
+ export declare const releaseErrorCodes: readonly ["ARGUMENT_INVALID", "CONFIG_INVALID", "CONFIG_READ", "GIT_FAILED", "GIT_DIRTY", "GIT_BRANCH", "GIT_REPOSITORY", "GIT_DIVERGED", "CANDIDATE_CHANGED", "CHECK_FAILED", "ACCEPTANCE_FAILED", "COMMAND_TIMEOUT", "COMMAND_FAILED", "CANCELLED", "LOCKED", "LOCK_OWNERSHIP", "AUTH_REQUIRED", "VERCEL_API", "DEPLOYMENT_SOURCE", "DEPLOYMENT_FAILED", "DEPLOYMENT_TIMEOUT", "DEPLOYMENT_MISSING", "ALIAS_MISMATCH", "BUILD_REVISION", "BUILD_INFO", "IO_FAILED", "SOURCE_UNSUPPORTED", "SOURCE_CHANGED", "SLOT_PATH", "SLOT_FOREIGN", "SLOT_STATE", "SLOT_NOT_FAST_FORWARD", "BUDGET_EXCEEDED", "BUDGET_UNKNOWN", "PROCESS_STATE_UNKNOWN", "RECOVERY_REQUIRED", "RECEIPT_SHA_MISMATCH"];
35
60
  export type ReleaseErrorCode = typeof releaseErrorCodes[number];
36
61
  export interface ReleaseDiagnostic {
37
62
  readonly code: ReleaseErrorCode;
@@ -53,8 +78,23 @@ export interface ReleaseStep {
53
78
  readonly truncated?: boolean;
54
79
  readonly exitCode?: number | null;
55
80
  }
81
+ export type ReleasePushEffect = 'not-attempted' | 'pushed' | 'already-current' | 'unknown' | 'not-current';
82
+ export type ReleaseRefRelation = 'candidate' | 'before' | 'after' | 'diverged' | 'unknown';
83
+ export interface ReleaseRecoveryObservation {
84
+ readonly owner: 'inactive' | 'active' | 'unknown';
85
+ readonly processes: 'closed' | 'running' | 'unknown';
86
+ readonly observedAt: string;
87
+ readonly developmentRef?: {
88
+ readonly sha: string;
89
+ readonly relation: ReleaseRefRelation;
90
+ };
91
+ readonly releaseRef?: {
92
+ readonly sha: string;
93
+ readonly relation: ReleaseRefRelation;
94
+ };
95
+ }
56
96
  export interface ReleaseReport {
57
- readonly schemaVersion: 1;
97
+ readonly schemaVersion: 2;
58
98
  readonly command: ReleaseCommand;
59
99
  readonly ok: boolean;
60
100
  readonly candidateSha?: string;
@@ -63,8 +103,8 @@ export interface ReleaseReport {
63
103
  readonly finishedAt: string;
64
104
  readonly steps: readonly ReleaseStep[];
65
105
  readonly effects: {
66
- developmentPush: 'not-attempted' | 'pushed' | 'already-current' | 'unknown';
67
- releasePush: 'not-attempted' | 'pushed' | 'already-current' | 'unknown';
106
+ developmentPush: ReleasePushEffect;
107
+ releasePush: ReleasePushEffect;
68
108
  };
69
109
  readonly deployment?: ReleaseDeployment;
70
110
  readonly error?: ReleaseDiagnostic;
@@ -72,6 +112,18 @@ export interface ReleaseReport {
72
112
  readonly candidateSha: string;
73
113
  readonly nextCommand: string;
74
114
  readonly reportPath: string;
115
+ readonly observation?: ReleaseRecoveryObservation;
116
+ };
117
+ readonly runId?: string;
118
+ readonly sourceRoot?: string;
119
+ readonly executionRoot?: string;
120
+ readonly slotId?: string;
121
+ readonly configPath?: string;
122
+ readonly stage?: ReleaseStage;
123
+ readonly budget?: ReleaseBudget;
124
+ readonly processes?: {
125
+ readonly status: 'closed' | 'unknown' | 'running';
126
+ readonly knownCount: number;
75
127
  };
76
128
  }
77
129
  export interface ReleaseTransport {
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,cAAc,GAAG,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,OAAO,CAAC;AAC7F,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;CAC7B;AACD,MAAM,MAAM,aAAa,GAAG;IAAE,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAA;CAAE,GAAG;IAC3D,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE;QAAE,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;IACtD,QAAQ,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,CAAC;CAC3C,CAAC;AACF,MAAM,MAAM,mBAAmB,GAAG,OAAO,CAAC,aAAa,EAAE;IAAE,IAAI,EAAE,gBAAgB,CAAA;CAAE,CAAC,CAAC;AACrF,MAAM,MAAM,YAAY,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,QAAQ,GAC7F,UAAU,GAAG,WAAW,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;AAC/F,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAAC;IACtC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;CACxC;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,aAAa,CAAC;IAC/B,QAAQ,CAAC,GAAG,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,iBAAiB,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC3I,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IACzG,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,UAAU,EAAE,SAAS,YAAY,EAAE,CAAC;IAC7C,QAAQ,CAAC,SAAS,EAAE;QAAE,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9E,QAAQ,CAAC,MAAM,EAAE;QAAE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAA;KAAE,CAAC;CACtK;AACD,eAAO,MAAM,iBAAiB,8pBAOpB,CAAC;AACX,MAAM,MAAM,gBAAgB,GAAG,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC;AAChE,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAA;CAAE;AAC3H,MAAM,WAAW,iBAAiB;IAAG,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAA;CAAE;AAC1J,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACnC;AACD,MAAM,MAAM,iBAAiB,GAAG,eAAe,GAAG,QAAQ,GAAG,iBAAiB,GAAG,SAAS,GAAG,aAAa,CAAC;AAC3G,MAAM,MAAM,kBAAkB,GAAG,WAAW,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,SAAS,CAAC;AAC3F,MAAM,WAAW,0BAA0B;IACzC,QAAQ,CAAC,KAAK,EAAE,UAAU,GAAG,QAAQ,GAAG,SAAS,CAAC;IAClD,QAAQ,CAAC,SAAS,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;IACrD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;IAC1F,QAAQ,CAAC,UAAU,CAAC,EAAE;QAAE,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,CAAA;KAAE,CAAC;CACvF;AACD,MAAM,WAAW,aAAa;IAC5B,QAAQ,CAAC,aAAa,EAAE,CAAC,CAAC;IAC1B,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAC/B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,KAAK,EAAE,SAAS,WAAW,EAAE,CAAC;IACvC,QAAQ,CAAC,OAAO,EAAE;QAAE,eAAe,EAAE,iBAAiB,CAAC;QAAC,WAAW,EAAE,iBAAiB,CAAA;KAAE,CAAC;IACzF,QAAQ,CAAC,UAAU,CAAC,EAAE,iBAAiB,CAAC;IACxC,QAAQ,CAAC,KAAK,CAAC,EAAE,iBAAiB,CAAC;IACnC,QAAQ,CAAC,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,0BAA0B,CAAA;KAAE,CAAC;IACpK,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,KAAK,CAAC,EAAE,YAAY,CAAC;IAC9B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,SAAS,CAAC,EAAE;QAAE,QAAQ,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;QAAC,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC;CACzG;AACD,MAAM,WAAW,gBAAgB;IAC/B,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACzD,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CAC/D;AACD,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,OAAO,EAAE,cAAc,CAAC;IACjC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,CAAC,EAAE,WAAW,CAAC;IAC9B,QAAQ,CAAC,SAAS,CAAC,EAAE,gBAAgB,CAAC;IACtC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACjD"}
package/dist/contracts.js CHANGED
@@ -3,5 +3,7 @@ export const releaseErrorCodes = [
3
3
  'GIT_DIVERGED', 'CANDIDATE_CHANGED', 'CHECK_FAILED', 'ACCEPTANCE_FAILED', 'COMMAND_TIMEOUT', 'COMMAND_FAILED',
4
4
  'CANCELLED', 'LOCKED', 'LOCK_OWNERSHIP', 'AUTH_REQUIRED', 'VERCEL_API', 'DEPLOYMENT_SOURCE', 'DEPLOYMENT_FAILED',
5
5
  'DEPLOYMENT_TIMEOUT', 'DEPLOYMENT_MISSING', 'ALIAS_MISMATCH', 'BUILD_REVISION', 'BUILD_INFO', 'IO_FAILED',
6
+ 'SOURCE_UNSUPPORTED', 'SOURCE_CHANGED', 'SLOT_PATH', 'SLOT_FOREIGN', 'SLOT_STATE', 'SLOT_NOT_FAST_FORWARD',
7
+ 'BUDGET_EXCEEDED', 'BUDGET_UNKNOWN', 'PROCESS_STATE_UNKNOWN', 'RECOVERY_REQUIRED', 'RECEIPT_SHA_MISMATCH',
6
8
  ];
7
9
  //# sourceMappingURL=contracts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAeA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB;IAC9G,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB;IAC7G,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB;IAChH,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW;CACjG,CAAC"}
1
+ {"version":3,"file":"contracts.js","sourceRoot":"","sources":["../src/contracts.ts"],"names":[],"mappings":"AAmCA,MAAM,CAAC,MAAM,iBAAiB,GAAG;IAC/B,kBAAkB,EAAE,gBAAgB,EAAE,aAAa,EAAE,YAAY,EAAE,WAAW,EAAE,YAAY,EAAE,gBAAgB;IAC9G,cAAc,EAAE,mBAAmB,EAAE,cAAc,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,gBAAgB;IAC7G,WAAW,EAAE,QAAQ,EAAE,gBAAgB,EAAE,eAAe,EAAE,YAAY,EAAE,mBAAmB,EAAE,mBAAmB;IAChH,oBAAoB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,YAAY,EAAE,WAAW;IACzG,oBAAoB,EAAE,gBAAgB,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,uBAAuB;IAC1G,iBAAiB,EAAE,gBAAgB,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,sBAAsB;CACjG,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  export { releaseErrorCodes } from './contracts.js';
2
- export type { ReleaseCommand, ReleaseCheck, ReleaseConfig, ReleaseErrorCode, ReleaseDiagnostic, ReleaseDeployment, ReleaseStep, ReleaseReport, ReleaseTransport, RunReleaseOptions, } from './contracts.js';
2
+ export type { ReleaseCommand, ReleaseCheck, ReleaseConfig, ReleaseErrorCode, ReleaseDiagnostic, ReleaseDeployment, ReleaseStep, ReleaseReport, ReleaseTransport, RunReleaseOptions, ReleaseSource, ManagedSourceConfig, ReleaseStage, ReleaseBudget, ReleasePushEffect, ReleaseRefRelation, ReleaseRecoveryObservation, } from './contracts.js';
3
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EACV,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAChF,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,GACnF,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,YAAY,EACV,cAAc,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAChF,iBAAiB,EAAE,WAAW,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAClF,aAAa,EAAE,mBAAmB,EAAE,YAAY,EAAE,aAAa,EAC/D,iBAAiB,EAAE,kBAAkB,EAAE,0BAA0B,GAClE,MAAM,gBAAgB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAgCnE,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAiCnE"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgB,aAAa,EAAiB,MAAM,iBAAiB,CAAC;AAiDlF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,aAAa,CAiCnE"}
@@ -18,8 +18,8 @@ function integer(value, maximum, field) {
18
18
  invalid(field);
19
19
  return value;
20
20
  }
21
- function commands(value, field) {
22
- if (!Array.isArray(value) || value.length === 0 || value.length > 32)
21
+ function commands(value, field, empty = false) {
22
+ if (!Array.isArray(value) || (!empty && value.length === 0) || value.length > 32)
23
23
  invalid(field);
24
24
  return value.map((item) => {
25
25
  const itemRecord = record(item);
@@ -35,9 +35,31 @@ function commands(value, field) {
35
35
  ...(itemRecord.timeoutMs === undefined ? {} : { timeoutMs: integer(itemRecord.timeoutMs, 3_600_000, `${field}.timeoutMs`) }) };
36
36
  });
37
37
  }
38
+ function source(value) {
39
+ if (record(value).mode === 'workspace') {
40
+ object(value, ['mode'], 'source');
41
+ return { mode: 'workspace' };
42
+ }
43
+ const entry = object(value, ['mode', 'slotPath', 'maxBytes', 'minFreeBytes', 'sampleIntervalMs', 'install', 'prepare'], 'source');
44
+ if (entry.mode !== 'managed-commit')
45
+ invalid('source.mode');
46
+ const slotPath = text(entry.slotPath, 'source.slotPath', /^[a-zA-Z0-9_.-]+(?:\/[a-zA-Z0-9_.-]+)*$/u);
47
+ if (slotPath.split('/').some(part => ['.', '..', '.git'].includes(part.toLowerCase())))
48
+ invalid('source.slotPath');
49
+ const install = object(entry.install, ['packageManager'], 'source.install');
50
+ if (install.packageManager !== 'pnpm')
51
+ invalid('source.install.packageManager');
52
+ const sampleIntervalMs = integer(entry.sampleIntervalMs, 5000, 'source.sampleIntervalMs');
53
+ if (sampleIntervalMs < 250)
54
+ invalid('source.sampleIntervalMs');
55
+ return { mode: 'managed-commit', slotPath,
56
+ maxBytes: integer(entry.maxBytes, Number.MAX_SAFE_INTEGER, 'source.maxBytes'),
57
+ minFreeBytes: integer(entry.minFreeBytes, Number.MAX_SAFE_INTEGER, 'source.minFreeBytes'),
58
+ sampleIntervalMs, install: { packageManager: 'pnpm' }, prepare: commands(entry.prepare, 'source.prepare', true) };
59
+ }
38
60
  export function validateReleaseConfig(value) {
39
- const root = object(value, ['schemaVersion', 'git', 'vercel', 'checks', 'acceptance', 'buildInfo', 'limits'], 'config');
40
- if (root.schemaVersion !== 1)
61
+ const root = object(value, ['schemaVersion', 'source', 'git', 'vercel', 'checks', 'acceptance', 'buildInfo', 'limits'], 'config');
62
+ if (root.schemaVersion !== 2)
41
63
  invalid('schemaVersion');
42
64
  const git = object(root.git, ['remote', 'repository', 'developmentBranch', 'releaseBranch'], 'git');
43
65
  const branch = (value, field) => {
@@ -69,7 +91,7 @@ export function validateReleaseConfig(value) {
69
91
  invalid('buildInfo.path');
70
92
  const limits = object(root.limits, ['commandMs', 'deploymentMs', 'pollMs', 'requestMs', 'maxOutputBytes'], 'limits');
71
93
  const deploymentMs = integer(limits.deploymentMs, 3_600_000, 'limits.deploymentMs');
72
- return { schemaVersion: 1,
94
+ return { schemaVersion: 2, source: source(root.source),
73
95
  git: { remote: text(git.remote, 'git.remote', /^[a-zA-Z0-9][a-zA-Z0-9._-]*$/u),
74
96
  repository: text(git.repository, 'git.repository'), developmentBranch, releaseBranch },
75
97
  vercel: { teamId: text(vercel.teamId, 'vercel.teamId', /^team_[a-zA-Z0-9]+$/u),
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/node/config.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEnD,SAAS,OAAO,CAAC,KAAa,IAAW,MAAM,IAAI,YAAY,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;AAC/F,SAAS,MAAM,CAAC,KAAc,EAAE,IAAuB,EAAE,KAAa;IACpE,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7B,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;WAClE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAChH,OAAO,MAAM,CAAC;AAChB,CAAC;AACD,SAAS,IAAI,CAAC,KAAc,EAAE,KAAa,EAAE,OAAO,GAAG,IAAI;IACzD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,IAAI;WACrE,CAAC,GAAG,KAAK,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC5H,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,OAAO,CAAC,KAAc,EAAE,OAAe,EAAE,KAAa;IAC7D,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,IAAI,CAAC,IAAI,KAAK,GAAG,OAAO;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC;AACf,CAAC;AACD,SAAS,QAAQ,CAAC,KAAc,EAAE,KAAa,EAAE,KAAK,GAAG,KAAK;IAC5D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,EAAE;QAAE,OAAO,CAAC,KAAK,CAAC,CAAC;IACjG,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAa,EAAE,EAAE;QACjC,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAChC,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QACzG,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,KAAK,UAAU,CAAC,CAAC;QAC7D,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,IAAI,CAAC,OAAO,CAAC;YAAE,OAAO,CAAC,GAAG,KAAK,UAAU,CAAC,CAAC;QAC7F,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,UAAU,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG;eAChG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,GAAY,EAAE,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,MAAM,GAAG,IAAI,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,GAAG,KAAK,OAAO,CAAC,CAAC;QAC7J,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,UAAU,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,GAAG,UAAU,CAAC,IAAgB,CAAC,EAAE,CAAC;YACpG,GAAG,CAAC,UAAU,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,UAAU,CAAC,SAAS,EAAE,SAAS,EAAE,GAAG,KAAK,YAAY,CAAC,EAAE,CAAC,EAAE,CAAC;IACnI,CAAC,CAAC,CAAC;AACL,CAAC;AACD,SAAS,MAAM,CAAC,KAAc;IAC5B,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;QACvC,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,QAAQ,CAAC,CAAC;QAAC,OAAO,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC;IAClE,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,cAAc,EAAE,kBAAkB,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClI,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB;QAAE,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,iBAAiB,EAAE,0CAA0C,CAAC,CAAC;IACrG,IAAI,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,MAAM,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;QAAE,OAAO,CAAC,iBAAiB,CAAC,CAAC;IACnH,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,gBAAgB,CAAC,EAAE,gBAAgB,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,cAAc,KAAK,MAAM;QAAE,OAAO,CAAC,+BAA+B,CAAC,CAAC;IAChF,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,gBAAgB,EAAE,IAAI,EAAE,yBAAyB,CAAC,CAAC;IAC1F,IAAI,gBAAgB,GAAG,GAAG;QAAE,OAAO,CAAC,yBAAyB,CAAC,CAAC;IAC/D,OAAO,EAAE,IAAI,EAAE,gBAAgB,EAAE,QAAQ;QACvC,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,gBAAgB,EAAE,iBAAiB,CAAC;QAC7E,YAAY,EAAE,OAAO,CAAC,KAAK,CAAC,YAAY,EAAE,MAAM,CAAC,gBAAgB,EAAE,qBAAqB,CAAC;QACzF,gBAAgB,EAAE,OAAO,EAAE,EAAE,cAAc,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,CAAC;AACtH,CAAC;AACD,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,eAAe,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,CAAC;IAClI,IAAI,IAAI,CAAC,aAAa,KAAK,CAAC;QAAE,OAAO,CAAC,eAAe,CAAC,CAAC;IACvD,MAAM,GAAG,GAAG,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,YAAY,EAAE,mBAAmB,EAAE,eAAe,CAAC,EAAE,KAAK,CAAC,CAAC;IACpG,MAAM,MAAM,GAAG,CAAC,KAAc,EAAE,KAAa,EAAE,EAAE;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,gCAAgC,CAAC,CAAC;QACpE,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC;eAC9F,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,CAAC;QAC9H,OAAO,MAAM,CAAC;IAChB,CAAC,CAAC;IACF,MAAM,iBAAiB,GAAG,MAAM,CAAC,GAAG,CAAC,iBAAiB,EAAE,uBAAuB,CAAC,CAAC;IACjF,MAAM,aAAa,GAAG,MAAM,CAAC,GAAG,CAAC,aAAa,EAAE,mBAAmB,CAAC,CAAC;IACrE,IAAI,iBAAiB,KAAK,aAAa;QAAE,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACtE,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,WAAW,EAAE,eAAe,CAAC,EAAE,QAAQ,CAAC,CAAC;IACvF,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,sBAAsB,CAAC,CAAC;IACzE,IAAI,GAAQ,CAAC;IAAC,IAAI,CAAC;QAAC,GAAG,GAAG,IAAI,GAAG,CAAC,aAAa,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAAC,CAAC;IACrG,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,QAAQ,IAAI,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,IAAI;WAC9F,GAAG,CAAC,QAAQ,KAAK,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,MAAM;QAAE,OAAO,CAAC,sBAAsB,CAAC,CAAC;IAC/G,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,WAAW,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,EAAE,uBAAuB,CAAC,CAAC;IACzE,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC;IACvF,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,CAAC,EAAE,QAAQ,CAAC,CAAC;IACrH,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACpF,OAAO,EAAE,aAAa,EAAE,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;QACpD,GAAG,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,YAAY,EAAE,+BAA+B,CAAC;YAC5E,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,gBAAgB,CAAC,EAAE,iBAAiB,EAAE,aAAa,EAAE;QACxF,MAAM,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,EAAE,sBAAsB,CAAC;YAC5E,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,EAAE,qBAAqB,CAAC,EAAE,aAAa,EAAE;QAC/F,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,EAAE,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,YAAY,CAAC;QAC5F,SAAS,EAAE,EAAE,IAAI,EAAE,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,yBAAyB,EAAE,0BAA0B,CAAC,EAAE;QACpH,MAAM,EAAE,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,SAAS,EAAE,kBAAkB,CAAC,EAAE,YAAY;YACzF,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,EAAE,eAAe,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,MAAM,CAAC,SAAS,EAAE,OAAO,EAAE,kBAAkB,CAAC;YAChI,cAAc,EAAE,OAAO,CAAC,MAAM,CAAC,cAAc,EAAE,SAAS,EAAE,uBAAuB,CAAC,EAAE,EAAE,CAAC;AAC7F,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ReleaseCheck, ReleaseConfig, ReleaseErrorCode, ReleaseStep } from '../contracts.js';
2
+ import type { ExecutionLifecycle } from './release-context.js';
2
3
  export declare function resolveInvocation(command: string, args: readonly string[]): {
3
4
  command: string;
4
5
  args: readonly string[];
@@ -12,9 +13,11 @@ export declare class Execution {
12
13
  readonly config: Pick<ReleaseConfig, 'limits'>;
13
14
  readonly signal: AbortSignal | undefined;
14
15
  readonly steps: ReleaseStep[];
16
+ private readonly lifecycle?;
15
17
  private readonly runner;
16
- constructor(cwd: string, config: Pick<ReleaseConfig, 'limits'>, signal: AbortSignal | undefined, steps: ReleaseStep[]);
18
+ constructor(cwd: string, config: Pick<ReleaseConfig, 'limits'>, signal: AbortSignal | undefined, steps: ReleaseStep[], lifecycle?: ExecutionLifecycle | undefined);
17
19
  run(name: string, check: ReleaseCheck, errorCode: ReleaseErrorCode, values?: Readonly<Record<string, string>>, signal?: AbortSignal | undefined, captureStep?: boolean, onOutput?: (text: string) => void): Promise<string>;
18
20
  git(args: readonly string[]): Promise<string>;
21
+ streamGit(args: readonly string[], onChunk: (chunk: Uint8Array) => void, allowedExitCodes?: readonly number[]): Promise<void>;
19
22
  }
20
23
  //# sourceMappingURL=execution.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/node/execution.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAIlG,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAmBxH;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAGtG;AACD,qBAAa,SAAS;IAQR,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS;IACxH,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE;IAR/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAMpB;gBACkB,GAAG,EAAE,MAAM,EAAW,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAW,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/G,KAAK,EAAE,WAAW,EAAE;IACzB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACjH,MAAM,0BAAc,EAAE,WAAW,UAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IA8B/F,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;CAG9C"}
1
+ {"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/node/execution.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAGlG,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/D,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAmBxH;AACD,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAGtG;AACD,qBAAa,SAAS;IAER,QAAQ,CAAC,GAAG,EAAE,MAAM;IAAE,QAAQ,CAAC,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC;IAAE,QAAQ,CAAC,MAAM,EAAE,WAAW,GAAG,SAAS;IACxH,QAAQ,CAAC,KAAK,EAAE,WAAW,EAAE;IAAE,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAC;IAF5D,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA6C;gBAC/C,GAAG,EAAE,MAAM,EAAW,MAAM,EAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAC,EAAW,MAAM,EAAE,WAAW,GAAG,SAAS,EAC/G,KAAK,EAAE,WAAW,EAAE,EAAmB,SAAS,CAAC,EAAE,kBAAkB,YAAA;IAgB1E,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,EACjH,MAAM,0BAAc,EAAE,WAAW,UAAO,EAAE,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;IA+B/F,GAAG,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAGvC,SAAS,CAAC,IAAI,EAAE,SAAS,MAAM,EAAE,EAAE,OAAO,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,EAAE,gBAAgB,GAAE,SAAS,MAAM,EAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAmBzI"}
@@ -2,9 +2,10 @@ import { existsSync, readFileSync } from 'node:fs';
2
2
  import { createRequire } from 'node:module';
3
3
  import { delimiter, dirname, resolve, win32 } from 'node:path';
4
4
  import { createNodeCommandRunner } from '@openge/forge-command-runner/node';
5
- import { createPosixProcessControl, createWindowsProcessControl } from '@openge/forge-process-control-node';
5
+ import { createPosixProcessControl, createPosixProcessIdentityReader, createWindowsProcessControl, createWindowsProcessIdentityReader } from '@openge/forge-process-control-node';
6
6
  import { assertActive, redact, ReleaseError } from './errors.js';
7
7
  import { LiveOutput } from './live-output.js';
8
+ import { managedOwnedScopeProvider } from './owned-command-runner.js';
8
9
  export function resolveInvocation(command, args) {
9
10
  if (command === 'node')
10
11
  return { command: process.execPath, args };
@@ -40,24 +41,35 @@ export class Execution {
40
41
  config;
41
42
  signal;
42
43
  steps;
43
- runner = createNodeCommandRunner({
44
- platform: process.platform === 'win32' ? 'win32' : 'posix',
45
- processControl: process.platform === 'win32' ? createWindowsProcessControl({ listenerBackend: 'netstat' })
46
- : createPosixProcessControl({ listenerBackend: 'lsof' }),
47
- terminationPolicy: { mode: 'force' }, terminationTimeoutMs: 5000,
48
- identityAcquisition: { timeoutMs: 2000, pollIntervalMs: 20 },
49
- });
50
- constructor(cwd, config, signal, steps) {
44
+ lifecycle;
45
+ runner;
46
+ constructor(cwd, config, signal, steps, lifecycle) {
51
47
  this.cwd = cwd;
52
48
  this.config = config;
53
49
  this.signal = signal;
54
50
  this.steps = steps;
51
+ this.lifecycle = lifecycle;
52
+ const control = process.platform === 'win32' ? createWindowsProcessControl({ listenerBackend: 'netstat' }) : createPosixProcessControl({ listenerBackend: 'lsof' });
53
+ const reader = process.platform === 'win32' ? createWindowsProcessIdentityReader() : createPosixProcessIdentityReader();
54
+ this.runner = createNodeCommandRunner({ platform: process.platform === 'win32' ? 'win32' : 'posix',
55
+ ...(lifecycle ? { ownedScopeProvider: managedOwnedScopeProvider() } : {}),
56
+ processControl: { ...control, listProcesses: async (request) => {
57
+ const pid = request?.pids?.length === 1 ? request.pids[0] : undefined;
58
+ if (pid !== undefined) {
59
+ const observed = await reader.readIdentity({ pid, ...(request?.signal ? { signal: request.signal } : {}) });
60
+ return observed.status === 'FOUND' ? [observed.identity] : [];
61
+ }
62
+ return control.listProcesses(request);
63
+ } },
64
+ terminationPolicy: { mode: 'force' }, terminationTimeoutMs: 5000,
65
+ identityAcquisition: { timeoutMs: lifecycle ? Math.min(10_000, config.limits.commandMs) : 2000, pollIntervalMs: 20 } });
55
66
  }
56
67
  async run(name, check, errorCode, values, signal = this.signal, captureStep = true, onOutput) {
57
68
  assertActive(signal);
58
69
  const invocation = resolveInvocation(check.command, check.args ?? []);
59
70
  const live = onOutput === undefined ? undefined : new LiveOutput(this.config.limits.maxOutputBytes, onOutput);
60
- const result = await this.runner.run({ ...invocation, cwd: this.cwd,
71
+ const execute = this.lifecycle ? this.lifecycle.execute.bind(this.lifecycle, this.runner, name) : this.runner.run.bind(this.runner);
72
+ const result = await execute({ ...invocation, cwd: this.cwd,
61
73
  environment: { mode: 'inherit', values: { GIT_TERMINAL_PROMPT: '0', VERCEL_TELEMETRY_DISABLED: '1', ...values } },
62
74
  output: { mode: 'capture', maxBytesPerStream: this.config.limits.maxOutputBytes, overflow: 'truncate' },
63
75
  timeoutMs: Math.min(check.timeoutMs ?? this.config.limits.commandMs, this.config.limits.commandMs),
@@ -90,5 +102,31 @@ export class Execution {
90
102
  git(args) {
91
103
  return this.run('git', { command: 'git', args }, 'GIT_FAILED', undefined, this.signal, false);
92
104
  }
105
+ async streamGit(args, onChunk, allowedExitCodes = [0]) {
106
+ assertActive(this.signal);
107
+ const controller = new AbortController();
108
+ const signal = this.signal ? AbortSignal.any([this.signal, controller.signal]) : controller.signal;
109
+ let failure;
110
+ const execute = this.lifecycle ? this.lifecycle.execute.bind(this.lifecycle, this.runner, 'git-stream') : this.runner.run.bind(this.runner);
111
+ const result = await execute({ command: 'git', args, cwd: this.cwd,
112
+ environment: { mode: 'inherit', values: { GIT_TERMINAL_PROMPT: '0' } }, output: { mode: 'events' },
113
+ timeoutMs: this.config.limits.commandMs, signal }, event => {
114
+ if (event.type === 'stdout' && failure === undefined) {
115
+ try {
116
+ onChunk(event.chunk);
117
+ }
118
+ catch (error) {
119
+ failure = error;
120
+ controller.abort();
121
+ }
122
+ }
123
+ });
124
+ if (failure !== undefined)
125
+ throw failure;
126
+ assertActive(this.signal);
127
+ if (result.exitCode === null || !allowedExitCodes.includes(result.exitCode) || result.terminationReason !== 'exit') {
128
+ throw new ReleaseError('GIT_FAILED', { reason: 'STREAM_FAILED', exitCode: result.exitCode, termination: result.terminationReason });
129
+ }
130
+ }
93
131
  }
94
132
  //# sourceMappingURL=execution.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/node/execution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/node/execution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const isolatedGitEnvironment: () => Readonly<Record<string, undefined>>;
2
+ export declare function assertNoGitContext(): void;
3
+ //# sourceMappingURL=git-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/node/git-context.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,sBAAsB,QAAO,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAA6D,CAAC;AAC1I,wBAAgB,kBAAkB,IAAI,IAAI,CAGzC"}
@@ -0,0 +1,9 @@
1
+ import { ReleaseError } from './errors.js';
2
+ const names = ['GIT_DIR', 'GIT_WORK_TREE', 'GIT_COMMON_DIR', 'GIT_INDEX_FILE', 'GIT_OBJECT_DIRECTORY', 'GIT_ALTERNATE_OBJECT_DIRECTORIES', 'GIT_SHALLOW_FILE', 'GIT_NAMESPACE'];
3
+ export const isolatedGitEnvironment = () => Object.fromEntries(names.map(name => [name, undefined]));
4
+ export function assertNoGitContext() {
5
+ const active = Object.keys(process.env).filter(key => names.some(name => (process.platform === 'win32' ? key.toUpperCase() : key) === name) && process.env[key]);
6
+ if (active.length > 0)
7
+ throw new ReleaseError('SOURCE_UNSUPPORTED', { reason: 'GIT_CONTEXT_ENV', names: active.map(name => name.toUpperCase()) });
8
+ }
9
+ //# sourceMappingURL=git-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context.js","sourceRoot":"","sources":["../../src/node/git-context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,KAAK,GAAG,CAAC,SAAS,EAAE,eAAe,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,kCAAkC,EAAE,kBAAkB,EAAE,eAAe,CAAU,CAAC;AACzL,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAwC,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC;AAC1I,MAAM,UAAU,kBAAkB;IAChC,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IACjK,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AACpJ,CAAC"}