@mannyc1/ts-release 0.0.2 → 0.0.3

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 +54 -14
  2. package/README.md +163 -73
  3. package/SPEC.md +38 -8
  4. package/dist/config/schema.d.ts +4 -0
  5. package/dist/config/schema.d.ts.map +1 -1
  6. package/dist/config/schema.js +13 -0
  7. package/dist/config/schema.js.map +1 -1
  8. package/dist/domain/evidence.d.ts +4 -0
  9. package/dist/domain/evidence.d.ts.map +1 -1
  10. package/dist/domain/evidence.js +4 -0
  11. package/dist/domain/evidence.js.map +1 -1
  12. package/dist/domain/operation.d.ts +1 -0
  13. package/dist/domain/operation.d.ts.map +1 -1
  14. package/dist/domain/operation.js +116 -0
  15. package/dist/domain/operation.js.map +1 -1
  16. package/dist/domain/release.d.ts +1 -0
  17. package/dist/domain/release.d.ts.map +1 -1
  18. package/dist/domain/release.js +1 -0
  19. package/dist/domain/release.js.map +1 -1
  20. package/dist/host/http-live.d.ts.map +1 -1
  21. package/dist/host/http-live.js +3 -0
  22. package/dist/host/http-live.js.map +1 -1
  23. package/dist/host/http.d.ts +3 -1
  24. package/dist/host/http.d.ts.map +1 -1
  25. package/dist/host/http.js +3 -1
  26. package/dist/host/http.js.map +1 -1
  27. package/dist/host/test.d.ts +1 -0
  28. package/dist/host/test.d.ts.map +1 -1
  29. package/dist/host/test.js +24 -7
  30. package/dist/host/test.js.map +1 -1
  31. package/dist/internal/workspace-path.d.ts +16 -0
  32. package/dist/internal/workspace-path.d.ts.map +1 -0
  33. package/dist/internal/workspace-path.js +33 -0
  34. package/dist/internal/workspace-path.js.map +1 -0
  35. package/dist/planner/artifact-inventory.d.ts.map +1 -1
  36. package/dist/planner/artifact-inventory.js +22 -3
  37. package/dist/planner/artifact-inventory.js.map +1 -1
  38. package/dist/planner/create-release-plan.d.ts +1 -1
  39. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  40. package/dist/planner/evidence-recorder.js +22 -4
  41. package/dist/planner/evidence-recorder.js.map +1 -1
  42. package/dist/planner/executor.d.ts +4 -4
  43. package/dist/planner/executor.d.ts.map +1 -1
  44. package/dist/planner/executor.js +36 -4
  45. package/dist/planner/executor.js.map +1 -1
  46. package/dist/planner/normalize-release.d.ts.map +1 -1
  47. package/dist/planner/normalize-release.js +11 -10
  48. package/dist/planner/normalize-release.js.map +1 -1
  49. package/dist/planner/reconcile.d.ts +1 -1
  50. package/dist/planner/reconcile.d.ts.map +1 -1
  51. package/dist/planner/reconcile.js +72 -15
  52. package/dist/planner/reconcile.js.map +1 -1
  53. package/dist/planner/release-eligibility.d.ts +4 -3
  54. package/dist/planner/release-eligibility.d.ts.map +1 -1
  55. package/dist/planner/release-eligibility.js +9 -2
  56. package/dist/planner/release-eligibility.js.map +1 -1
  57. package/dist/planner/render-plan.d.ts +10 -0
  58. package/dist/planner/render-plan.d.ts.map +1 -1
  59. package/dist/planner/render-plan.js +158 -0
  60. package/dist/planner/render-plan.js.map +1 -1
  61. package/dist/planner/status.d.ts +1 -1
  62. package/dist/planner/status.d.ts.map +1 -1
  63. package/dist/planner/status.js +8 -2
  64. package/dist/planner/status.js.map +1 -1
  65. package/dist/targets/github.d.ts.map +1 -1
  66. package/dist/targets/github.js +11 -0
  67. package/dist/targets/github.js.map +1 -1
  68. package/dist/workflows/config.d.ts +89 -17
  69. package/dist/workflows/config.d.ts.map +1 -1
  70. package/dist/workflows/config.js +131 -21
  71. package/dist/workflows/config.js.map +1 -1
  72. package/dist/workflows/diagnostics.d.ts +62 -0
  73. package/dist/workflows/diagnostics.d.ts.map +1 -0
  74. package/dist/workflows/diagnostics.js +474 -0
  75. package/dist/workflows/diagnostics.js.map +1 -0
  76. package/dist/workflows/index.d.ts +7 -0
  77. package/dist/workflows/index.d.ts.map +1 -0
  78. package/dist/workflows/index.js +6 -0
  79. package/dist/workflows/index.js.map +1 -0
  80. package/dist/workflows/init.d.ts +71 -0
  81. package/dist/workflows/init.d.ts.map +1 -0
  82. package/dist/workflows/init.js +384 -0
  83. package/dist/workflows/init.js.map +1 -0
  84. package/dist/workflows/live.d.ts +2 -0
  85. package/dist/workflows/live.d.ts.map +1 -1
  86. package/dist/workflows/live.js +2 -0
  87. package/dist/workflows/live.js.map +1 -1
  88. package/dist/workflows/options.d.ts +30 -0
  89. package/dist/workflows/options.d.ts.map +1 -0
  90. package/dist/workflows/options.js +16 -0
  91. package/dist/workflows/options.js.map +1 -0
  92. package/examples/README.md +16 -12
  93. package/examples/github-release/release.config.json +1 -0
  94. package/examples/homebrew-tap/release.config.json +1 -0
  95. package/examples/multi-target/release.config.json +5 -1
  96. package/examples/non-strict-skips/release.config.json +1 -0
  97. package/examples/npm-first-publish/release.config.json +1 -0
  98. package/examples/npm-only/release.config.json +5 -1
  99. package/examples/pypi-registry/release.config.json +1 -0
  100. package/examples/scoop-bucket/release.config.json +1 -0
  101. package/package.json +31 -24
  102. package/templates/README.md +54 -0
  103. package/templates/github-actions/plan-and-approved-execute.yml +53 -0
  104. package/templates/github-actions/plan-only.yml +30 -0
  105. package/templates/github-actions/trusted-publishing.yml +59 -0
  106. package/templates/multi-target-homebrew/release.config.json +70 -0
  107. package/templates/multi-target-scoop/release.config.json +72 -0
  108. package/templates/npm-github/release.config.json +50 -0
  109. package/templates/npm-only/release.config.json +39 -0
  110. package/dist/cli/command.d.ts +0 -4
  111. package/dist/cli/command.d.ts.map +0 -1
  112. package/dist/cli/command.js +0 -173
  113. package/dist/cli/command.js.map +0 -1
  114. package/dist/cli/main.d.ts +0 -3
  115. package/dist/cli/main.d.ts.map +0 -1
  116. package/dist/cli/main.js +0 -9
  117. package/dist/cli/main.js.map +0 -1
  118. package/dist/runtime/bun.d.ts +0 -9
  119. package/dist/runtime/bun.d.ts.map +0 -1
  120. package/dist/runtime/bun.js +0 -10
  121. package/dist/runtime/bun.js.map +0 -1
  122. package/dist/version.d.ts +0 -2
  123. package/dist/version.d.ts.map +0 -1
  124. package/dist/version.js +0 -2
  125. package/dist/version.js.map +0 -1
