@mannyc1/ts-release 0.0.6 → 0.0.7

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 (125) hide show
  1. package/ARCHITECTURE.md +13 -8
  2. package/README.md +226 -448
  3. package/SPEC.md +48 -43
  4. package/dist/artifacts/adapter.d.ts +39 -0
  5. package/dist/artifacts/adapter.d.ts.map +1 -0
  6. package/dist/artifacts/adapter.js +23 -0
  7. package/dist/artifacts/adapter.js.map +1 -0
  8. package/dist/artifacts/registry.d.ts +21 -0
  9. package/dist/artifacts/registry.d.ts.map +1 -0
  10. package/dist/artifacts/registry.js +21 -0
  11. package/dist/artifacts/registry.js.map +1 -0
  12. package/dist/config/schema.js +1 -1
  13. package/dist/config/schema.js.map +1 -1
  14. package/dist/domain/artifact.d.ts +85 -3
  15. package/dist/domain/artifact.d.ts.map +1 -1
  16. package/dist/domain/artifact.js +171 -3
  17. package/dist/domain/artifact.js.map +1 -1
  18. package/dist/domain/evidence.d.ts +16 -65
  19. package/dist/domain/evidence.d.ts.map +1 -1
  20. package/dist/domain/evidence.js +15 -60
  21. package/dist/domain/evidence.js.map +1 -1
  22. package/dist/domain/operation.d.ts +7 -17
  23. package/dist/domain/operation.d.ts.map +1 -1
  24. package/dist/domain/operation.js +22 -144
  25. package/dist/domain/operation.js.map +1 -1
  26. package/dist/domain/release.d.ts +1 -49
  27. package/dist/domain/release.d.ts.map +1 -1
  28. package/dist/domain/release.js +2 -47
  29. package/dist/domain/release.js.map +1 -1
  30. package/dist/domain/remote-state.d.ts +0 -27
  31. package/dist/domain/remote-state.d.ts.map +1 -1
  32. package/dist/domain/remote-state.js +1 -23
  33. package/dist/domain/remote-state.js.map +1 -1
  34. package/dist/domain/target.d.ts +14 -1
  35. package/dist/domain/target.d.ts.map +1 -1
  36. package/dist/domain/target.js +17 -3
  37. package/dist/domain/target.js.map +1 -1
  38. package/dist/planner/artifact-inventory.d.ts.map +1 -1
  39. package/dist/planner/artifact-inventory.js +3 -1
  40. package/dist/planner/artifact-inventory.js.map +1 -1
  41. package/dist/planner/errors.d.ts +2 -16
  42. package/dist/planner/errors.d.ts.map +1 -1
  43. package/dist/planner/errors.js +2 -14
  44. package/dist/planner/errors.js.map +1 -1
  45. package/dist/planner/evidence-recorder.d.ts +8 -6
  46. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  47. package/dist/planner/evidence-recorder.js +50 -18
  48. package/dist/planner/evidence-recorder.js.map +1 -1
  49. package/dist/planner/executor.d.ts +12 -12
  50. package/dist/planner/executor.d.ts.map +1 -1
  51. package/dist/planner/executor.js +43 -55
  52. package/dist/planner/executor.js.map +1 -1
  53. package/dist/planner/normalize-release.d.ts +3 -0
  54. package/dist/planner/normalize-release.d.ts.map +1 -1
  55. package/dist/planner/normalize-release.js +128 -4
  56. package/dist/planner/normalize-release.js.map +1 -1
  57. package/dist/planner/reconcile.d.ts.map +1 -1
  58. package/dist/planner/reconcile.js +2 -4
  59. package/dist/planner/reconcile.js.map +1 -1
  60. package/dist/planner/render-plan.d.ts.map +1 -1
  61. package/dist/planner/render-plan.js +12 -19
  62. package/dist/planner/render-plan.js.map +1 -1
  63. package/dist/targets/adapter-helpers.d.ts +20 -5
  64. package/dist/targets/adapter-helpers.d.ts.map +1 -1
  65. package/dist/targets/adapter-helpers.js +77 -7
  66. package/dist/targets/adapter-helpers.js.map +1 -1
  67. package/dist/targets/github.d.ts.map +1 -1
  68. package/dist/targets/github.js +1 -9
  69. package/dist/targets/github.js.map +1 -1
  70. package/dist/targets/homebrew.d.ts.map +1 -1
  71. package/dist/targets/homebrew.js +131 -18
  72. package/dist/targets/homebrew.js.map +1 -1
  73. package/dist/targets/npm.d.ts.map +1 -1
  74. package/dist/targets/npm.js +1 -7
  75. package/dist/targets/npm.js.map +1 -1
  76. package/dist/targets/pypi.d.ts.map +1 -1
  77. package/dist/targets/pypi.js +50 -12
  78. package/dist/targets/pypi.js.map +1 -1
  79. package/dist/targets/scoop.d.ts.map +1 -1
  80. package/dist/targets/scoop.js +18 -8
  81. package/dist/targets/scoop.js.map +1 -1
  82. package/dist/workflows/config.d.ts +69 -119
  83. package/dist/workflows/config.d.ts.map +1 -1
  84. package/dist/workflows/config.js +80 -125
  85. package/dist/workflows/config.js.map +1 -1
  86. package/dist/workflows/diagnostics.d.ts.map +1 -1
  87. package/dist/workflows/diagnostics.js +6 -3
  88. package/dist/workflows/diagnostics.js.map +1 -1
  89. package/dist/workflows/distribution.d.ts +25 -0
  90. package/dist/workflows/distribution.d.ts.map +1 -0
  91. package/dist/workflows/distribution.js +24 -0
  92. package/dist/workflows/distribution.js.map +1 -0
  93. package/dist/workflows/evidence.d.ts +4 -13
  94. package/dist/workflows/evidence.d.ts.map +1 -1
  95. package/dist/workflows/evidence.js +15 -27
  96. package/dist/workflows/evidence.js.map +1 -1
  97. package/dist/workflows/index.d.ts +1 -0
  98. package/dist/workflows/index.d.ts.map +1 -1
  99. package/dist/workflows/index.js +1 -0
  100. package/dist/workflows/index.js.map +1 -1
  101. package/dist/workflows/init.d.ts +3 -3
  102. package/dist/workflows/init.d.ts.map +1 -1
  103. package/dist/workflows/init.js +46 -0
  104. package/dist/workflows/init.js.map +1 -1
  105. package/examples/README.md +4 -4
  106. package/package.json +18 -15
  107. package/templates/README.md +15 -2
  108. package/templates/bun-cli-github/README.md +14 -0
  109. package/templates/bun-cli-github/release.config.json +89 -0
  110. package/dist/domain/status.d.ts +0 -43
  111. package/dist/domain/status.d.ts.map +0 -1
  112. package/dist/domain/status.js +0 -51
  113. package/dist/domain/status.js.map +0 -1
  114. package/dist/internal/workflow-phases.d.ts +0 -3
  115. package/dist/internal/workflow-phases.d.ts.map +0 -1
  116. package/dist/internal/workflow-phases.js +0 -2
  117. package/dist/internal/workflow-phases.js.map +0 -1
  118. package/dist/planner/release-eligibility.d.ts +0 -39
  119. package/dist/planner/release-eligibility.d.ts.map +0 -1
  120. package/dist/planner/release-eligibility.js +0 -578
  121. package/dist/planner/release-eligibility.js.map +0 -1
  122. package/dist/planner/status.d.ts +0 -40
  123. package/dist/planner/status.d.ts.map +0 -1
  124. package/dist/planner/status.js +0 -313
  125. package/dist/planner/status.js.map +0 -1
