@mannyc1/ts-release 0.0.0 → 0.0.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 (160) hide show
  1. package/ARCHITECTURE.md +53 -0
  2. package/README.md +243 -43
  3. package/SPEC.md +8 -1
  4. package/dist/cli/command.d.ts +1 -1
  5. package/dist/cli/command.d.ts.map +1 -1
  6. package/dist/cli/command.js +116 -33
  7. package/dist/cli/command.js.map +1 -1
  8. package/dist/cli/main.js +3 -6
  9. package/dist/cli/main.js.map +1 -1
  10. package/dist/domain/evidence.d.ts +49 -3
  11. package/dist/domain/evidence.d.ts.map +1 -1
  12. package/dist/domain/evidence.js +43 -2
  13. package/dist/domain/evidence.js.map +1 -1
  14. package/dist/domain/operation.d.ts +56 -2
  15. package/dist/domain/operation.d.ts.map +1 -1
  16. package/dist/domain/operation.js +78 -2
  17. package/dist/domain/operation.js.map +1 -1
  18. package/dist/domain/release.d.ts +4 -4
  19. package/dist/domain/remote-state.d.ts +90 -0
  20. package/dist/domain/remote-state.d.ts.map +1 -0
  21. package/dist/domain/remote-state.js +85 -0
  22. package/dist/domain/remote-state.js.map +1 -0
  23. package/dist/domain/status.d.ts +43 -0
  24. package/dist/domain/status.d.ts.map +1 -0
  25. package/dist/domain/status.js +50 -0
  26. package/dist/domain/status.js.map +1 -0
  27. package/dist/domain/target.d.ts +63 -3
  28. package/dist/domain/target.d.ts.map +1 -1
  29. package/dist/domain/target.js +75 -5
  30. package/dist/domain/target.js.map +1 -1
  31. package/dist/host/host.d.ts +7 -23
  32. package/dist/host/host.d.ts.map +1 -1
  33. package/dist/host/host.js +3 -22
  34. package/dist/host/host.js.map +1 -1
  35. package/dist/host/http-live.d.ts +6 -0
  36. package/dist/host/http-live.d.ts.map +1 -0
  37. package/dist/host/http-live.js +82 -0
  38. package/dist/host/http-live.js.map +1 -0
  39. package/dist/host/http.d.ts +40 -0
  40. package/dist/host/http.d.ts.map +1 -0
  41. package/dist/host/http.js +56 -0
  42. package/dist/host/http.js.map +1 -0
  43. package/dist/host/platform.d.ts +10 -0
  44. package/dist/host/platform.d.ts.map +1 -0
  45. package/dist/host/platform.js +121 -0
  46. package/dist/host/platform.js.map +1 -0
  47. package/dist/host/test.d.ts +6 -3
  48. package/dist/host/test.d.ts.map +1 -1
  49. package/dist/host/test.js +111 -25
  50. package/dist/host/test.js.map +1 -1
  51. package/dist/planner/artifact-inventory.d.ts +9 -0
  52. package/dist/planner/artifact-inventory.d.ts.map +1 -0
  53. package/dist/planner/artifact-inventory.js +66 -0
  54. package/dist/planner/artifact-inventory.js.map +1 -0
  55. package/dist/planner/create-release-plan.d.ts +1 -1
  56. package/dist/planner/create-release-plan.d.ts.map +1 -1
  57. package/dist/planner/errors.d.ts +41 -3
  58. package/dist/planner/errors.d.ts.map +1 -1
  59. package/dist/planner/errors.js +35 -3
  60. package/dist/planner/errors.js.map +1 -1
  61. package/dist/planner/evidence-recorder.d.ts +16 -8
  62. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  63. package/dist/planner/evidence-recorder.js +244 -17
  64. package/dist/planner/evidence-recorder.js.map +1 -1
  65. package/dist/planner/executor.d.ts +54 -15
  66. package/dist/planner/executor.d.ts.map +1 -1
  67. package/dist/planner/executor.js +117 -38
  68. package/dist/planner/executor.js.map +1 -1
  69. package/dist/planner/normalize-release.d.ts +2 -2
  70. package/dist/planner/normalize-release.d.ts.map +1 -1
  71. package/dist/planner/normalize-release.js +80 -42
  72. package/dist/planner/normalize-release.js.map +1 -1
  73. package/dist/planner/reconcile.d.ts +17 -0
  74. package/dist/planner/reconcile.d.ts.map +1 -0
  75. package/dist/planner/reconcile.js +280 -0
  76. package/dist/planner/reconcile.js.map +1 -0
  77. package/dist/planner/release-eligibility.d.ts +33 -0
  78. package/dist/planner/release-eligibility.d.ts.map +1 -0
  79. package/dist/planner/release-eligibility.js +172 -0
  80. package/dist/planner/release-eligibility.js.map +1 -0
  81. package/dist/planner/render-plan.d.ts.map +1 -1
  82. package/dist/planner/render-plan.js +30 -0
  83. package/dist/planner/render-plan.js.map +1 -1
  84. package/dist/planner/status.d.ts +40 -0
  85. package/dist/planner/status.d.ts.map +1 -0
  86. package/dist/planner/status.js +336 -0
  87. package/dist/planner/status.js.map +1 -0
  88. package/dist/runtime/bun.d.ts +9 -0
  89. package/dist/runtime/bun.d.ts.map +1 -0
  90. package/dist/runtime/bun.js +10 -0
  91. package/dist/runtime/bun.js.map +1 -0
  92. package/dist/targets/adapter-helpers.d.ts +31 -0
  93. package/dist/targets/adapter-helpers.d.ts.map +1 -0
  94. package/dist/targets/adapter-helpers.js +67 -0
  95. package/dist/targets/adapter-helpers.js.map +1 -0
  96. package/dist/targets/adapter.d.ts +3 -1
  97. package/dist/targets/adapter.d.ts.map +1 -1
  98. package/dist/targets/github.d.ts +2 -2
  99. package/dist/targets/github.d.ts.map +1 -1
  100. package/dist/targets/github.js +74 -83
  101. package/dist/targets/github.js.map +1 -1
  102. package/dist/targets/homebrew.d.ts +2 -2
  103. package/dist/targets/homebrew.d.ts.map +1 -1
  104. package/dist/targets/homebrew.js +45 -75
  105. package/dist/targets/homebrew.js.map +1 -1
  106. package/dist/targets/live.d.ts.map +1 -1
  107. package/dist/targets/live.js +10 -0
  108. package/dist/targets/live.js.map +1 -1
  109. package/dist/targets/npm.d.ts +2 -3
  110. package/dist/targets/npm.d.ts.map +1 -1
  111. package/dist/targets/npm.js +90 -55
  112. package/dist/targets/npm.js.map +1 -1
  113. package/dist/targets/pypi.d.ts +11 -0
  114. package/dist/targets/pypi.d.ts.map +1 -0
  115. package/dist/targets/pypi.js +115 -0
  116. package/dist/targets/pypi.js.map +1 -0
  117. package/dist/targets/registry.d.ts +3 -3
  118. package/dist/targets/registry.d.ts.map +1 -1
  119. package/dist/targets/scoop.d.ts +11 -0
  120. package/dist/targets/scoop.d.ts.map +1 -0
  121. package/dist/targets/scoop.js +93 -0
  122. package/dist/targets/scoop.js.map +1 -0
  123. package/dist/version.d.ts +2 -0
  124. package/dist/version.d.ts.map +1 -0
  125. package/dist/version.js +2 -0
  126. package/dist/version.js.map +1 -0
  127. package/dist/workflows/config.d.ts +81 -0
  128. package/dist/workflows/config.d.ts.map +1 -0
  129. package/dist/workflows/config.js +191 -0
  130. package/dist/workflows/config.js.map +1 -0
  131. package/dist/workflows/evidence.d.ts +21 -0
  132. package/dist/workflows/evidence.d.ts.map +1 -0
  133. package/dist/workflows/evidence.js +45 -0
  134. package/dist/workflows/evidence.js.map +1 -0
  135. package/dist/workflows/live.d.ts +7 -0
  136. package/dist/workflows/live.d.ts.map +1 -0
  137. package/dist/workflows/live.js +5 -0
  138. package/dist/workflows/live.js.map +1 -0
  139. package/examples/README.md +20 -3
  140. package/examples/github-release/release.config.json +2 -1
  141. package/examples/multi-target/artifacts/release-example-multi-target-0.1.0.tgz +1 -0
  142. package/examples/multi-target/index.js +1 -0
  143. package/examples/multi-target/package.json +7 -0
  144. package/examples/multi-target/release.config.json +67 -0
  145. package/examples/non-strict-skips/release.config.json +1 -0
  146. package/examples/npm-first-publish/release.config.json +32 -0
  147. package/examples/npm-only/release.config.json +6 -1
  148. package/examples/pypi-registry/artifacts/release_example_pypi-0.1.0-py3-none-any.whl +1 -0
  149. package/examples/pypi-registry/release.config.json +30 -0
  150. package/examples/scoop-bucket/artifacts/release-example-scoop-0.1.0.zip +1 -0
  151. package/examples/scoop-bucket/release.config.json +36 -0
  152. package/package.json +48 -9
  153. package/dist/cli/programmatic.d.ts +0 -25
  154. package/dist/cli/programmatic.d.ts.map +0 -1
  155. package/dist/cli/programmatic.js +0 -48
  156. package/dist/cli/programmatic.js.map +0 -1
  157. package/dist/host/bun.d.ts +0 -9
  158. package/dist/host/bun.d.ts.map +0 -1
  159. package/dist/host/bun.js +0 -156
  160. package/dist/host/bun.js.map +0 -1