@@ -0,0 +1,474 @@
1
+ import * as Config from "effect/Config";
2
+ import * as Effect from "effect/Effect";
3
+ import * as FileSystem from "effect/FileSystem";
4
+ import * as Option from "effect/Option";
5
+ import * as Path from "effect/Path";
6
+ import * as Schema from "effect/Schema";
7
+ import { PlanReleaseConfigOptions, planReleaseConfig, ValidateReleaseConfigFileOptions, validateReleaseConfigFile } from "./config.js";
8
+ import { releaseConfigFields, releaseFormatField } from "./options.js";
9
+ export const ReleaseDiagnosticStatus = Schema.Literals(["ok", "warn", "fail", "info"]);
10
+ export const ReleaseDiagnosticConfidence = Schema.Literals(["confirmed", "inferred", "not-checked"]);
11
+ export const ReleaseDiagnosticsFormat = Schema.Literals(["json", "text", "markdown"]);
12
+ export const ReleaseCiProvider = Schema.Literals(["github-actions"]);
13
+ export class ReleaseDiagnosticCheck extends Schema.Class("ReleaseDiagnosticCheck")({
14
+ id: Schema.String,
15
+ targetId: Schema.optionalKey(Schema.String),
16
+ status: ReleaseDiagnosticStatus,
17
+ confidence: ReleaseDiagnosticConfidence,
18
+ message: Schema.String
19
+ }) {
20
+ }
21
+ export class ReleaseDiagnosticReport extends Schema.Class("ReleaseDiagnosticReport")({
22
+ schemaVersion: Schema.Literal("release-diagnostics/v1"),
23
+ releaseName: Schema.String,
24
+ releaseVersion: Schema.String,
25
+ checks: Schema.Array(ReleaseDiagnosticCheck)
26
+ }) {
27
+ }
28
+ export class ReleaseDiagnosticsOptions extends Schema.Class("ReleaseDiagnosticsOptions")({
29
+ root: Schema.optionalKey(Schema.String),
30
+ configPath: Schema.optionalKey(Schema.String),
31
+ target: Schema.optionalKey(Schema.String),
32
+ provider: Schema.optionalKey(ReleaseCiProvider),
33
+ workflow: Schema.optionalKey(Schema.String),
34
+ format: Schema.optionalKey(ReleaseDiagnosticsFormat),
35
+ missingCiIsNotChecked: Schema.optionalKey(Schema.Boolean)
36
+ }) {
37
+ }
38
+ const releaseDiagnosticsOptionsFromInput = (input = {}) => ReleaseDiagnosticsOptions.make({
39
+ ...releaseConfigFields(input),
40
+ ...(input.target === undefined ? {} : { target: input.target }),
41
+ ...(input.provider === undefined ? {} : { provider: input.provider }),
42
+ ...(input.workflow === undefined ? {} : { workflow: input.workflow }),
43
+ ...releaseFormatField(input),
44
+ ...(input.missingCiIsNotChecked === undefined ? {} : { missingCiIsNotChecked: input.missingCiIsNotChecked })
45
+ });
46
+ const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
47
+ const readOptionalEnv = (name) => Config.string(name).pipe(Effect.option, Effect.map(Option.getOrUndefined));
48
+ const envExists = Effect.fn("diagnostics.envExists")(function* (name) {
49
+ const value = yield* readOptionalEnv(name);
50
+ return value !== undefined;
51
+ });
52
+ const check = (input) => ReleaseDiagnosticCheck.make({
53
+ id: input.id,
54
+ ...(input.targetId === undefined ? {} : { targetId: input.targetId }),
55
+ status: input.status,
56
+ confidence: input.confidence,
57
+ message: input.message
58
+ });
59
+ const reportForPlan = (plan, checks) => ReleaseDiagnosticReport.make({
60
+ schemaVersion: "release-diagnostics/v1",
61
+ releaseName: plan.identity.name,
62
+ releaseVersion: plan.identity.version,
63
+ checks: [...checks]
64
+ });
65
+ const plannedFailure = (message) => ({
66
+ _tag: "Failed",
67
+ message
68
+ });
69
+ const plannedSuccess = (plan) => ({
70
+ _tag: "Ok",
71
+ plan
72
+ });
73
+ const targetMatches = (target, filter) => filter === undefined ||
74
+ target.id === filter ||
75
+ target._tag.toLowerCase().includes(filter.toLowerCase());
76
+ const operationsForTarget = (plan, targetId) => plan.operations.filter((operation) => operation.targetId === targetId);
77
+ const commandEnvNames = (operations) => {
78
+ const names = new Set();
79
+ for (const operation of operations) {
80
+ if ("command" in operation) {
81
+ for (const name of operation.command.requiredEnv) {
82
+ names.add(name);
83
+ }
84
+ }
85
+ if (operation._tag === "VerifyHttpOperation") {
86
+ for (const name of operation.request.requiredEnv) {
87
+ names.add(name);
88
+ }
89
+ }
90
+ }
91
+ return [...names].sort();
92
+ };
93
+ const commandExecutables = (operations) => {
94
+ const names = new Set();
95
+ for (const operation of operations) {
96
+ if ("command" in operation) {
97
+ names.add(operation.command.executable);
98
+ }
99
+ }
100
+ return [...names].sort();
101
+ };
102
+ const authChecksForPlan = Effect.fn("diagnostics.authChecksForPlan")(function* (plan, targetFilter) {
103
+ const checks = [];
104
+ for (const target of plan.targets.filter((candidate) => targetMatches(candidate, targetFilter))) {
105
+ const capability = plan.targetCapabilities.find((candidate) => candidate.targetId === target.id);
106
+ const operations = operationsForTarget(plan, target.id);
107
+ if (capability?.authRequirement === "env-token") {
108
+ for (const name of commandEnvNames(operations)) {
109
+ const present = yield* envExists(name);
110
+ checks.push(check({
111
+ id: `${target.id}:env:${name}`,
112
+ targetId: target.id,
113
+ status: present ? "ok" : "fail",
114
+ confidence: "confirmed",
115
+ message: present
116
+ ? `${target.id} requires ${name}; the variable is present.`
117
+ : `${target.id} requires ${name}; the variable is missing.`
118
+ }));
119
+ }
120
+ continue;
121
+ }
122
+ if (capability?.authRequirement === "trusted-publishing") {
123
+ const hasOidcUrl = yield* envExists("ACTIONS_ID_TOKEN_REQUEST_URL");
124
+ const hasOidcToken = yield* envExists("ACTIONS_ID_TOKEN_REQUEST_TOKEN");
125
+ checks.push(check({
126
+ id: `${target.id}:trusted-publishing`,
127
+ targetId: target.id,
128
+ status: hasOidcUrl && hasOidcToken ? "ok" : "info",
129
+ confidence: hasOidcUrl && hasOidcToken ? "confirmed" : "inferred",
130
+ message: hasOidcUrl && hasOidcToken
131
+ ? `${target.id} has GitHub Actions OIDC request environment available.`
132
+ : `${target.id} uses npm trusted publishing; provider setup is confirmed only inside GitHub Actions.`
133
+ }));
134
+ if (capability.authSetup !== undefined) {
135
+ checks.push(check({
136
+ id: `${target.id}:trusted-publishing-setup`,
137
+ targetId: target.id,
138
+ status: "info",
139
+ confidence: "inferred",
140
+ message: `${target.id} expects workflow ${capability.authSetup.workflow}, ` +
141
+ `permissions ${capability.authSetup.requiredPermissions.map((permission) => `${permission.name}: ${permission.value}`).join(", ")}, ` +
142
+ `and prerequisites ${capability.authSetup.prerequisites.join(", ")}.`
143
+ }));
144
+ }
145
+ continue;
146
+ }
147
+ const executables = commandExecutables(operations);
148
+ checks.push(check({
149
+ id: `${target.id}:cli-auth`,
150
+ targetId: target.id,
151
+ status: "info",
152
+ confidence: "inferred",
153
+ message: executables.length === 0
154
+ ? `${target.id} has no command-line authentication checks in the plan.`
155
+ : `${target.id} expects local CLI/auth readiness for: ${executables.join(", ")}.`
156
+ }));
157
+ }
158
+ if (checks.length === 0) {
159
+ checks.push(check({
160
+ id: "auth:no-targets",
161
+ status: "info",
162
+ confidence: "not-checked",
163
+ message: targetFilter === undefined
164
+ ? "No release targets were found."
165
+ : `No release target matched ${targetFilter}.`
166
+ }));
167
+ }
168
+ return checks;
169
+ });
170
+ const basename = (pathName) => {
171
+ const parts = pathName.replaceAll("\\", "/").split("/");
172
+ return parts[parts.length - 1] ?? pathName;
173
+ };
174
+ const workspacePath = (path, root, pathName) => path.isAbsolute(pathName) ? pathName : path.resolve(root, pathName);
175
+ const configRoot = (path, options) => {
176
+ if (options.root !== undefined) {
177
+ return options.root;
178
+ }
179
+ if (options.configPath !== undefined && path.isAbsolute(options.configPath)) {
180
+ return path.dirname(options.configPath);
181
+ }
182
+ return ".";
183
+ };
184
+ const planOptionsFromDiagnostics = (options) => PlanReleaseConfigOptions.make(releaseConfigFields(options));
185
+ const validationOptionsFromDiagnostics = (options) => ValidateReleaseConfigFileOptions.make(releaseConfigFields(options));
186
+ const inferredTrustedPublishingWorkflow = (plan) => {
187
+ for (const target of plan.targets) {
188
+ if (target._tag === "NpmRegistryTarget" && target.trustedPublishing !== undefined) {
189
+ return target.trustedPublishing.workflow;
190
+ }
191
+ }
192
+ return undefined;
193
+ };
194
+ const defaultWorkflowPath = (plan) => {
195
+ const workflow = inferredTrustedPublishingWorkflow(plan);
196
+ return workflow === undefined ? undefined : `.github/workflows/${workflow}`;
197
+ };
198
+ const jobBlock = (contents, jobName) => {
199
+ const lines = contents.split(/\r?\n/);
200
+ const start = lines.findIndex((line) => line === ` ${jobName}:`);
201
+ if (start < 0) {
202
+ return undefined;
203
+ }
204
+ const collected = [];
205
+ for (let index = start; index < lines.length; index += 1) {
206
+ const line = lines[index] ?? "";
207
+ if (index > start && /^ [A-Za-z0-9_-]+:\s*$/.test(line)) {
208
+ break;
209
+ }
210
+ collected.push(line);
211
+ }
212
+ return collected.join("\n");
213
+ };
214
+ const hasPermission = (block, name, value) => {
215
+ const pattern = new RegExp(`^\\s+${name}:\\s*${value}\\s*$`, "m");
216
+ return pattern.test(block);
217
+ };
218
+ const hasUploadAlways = (block) => block.includes("actions/upload-artifact") && /^\s+if:\s*always\(\)\s*$/m.test(block);
219
+ const hasTsReleaseAction = (block) => /^\s+-\s+uses:\s+(mannyc2\/ts-release-action@v1|\.\/apps\/ts-release-action)\s*$/m.test(block);
220
+ const hasYamlValue = (block, name, value) => {
221
+ const escaped = value.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
222
+ return new RegExp(`^\\s+${name}:\\s*["']?${escaped}["']?\\s*$`, "m").test(block);
223
+ };
224
+ const hasActionCommand = (block, command) => hasTsReleaseAction(block) && hasYamlValue(block, "command", command);
225
+ const hasActionTruthyInput = (block, name) => hasTsReleaseAction(block) && hasYamlValue(block, name, "true");
226
+ const hasCliPlanReview = (block) => block.includes("validate-config") && block.includes("--format markdown");
227
+ const hasActionPlanReview = (block) => hasActionCommand(block, "plan") && hasYamlValue(block, "format", "markdown");
228
+ const planJobExecutes = (block) => block.includes("--execute") ||
229
+ hasActionTruthyInput(block, "execute") ||
230
+ hasActionCommand(block, "run") ||
231
+ hasActionCommand(block, "resume") ||
232
+ hasActionCommand(block, "reconcile");
233
+ const hasCliApprovedExecution = (block) => block.includes("run") && block.includes("--execute") && block.includes("--approve-irreversible");
234
+ const hasActionApprovedExecution = (block) => hasActionCommand(block, "run") &&
235
+ hasActionTruthyInput(block, "execute") &&
236
+ hasActionTruthyInput(block, "approve-irreversible");
237
+ const hasWorkflowTrustedTarget = (plan) => plan.targets.some((target) => target._tag === "NpmRegistryTarget" && target.trustedPublishing !== undefined);
238
+ const hasGitHubReleaseTarget = (plan) => plan.targets.some((target) => target._tag === "GitHubReleaseTarget");
239
+ const ciChecksForContents = (plan, workflowPath, contents) => {
240
+ const checks = [
241
+ check({
242
+ id: "ci:workflow-file",
243
+ status: "ok",
244
+ confidence: "confirmed",
245
+ message: `Workflow file ${workflowPath} exists.`
246
+ })
247
+ ];
248
+ const expectedWorkflow = inferredTrustedPublishingWorkflow(plan);
249
+ if (expectedWorkflow !== undefined) {
250
+ const matches = basename(workflowPath) === expectedWorkflow;
251
+ checks.push(check({
252
+ id: "ci:workflow-name",
253
+ status: matches ? "ok" : "fail",
254
+ confidence: "confirmed",
255
+ message: matches
256
+ ? `Workflow filename matches trusted publishing workflow ${expectedWorkflow}.`
257
+ : `Workflow filename ${basename(workflowPath)} does not match trusted publishing workflow ${expectedWorkflow}.`
258
+ }));
259
+ }
260
+ const planJob = jobBlock(contents, "plan");
261
+ const executeJob = jobBlock(contents, "execute");
262
+ checks.push(check({
263
+ id: "ci:plan-job",
264
+ status: planJob === undefined ? "fail" : "ok",
265
+ confidence: "confirmed",
266
+ message: planJob === undefined ? "Workflow is missing a plan job." : "Workflow has a plan job."
267
+ }));
268
+ if (planJob !== undefined) {
269
+ const reviewReady = hasCliPlanReview(planJob) || hasActionPlanReview(planJob);
270
+ checks.push(check({
271
+ id: "ci:plan-job-no-execute",
272
+ status: planJobExecutes(planJob) ? "fail" : "ok",
273
+ confidence: "confirmed",
274
+ message: planJobExecutes(planJob)
275
+ ? "Plan job includes release execution."
276
+ : "Plan job does not execute release operations."
277
+ }));
278
+ checks.push(check({
279
+ id: "ci:plan-review",
280
+ status: reviewReady ? "ok" : "warn",
281
+ confidence: "confirmed",
282
+ message: reviewReady
283
+ ? "Plan job records a Markdown release plan."
284
+ : "Plan job should validate config and record a Markdown plan."
285
+ }));
286
+ checks.push(check({
287
+ id: "ci:plan-artifact",
288
+ status: hasUploadAlways(planJob) ? "ok" : "warn",
289
+ confidence: "confirmed",
290
+ message: hasUploadAlways(planJob)
291
+ ? "Plan job uploads review artifacts with if: always()."
292
+ : "Plan job should upload review artifacts with if: always()."
293
+ }));
294
+ }
295
+ checks.push(check({
296
+ id: "ci:execute-job",
297
+ status: executeJob === undefined ? "fail" : "ok",
298
+ confidence: "confirmed",
299
+ message: executeJob === undefined ? "Workflow is missing an execute job." : "Workflow has an execute job."
300
+ }));
301
+ if (executeJob !== undefined) {
302
+ checks.push(check({
303
+ id: "ci:execute-environment",
304
+ status: /^\s+environment:\s*\S+/m.test(executeJob) ? "ok" : "fail",
305
+ confidence: "confirmed",
306
+ message: /^\s+environment:\s*\S+/m.test(executeJob)
307
+ ? "Execute job is protected by a GitHub environment."
308
+ : "Execute job must configure a GitHub environment."
309
+ }));
310
+ if (hasWorkflowTrustedTarget(plan)) {
311
+ checks.push(check({
312
+ id: "ci:execute-id-token",
313
+ status: hasPermission(executeJob, "id-token", "write") ? "ok" : "fail",
314
+ confidence: "confirmed",
315
+ message: hasPermission(executeJob, "id-token", "write")
316
+ ? "Execute job grants id-token: write for trusted publishing."
317
+ : "Execute job must grant id-token: write for trusted publishing."
318
+ }));
319
+ }
320
+ if (hasGitHubReleaseTarget(plan)) {
321
+ checks.push(check({
322
+ id: "ci:execute-contents",
323
+ status: hasPermission(executeJob, "contents", "write") ? "ok" : "fail",
324
+ confidence: "confirmed",
325
+ message: hasPermission(executeJob, "contents", "write")
326
+ ? "Execute job grants contents: write for GitHub Releases."
327
+ : "Execute job must grant contents: write for GitHub Releases."
328
+ }));
329
+ }
330
+ checks.push(check({
331
+ id: "ci:execute-approval",
332
+ status: hasCliApprovedExecution(executeJob) || hasActionApprovedExecution(executeJob) ? "ok" : "fail",
333
+ confidence: "confirmed",
334
+ message: hasCliApprovedExecution(executeJob) || hasActionApprovedExecution(executeJob)
335
+ ? "Execute job runs approved release execution."
336
+ : "Execute job must run release execution with execute and irreversible approval."
337
+ }));
338
+ checks.push(check({
339
+ id: "ci:execute-evidence",
340
+ status: hasUploadAlways(executeJob) ? "ok" : "warn",
341
+ confidence: "confirmed",
342
+ message: hasUploadAlways(executeJob)
343
+ ? "Execute job uploads evidence with if: always()."
344
+ : "Execute job should upload evidence with if: always()."
345
+ }));
346
+ }
347
+ return checks;
348
+ };
349
+ const readWorkflowChecks = Effect.fn("diagnostics.readWorkflowChecks")(function* (plan, options) {
350
+ const fs = yield* FileSystem.FileSystem;
351
+ const path = yield* Path.Path;
352
+ const root = configRoot(path, options);
353
+ const workflowPath = options.workflow ?? defaultWorkflowPath(plan) ?? ".github/workflows/release.yml";
354
+ const absolutePath = workspacePath(path, root, workflowPath);
355
+ const exists = yield* fs.exists(absolutePath);
356
+ if (!exists) {
357
+ return [
358
+ check({
359
+ id: "ci:workflow-file",
360
+ status: options.missingCiIsNotChecked === true ? "info" : "fail",
361
+ confidence: "not-checked",
362
+ message: options.missingCiIsNotChecked === true
363
+ ? `Workflow file ${workflowPath} was not found; CI was not checked.`
364
+ : `Workflow file ${workflowPath} was not found.`
365
+ })
366
+ ];
367
+ }
368
+ const contents = yield* fs.readFileString(absolutePath);
369
+ return ciChecksForContents(plan, workflowPath, contents);
370
+ });
371
+ export const checkAuthReleaseConfig = Effect.fn("diagnostics.checkAuthReleaseConfig")(function* (input = {}) {
372
+ const options = releaseDiagnosticsOptionsFromInput(input);
373
+ const plan = yield* planReleaseConfig(planOptionsFromDiagnostics(options));
374
+ const checks = yield* authChecksForPlan(plan, options.target);
375
+ return reportForPlan(plan, checks);
376
+ });
377
+ export const checkCiReleaseConfig = Effect.fn("diagnostics.checkCiReleaseConfig")(function* (input = {}) {
378
+ const options = releaseDiagnosticsOptionsFromInput(input);
379
+ const plan = yield* planReleaseConfig(planOptionsFromDiagnostics(options));
380
+ const checks = yield* readWorkflowChecks(plan, options);
381
+ return reportForPlan(plan, checks);
382
+ });
383
+ export const doctorReleaseConfig = Effect.fn("diagnostics.doctorReleaseConfig")(function* (input = {}) {
384
+ const options = releaseDiagnosticsOptionsFromInput(input);
385
+ const validation = yield* validateReleaseConfigFile(validationOptionsFromDiagnostics(options)).pipe(Effect.match({
386
+ onFailure: (error) => check({
387
+ id: "config:validation",
388
+ status: "fail",
389
+ confidence: "confirmed",
390
+ message: `Config validation failed: ${formatUnknown(error)}`
391
+ }),
392
+ onSuccess: (result) => check({
393
+ id: "config:validation",
394
+ status: "ok",
395
+ confidence: "confirmed",
396
+ message: `Config ${result.path} is valid.`
397
+ })
398
+ }));
399
+ const planned = yield* planReleaseConfig(planOptionsFromDiagnostics(options)).pipe(Effect.match({
400
+ onFailure: (error) => plannedFailure(formatUnknown(error)),
401
+ onSuccess: plannedSuccess
402
+ }));
403
+ if (planned._tag === "Failed") {
404
+ return ReleaseDiagnosticReport.make({
405
+ schemaVersion: "release-diagnostics/v1",
406
+ releaseName: "unknown",
407
+ releaseVersion: "unknown",
408
+ checks: [
409
+ validation,
410
+ check({
411
+ id: "plan:construction",
412
+ status: "fail",
413
+ confidence: "confirmed",
414
+ message: `Plan construction failed: ${planned.message}`
415
+ })
416
+ ]
417
+ });
418
+ }
419
+ const authChecks = yield* authChecksForPlan(planned.plan, options.target);
420
+ const workflow = options.workflow ?? defaultWorkflowPath(planned.plan);
421
+ const ciChecks = yield* readWorkflowChecks(planned.plan, ReleaseDiagnosticsOptions.make({
422
+ ...releaseConfigFields(options),
423
+ ...(workflow === undefined ? {} : { workflow }),
424
+ missingCiIsNotChecked: true
425
+ }));
426
+ return reportForPlan(planned.plan, [
427
+ validation,
428
+ check({
429
+ id: "plan:construction",
430
+ status: "ok",
431
+ confidence: "confirmed",
432
+ message: "Release plan can be constructed."
433
+ }),
434
+ ...authChecks,
435
+ ...ciChecks
436
+ ]);
437
+ });
438
+ export const renderReleaseDiagnosticsJson = (report) => `${JSON.stringify(report, null, 2)}\n`;
439
+ export const renderReleaseDiagnosticsText = (report) => {
440
+ const lines = [
441
+ `diagnostics: ${report.releaseName}@${report.releaseVersion}`
442
+ ];
443
+ for (const item of report.checks) {
444
+ lines.push(`${item.status.padEnd(4)} ${item.confidence.padEnd(11)} ${item.id}: ${item.message}`);
445
+ }
446
+ return `${lines.join("\n")}\n`;
447
+ };
448
+ export const renderReleaseDiagnosticsMarkdown = (report) => {
449
+ const lines = [
450
+ `# Release Diagnostics ${report.releaseName}@${report.releaseVersion}`,
451
+ "",
452
+ "| Status | Confidence | Check | Message |",
453
+ "| --- | --- | --- | --- |"
454
+ ];
455
+ for (const item of report.checks) {
456
+ lines.push(`| ${item.status} | ${item.confidence} | ${item.id} | ${item.message.replaceAll("|", "\\|")} |`);
457
+ }
458
+ return `${lines.join("\n")}\n`;
459
+ };
460
+ export const renderReleaseDiagnostics = (report, format = "text") => {
461
+ switch (format) {
462
+ case "json":
463
+ return renderReleaseDiagnosticsJson(report);
464
+ case "markdown":
465
+ return renderReleaseDiagnosticsMarkdown(report);
466
+ case "text":
467
+ return renderReleaseDiagnosticsText(report);
468
+ }
469
+ };
470
+ export const checkAuth = checkAuthReleaseConfig;
471
+ export const checkCi = checkCiReleaseConfig;
472
+ export const doctor = doctorReleaseConfig;
473
+ export const render = renderReleaseDiagnostics;
474
+ //# sourceMappingURL=diagnostics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/workflows/diagnostics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ export type * from "../types/effect-internal.js";
2
+ export * as Config from "./config.js";
3
+ export * as Diagnostics from "./diagnostics.js";
4
+ export * as Evidence from "./evidence.js";
5
+ export * as Init from "./init.js";
6
+ export * as Live from "./live.js";
7
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAAA,mBAAmB,6BAA6B,CAAA;AAEhD,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
@@ -0,0 +1,6 @@
1
+ export * as Config from "./config.js";
2
+ export * as Diagnostics from "./diagnostics.js";
3
+ export * as Evidence from "./evidence.js";
4
+ export * as Init from "./init.js";
5
+ export * as Live from "./live.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/workflows/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AACrC,OAAO,KAAK,WAAW,MAAM,kBAAkB,CAAA;AAC/C,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AACzC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,WAAW,CAAA"}
@@ -0,0 +1,71 @@
1
+ import * as Effect from "effect/Effect";
2
+ import * as FileSystem from "effect/FileSystem";
3
+ import * as Path from "effect/Path";
4
+ import * as Schema from "effect/Schema";
5
+ export type * from "../types/effect-internal.js";
6
+ export declare const ReleaseInitTemplateName: Schema.Literals<readonly ["npm-only", "npm-github", "multi-target-homebrew", "multi-target-scoop"]>;
7
+ export type ReleaseInitTemplateName = typeof ReleaseInitTemplateName.Type;
8
+ export declare const ReleaseInitFormat: Schema.Literals<readonly ["json", "text"]>;
9
+ export type ReleaseInitFormat = typeof ReleaseInitFormat.Type;
10
+ declare const ReleaseInitOptions_base: Schema.Class<ReleaseInitOptions, Schema.Struct<{
11
+ readonly root: Schema.optionalKey<Schema.String>;
12
+ readonly configPath: Schema.optionalKey<Schema.String>;
13
+ readonly template: Schema.optionalKey<Schema.Literals<readonly ["npm-only", "npm-github", "multi-target-homebrew", "multi-target-scoop"]>>;
14
+ readonly package: Schema.optionalKey<Schema.String>;
15
+ readonly repo: Schema.optionalKey<Schema.String>;
16
+ readonly workflow: Schema.optionalKey<Schema.String>;
17
+ readonly tap: Schema.optionalKey<Schema.String>;
18
+ readonly bucket: Schema.optionalKey<Schema.String>;
19
+ readonly githubActions: Schema.optionalKey<Schema.Boolean>;
20
+ readonly write: Schema.optionalKey<Schema.Boolean>;
21
+ readonly overwrite: Schema.optionalKey<Schema.Boolean>;
22
+ readonly format: Schema.optionalKey<Schema.Literals<readonly ["json", "text"]>>;
23
+ }>, {}>;
24
+ export declare class ReleaseInitOptions extends ReleaseInitOptions_base {
25
+ }
26
+ export interface ReleaseInitInput {
27
+ readonly root?: string | undefined;
28
+ readonly configPath?: string | undefined;
29
+ readonly template?: ReleaseInitTemplateName | undefined;
30
+ readonly package?: string | undefined;
31
+ readonly repo?: string | undefined;
32
+ readonly workflow?: string | undefined;
33
+ readonly tap?: string | undefined;
34
+ readonly bucket?: string | undefined;
35
+ readonly githubActions?: boolean | undefined;
36
+ readonly write?: boolean | undefined;
37
+ readonly overwrite?: boolean | undefined;
38
+ readonly format?: ReleaseInitFormat | undefined;
39
+ }
40
+ declare const ReleaseInitProposedFile_base: Schema.Class<ReleaseInitProposedFile, Schema.Struct<{
41
+ readonly path: Schema.String;
42
+ readonly contents: Schema.String;
43
+ readonly alreadyExists: Schema.Boolean;
44
+ }>, {}>;
45
+ export declare class ReleaseInitProposedFile extends ReleaseInitProposedFile_base {
46
+ }
47
+ declare const ReleaseInitPlan_base: Schema.Class<ReleaseInitPlan, Schema.Struct<{
48
+ readonly schemaVersion: Schema.Literal<"release-init/v1">;
49
+ readonly template: Schema.Literals<readonly ["npm-only", "npm-github", "multi-target-homebrew", "multi-target-scoop"]>;
50
+ readonly files: Schema.$Array<typeof ReleaseInitProposedFile>;
51
+ readonly nextCommand: Schema.String;
52
+ }>, {}>;
53
+ export declare class ReleaseInitPlan extends ReleaseInitPlan_base {
54
+ }
55
+ declare const ReleaseInitWriteError_base: Schema.Class<ReleaseInitWriteError, Schema.TaggedStruct<"ReleaseInitWriteError", {
56
+ readonly path: Schema.String;
57
+ readonly reason: Schema.String;
58
+ }>, import("effect/Cause").YieldableError>;
59
+ export declare class ReleaseInitWriteError extends ReleaseInitWriteError_base {
60
+ }
61
+ export declare const TS_RELEASE_ACTION_REFERENCE = "mannyc2/ts-release-action@v1";
62
+ export declare const renderGithubActionsTrustedPublishingWorkflow: (configPath: string) => string;
63
+ export declare const planReleaseInit: (input?: ReleaseInitInput | undefined) => Effect.Effect<ReleaseInitPlan, import("effect/PlatformError").PlatformError | ReleaseInitWriteError, FileSystem.FileSystem | Path.Path>;
64
+ export declare const runReleaseInit: (input?: ReleaseInitInput | undefined) => Effect.Effect<ReleaseInitPlan, import("effect/PlatformError").PlatformError | ReleaseInitWriteError, FileSystem.FileSystem | Path.Path>;
65
+ export declare const renderReleaseInitJson: (plan: ReleaseInitPlan) => string;
66
+ export declare const renderReleaseInitText: (plan: ReleaseInitPlan) => string;
67
+ export declare const renderReleaseInitPlan: (plan: ReleaseInitPlan, format?: ReleaseInitFormat) => string;
68
+ export declare const plan: (input?: ReleaseInitInput | undefined) => Effect.Effect<ReleaseInitPlan, import("effect/PlatformError").PlatformError | ReleaseInitWriteError, FileSystem.FileSystem | Path.Path>;
69
+ export declare const run: (input?: ReleaseInitInput | undefined) => Effect.Effect<ReleaseInitPlan, import("effect/PlatformError").PlatformError | ReleaseInitWriteError, FileSystem.FileSystem | Path.Path>;
70
+ export declare const renderPlan: (plan: ReleaseInitPlan, format?: ReleaseInitFormat) => string;
71
+ //# sourceMappingURL=init.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/workflows/init.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,KAAK,IAAI,MAAM,aAAa,CAAA;AACnC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAUvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,uBAAuB,qGAKlC,CAAA;AACF,MAAM,MAAM,uBAAuB,GAAG,OAAO,uBAAuB,CAAC,IAAI,CAAA;AAEzE,eAAO,MAAM,iBAAiB,4CAAoC,CAAA;AAClE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;AAE7D,qBAAa,kBAAmB,SAAQ,uBAatC;CAAG;AAEL,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,QAAQ,CAAC,EAAE,uBAAuB,GAAG,SAAS,CAAA;IACvD,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IAClC,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACtC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACjC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,aAAa,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IAC5C,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACpC,QAAQ,CAAC,SAAS,CAAC,EAAE,OAAO,GAAG,SAAS,CAAA;IACxC,QAAQ,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,SAAS,CAAA;CAChD;;;;;;AAED,qBAAa,uBAAwB,SAAQ,4BAI3C;CAAG;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAKnC;CAAG;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,eAAO,MAAM,2BAA2B,iCAAiC,CAAA;AAsLzE,eAAO,MAAM,4CAA4C,GAAI,YAAY,MAAM,KAAG,MA8DpE,CAAA;AAsFd,eAAO,MAAM,eAAe,mLAgC1B,CAAA;AAsBF,eAAO,MAAM,cAAc,mLAgBzB,CAAA;AAEF,eAAO,MAAM,qBAAqB,GAAI,MAAM,eAAe,KAAG,MACxB,CAAA;AAEtC,eAAO,MAAM,qBAAqB,GAAI,MAAM,eAAe,KAAG,MAY7D,CAAA;AAED,eAAO,MAAM,qBAAqB,GAAI,MAAM,eAAe,EAAE,SAAQ,iBAA0B,KAAG,MACnB,CAAA;AAE/E,eAAO,MAAM,IAAI,mLAAkB,CAAA;AACnC,eAAO,MAAM,GAAG,mLAAiB,CAAA;AACjC,eAAO,MAAM,UAAU,SALqB,eAAe,WAAU,iBAAiB,KAAY,MAKnD,CAAA"}