@@ -1,40 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Schema from "effect/Schema";
3
- import { EvidenceBundle, ReleaseWorkflowEvidence } from "../domain/evidence.js";
4
- import { Operation } from "../domain/operation.js";
5
- import { ReleasePlan } from "../domain/release.js";
6
- import { ReleaseStatusReport, ReleaseWorkflowPhase } from "../domain/status.js";
7
- import { EvidenceReadError, OperationFailedError, ResumeBlockedError } from "./errors.js";
8
- export type * from "../types/effect-internal.js";
9
- export interface WorkflowEvidencePaths {
10
- readonly render: string;
11
- readonly validation: string;
12
- readonly execution: string;
13
- readonly verification: string;
14
- }
15
- export interface OptionalWorkflowEvidence {
16
- readonly render?: EvidenceBundle;
17
- readonly validation?: EvidenceBundle;
18
- readonly execution?: EvidenceBundle;
19
- readonly verification?: EvidenceBundle;
20
- }
21
- declare const ReleaseResumeOptions_base: Schema.Class<ReleaseResumeOptions, Schema.Struct<{
22
- readonly execute: Schema.Boolean;
23
- readonly approveIrreversible: Schema.Boolean;
24
- }>, {}>;
25
- export declare class ReleaseResumeOptions extends ReleaseResumeOptions_base {
26
- }
27
- export declare const workflowEvidencePaths: (plan: ReleasePlan) => WorkflowEvidencePaths;
28
- export declare const loadWorkflowEvidence: (plan: ReleasePlan) => Effect.Effect<{
29
- render?: EvidenceBundle;
30
- validation?: EvidenceBundle;
31
- execution?: EvidenceBundle;
32
- verification?: EvidenceBundle;
33
- }, EvidenceReadError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
34
- export declare const phaseOperations: (plan: ReleasePlan, phase: ReleaseWorkflowPhase) => ReadonlyArray<Operation>;
35
- export declare const summarizeReleaseStatus: (plan: ReleasePlan, evidence: OptionalWorkflowEvidence) => ReleaseStatusReport;
36
- export declare const statusReleasePlan: (plan: ReleasePlan) => Effect.Effect<ReleaseStatusReport, EvidenceReadError, import("effect/FileSystem").FileSystem | import("effect/Path").Path>;
37
- export declare const renderReleaseStatusText: (report: ReleaseStatusReport) => string;
38
- export declare const renderReleaseStatusJson: (report: ReleaseStatusReport) => string;
39
- export declare const resumeApprovedReleaseWorkflow: (plan: ReleasePlan, options: ReleaseResumeOptions) => Effect.Effect<ReleaseWorkflowEvidence, import("../domain/operation.js").ExecutionApprovalError | import("../host/host.js").CommandRunnerError | EvidenceReadError | import("./errors.js").WorkspaceWriteError | ResumeBlockedError | OperationFailedError, import("effect/FileSystem").FileSystem | import("effect/Path").Path | import("../host/host.js").ReleaseCommandRunner | import("../host/http.js").ReleaseHttp>;
40
- //# sourceMappingURL=status.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../src/planner/status.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,cAAc,EAAkB,uBAAuB,EAAkC,MAAM,uBAAuB,CAAA;AAC/H,OAAO,EAAqB,SAAS,EAAwB,MAAM,wBAAwB,CAAA;AAC3F,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAML,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,qBAAqB,CAAA;AAc5B,OAAO,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,MAAM,aAAa,CAAA;AAEzF,mBAAmB,6BAA6B,CAAA;AAEhD,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAA;IACvB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAA;IAC3B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAA;IAC1B,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAA;CAC9B;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,MAAM,CAAC,EAAE,cAAc,CAAA;IAChC,QAAQ,CAAC,UAAU,CAAC,EAAE,cAAc,CAAA;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,cAAc,CAAA;IACnC,QAAQ,CAAC,YAAY,CAAC,EAAE,cAAc,CAAA;CACvC;;;;;AAED,qBAAa,oBAAqB,SAAQ,yBAGxC;CAAG;AAEL,eAAO,MAAM,qBAAqB,GAAI,MAAM,WAAW,KAAG,qBAKxD,CAAA;AAsBF,eAAO,MAAM,oBAAoB;aAGpB,cAAc;iBACV,cAAc;gBACf,cAAc;mBACX,cAAc;0FAW/B,CAAA;AAEF,eAAO,MAAM,eAAe,GAAI,MAAM,WAAW,EAAE,OAAO,oBAAoB,KAAG,aAAa,CAAC,SAAS,CAWvG,CAAA;AAkLD,eAAO,MAAM,sBAAsB,GACjC,MAAM,WAAW,EACjB,UAAU,wBAAwB,KACjC,mBAoBF,CAAA;AAED,eAAO,MAAM,iBAAiB,mJAG5B,CAAA;AAEF,eAAO,MAAM,uBAAuB,GAAI,QAAQ,mBAAmB,KAAG,MAoBrE,CAAA;AAED,eAAO,MAAM,uBAAuB,GAAI,QAAQ,mBAAmB,KAAG,MAC9B,CAAA;AA4FxC,eAAO,MAAM,6BAA6B,gdA2DxC,CAAA"}
@@ -1,313 +0,0 @@
1
- import * as Effect from "effect/Effect";
2
- import * as Schema from "effect/Schema";
3
- import { ReleaseWorkflowEvidence, ReleaseWorkflowFailureEvidence } from "../domain/evidence.js";
4
- import { ExecutionApproval, operationFingerprint } from "../domain/operation.js";
5
- import { ReleaseOperationStatusRecord, ReleasePhaseStatusRecord, ReleaseStatusReport } from "../domain/status.js";
6
- import { emptyEvidenceBundle, mergeEvidenceBundles, tryReadEvidenceBundle } from "./evidence-recorder.js";
7
- import { workflowPhases } from "../internal/workflow-phases.js";
8
- import { publishOperations, renderOperations, runOperations, validationOperations, verificationOperations } from "./executor.js";
9
- import { EvidenceReadError, OperationFailedError, ResumeBlockedError } from "./errors.js";
10
- export class ReleaseResumeOptions extends Schema.Class("ReleaseResumeOptions")({
11
- execute: Schema.Boolean,
12
- approveIrreversible: Schema.Boolean
13
- }) {
14
- }
15
- export const workflowEvidencePaths = (plan) => ({
16
- render: `${plan.evidenceDirectory}/render.json`,
17
- validation: `${plan.evidenceDirectory}/validation.json`,
18
- execution: `${plan.evidenceDirectory}/execution.json`,
19
- verification: `${plan.evidenceDirectory}/verification.json`
20
- });
21
- const ensureBundleMatchesPlan = (plan, pathName, bundle) => {
22
- if (bundle === undefined) {
23
- return Effect.void;
24
- }
25
- if (bundle.releaseName === plan.identity.name && bundle.releaseVersion === plan.identity.version) {
26
- return Effect.void;
27
- }
28
- return Effect.fail(EvidenceReadError.make({
29
- path: pathName,
30
- reason: `Evidence bundle is for ${bundle.releaseName}@${bundle.releaseVersion}, expected ${plan.identity.name}@${plan.identity.version}.`
31
- }));
32
- };
33
- export const loadWorkflowEvidence = Effect.fn("loadWorkflowEvidence")(function* (plan) {
34
- const paths = workflowEvidencePaths(plan);
35
- const evidence = {};
36
- for (const phase of workflowPhases) {
37
- const bundle = yield* tryReadEvidenceBundle(paths[phase], plan.source.root);
38
- yield* ensureBundleMatchesPlan(plan, paths[phase], bundle);
39
- if (bundle !== undefined) {
40
- evidence[phase] = bundle;
41
- }
42
- }
43
- return evidence;
44
- });
45
- export const phaseOperations = (plan, phase) => {
46
- switch (phase) {
47
- case "render":
48
- return renderOperations(plan);
49
- case "validation":
50
- return validationOperations(plan);
51
- case "execution":
52
- return publishOperations(plan);
53
- case "verification":
54
- return verificationOperations(plan);
55
- }
56
- };
57
- const recordOperationId = (record) => "operationId" in record ? record.operationId : undefined;
58
- const hasOperationIdentity = (operation, record) => {
59
- const operationId = recordOperationId(record);
60
- if (operationId !== undefined) {
61
- return operationId === operation.id;
62
- }
63
- return operation._tag === "ValidationNoteOperation" && record.id === `${operation.id}:validation`;
64
- };
65
- const matchesOperation = (operation, record) => {
66
- if (!hasOperationIdentity(operation, record)) {
67
- return false;
68
- }
69
- return record.operationFingerprint === operationFingerprint(operation);
70
- };
71
- const latestEvidenceRecord = (operation, bundle) => {
72
- if (bundle === undefined) {
73
- return undefined;
74
- }
75
- let latest;
76
- for (const record of bundle.records) {
77
- if (matchesOperation(operation, record)) {
78
- latest = record;
79
- }
80
- }
81
- return latest;
82
- };
83
- const failedOperationPolicy = (operation) => {
84
- switch (operation._tag) {
85
- case "PublishCommandOperation":
86
- return {
87
- status: "blocked",
88
- resumeAction: "block",
89
- reason: "Previous publish evidence failed; inspect remote state before retry."
90
- };
91
- case "ValidateCommandOperation":
92
- case "ValidationNoteOperation":
93
- return {
94
- status: "failed",
95
- resumeAction: "retry-read-only",
96
- reason: "Previous validation evidence failed; resume can rerun this read-only operation."
97
- };
98
- case "VerifyRemoteOperation":
99
- case "VerifyHttpOperation":
100
- return {
101
- status: "failed",
102
- resumeAction: "retry-read-only",
103
- reason: "Previous verification evidence failed; resume can rerun this read-only operation."
104
- };
105
- case "RenderFileOperation":
106
- return {
107
- status: "failed",
108
- resumeAction: "run",
109
- reason: "Previous render evidence failed; resume can rerun this local render operation."
110
- };
111
- }
112
- };
113
- const operationStatusRecord = (operation, phase, bundle) => {
114
- const record = latestEvidenceRecord(operation, bundle);
115
- const base = {
116
- operationId: operation.id,
117
- ...(operation.targetId === undefined ? {} : { targetId: operation.targetId }),
118
- phase,
119
- risk: operation.risk
120
- };
121
- if (record === undefined) {
122
- return ReleaseOperationStatusRecord.make({
123
- ...base,
124
- status: "pending",
125
- resumeAction: "run"
126
- });
127
- }
128
- if (record.status === "failed") {
129
- const policy = failedOperationPolicy(operation);
130
- return ReleaseOperationStatusRecord.make({
131
- ...base,
132
- status: policy.status,
133
- resumeAction: policy.resumeAction,
134
- evidenceId: record.id,
135
- reason: policy.reason
136
- });
137
- }
138
- return ReleaseOperationStatusRecord.make({
139
- ...base,
140
- status: record.status,
141
- resumeAction: "skip",
142
- evidenceId: record.id
143
- });
144
- };
145
- const completedOperation = (status) => status === "passed" || status === "warning" || status === "skipped";
146
- const phaseStatus = (records) => {
147
- if (records.length === 0) {
148
- return "passed";
149
- }
150
- if (records.some((record) => record.status === "blocked")) {
151
- return "blocked";
152
- }
153
- if (records.some((record) => record.status === "failed")) {
154
- return "failed";
155
- }
156
- if (records.some((record) => record.status === "pending")) {
157
- return "pending";
158
- }
159
- if (records.some((record) => record.status === "warning")) {
160
- return "warning";
161
- }
162
- if (records.every((record) => record.status === "skipped")) {
163
- return "skipped";
164
- }
165
- return "passed";
166
- };
167
- const phaseStatusRecord = (phase, records) => ReleasePhaseStatusRecord.make({
168
- phase,
169
- status: phaseStatus(records),
170
- completed: records.filter((record) => completedOperation(record.status)).length,
171
- total: records.length
172
- });
173
- const overallStatus = (evidence, operations, phases) => {
174
- const evidenceFilesExist = workflowPhases.some((phase) => evidence[phase] !== undefined);
175
- const operationEvidenceExists = operations.some((operation) => operation.evidenceId !== undefined);
176
- if (!evidenceFilesExist && !operationEvidenceExists) {
177
- return "not-started";
178
- }
179
- if (operations.some((operation) => operation.status === "blocked")) {
180
- return "blocked";
181
- }
182
- if (operations.some((operation) => operation.status === "failed")) {
183
- return "failed";
184
- }
185
- if (phases.every((phase) => phase.completed === phase.total)) {
186
- return "complete";
187
- }
188
- return "in-progress";
189
- };
190
- const canResumeReport = (overall, operations) => overall !== "blocked" &&
191
- overall !== "complete" &&
192
- operations.some((operation) => operation.resumeAction === "run" || operation.resumeAction === "retry-read-only");
193
- export const summarizeReleaseStatus = (plan, evidence) => {
194
- const operations = [];
195
- const phases = [];
196
- for (const phase of workflowPhases) {
197
- const bundle = evidence[phase];
198
- const records = phaseOperations(plan, phase).map((operation) => operationStatusRecord(operation, phase, bundle));
199
- operations.push(...records);
200
- phases.push(phaseStatusRecord(phase, records));
201
- }
202
- const overall = overallStatus(evidence, operations, phases);
203
- return ReleaseStatusReport.make({
204
- schemaVersion: "release-status/v1",
205
- releaseName: plan.identity.name,
206
- releaseVersion: plan.identity.version,
207
- overallStatus: overall,
208
- canResume: canResumeReport(overall, operations),
209
- evidenceDirectory: plan.evidenceDirectory,
210
- phases,
211
- operations
212
- });
213
- };
214
- export const statusReleasePlan = Effect.fn("statusReleasePlan")(function* (plan) {
215
- const evidence = yield* loadWorkflowEvidence(plan);
216
- return summarizeReleaseStatus(plan, evidence);
217
- });
218
- export const renderReleaseStatusText = (report) => {
219
- const lines = [
220
- `${report.releaseName}@${report.releaseVersion} status=${report.overallStatus} can-resume=${report.canResume} evidence=${report.evidenceDirectory}`,
221
- "",
222
- "phases:"
223
- ];
224
- for (const phase of report.phases) {
225
- lines.push(` ${phase.phase}: ${phase.status} ${phase.completed}/${phase.total}`);
226
- }
227
- lines.push("", "operations:");
228
- for (const operation of report.operations) {
229
- const fields = [
230
- ` - ${operation.operationId} [${operation.phase}] ${operation.status}`,
231
- `resume=${operation.resumeAction}`,
232
- operation.evidenceId === undefined ? "" : `evidence=${operation.evidenceId}`,
233
- operation.reason === undefined ? "" : `reason=${JSON.stringify(operation.reason)}`
234
- ].filter((field) => field.length > 0);
235
- lines.push(fields.join(" "));
236
- }
237
- return `${lines.join("\n")}\n`;
238
- };
239
- export const renderReleaseStatusJson = (report) => `${JSON.stringify(report, null, 2)}\n`;
240
- const approvalForPhase = (phase, options) => {
241
- switch (phase) {
242
- case "render":
243
- return ExecutionApproval.make({
244
- execute: options.execute,
245
- approveIrreversible: false
246
- });
247
- case "validation":
248
- case "verification":
249
- return ExecutionApproval.none;
250
- case "execution":
251
- return ExecutionApproval.make({
252
- execute: options.execute,
253
- approveIrreversible: options.approveIrreversible
254
- });
255
- }
256
- };
257
- const shouldRunOperation = (report, operation) => {
258
- const status = report.operations.find((record) => record.operationId === operation.id);
259
- return status?.resumeAction === "run" || status?.resumeAction === "retry-read-only";
260
- };
261
- const failWorkflowOperation = (error, workflowEvidence) => Effect.fail(OperationFailedError.make({
262
- operationId: error.operationId,
263
- ...(error.exitCode === undefined ? {} : { exitCode: error.exitCode }),
264
- ...(error.responseStatus === undefined ? {} : { responseStatus: error.responseStatus }),
265
- reason: error.reason,
266
- ...(error.evidence === undefined ? {} : { evidence: error.evidence }),
267
- workflowEvidence
268
- }));
269
- const workflowFailureEvidence = (prefix, phase, current) => {
270
- const evidence = {};
271
- for (const evidencePhase of workflowPhases) {
272
- const bundle = evidencePhase === phase ? current : prefix[evidencePhase];
273
- if (bundle !== undefined) {
274
- evidence[evidencePhase] = bundle;
275
- }
276
- }
277
- return ReleaseWorkflowFailureEvidence.make(evidence);
278
- };
279
- const resumePhase = Effect.fn("resumePhase")(function* (plan, phase, existing, operations, approval, report, prefix) {
280
- const runnable = operations.filter((operation) => shouldRunOperation(report, operation));
281
- if (runnable.length === 0) {
282
- return existing ?? emptyEvidenceBundle(plan);
283
- }
284
- const fresh = yield* runOperations(plan, runnable, approval).pipe(Effect.catchTag("OperationFailedError", (error) => Effect.gen(function* () {
285
- const current = error.evidence === undefined
286
- ? existing
287
- : yield* mergeEvidenceBundles(plan, existing, error.evidence);
288
- return yield* failWorkflowOperation(error, workflowFailureEvidence(prefix, phase, current));
289
- })));
290
- return yield* mergeEvidenceBundles(plan, existing, fresh);
291
- });
292
- export const resumeApprovedReleaseWorkflow = Effect.fn("resumeApprovedReleaseWorkflow")(function* (plan, options) {
293
- const evidence = yield* loadWorkflowEvidence(plan);
294
- const report = summarizeReleaseStatus(plan, evidence);
295
- const blocked = report.operations.find((operation) => operation.resumeAction === "block");
296
- if (blocked !== undefined) {
297
- return yield* Effect.fail(ResumeBlockedError.make({
298
- operationId: blocked.operationId,
299
- reason: blocked.reason ?? "Resume is blocked by previous failed publish evidence."
300
- }));
301
- }
302
- const render = yield* resumePhase(plan, "render", evidence.render, renderOperations(plan), approvalForPhase("render", options), report, {});
303
- const validation = yield* resumePhase(plan, "validation", evidence.validation, validationOperations(plan), approvalForPhase("validation", options), report, { render });
304
- const execution = yield* resumePhase(plan, "execution", evidence.execution, publishOperations(plan), approvalForPhase("execution", options), report, { render, validation });
305
- const verification = yield* resumePhase(plan, "verification", evidence.verification, verificationOperations(plan), approvalForPhase("verification", options), report, { render, validation, execution });
306
- return ReleaseWorkflowEvidence.make({
307
- render,
308
- validation,
309
- execution,
310
- verification
311
- });
312
- });
313
- //# sourceMappingURL=status.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../src/planner/status.ts"],"names":[],"mappings":"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"}