@@ -1,72 +1,103 @@
1
1
  import * as Console from "effect/Console";
2
2
  import * as Effect from "effect/Effect";
3
+ import * as FileSystem from "effect/FileSystem";
4
+ import * as Path from "effect/Path";
3
5
  import * as Command from "effect/unstable/cli/Command";
4
6
  import * as Flag from "effect/unstable/cli/Flag";
5
- import { parseReleaseIntent } from "../config/load.js";
7
+ import { checkReleaseConfigEligibility, executeReleaseConfig, PlanReleaseConfigOptions, planReleaseConfig, reconcileReleaseConfig, ReleaseConfigOptions, ReleaseExecutionOptions, ReleaseEligibilityConfigOptions, ReleaseReconcileConfigOptions, ReleaseResumeConfigOptions, renderReleaseConfig, RenderReleaseConfigOptions, renderReleaseConfigPlan, renderReleaseStatus, resumeReleaseConfig, runReleaseConfig, ReleaseStatusOptions, validateReleaseConfig, verifyReleaseConfig } from "../workflows/config.js";
6
8
  import { DEFAULT_CONFIG_PATH } from "../config/schema.js";
7
- import { ExecutionApproval } from "../domain/operation.js";
8
- import { ReleaseHost } from "../host/host.js";
9
- import { createReleasePlan } from "../planner/create-release-plan.js";
10
- import { executePlan, renderPlan, validatePlan, verifyPlan } from "../planner/executor.js";
11
- import { renderEvidenceJson, writeEvidenceBundle } from "../planner/evidence-recorder.js";
12
- import { renderPlanJson, renderPlanText } from "../planner/render-plan.js";
9
+ import { renderEvidenceJson } from "../planner/evidence-recorder.js";
10
+ import { renderReleaseEligibilityJson, renderReleaseEligibilityText } from "../planner/release-eligibility.js";
11
+ import { writeFailedOperationEvidence, writeNamedEvidence, writeWorkflowEvidence as persistWorkflowEvidence } from "../workflows/evidence.js";
13
12
  const configFlag = Flag.string("config").pipe(Flag.withDefault(DEFAULT_CONFIG_PATH));
14
13
  const outputFlag = Flag.string("out").pipe(Flag.withDefault(""));
15
14
  const formatFlag = Flag.choice("format", ["json", "text"]).pipe(Flag.withDefault("json"));
15
+ const statusFormatFlag = Flag.choice("format", ["json", "text"]).pipe(Flag.withDefault("text"));
16
16
  const executeFlag = Flag.boolean("execute").pipe(Flag.withDefault(false));
17
17
  const approveIrreversibleFlag = Flag.boolean("approve-irreversible").pipe(Flag.withDefault(false));
