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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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 +5 -4
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-state.d.ts","sourceRoot":"","sources":["../../src/node/managed-state.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAiB,YAAY,EAAE,cAAc,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAgBvI,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,cAAc,CASxG;AAKD,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,GAAG,YAAY,CAmCpG;AAWD,wBAAgB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,aAAa,CAIpE;AACD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,GAAG,iBAAiB,CAYhJ"}
@@ -0,0 +1,110 @@
1
+ import { record, ReleaseError } from './errors.js';
2
+ import { atomicJson, readBoundedJson } from './managed-io.js';
3
+ import { validateReleaseConfig } from './config.js';
4
+ import { resolve } from 'node:path';
5
+ import { hasVerifiedManagedClosure } from './managed-closure.js';
6
+ const uuid = /^[a-f0-9-]{36}$/u, sha = /^[a-f0-9]{40}$/u;
7
+ function boundSource(value, source) {
8
+ const item = record(value);
9
+ if (item.root !== source.root || item.configPath !== source.configPath || typeof item.sha !== 'string' || !sha.test(item.sha)
10
+ || typeof item.configBlobOid !== 'string' || !sha.test(item.configBlobOid) || typeof item.configSha256 !== 'string' || !/^[a-f0-9]{64}$/u.test(item.configSha256)
11
+ || typeof item.fetchUrl !== 'string')
12
+ throw new ReleaseError('SLOT_STATE', { reason: 'SOURCE_IDENTITY' });
13
+ validateReleaseConfig(item.config);
14
+ }
15
+ export function parseManagedReceipt(value, source, slotId) {
16
+ const item = record(value), report = record(item.report);
17
+ if (item.schemaVersion !== 2 || item.slotId !== slotId || report.schemaVersion !== 2 || typeof report.ok !== 'boolean'
18
+ || !['publish', 'check', 'verify'].includes(String(report.command)) || !Array.isArray(report.steps)
19
+ || typeof report.startedAt !== 'string' || typeof report.finishedAt !== 'string')
20
+ throw new ReleaseError('SLOT_STATE', { reason: 'RECEIPT' });
21
+ boundSource(item.source, source);
22
+ if (report.candidateSha !== item.source.sha || report.configSha256 !== item.source.configSha256)
23
+ throw new ReleaseError('SLOT_STATE', { reason: 'RECEIPT_IDENTITY' });
24
+ validateEffects(report.effects);
25
+ return value;
26
+ }
27
+ function validateEffects(value) {
28
+ const item = record(value);
29
+ if (![item.developmentPush, item.releasePush].every(effect => ['not-attempted', 'pushed', 'already-current', 'unknown', 'not-current'].includes(String(effect))))
30
+ throw new ReleaseError('SLOT_STATE', { reason: 'EFFECTS' });
31
+ }
32
+ export function parseManagedState(value, source, slotId) {
33
+ const item = record(value), owner = record(item.coordinator);
34
+ if (item.schemaVersion !== 2 || item.slotId !== slotId || typeof item.runId !== 'string' || !uuid.test(item.runId)
35
+ || !['check', 'publish', 'verify'].includes(String(item.command)) || !['running', 'closed', 'unknown'].includes(String(item.status))
36
+ || !Number.isSafeInteger(owner.pid) || typeof owner.startToken !== 'string' || !Array.isArray(item.processes))
37
+ throw new ReleaseError('SLOT_STATE', { reason: 'STATE' });
38
+ boundSource(item.source, source);
39
+ validateEffects(item.effects);
40
+ for (const value of item.processes) {
41
+ const command = record(value);
42
+ if (typeof command.id !== 'string' || typeof command.name !== 'string' || !['intent', 'spawned', 'identified', 'closed', 'unknown'].includes(String(command.status))
43
+ || typeof command.observationComplete !== 'boolean' || !Array.isArray(command.descendants))
44
+ throw new ReleaseError('SLOT_STATE', { reason: 'PROCESS' });
45
+ for (const value of [command.identity, ...command.descendants].filter(value => value !== undefined)) {
46
+ const identity = record(value);
47
+ if (!Number.isSafeInteger(identity.pid) || Number(identity.pid) <= 0 || typeof identity.startToken !== 'string' || identity.startToken === '')
48
+ throw new ReleaseError('SLOT_STATE', { reason: 'PROCESS_IDENTITY' });
49
+ }
50
+ if (command.scope !== undefined) {
51
+ const scope = record(command.scope), prefix = `${String(item.runId)}:${command.id}:`;
52
+ if (typeof scope.scopeId !== 'string' || !uuid.test(scope.scopeId) || typeof scope.binding !== 'string' || !scope.binding.startsWith(prefix) || !uuid.test(scope.binding.slice(prefix.length)))
53
+ throw new ReleaseError('SLOT_STATE', { reason: 'SCOPE_BINDING' });
54
+ }
55
+ const witness = record(command.closure), owned = witness.ownedScope === undefined ? undefined : record(witness.ownedScope);
56
+ if (owned) {
57
+ const root = record(owned.rootIdentity);
58
+ if (typeof owned.scopeId !== 'string' || !uuid.test(owned.scopeId) || typeof owned.binding !== 'string' || !/^[\x21-\x7e]{1,256}$/u.test(owned.binding)
59
+ || typeof owned.observedAt !== 'string' || !Number.isFinite(Date.parse(owned.observedAt)) || !['closed', 'unknown'].includes(String(owned.status))
60
+ || (owned.empty !== undefined && typeof owned.empty !== 'boolean')
61
+ || (owned.rootIdentity !== undefined && (!Number.isSafeInteger(root.pid) || Number(root.pid) <= 0 || typeof root.startToken !== 'string' || root.startToken === ''))
62
+ || (owned.status === 'closed' ? owned.reason !== 'normal' || owned.empty !== true || !owned.rootIdentity : !['terminated', 'descendants-remained', 'provider-failed', 'owner-lost'].includes(String(owned.reason))))
63
+ throw new ReleaseError('SLOT_STATE', { reason: 'SCOPE_WITNESS' });
64
+ }
65
+ if (command.status === 'closed') {
66
+ const closure = record(command.closure);
67
+ if (!command.identity || command.observationComplete !== true || closure.termination !== 'exit' || typeof closure.observedAt !== 'string'
68
+ || !Number.isFinite(Date.parse(closure.observedAt)) || (closure.exitCode !== null && !Number.isSafeInteger(closure.exitCode)))
69
+ throw new ReleaseError('SLOT_STATE', { reason: 'CLOSURE_WITNESS' });
70
+ if ((command.scope !== undefined || owned !== undefined) && !hasVerifiedManagedClosure(value))
71
+ throw new ReleaseError('SLOT_STATE', { reason: 'SCOPE_CLOSURE_BINDING' });
72
+ }
73
+ }
74
+ return value;
75
+ }
76
+ function clip(value) {
77
+ let bytes = Buffer.from(value);
78
+ if (bytes.length <= 2048)
79
+ return value;
80
+ bytes = bytes.subarray(0, 2048);
81
+ const decoder = new TextDecoder('utf-8', { fatal: true });
82
+ for (let end = bytes.length; end >= bytes.length - 3; end--) {
83
+ try {
84
+ return decoder.decode(bytes.subarray(0, end));
85
+ }
86
+ catch { /* 只去掉不完整的末尾编码单元。 */ }
87
+ }
88
+ throw new ReleaseError('SLOT_STATE');
89
+ }
90
+ export function summarizeReport(report) {
91
+ return { ...report, steps: report.steps.map(step => ({ ...step,
92
+ ...(step.stdout === undefined ? {} : { stdout: clip(step.stdout) }), ...(step.stderr === undefined ? {} : { stderr: clip(step.stderr) }),
93
+ ...((step.stdout !== undefined && Buffer.byteLength(step.stdout) > 2048) || (step.stderr !== undefined && Buffer.byteLength(step.stderr) > 2048) ? { truncated: true } : {}) })) };
94
+ }
95
+ export function createManagedStateStore(paths, source, slotId, guard) {
96
+ if (source.config.source.mode !== 'managed-commit')
97
+ throw new ReleaseError('SOURCE_UNSUPPORTED');
98
+ const config = source.config.source;
99
+ const write = (path, value, limit = 1_048_576) => atomicJson(path, value, limit, paths, guard, config.maxBytes, config.minFreeBytes);
100
+ const receiptPath = (kind) => resolve(paths.slotRoot, `latest-${kind}.json`);
101
+ return {
102
+ read: async () => { await guard(); const value = await readBoundedJson(paths.statePath); return value === undefined ? undefined : parseManagedState(value, source, slotId); },
103
+ writeState: async (state) => { parseManagedState(state, source, slotId); await write(paths.statePath, state); },
104
+ readReceipt: async (kind) => { await guard(); const value = await readBoundedJson(receiptPath(kind)); return value === undefined ? undefined : parseManagedReceipt(value, source, slotId); },
105
+ writeReceipt: async (kind, receipt) => { parseManagedReceipt(receipt, source, slotId); await write(receiptPath(kind), { ...receipt, report: summarizeReport(receipt.report) }); },
106
+ writeAnchor: async (anchor) => { if (anchor.slotId !== slotId || anchor.sourceRoot !== source.root || anchor.configPath !== source.configPath)
107
+ throw new ReleaseError('SLOT_STATE'); await write(paths.anchorPath, anchor, 65_536); },
108
+ };
109
+ }
110
+ //# sourceMappingURL=managed-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"managed-state.js","sourceRoot":"","sources":["../../src/node/managed-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { OwnedProcessScopeProvider } from '@openge/forge-process-control';
2
+ export declare function managedOwnedScopeProvider(): OwnedProcessScopeProvider;
3
+ //# sourceMappingURL=owned-command-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-command-runner.d.ts","sourceRoot":"","sources":["../../src/node/owned-command-runner.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,+BAA+B,CAAC;AAI/E,wBAAgB,yBAAyB,IAAI,yBAAyB,CAIrE"}
@@ -0,0 +1,10 @@
1
+ import { createLinuxOwnedProcessScopeProvider, createWindowsOwnedProcessScopeProvider } from '@openge/forge-process-control-node';
2
+ import { ReleaseError } from './errors.js';
3
+ export function managedOwnedScopeProvider() {
4
+ if (process.platform === 'win32')
5
+ return createWindowsOwnedProcessScopeProvider();
6
+ if (process.platform === 'linux')
7
+ return createLinuxOwnedProcessScopeProvider();
8
+ throw new ReleaseError('SOURCE_UNSUPPORTED', { reason: 'OWNED_SCOPE_HOST' });
9
+ }
10
+ //# sourceMappingURL=owned-command-runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"owned-command-runner.js","sourceRoot":"","sources":["../../src/node/owned-command-runner.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oCAAoC,EAAE,sCAAsC,EAAE,MAAM,oCAAoC,CAAC;AAClI,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAE3C,MAAM,UAAU,yBAAyB;IACvC,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,sCAAsC,EAAE,CAAC;IAClF,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO;QAAE,OAAO,oCAAoC,EAAE,CAAC;IAChF,MAAM,IAAI,YAAY,CAAC,oBAAoB,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAC,CAAC;AAC/E,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { RecordedIdentity } from './release-context.js';
2
+ export declare const processControl: () => import("@openge/forge-process-control").ProcessControlProvider;
3
+ export declare const identityReader: () => import("@openge/forge-process-control").ProcessIdentityReader;
4
+ export declare function currentCoordinator(signal?: AbortSignal): Promise<RecordedIdentity>;
5
+ //# sourceMappingURL=process-identities.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-identities.d.ts","sourceRoot":"","sources":["../../src/node/process-identities.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAG7D,eAAO,MAAM,cAAc,sEAA4J,CAAC;AACxL,eAAO,MAAM,cAAc,qEAAiH,CAAC;AAC7I,wBAAsB,kBAAkB,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAWxF"}
@@ -0,0 +1,23 @@
1
+ import { createPosixProcessControl, createPosixProcessIdentityReader, createWindowsProcessControl, createWindowsProcessIdentityReader } from '@openge/forge-process-control-node';
2
+ import { assertActive, ReleaseError } from './errors.js';
3
+ export const processControl = () => process.platform === 'win32' ? createWindowsProcessControl({ listenerBackend: 'netstat' }) : createPosixProcessControl({ listenerBackend: 'lsof' });
4
+ export const identityReader = () => process.platform === 'win32' ? createWindowsProcessIdentityReader() : createPosixProcessIdentityReader();
5
+ export async function currentCoordinator(signal) {
6
+ assertActive(signal);
7
+ const controller = new AbortController(), timer = setTimeout(() => controller.abort(), 10_000);
8
+ const combined = signal ? AbortSignal.any([signal, controller.signal]) : controller.signal;
9
+ try {
10
+ const value = await identityReader().readIdentity({ pid: process.pid, signal: combined });
11
+ assertActive(signal);
12
+ if (value.status === 'FOUND' && value.identity.pid === process.pid && value.identity.startToken.length <= 128)
13
+ return value.identity;
14
+ }
15
+ catch {
16
+ assertActive(signal);
17
+ }
18
+ finally {
19
+ clearTimeout(timer);
20
+ }
21
+ throw new ReleaseError('PROCESS_STATE_UNKNOWN', { reason: 'COORDINATOR_IDENTITY' });
22
+ }
23
+ //# sourceMappingURL=process-identities.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"process-identities.js","sourceRoot":"","sources":["../../src/node/process-identities.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,2BAA2B,EAAE,kCAAkC,EAAE,MAAM,oCAAoC,CAAC;AAElL,OAAO,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAEzD,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,2BAA2B,CAAC,EAAE,eAAe,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC,CAAC,yBAAyB,CAAC,EAAE,eAAe,EAAE,MAAM,EAAE,CAAC,CAAC;AACxL,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC,gCAAgC,EAAE,CAAC;AAC7I,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,MAAoB;IAC3D,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,EAAE,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,MAAM,CAAC,CAAC;IAC/F,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC;IAC3F,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,MAAM,cAAc,EAAE,CAAC,YAAY,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC1F,YAAY,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,KAAK,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,CAAC,UAAU,CAAC,MAAM,IAAI,GAAG;YAAE,OAAO,KAAK,CAAC,QAAQ,CAAC;IACvI,CAAC;IAAC,MAAM,CAAC;QAAC,YAAY,CAAC,MAAM,CAAC,CAAC;IAAC,CAAC;YACzB,CAAC;QAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAChC,MAAM,IAAI,YAAY,CAAC,uBAAuB,EAAE,EAAE,MAAM,EAAE,sBAAsB,EAAE,CAAC,CAAC;AACtF,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { ReleaseDeployment } from '../contracts.js';
2
+ import type { ExecutionContext } from './release-context.js';
3
+ /** 两种来源共用的唯一发布引擎;来源协调层只提供输入和守卫。 */
4
+ export declare function publishCandidate(context: ExecutionContext, command: 'check' | 'publish' | 'status' | 'verify'): Promise<ReleaseDeployment | undefined>;
5
+ //# sourceMappingURL=publication.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication.d.ts","sourceRoot":"","sources":["../../src/node/publication.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAK7D,mCAAmC;AACnC,wBAAsB,gBAAgB,CAAC,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,OAAO,GAAG,SAAS,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC,iBAAiB,GAAG,SAAS,CAAC,CAoC5J"}
@@ -0,0 +1,57 @@
1
+ import { assertActive, ReleaseError } from './errors.js';
2
+ import { fetchAndAssertFastForward } from './git.js';
3
+ import { createTransport, VercelVerification } from './vercel.js';
4
+ /** 两种来源共用的唯一发布引擎;来源协调层只提供输入和守卫。 */
5
+ export async function publishCandidate(context, command) {
6
+ const { execution, config, sha, signal, effects } = context;
7
+ const verify = new VercelVerification(config, context.transport ?? createTransport(execution), signal);
8
+ let result;
9
+ const values = { FORGE_RELEASE_COMMAND: command, FORGE_RELEASE_SHA: sha };
10
+ if (command === 'check' || command === 'publish') {
11
+ if (command === 'publish') {
12
+ await context.mutationGuard();
13
+ await fetchAndAssertFastForward(execution, config, sha);
14
+ await verify.project();
15
+ }
16
+ await context.stage('checks');
17
+ for (const [index, check] of config.checks.entries())
18
+ await execution.run(`check:${String(index)}`, check, 'CHECK_FAILED', values);
19
+ await context.assertFrozen();
20
+ if (command === 'publish') {
21
+ await context.mutationGuard();
22
+ await fetchAndAssertFastForward(execution, config, sha);
23
+ for (const [branch, effect, stage] of [[config.git.developmentBranch, 'developmentPush', 'push-dev'], [config.git.releaseBranch, 'releasePush', 'push-main']]) {
24
+ await context.stage(stage);
25
+ await context.assertFrozen();
26
+ assertActive(signal);
27
+ await verify.project();
28
+ await context.mutationGuard();
29
+ effects[effect] = 'unknown';
30
+ await context.checkpoint(effect);
31
+ const output = await execution.git(['push', '--porcelain', config.git.remote, `${sha}:refs/heads/${branch}`]);
32
+ effects[effect] = output.split(/\r?\n/u).some(line => line.startsWith('=') && line.includes(`:refs/heads/${branch}\t`)) ? 'already-current' : 'pushed';
33
+ await context.checkpoint();
34
+ }
35
+ await context.stage('deployment');
36
+ result = await verify.wait(sha);
37
+ }
38
+ }
39
+ else {
40
+ await context.stage('deployment');
41
+ await verify.project();
42
+ result = await verify.find(sha);
43
+ if (!result)
44
+ throw new ReleaseError('DEPLOYMENT_MISSING');
45
+ }
46
+ if (result && ['publish', 'verify'].includes(command)) {
47
+ await context.stage('acceptance');
48
+ await verify.verify(result);
49
+ await context.assertFrozen();
50
+ const acceptanceValues = { ...values, FORGE_RELEASE_URL: config.vercel.productionUrl, FORGE_RELEASE_DEPLOYMENT_ID: result.id };
51
+ for (const [index, check] of config.acceptance.entries())
52
+ await execution.run(`acceptance:${String(index)}`, check, 'ACCEPTANCE_FAILED', acceptanceValues);
53
+ await context.assertFrozen();
54
+ }
55
+ return result;
56
+ }
57
+ //# sourceMappingURL=publication.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"publication.js","sourceRoot":"","sources":["../../src/node/publication.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { FrozenSource } from './release-context.js';
2
+ /** 输出可直接粘贴到宿主默认 shell 的单次恢复命令,不使用 JSON 转义充当 shell 引号。 */
3
+ export declare function recoveryCommand(command: string, source: Pick<FrozenSource, 'root' | 'configPath'>): string;
4
+ //# sourceMappingURL=release-commands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-commands.d.ts","sourceRoot":"","sources":["../../src/node/release-commands.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,yDAAyD;AACzD,wBAAgB,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,CAG1G"}
@@ -0,0 +1,6 @@
1
+ /** 输出可直接粘贴到宿主默认 shell 的单次恢复命令,不使用 JSON 转义充当 shell 引号。 */
2
+ export function recoveryCommand(command, source) {
3
+ const quote = (value) => process.platform === 'win32' ? `'${value.replaceAll("'", "''")}'` : `'${value.replaceAll("'", "'\"'\"'")}'`;
4
+ return `forge-vercel-release ${command} --cwd ${quote(source.root)} --config ${quote(source.configPath)}`;
5
+ }
6
+ //# sourceMappingURL=release-commands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-commands.js","sourceRoot":"","sources":["../../src/node/release-commands.ts"],"names":[],"mappings":"AAEA,yDAAyD;AACzD,MAAM,UAAU,eAAe,CAAC,OAAe,EAAE,MAAiD;IAChG,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,EAAE,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,SAAS,CAAC,GAAG,CAAC;IAC7I,OAAO,wBAAwB,OAAO,UAAU,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,EAAE,CAAC;AAC5G,CAAC"}
@@ -0,0 +1,128 @@
1
+ import type { ReleaseCommand, ReleaseConfig, ReleaseReport, ReleaseStage, ReleaseTransport } from '../contracts.js';
2
+ import type { OwnedLock } from './lock.js';
3
+ import type { CommandObserver, CommandResult, CommandRunner, CommandSpec, CommandTerminationReason } from '@openge/forge-command-runner';
4
+ import type { ProcessScopeClosure } from '@openge/forge-process-control';
5
+ import type { Execution } from './execution.js';
6
+ import type { BudgetMonitor } from './managed-budget.js';
7
+ export interface FrozenSource {
8
+ readonly root: string;
9
+ readonly sha: string;
10
+ readonly configPath: string;
11
+ readonly config: ReleaseConfig;
12
+ readonly configBlobOid: string;
13
+ readonly configSha256: string;
14
+ readonly fetchUrl: string;
15
+ }
16
+ export interface FileIdentity {
17
+ readonly dev: string;
18
+ readonly ino: string;
19
+ }
20
+ export interface ManagedPaths {
21
+ readonly sourceRoot: string;
22
+ readonly slotRoot: string;
23
+ readonly checkoutRoot: string;
24
+ readonly anchorPath: string;
25
+ readonly ownershipPath: string;
26
+ readonly statePath: string;
27
+ readonly lockPath: string;
28
+ readonly recoveryLockPath: string;
29
+ readonly sourceIdentity: FileIdentity;
30
+ readonly slotIdentity: FileIdentity;
31
+ }
32
+ export interface RecordedIdentity {
33
+ readonly pid: number;
34
+ readonly startToken: string;
35
+ }
36
+ export interface ManagedCommand {
37
+ readonly id: string;
38
+ readonly name: string;
39
+ status: 'intent' | 'spawned' | 'identified' | 'closed' | 'unknown';
40
+ pid?: number;
41
+ identity?: RecordedIdentity;
42
+ descendants: RecordedIdentity[];
43
+ observationComplete: boolean;
44
+ scope?: {
45
+ readonly scopeId: string;
46
+ readonly binding: string;
47
+ };
48
+ closure?: {
49
+ readonly observedAt: string;
50
+ readonly exitCode: number | null;
51
+ readonly termination: CommandTerminationReason;
52
+ readonly ownedScope?: ProcessScopeClosure;
53
+ };
54
+ }
55
+ export interface ManagedState {
56
+ readonly schemaVersion: 2;
57
+ readonly slotId: string;
58
+ readonly runId: string;
59
+ readonly source: FrozenSource;
60
+ readonly command: ReleaseCommand;
61
+ readonly coordinator: RecordedIdentity;
62
+ stage: ReleaseStage;
63
+ status: 'running' | 'closed' | 'unknown';
64
+ processes: ManagedCommand[];
65
+ effects: ReleaseReport['effects'];
66
+ pendingPush?: 'developmentPush' | 'releasePush';
67
+ }
68
+ export interface ManagedReceipt {
69
+ readonly schemaVersion: 2;
70
+ readonly slotId: string;
71
+ readonly source: FrozenSource;
72
+ readonly report: ReleaseReport;
73
+ }
74
+ export interface ManagedAnchor {
75
+ readonly schemaVersion: 2;
76
+ readonly slotId: string;
77
+ readonly slotPath: string;
78
+ readonly configPath: string;
79
+ readonly sourceRoot: string;
80
+ readonly latestPublish?: {
81
+ readonly sha: string;
82
+ readonly runId: string;
83
+ readonly configSha256: string;
84
+ };
85
+ }
86
+ export interface ManagedStateStore {
87
+ read(): Promise<ManagedState | undefined>;
88
+ writeState(state: ManagedState): Promise<void>;
89
+ readReceipt(kind: 'check' | 'publish'): Promise<ManagedReceipt | undefined>;
90
+ writeReceipt(kind: 'check' | 'publish', receipt: ManagedReceipt): Promise<void>;
91
+ writeAnchor(anchor: ManagedAnchor): Promise<void>;
92
+ }
93
+ export interface ManagedSlot {
94
+ readonly slotId: string;
95
+ readonly paths: ManagedPaths;
96
+ readonly source: FrozenSource;
97
+ readonly lock: OwnedLock;
98
+ readonly store: ManagedStateStore;
99
+ readonly runId: string;
100
+ readonly coordinator: RecordedIdentity;
101
+ }
102
+ export interface ExecutionLifecycle {
103
+ execute(runner: CommandRunner, name: string, spec: CommandSpec, observer?: CommandObserver): Promise<CommandResult>;
104
+ }
105
+ export interface ManagedSession {
106
+ readonly slot: ManagedSlot;
107
+ readonly command: 'check' | 'publish' | 'verify';
108
+ readonly state: ManagedState;
109
+ readonly budget: BudgetMonitor;
110
+ readonly execution: Execution;
111
+ readonly steps: ReleaseReport['steps'];
112
+ persist(): Promise<void>;
113
+ assertClosed(): Promise<void>;
114
+ executionAt(cwd: string): Execution;
115
+ }
116
+ export interface ExecutionContext {
117
+ readonly execution: Execution;
118
+ readonly config: ReleaseConfig;
119
+ readonly sha: string;
120
+ readonly signal: AbortSignal | undefined;
121
+ readonly transport: ReleaseTransport | undefined;
122
+ readonly effects: ReleaseReport['effects'];
123
+ assertFrozen(): Promise<void>;
124
+ mutationGuard(): Promise<void>;
125
+ stage(stage: ReleaseStage): Promise<void>;
126
+ checkpoint(pending?: 'developmentPush' | 'releasePush'): Promise<void>;
127
+ }
128
+ //# sourceMappingURL=release-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-context.d.ts","sourceRoot":"","sources":["../../src/node/release-context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=release-context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"release-context.js","sourceRoot":"","sources":["../../src/node/release-context.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/node/release.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAuD,aAAa,EAAe,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAiB1I,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAmGnF"}
1
+ {"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/node/release.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAC;AAQxE,wBAAsB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC,CAkBnF"}