18
- const loadPlanFromConfig = Effect.fn("loadPlanFromConfig")(function* (configPath) {
19
- const host = yield* ReleaseHost;
20
- const contents = yield* host.readFileString(configPath);
21
- const intent = yield* parseReleaseIntent(contents, configPath);
22
- return yield* createReleasePlan(intent, ".", configPath);
18
+ const writeFile = Effect.fn("cli.writeFile")(function* (pathName, contents) {
19
+ const fs = yield* FileSystem.FileSystem;
20
+ const path = yield* Path.Path;
21
+ yield* fs.makeDirectory(path.dirname(pathName), { recursive: true });
22
+ yield* fs.writeFileString(pathName, contents);
23
23
  });
24
24
  const writeOrPrint = Effect.fn("writeOrPrint")(function* (out, contents) {
25
25
  if (out.length === 0) {
26
26
  return yield* Console.log(contents.trimEnd());
27
27
  }
28
- const host = yield* ReleaseHost;
29
- return yield* host.writeFileString(out, contents);
28
+ return yield* writeFile(out, contents);
30
29
  });
31
30
  const planCommand = Command.make("plan", {
32
31
  config: configFlag,
33
32
  out: outputFlag,
34
33
  format: formatFlag
35
34
  }, Effect.fn("cli.plan")(function* ({ config, out, format }) {
36
- const plan = yield* loadPlanFromConfig(config);
37
- const contents = format === "json" ? renderPlanJson(plan) : renderPlanText(plan);
35
+ const contents = yield* renderReleaseConfigPlan(PlanReleaseConfigOptions.make({
36
+ configPath: config,
37
+ format
38
+ }));
38
39
  yield* writeOrPrint(out, contents);
39
40
  }));
40
41
  const printCommand = Command.make("print", {
41
42
  config: configFlag
42
43
  }, Effect.fn("cli.print")(function* ({ config }) {
43
- const plan = yield* loadPlanFromConfig(config);
44
- yield* Console.log(renderPlanText(plan).trimEnd());
44
+ const contents = yield* renderReleaseConfigPlan(PlanReleaseConfigOptions.make({
45
+ configPath: config,
46
+ format: "text"
47
+ }));
48
+ yield* Console.log(contents.trimEnd());
49
+ }));
50
+ const statusCommand = Command.make("status", {
51
+ config: configFlag,
52
+ format: statusFormatFlag
53
+ }, Effect.fn("cli.status")(function* ({ config, format }) {
54
+ const contents = yield* renderReleaseStatus(ReleaseStatusOptions.make({
55
+ configPath: config,
56
+ format
57
+ }));
58
+ yield* Console.log(contents.trimEnd());
59
+ }));
60
+ const eligibilityCommand = Command.make("eligibility", {
61
+ config: configFlag,
62
+ format: statusFormatFlag
63
+ }, Effect.fn("cli.eligibility")(function* ({ config, format }) {
64
+ const decision = yield* checkReleaseConfigEligibility(ReleaseEligibilityConfigOptions.make({
65
+ configPath: config
66
+ }));
67
+ const contents = format === "json"
68
+ ? renderReleaseEligibilityJson(decision)
69
+ : renderReleaseEligibilityText(decision);
70
+ yield* Console.log(contents.trimEnd());
45
71
  }));
46
- const evidencePath = (plan, name) => `${plan.evidenceDirectory}/${name}.json`;
47
72
  const writeAndPrintEvidence = Effect.fn("writeAndPrintEvidence")(function* (plan, name, evidence) {
48
- yield* writeEvidenceBundle(evidencePath(plan, name), evidence);
73
+ yield* writeNamedEvidence(plan, name, evidence);
49
74
  yield* Console.log(renderEvidenceJson(evidence).trimEnd());
50
75
  });
51
76
  const writeFailedEvidence = Effect.fn("writeFailedEvidence")(function* (plan, name, error) {
52
- if (error.evidence !== undefined) {
53
- yield* writeAndPrintEvidence(plan, name, error.evidence);
77
+ const path = yield* writeFailedOperationEvidence(plan, name, error);
78
+ if (path !== undefined && error.evidence !== undefined) {
79
+ yield* Console.log(renderEvidenceJson(error.evidence).trimEnd());
54
80
  }
55
81
  });
82
+ const writeWorkflowEvidence = Effect.fn("writeWorkflowEvidence")(function* (plan, evidence) {
83
+ const paths = yield* persistWorkflowEvidence(plan, evidence);
84
+ yield* Console.log(`${JSON.stringify({ evidence: paths }, null, 2)}`);
85
+ });
56
86
  const validateCommand = Command.make("validate", {
57
87
  config: configFlag
58
88
  }, Effect.fn("cli.validate")(function* ({ config }) {
59
- const plan = yield* loadPlanFromConfig(config);
60
- const evidence = yield* validatePlan(plan).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "validation", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
89
+ const options = ReleaseConfigOptions.make({ configPath: config });
90
+ const plan = yield* planReleaseConfig(options);
91
+ const evidence = yield* validateReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "validation", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
61
92
  yield* writeAndPrintEvidence(plan, "validation", evidence);
62
93
  }));
63
94
  const renderCommand = Command.make("render", {
64
95
  config: configFlag,
65
96
  execute: executeFlag
66
97
  }, Effect.fn("cli.render")(function* ({ config, execute }) {
67
- const plan = yield* loadPlanFromConfig(config);
68
- const approval = ExecutionApproval.make({ execute, approveIrreversible: false });
69
- const evidence = yield* renderPlan(plan, approval).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "render", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
98
+ const options = RenderReleaseConfigOptions.make({ configPath: config, execute });
99
+ const plan = yield* planReleaseConfig(options);
100
+ const evidence = yield* renderReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "render", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
70
101
  yield* writeAndPrintEvidence(plan, "render", evidence);
71
102
  }));
72
103
  const executeCommand = Command.make("execute", {
@@ -74,17 +105,69 @@ const executeCommand = Command.make("execute", {
74
105
  execute: executeFlag,
75
106
  approveIrreversible: approveIrreversibleFlag
76
107
  }, Effect.fn("cli.execute")(function* ({ config, execute, approveIrreversible }) {
77
- const plan = yield* loadPlanFromConfig(config);
78
- const approval = ExecutionApproval.make({ execute, approveIrreversible });
79
- const evidence = yield* executePlan(plan, approval).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "execution", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
108
+ const options = ReleaseExecutionOptions.make({ configPath: config, execute, approveIrreversible });
109
+ const plan = yield* planReleaseConfig(options);
110
+ const evidence = yield* executeReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "execution", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
80
111
  yield* writeAndPrintEvidence(plan, "execution", evidence);
81
112
  }));
82
113
  const verifyCommand = Command.make("verify", {
83
114
  config: configFlag
84
115
  }, Effect.fn("cli.verify")(function* ({ config }) {
85
- const plan = yield* loadPlanFromConfig(config);
86
- const evidence = yield* verifyPlan(plan).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "verification", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
116
+ const options = ReleaseConfigOptions.make({ configPath: config });
117
+ const plan = yield* planReleaseConfig(options);
118
+ const evidence = yield* verifyReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "verification", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
87
119
  yield* writeAndPrintEvidence(plan, "verification", evidence);
88
120
  }));
89
- export const cli = Command.make("release").pipe(Command.withSubcommands([planCommand, renderCommand, validateCommand, printCommand, executeCommand, verifyCommand]));
121
+ const runCommand = Command.make("run", {
122
+ config: configFlag,
123
+ execute: executeFlag,
124
+ approveIrreversible: approveIrreversibleFlag
125
+ }, Effect.fn("cli.run")(function* ({ config, execute, approveIrreversible }) {
126
+ const options = ReleaseExecutionOptions.make({ configPath: config, execute, approveIrreversible });
127
+ const plan = yield* planReleaseConfig(options);
128
+ const evidence = yield* runReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => {
129
+ if (error.workflowEvidence === undefined) {
130
+ return Effect.fail(error);
131
+ }
132
+ return writeWorkflowEvidence(plan, error.workflowEvidence).pipe(Effect.flatMap(() => Effect.fail(error)));
133
+ }));
134
+ yield* writeWorkflowEvidence(plan, evidence);
135
+ }));
136
+ const resumeCommand = Command.make("resume", {
137
+ config: configFlag,
138
+ execute: executeFlag,
139
+ approveIrreversible: approveIrreversibleFlag
140
+ }, Effect.fn("cli.resume")(function* ({ config, execute, approveIrreversible }) {
141
+ const options = ReleaseResumeConfigOptions.make({ configPath: config, execute, approveIrreversible });
142
+ const plan = yield* planReleaseConfig(options);
143
+ const evidence = yield* resumeReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => {
144
+ if (error.workflowEvidence === undefined) {
145
+ return Effect.fail(error);
146
+ }
147
+ return writeWorkflowEvidence(plan, error.workflowEvidence).pipe(Effect.flatMap(() => Effect.fail(error)));
148
+ }));
149
+ yield* writeWorkflowEvidence(plan, evidence);
150
+ }));
151
+ const reconcileCommand = Command.make("reconcile", {
152
+ config: configFlag,
153
+ execute: executeFlag
154
+ }, Effect.fn("cli.reconcile")(function* ({ config, execute }) {
155
+ const options = ReleaseReconcileConfigOptions.make({ configPath: config, execute });
156
+ const plan = yield* planReleaseConfig(options);
157
+ const evidence = yield* reconcileReleaseConfig(options).pipe(Effect.catchTag("OperationFailedError", (error) => writeFailedEvidence(plan, "reconciliation", error).pipe(Effect.flatMap(() => Effect.fail(error)))));
158
+ yield* writeAndPrintEvidence(plan, "reconciliation", evidence);
159
+ }));
160
+ export const cli = Command.make("release").pipe(Command.withSubcommands([
161
+ planCommand,
162
+ renderCommand,
163
+ validateCommand,
164
+ printCommand,
165
+ statusCommand,
166
+ eligibilityCommand,
167
+ executeCommand,
168
+ verifyCommand,
169
+ runCommand,
170
+ resumeCommand,
171
+ reconcileCommand
172
+ ]));
90
173
  //# sourceMappingURL=command.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/cli/command.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/cli/command.ts"],"names":[],"mappings":"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"}
package/dist/cli/main.js CHANGED
@@ -1,12 +1,9 @@
1
1
  #!/usr/bin/env bun
2
2
  import * as BunRuntime from "@effect/platform-bun/BunRuntime";
3
- import * as BunServices from "@effect/platform-bun/BunServices";
4
3
  import * as Effect from "effect/Effect";
5
- import * as Layer from "effect/Layer";
6
4
  import * as Command from "effect/unstable/cli/Command";
7
- import { BunReleaseHostLayer } from "../host/bun.js";
8
- import { LiveTargetRegistryLayer } from "../targets/live.js";
5
+ import { BunReleaseWorkflowRuntimeLayer } from "../runtime/bun.js";
6
+ import { RELEASE_VERSION } from "../version.js";
9
7
  import { cli } from "./command.js";
10
- const MainLayer = Layer.mergeAll(BunReleaseHostLayer, LiveTargetRegistryLayer, BunServices.layer);
11
- Command.run(cli, { version: "0.0.0" }).pipe(Effect.provide(MainLayer), BunRuntime.runMain);
8
+ Command.run(cli, { version: RELEASE_VERSION }).pipe(Effect.provide(BunReleaseWorkflowRuntimeLayer), BunRuntime.runMain);
12
9
  //# sourceMappingURL=main.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,WAAW,MAAM,kCAAkC,CAAA;AAC/D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,KAAK,MAAM,cAAc,CAAA;AACrC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAA;AACpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAA;AAC5D,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAC9B,mBAAmB,EACnB,uBAAuB,EACvB,WAAW,CAAC,KAAK,CAClB,CAAA;AAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,IAAI,CACzC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EACzB,UAAU,CAAC,OAAO,CACnB,CAAA"}
1
+ {"version":3,"file":"main.js","sourceRoot":"","sources":["../../src/cli/main.ts"],"names":[],"mappings":";AAEA,OAAO,KAAK,UAAU,MAAM,iCAAiC,CAAA;AAC7D,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,OAAO,MAAM,6BAA6B,CAAA;AACtD,OAAO,EAAE,8BAA8B,EAAE,MAAM,mBAAmB,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAA;AAElC,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,eAAe,EAAE,CAAC,CAAC,IAAI,CACjD,MAAM,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAC9C,UAAU,CAAC,OAAO,CACnB,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import * as Schema from "effect/Schema";
2
- import { CommandSpec } from "./operation.js";
2
+ import { CommandSpec, HttpEnvHeader, HttpHeader } from "./operation.js";
3
3
  export type * from "../types/effect-internal.js";
4
4
  export declare const EvidenceId: Schema.String;
5
5
  export type EvidenceId = typeof EvidenceId.Type;
@@ -23,6 +23,36 @@ declare const CommandEvidence_base: Schema.Class<CommandEvidence, Schema.Struct<
23
23
  }>, {}>;
24
24
  export declare class CommandEvidence extends CommandEvidence_base {
25
25
  }
26
+ declare const HttpRequestEvidence_base: Schema.Class<HttpRequestEvidence, Schema.Struct<{
27
+ readonly method: Schema.Literals<readonly ["GET", "HEAD"]>;
28
+ readonly url: Schema.String;
29
+ readonly headers: Schema.$Array<typeof HttpHeader>;
30
+ readonly envHeaders: Schema.$Array<typeof HttpEnvHeader>;
31
+ }>, {}>;
32
+ export declare class HttpRequestEvidence extends HttpRequestEvidence_base {
33
+ }
34
+ declare const HttpCheckEvidence_base: Schema.Class<HttpCheckEvidence, Schema.Struct<{
35
+ readonly description: Schema.String;
36
+ readonly passed: Schema.Boolean;
37
+ }>, {}>;
38
+ export declare class HttpCheckEvidence extends HttpCheckEvidence_base {
39
+ }
40
+ declare const HttpEvidence_base: Schema.Class<HttpEvidence, Schema.Struct<{
41
+ readonly id: Schema.String;
42
+ readonly operationId: Schema.String;
43
+ readonly targetId: Schema.optionalKey<Schema.String>;
44
+ readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
45
+ readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
46
+ readonly request: typeof HttpRequestEvidence;
47
+ readonly responseStatus: Schema.optionalKey<Schema.Number>;
48
+ readonly checks: Schema.$Array<typeof HttpCheckEvidence>;
49
+ readonly message: Schema.String;
50
+ readonly startedAt: Schema.String;
51
+ readonly endedAt: Schema.String;
52
+ readonly durationMillis: Schema.Number;
53
+ }>, {}>;
54
+ export declare class HttpEvidence extends HttpEvidence_base {
55
+ }
26
56
  declare const ValidationEvidence_base: Schema.Class<ValidationEvidence, Schema.Struct<{
27
57
  readonly id: Schema.String;
28
58
  readonly targetId: Schema.optionalKey<Schema.String>;
@@ -45,14 +75,30 @@ declare const ExecutionEvidence_base: Schema.Class<ExecutionEvidence, Schema.Str
45
75
  }>, {}>;
46
76
  export declare class ExecutionEvidence extends ExecutionEvidence_base {
47
77
  }
48
- export declare const EvidenceRecord: Schema.Union<readonly [typeof CommandEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>;
78
+ export declare const EvidenceRecord: Schema.Union<readonly [typeof CommandEvidence, typeof HttpEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>;
49
79
  export type EvidenceRecord = typeof EvidenceRecord.Type;
50
80
  declare const EvidenceBundle_base: Schema.Class<EvidenceBundle, Schema.Struct<{
51
81
  readonly schemaVersion: Schema.Literal<"release-evidence/v1">;
52
82
  readonly releaseName: Schema.String;
53
83
  readonly releaseVersion: Schema.String;
54
- readonly records: Schema.$Array<Schema.Union<readonly [typeof CommandEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>>;
84
+ readonly records: Schema.$Array<Schema.Union<readonly [typeof CommandEvidence, typeof HttpEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>>;
55
85
  }>, {}>;
56
86
  export declare class EvidenceBundle extends EvidenceBundle_base {
57
87
  }
88
+ declare const ReleaseWorkflowEvidence_base: Schema.Class<ReleaseWorkflowEvidence, Schema.Struct<{
89
+ readonly render: typeof EvidenceBundle;
90
+ readonly validation: typeof EvidenceBundle;
91
+ readonly execution: typeof EvidenceBundle;
92
+ readonly verification: typeof EvidenceBundle;
93
+ }>, {}>;
94
+ export declare class ReleaseWorkflowEvidence extends ReleaseWorkflowEvidence_base {
95
+ }
96
+ declare const ReleaseWorkflowFailureEvidence_base: Schema.Class<ReleaseWorkflowFailureEvidence, Schema.Struct<{
97
+ readonly render: Schema.optionalKey<typeof EvidenceBundle>;
98
+ readonly validation: Schema.optionalKey<typeof EvidenceBundle>;
99
+ readonly execution: Schema.optionalKey<typeof EvidenceBundle>;
100
+ readonly verification: Schema.optionalKey<typeof EvidenceBundle>;
101
+ }>, {}>;
102
+ export declare class ReleaseWorkflowFailureEvidence extends ReleaseWorkflowFailureEvidence_base {
103
+ }
58
104
  //# sourceMappingURL=evidence.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAe,MAAM,gBAAgB,CAAA;AAGzD,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,eAAgB,CAAA;AACvC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,gBAAgB,wDAAgD,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,cAAc,sEAA8D,CAAA;AACzF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;AAEvD,qBAAa,eAAgB,SAAQ,oBAanC;CAAG;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAQrC;CAAG;AAEL,eAAO,MAAM,cAAc,sGAAyE,CAAA;AACpG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;AAEvD,qBAAa,cAAe,SAAQ,mBAKlC;CAAG"}
1
+ {"version":3,"file":"evidence.d.ts","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,UAAU,EAA2B,MAAM,gBAAgB,CAAA;AAGhG,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,eAAgB,CAAA;AACvC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,gBAAgB,wDAAgD,CAAA;AAC7E,MAAM,MAAM,gBAAgB,GAAG,OAAO,gBAAgB,CAAC,IAAI,CAAA;AAE3D,eAAO,MAAM,cAAc,sEAA8D,CAAA;AACzF,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;;;;;;;;;AAEvD,qBAAa,eAAgB,SAAQ,oBAanC;CAAG;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAahC;CAAG;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAQtC;CAAG;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAQrC;CAAG;AAEL,eAAO,MAAM,cAAc,2HAAuF,CAAA;AAClH,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;;;;;;;AAEvD,qBAAa,cAAe,SAAQ,mBAKlC;CAAG;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAK3C;CAAG;;;;;;;AAEL,qBAAa,8BAA+B,SAAQ,mCAOlD;CAAG"}
@@ -1,5 +1,5 @@
1
1
  import * as Schema from "effect/Schema";
2
- import { CommandSpec, OperationId } from "./operation.js";
2
+ import { CommandSpec, HttpEnvHeader, HttpHeader, HttpMethod, OperationId } from "./operation.js";
3
3
  import { TargetId } from "./target.js";
4
4
  export const EvidenceId = Schema.String;
5
5
  export const EvidenceSeverity = Schema.Literals(["info", "warning", "error"]);
@@ -19,6 +19,33 @@ export class CommandEvidence extends Schema.Class("CommandEvidence")({
19
19
  durationMillis: Schema.Number
20
20
  }) {
21
21
  }
22
+ export class HttpRequestEvidence extends Schema.Class("HttpRequestEvidence")({
23
+ method: HttpMethod,
24
+ url: Schema.String,
25
+ headers: Schema.Array(HttpHeader),
26
+ envHeaders: Schema.Array(HttpEnvHeader)
27
+ }) {
28
+ }
29
+ export class HttpCheckEvidence extends Schema.Class("HttpCheckEvidence")({
30
+ description: Schema.String,
31
+ passed: Schema.Boolean
32
+ }) {
33
+ }
34
+ export class HttpEvidence extends Schema.Class("HttpEvidence")({
35
+ id: EvidenceId,
36
+ operationId: OperationId,
37
+ targetId: Schema.optionalKey(TargetId),
38
+ status: EvidenceStatus,
39
+ severity: EvidenceSeverity,
40
+ request: HttpRequestEvidence,
41
+ responseStatus: Schema.optionalKey(Schema.Number),
42
+ checks: Schema.Array(HttpCheckEvidence),
43
+ message: Schema.String,
44
+ startedAt: Schema.String,
45
+ endedAt: Schema.String,
46
+ durationMillis: Schema.Number
47
+ }) {
48
+ }
22
49
  export class ValidationEvidence extends Schema.Class("ValidationEvidence")({
23
50
  id: EvidenceId,
24
51
  targetId: Schema.optionalKey(TargetId),
@@ -39,7 +66,7 @@ export class ExecutionEvidence extends Schema.Class("ExecutionEvidence")({
39
66
  timestamp: Schema.String
40
67
  }) {
41
68
  }
42
- export const EvidenceRecord = Schema.Union([CommandEvidence, ValidationEvidence, ExecutionEvidence]);
69
+ export const EvidenceRecord = Schema.Union([CommandEvidence, HttpEvidence, ValidationEvidence, ExecutionEvidence]);
43
70
  export class EvidenceBundle extends Schema.Class("EvidenceBundle")({
44
71
  schemaVersion: Schema.Literal("release-evidence/v1"),
45
72
  releaseName: Schema.String,
@@ -47,4 +74,18 @@ export class EvidenceBundle extends Schema.Class("EvidenceBundle")({
47
74
  records: Schema.Array(EvidenceRecord)
48
75
  }) {
49
76
  }
77
+ export class ReleaseWorkflowEvidence extends Schema.Class("ReleaseWorkflowEvidence")({
78
+ render: EvidenceBundle,
79
+ validation: EvidenceBundle,
80
+ execution: EvidenceBundle,
81
+ verification: EvidenceBundle
82
+ }) {
83
+ }
84
+ export class ReleaseWorkflowFailureEvidence extends Schema.Class("ReleaseWorkflowFailureEvidence")({
85
+ render: Schema.optionalKey(EvidenceBundle),
86
+ validation: Schema.optionalKey(EvidenceBundle),
87
+ execution: Schema.optionalKey(EvidenceBundle),
88
+ verification: Schema.optionalKey(EvidenceBundle)
89
+ }) {
90
+ }
50
91
  //# sourceMappingURL=evidence.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAItC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA;AAGvC,MAAM,CAAC,MAAM,gBAAgB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAA;AAG7E,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,SAAS,CAAC,CAAC,CAAA;AAGzF,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,KAAK,CAAkB,iBAAiB,CAAC,CAAC;IACpF,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,MAAM,CAAC,MAAM;IACvB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,cAAc,EAAE,MAAM,CAAC,MAAM;CAC9B,CAAC;CAAG;AAEL,MAAM,OAAO,kBAAmB,SAAQ,MAAM,CAAC,KAAK,CAAqB,oBAAoB,CAAC,CAAC;IAC7F,EAAE,EAAE,UAAU;IACd,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,OAAO,EAAE,MAAM,CAAC,OAAO;CACxB,CAAC;CAAG;AAEL,MAAM,OAAO,iBAAkB,SAAQ,MAAM,CAAC,KAAK,CAAoB,mBAAmB,CAAC,CAAC;IAC1F,EAAE,EAAE,UAAU;IACd,WAAW,EAAE,WAAW;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;IACtC,MAAM,EAAE,cAAc;IACtB,QAAQ,EAAE,gBAAgB;IAC1B,OAAO,EAAE,MAAM,CAAC,MAAM;IACtB,SAAS,EAAE,MAAM,CAAC,MAAM;CACzB,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,eAAe,EAAE,kBAAkB,EAAE,iBAAiB,CAAC,CAAC,CAAA;AAGpG,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,aAAa,EAAE,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;IACpD,WAAW,EAAE,MAAM,CAAC,MAAM;IAC1B,cAAc,EAAE,MAAM,CAAC,MAAM;IAC7B,OAAO,EAAE,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;CACtC,CAAC;CAAG"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,48 @@ declare const CommandSpec_base: Schema.Class<CommandSpec, Schema.Struct<{
21
21
  }>, {}>;
22
22
  export declare class CommandSpec extends CommandSpec_base {
23
23
  }
24
+ export declare const HttpMethod: Schema.Literals<readonly ["GET", "HEAD"]>;
25
+ export type HttpMethod = typeof HttpMethod.Type;
26
+ declare const HttpHeader_base: Schema.Class<HttpHeader, Schema.Struct<{
27
+ readonly name: Schema.String;
28
+ readonly value: Schema.String;
29
+ }>, {}>;
30
+ export declare class HttpHeader extends HttpHeader_base {
31
+ }
32
+ declare const HttpEnvHeader_base: Schema.Class<HttpEnvHeader, Schema.Struct<{
33
+ readonly name: Schema.String;
34
+ readonly valueEnv: Schema.String;
35
+ readonly prefix: Schema.optionalKey<Schema.String>;
36
+ }>, {}>;
37
+ export declare class HttpEnvHeader extends HttpEnvHeader_base {
38
+ }
39
+ declare const HttpRequestSpec_base: Schema.Class<HttpRequestSpec, Schema.Struct<{
40
+ readonly method: Schema.Literals<readonly ["GET", "HEAD"]>;
41
+ readonly url: Schema.String;
42
+ readonly headers: Schema.$Array<typeof HttpHeader>;
43
+ readonly envHeaders: Schema.$Array<typeof HttpEnvHeader>;
44
+ readonly requiredEnv: Schema.$Array<Schema.String>;
45
+ readonly redactedEnv: Schema.$Array<Schema.String>;
46
+ }>, {}>;
47
+ export declare class HttpRequestSpec extends HttpRequestSpec_base {
48
+ }
49
+ export declare const JsonPathSegment: Schema.Union<readonly [Schema.String, Schema.Number]>;
50
+ export type JsonPathSegment = typeof JsonPathSegment.Type;
51
+ declare const HttpJsonEqualsCheck_base: Schema.Class<HttpJsonEqualsCheck, Schema.TaggedStruct<"HttpJsonEqualsCheck", {
52
+ readonly path: Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Number]>>;
53
+ readonly expected: Schema.Codec<Schema.Json, Schema.Json, never, never>;
54
+ }>, {}>;
55
+ export declare class HttpJsonEqualsCheck extends HttpJsonEqualsCheck_base {
56
+ }
57
+ declare const HttpJsonArrayObjectFieldEqualsCheck_base: Schema.Class<HttpJsonArrayObjectFieldEqualsCheck, Schema.TaggedStruct<"HttpJsonArrayObjectFieldEqualsCheck", {
58
+ readonly path: Schema.$Array<Schema.Union<readonly [Schema.String, Schema.Number]>>;
59
+ readonly field: Schema.String;
60
+ readonly expected: Schema.Codec<Schema.Json, Schema.Json, never, never>;
61
+ }>, {}>;
62
+ export declare class HttpJsonArrayObjectFieldEqualsCheck extends HttpJsonArrayObjectFieldEqualsCheck_base {
63
+ }
64
+ export declare const HttpJsonCheck: Schema.Union<readonly [typeof HttpJsonEqualsCheck, typeof HttpJsonArrayObjectFieldEqualsCheck]>;
65
+ export type HttpJsonCheck = typeof HttpJsonCheck.Type;
24
66
  declare const RenderFileOperation_base: Schema.Class<RenderFileOperation, Schema.TaggedStruct<"RenderFileOperation", {
25
67
  readonly id: Schema.String;
26
68
  readonly targetId: Schema.optionalKey<Schema.String>;
@@ -74,7 +116,19 @@ declare const VerifyRemoteOperation_base: Schema.Class<VerifyRemoteOperation, Sc
74
116
  }>, {}>;
75
117
  export declare class VerifyRemoteOperation extends VerifyRemoteOperation_base {
76
118
  }
77
- export declare const Operation: Schema.Union<readonly [typeof RenderFileOperation, typeof ValidateCommandOperation, typeof ValidationNoteOperation, typeof PublishCommandOperation, typeof VerifyRemoteOperation]>;
119
+ declare const VerifyHttpOperation_base: Schema.Class<VerifyHttpOperation, Schema.TaggedStruct<"VerifyHttpOperation", {
120
+ readonly id: Schema.String;
121
+ readonly targetId: Schema.String;
122
+ readonly description: Schema.String;
123
+ readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
124
+ readonly gate: typeof ExecutionGate;
125
+ readonly request: typeof HttpRequestSpec;
126
+ readonly expectedStatus: Schema.Number;
127
+ readonly checks: Schema.$Array<Schema.Union<readonly [typeof HttpJsonEqualsCheck, typeof HttpJsonArrayObjectFieldEqualsCheck]>>;
128
+ }>, {}>;
129
+ export declare class VerifyHttpOperation extends VerifyHttpOperation_base {
130
+ }
131
+ export declare const Operation: Schema.Union<readonly [typeof RenderFileOperation, typeof ValidateCommandOperation, typeof ValidationNoteOperation, typeof PublishCommandOperation, typeof VerifyRemoteOperation, typeof VerifyHttpOperation]>;
78
132
  export type Operation = typeof Operation.Type;
79
133
  declare const ExecutionApproval_base: Schema.Class<ExecutionApproval, Schema.Struct<{
80
134
  readonly execute: Schema.Boolean;
@@ -93,6 +147,6 @@ export declare const noApprovalGate: (reason: string) => ExecutionGate;
93
147
  export declare const executeGate: (reason: string) => ExecutionGate;
94
148
  export declare const irreversibleGate: (reason: string) => ExecutionGate;
95
149
  export declare const canExecuteOperation: (operation: Operation, approval: ExecutionApproval) => boolean;
96
- export declare const requireExecutionApproval: (operation: RenderFileOperation | ValidateCommandOperation | ValidationNoteOperation | PublishCommandOperation | VerifyRemoteOperation, approval: ExecutionApproval) => Effect.Effect<undefined, ExecutionApprovalError, never>;
150
+ export declare const requireExecutionApproval: (operation: RenderFileOperation | ValidateCommandOperation | ValidationNoteOperation | PublishCommandOperation | VerifyRemoteOperation | VerifyHttpOperation, approval: ExecutionApproval) => Effect.Effect<undefined, ExecutionApprovalError, never>;
97
151
  export declare const operationOrder: (left: Operation, right: Operation) => number;
98
152
  //# sourceMappingURL=operation.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/domain/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,WAAW,eAAgB,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,eAAO,MAAM,aAAa,+FAAuF,CAAA;AACjH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;AAErD,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAM/B;CAAG;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAQvC;CAAG;;;;;;;;;AAEL,qBAAa,wBAAyB,SAAQ,6BAO5C;CAAG;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAS3C;CAAG;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAO3C;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;AAEL,eAAO,MAAM,SAAS,oLAMpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAGrC;IACA,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAGlB;CACH;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;AAEJ,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,aAK5C,CAAA;AAEJ,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,aAKzC,CAAA;AAEJ,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,aAK9C,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,EAAE,UAAU,iBAAiB,KAAG,OAevF,CAAA;AAED,eAAO,MAAM,wBAAwB,iOAmBnC,CAAA;AAEF,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,EAAE,OAAO,SAAS,KAAG,MAClC,CAAA"}
1
+ {"version":3,"file":"operation.d.ts","sourceRoot":"","sources":["../../src/domain/operation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAGvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,WAAW,eAAgB,CAAA;AACxC,MAAM,MAAM,WAAW,GAAG,OAAO,WAAW,CAAC,IAAI,CAAA;AAEjD,eAAO,MAAM,aAAa,+FAAuF,CAAA;AACjH,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;AAErD,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;AAEL,qBAAa,WAAY,SAAQ,gBAM/B;CAAG;AAEL,eAAO,MAAM,UAAU,2CAAmC,CAAA;AAC1D,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;;;;;AAE/C,qBAAa,UAAW,SAAQ,eAG9B;CAAG;;;;;;AAEL,qBAAa,aAAc,SAAQ,kBAIjC;CAAG;;;;;;;;;AAEL,qBAAa,eAAgB,SAAQ,oBAOnC;CAAG;AAEL,eAAO,MAAM,eAAe,uDAA+C,CAAA;AAC3E,MAAM,MAAM,eAAe,GAAG,OAAO,eAAe,CAAC,IAAI,CAAA;;;;;AAEzD,qBAAa,mBAAoB,SAAQ,wBAGvC;CAAG;;;;;;AAEL,qBAAa,mCAAoC,SAAQ,wCAOxD;CAAG;AAEJ,eAAO,MAAM,aAAa,iGAA2E,CAAA;AACrG,MAAM,MAAM,aAAa,GAAG,OAAO,aAAa,CAAC,IAAI,CAAA;;;;;;;;;;AAErD,qBAAa,mBAAoB,SAAQ,wBAQvC;CAAG;;;;;;;;;AAEL,qBAAa,wBAAyB,SAAQ,6BAO5C;CAAG;;;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAS3C;CAAG;;;;;;;;;AAEL,qBAAa,uBAAwB,SAAQ,4BAO3C;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;;;;;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBASvC;CAAG;AAEL,eAAO,MAAM,SAAS,gNAOpB,CAAA;AACF,MAAM,MAAM,SAAS,GAAG,OAAO,SAAS,CAAC,IAAI,CAAA;;;;;AAE7C,qBAAa,iBAAkB,SAAQ,sBAGrC;IACA,MAAM,CAAC,QAAQ,CAAC,IAAI,oBAGlB;CACH;;;;;AAED,qBAAa,sBAAuB,SAAQ,2BAM3C;CAAG;AAEJ,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,KAAG,aAK5C,CAAA;AAEJ,eAAO,MAAM,WAAW,GAAI,QAAQ,MAAM,KAAG,aAKzC,CAAA;AAEJ,eAAO,MAAM,gBAAgB,GAAI,QAAQ,MAAM,KAAG,aAK9C,CAAA;AAEJ,eAAO,MAAM,mBAAmB,GAAI,WAAW,SAAS,EAAE,UAAU,iBAAiB,KAAG,OAevF,CAAA;AAED,eAAO,MAAM,wBAAwB,uPAmBnC,CAAA;AA8BF,eAAO,MAAM,cAAc,GAAI,MAAM,SAAS,EAAE,OAAO,SAAS,KAAG,MAKlC,CAAA"}
@@ -17,6 +17,40 @@ export class CommandSpec extends Schema.Class("CommandSpec")({
17
17
  redactedEnv: Schema.Array(Schema.String)
18
18
  }) {
19
19
  }
20
+ export const HttpMethod = Schema.Literals(["GET", "HEAD"]);
21
+ export class HttpHeader extends Schema.Class("HttpHeader")({
22
+ name: Schema.String,
23
+ value: Schema.String
24
+ }) {
25
+ }
26
+ export class HttpEnvHeader extends Schema.Class("HttpEnvHeader")({
27
+ name: Schema.String,
28
+ valueEnv: Schema.String,
29
+ prefix: Schema.optionalKey(Schema.String)
30
+ }) {
31
+ }
32
+ export class HttpRequestSpec extends Schema.Class("HttpRequestSpec")({
33
+ method: HttpMethod,
34
+ url: Schema.String,
35
+ headers: Schema.Array(HttpHeader),
36
+ envHeaders: Schema.Array(HttpEnvHeader),
37
+ requiredEnv: Schema.Array(Schema.String),
38
+ redactedEnv: Schema.Array(Schema.String)
39
+ }) {
40
+ }
41
+ export const JsonPathSegment = Schema.Union([Schema.String, Schema.Number]);
42
+ export class HttpJsonEqualsCheck extends Schema.TaggedClass()("HttpJsonEqualsCheck", {
43
+ path: Schema.Array(JsonPathSegment),
44
+ expected: Schema.Json
45
+ }) {
46
+ }
47
+ export class HttpJsonArrayObjectFieldEqualsCheck extends Schema.TaggedClass()("HttpJsonArrayObjectFieldEqualsCheck", {
48
+ path: Schema.Array(JsonPathSegment),
49
+ field: Schema.String,
50
+ expected: Schema.Json
51
+ }) {
52
+ }
53
+ export const HttpJsonCheck = Schema.Union([HttpJsonEqualsCheck, HttpJsonArrayObjectFieldEqualsCheck]);
20
54
  export class RenderFileOperation extends Schema.TaggedClass()("RenderFileOperation", {
21
55
  id: OperationId,
22
56
  targetId: Schema.optionalKey(TargetId),
@@ -65,12 +99,24 @@ export class VerifyRemoteOperation extends Schema.TaggedClass()("VerifyRemoteOpe
65
99
  command: CommandSpec
66
100
  }) {
67
101
  }
102
+ export class VerifyHttpOperation extends Schema.TaggedClass()("VerifyHttpOperation", {
103
+ id: OperationId,
104
+ targetId: TargetId,
105
+ description: Schema.String,
106
+ risk: OperationRisk,
107
+ gate: ExecutionGate,
108
+ request: HttpRequestSpec,
109
+ expectedStatus: Schema.Number,
110
+ checks: Schema.Array(HttpJsonCheck)
111
+ }) {
112
+ }
68
113
  export const Operation = Schema.Union([
69
114
  RenderFileOperation,
70
115
  ValidateCommandOperation,
71
116
  ValidationNoteOperation,
72
117
  PublishCommandOperation,
73
- VerifyRemoteOperation
118
+ VerifyRemoteOperation,
119
+ VerifyHttpOperation
74
120
  ]);
75
121
  export class ExecutionApproval extends Schema.Class("ExecutionApproval")({
76
122
  execute: Schema.Boolean,
@@ -129,5 +175,35 @@ export const requireExecutionApproval = Effect.fn("requireExecutionApproval")(fu
129
175
  reason
130
176
  }));
131
177
  });
132
- export const operationOrder = (left, right) => left.id.localeCompare(right.id);
178
+ const operationPhasePriority = (operation) => {
179
+ switch (operation._tag) {
180
+ case "RenderFileOperation":
181
+ return 0;
182
+ case "ValidateCommandOperation":
183
+ case "ValidationNoteOperation":
184
+ return 1;
185
+ case "PublishCommandOperation":
186
+ return 2;
187
+ case "VerifyRemoteOperation":
188
+ case "VerifyHttpOperation":
189
+ return 3;
190
+ }
191
+ };
192
+ const publishOperationPriority = (operation) => {
193
+ if (operation.id.endsWith(":npm-publish") || operation.id.endsWith(":twine-upload")) {
194
+ return 0;
195
+ }
196
+ if (operation.id.endsWith(":gh-release-create")) {
197
+ return 1;
198
+ }
199
+ if (operation.id.endsWith(":homebrew-push") || operation.id.endsWith(":scoop-push")) {
200
+ return 2;
201
+ }
202
+ return 3;
203
+ };
204
+ export const operationOrder = (left, right) => operationPhasePriority(left) - operationPhasePriority(right) ||
205
+ (left._tag === "PublishCommandOperation" && right._tag === "PublishCommandOperation"
206
+ ? publishOperationPriority(left) - publishOperationPriority(right)
207
+ : 0) ||
208
+ left.id.localeCompare(right.id);
133
209
  //# sourceMappingURL=operation.js.map