@mannyc1/ts-release 0.0.3 → 0.0.5

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 (120) hide show
  1. package/ARCHITECTURE.md +1 -1
  2. package/README.md +72 -8
  3. package/SPEC.md +15 -1
  4. package/dist/config/errors.d.ts +2 -1
  5. package/dist/config/errors.d.ts.map +1 -1
  6. package/dist/config/errors.js +4 -3
  7. package/dist/config/errors.js.map +1 -1
  8. package/dist/config/load.d.ts.map +1 -1
  9. package/dist/config/load.js +5 -3
  10. package/dist/config/load.js.map +1 -1
  11. package/dist/domain/artifact.d.ts +3 -3
  12. package/dist/domain/artifact.d.ts.map +1 -1
  13. package/dist/domain/artifact.js +1 -1
  14. package/dist/domain/artifact.js.map +1 -1
  15. package/dist/domain/evidence.d.ts +14 -14
  16. package/dist/domain/evidence.d.ts.map +1 -1
  17. package/dist/domain/evidence.js +4 -3
  18. package/dist/domain/evidence.js.map +1 -1
  19. package/dist/domain/operation.d.ts +14 -14
  20. package/dist/domain/operation.d.ts.map +1 -1
  21. package/dist/domain/operation.js +1 -1
  22. package/dist/domain/operation.js.map +1 -1
  23. package/dist/domain/release.d.ts +83 -9
  24. package/dist/domain/release.d.ts.map +1 -1
  25. package/dist/domain/release.js +75 -5
  26. package/dist/domain/release.js.map +1 -1
  27. package/dist/domain/remote-state.d.ts +21 -16
  28. package/dist/domain/remote-state.d.ts.map +1 -1
  29. package/dist/domain/remote-state.js +14 -8
  30. package/dist/domain/remote-state.js.map +1 -1
  31. package/dist/domain/status.d.ts +4 -4
  32. package/dist/domain/status.d.ts.map +1 -1
  33. package/dist/domain/status.js +3 -2
  34. package/dist/domain/status.js.map +1 -1
  35. package/dist/domain/target.d.ts +7 -7
  36. package/dist/domain/target.d.ts.map +1 -1
  37. package/dist/domain/target.js +1 -1
  38. package/dist/domain/target.js.map +1 -1
  39. package/dist/host/host.d.ts +1 -0
  40. package/dist/host/host.d.ts.map +1 -1
  41. package/dist/host/host.js +2 -1
  42. package/dist/host/host.js.map +1 -1
  43. package/dist/host/http-live.d.ts.map +1 -1
  44. package/dist/host/http-live.js +4 -3
  45. package/dist/host/http-live.js.map +1 -1
  46. package/dist/host/http.d.ts +1 -0
  47. package/dist/host/http.d.ts.map +1 -1
  48. package/dist/host/http.js +2 -1
  49. package/dist/host/http.js.map +1 -1
  50. package/dist/host/platform.d.ts.map +1 -1
  51. package/dist/host/platform.js +2 -2
  52. package/dist/host/platform.js.map +1 -1
  53. package/dist/host/test.d.ts.map +1 -1
  54. package/dist/host/test.js +43 -0
  55. package/dist/host/test.js.map +1 -1
  56. package/dist/planner/artifact-inventory.d.ts.map +1 -1
  57. package/dist/planner/artifact-inventory.js +6 -6
  58. package/dist/planner/artifact-inventory.js.map +1 -1
  59. package/dist/planner/errors.d.ts +12 -6
  60. package/dist/planner/errors.d.ts.map +1 -1
  61. package/dist/planner/errors.js +20 -12
  62. package/dist/planner/errors.js.map +1 -1
  63. package/dist/planner/evidence-recorder.d.ts.map +1 -1
  64. package/dist/planner/evidence-recorder.js +10 -6
  65. package/dist/planner/evidence-recorder.js.map +1 -1
  66. package/dist/planner/normalize-release.d.ts +11 -2
  67. package/dist/planner/normalize-release.d.ts.map +1 -1
  68. package/dist/planner/normalize-release.js +88 -10
  69. package/dist/planner/normalize-release.js.map +1 -1
  70. package/dist/planner/reconcile.d.ts.map +1 -1
  71. package/dist/planner/reconcile.js +5 -79
  72. package/dist/planner/reconcile.js.map +1 -1
  73. package/dist/planner/release-eligibility.d.ts +18 -13
  74. package/dist/planner/release-eligibility.d.ts.map +1 -1
  75. package/dist/planner/release-eligibility.js +428 -29
  76. package/dist/planner/release-eligibility.js.map +1 -1
  77. package/dist/planner/render-plan.d.ts +1 -1
  78. package/dist/planner/render-plan.js +2 -1
  79. package/dist/planner/render-plan.js.map +1 -1
  80. package/dist/targets/adapter-helpers.d.ts +20 -2
  81. package/dist/targets/adapter-helpers.d.ts.map +1 -1
  82. package/dist/targets/adapter-helpers.js +32 -1
  83. package/dist/targets/adapter-helpers.js.map +1 -1
  84. package/dist/targets/github-release.d.ts +25 -0
  85. package/dist/targets/github-release.d.ts.map +1 -0
  86. package/dist/targets/github-release.js +82 -0
  87. package/dist/targets/github-release.js.map +1 -0
  88. package/dist/targets/github.d.ts +2 -2
  89. package/dist/targets/github.d.ts.map +1 -1
  90. package/dist/targets/github.js +19 -68
  91. package/dist/targets/github.js.map +1 -1
  92. package/dist/targets/homebrew.d.ts +2 -2
  93. package/dist/targets/homebrew.d.ts.map +1 -1
  94. package/dist/targets/homebrew.js +15 -31
  95. package/dist/targets/homebrew.js.map +1 -1
  96. package/dist/targets/scoop.d.ts +2 -2
  97. package/dist/targets/scoop.d.ts.map +1 -1
  98. package/dist/targets/scoop.js +13 -28
  99. package/dist/targets/scoop.js.map +1 -1
  100. package/dist/workflows/config.d.ts +123 -22
  101. package/dist/workflows/config.d.ts.map +1 -1
  102. package/dist/workflows/config.js +215 -47
  103. package/dist/workflows/config.js.map +1 -1
  104. package/dist/workflows/diagnostics.d.ts +6 -6
  105. package/dist/workflows/diagnostics.d.ts.map +1 -1
  106. package/dist/workflows/diagnostics.js +140 -78
  107. package/dist/workflows/diagnostics.js.map +1 -1
  108. package/dist/workflows/evidence.d.ts +8 -3
  109. package/dist/workflows/evidence.d.ts.map +1 -1
  110. package/dist/workflows/evidence.js +9 -0
  111. package/dist/workflows/evidence.js.map +1 -1
  112. package/dist/workflows/init.d.ts +14 -1
  113. package/dist/workflows/init.d.ts.map +1 -1
  114. package/dist/workflows/init.js +135 -68
  115. package/dist/workflows/init.js.map +1 -1
  116. package/package.json +7 -3
  117. package/templates/README.md +5 -0
  118. package/templates/github-actions/plan-and-approved-execute.yml +10 -5
  119. package/templates/github-actions/plan-only.yml +5 -2
  120. package/templates/github-actions/trusted-publishing.yml +7 -5
package/ARCHITECTURE.md CHANGED
@@ -35,7 +35,7 @@ than reaching into CLI modules.
35
35
 
36
36
  ## Current Module Taxonomy
37
37
 
38
- - `domain/` contains durable schema-backed data models and errors.
38
+ - `domain/` contains durable schema-backed data models, typed errors, and scalar schemas owned by their semantic domain modules, such as release names in `domain/release`, target IDs in `domain/target`, artifact IDs in `domain/artifact`, operation IDs in `domain/operation`, and evidence IDs in `domain/evidence`.
39
39
  - `config/` parses and validates release config into domain values.
40
40
  - `planner/` normalizes release intent, builds plans, renders plans, executes operation data through injected services, records evidence, reports status, resumes safe work, and reconciles remote state.
41
41
  - `targets/` models ecosystem-specific target semantics and produces operation data. Target modules may describe commands and HTTP checks, but they do not execute them.
package/README.md CHANGED
@@ -31,7 +31,7 @@ required without surprising users. The source currently lives in
31
31
  `apps/ts-release-action`.
32
32
 
33
33
  The action supports the review commands `plan`, `validate-config`, `status`,
34
- `doctor`, `check-auth`, and `check-ci`, plus the approved workflow commands
34
+ `eligibility`, `doctor`, `check-auth`, and `check-ci`, plus the approved workflow commands
35
35
  `validate`, `run`, `resume`, and `reconcile`. Use `upload-evidence: true` when
36
36
  an action job should publish collected `.release/evidence` JSON files even after
37
37
  a command fails.
@@ -51,6 +51,7 @@ bun run cli explain npm:npm-publish --config release.config.json
51
51
  bun run cli doctor --config release.config.json --format text
52
52
  bun run cli check-auth --config release.config.json --target npm --format text
53
53
  bun run cli check-ci --config release.config.json --workflow .github/workflows/release.yml --format markdown
54
+ bun run cli check-intent --config release.config.json --format text
54
55
  bun run cli render --config release.config.json --execute
55
56
  bun run cli validate --config release.config.json
56
57
  bun run cli print --config release.config.json
@@ -70,7 +71,8 @@ bun run cli resume --config release.config.json --execute --approve-irreversible
70
71
  ```
71
72
 
72
73
  Resume skips operations with successful matching evidence, reruns safe read-only failures, and blocks failed publish operations until remote state is reconciled manually.
73
- `eligibility` checks npm and GitHub remote state before the self-release workflow decides whether to run.
74
+ `eligibility` resolves the configured release decision strategy and checks npm and GitHub remote state when a release is intended.
75
+ `check-intent` is a read-only CI gate for the explicit intent-file strategy.
74
76
  `reconcile` is separate from resume: it inspects GitHub release state through the API and can publish a matching draft release with explicit `--execute` without republishing immutable npm versions.
75
77
 
76
78
  The executable is an argv and console adapter over TypeScript workflows. Release workflows are modeled as typed functions first, then exposed through the CLI for terminal and CI usage.
@@ -239,6 +241,59 @@ Use `@mannyc1/ts-release/workflows` for the curated `Config`, `Init`, `Diagnosti
239
241
  The optional `$schema` key powers editor completion and does not change release behavior. Print the derived schema with `bun run cli schema`, and use `bun run cli validate-config` to check JSON syntax and release config shape without running target validators.
240
242
 
241
243
  Paths are release-workspace relative and may not be absolute or contain parent traversal. `evidenceDirectory` may include the literal `{version}` placeholder, which is resolved during planning so each release version can use its own evidence directory.
244
+ Artifact paths may use `{version}`, `{name}`, and `{normalizedName}`. `normalizedName` removes a leading npm scope marker and replaces `/` with `-`, matching generated self-release artifact names such as `mannyc1-ts-release-0.1.0.tgz`.
245
+
246
+ ## Release Strategies
247
+
248
+ Release identity and release decisions are strategy-backed data. Target adapters still receive a concrete release identity and still produce reviewable, approval-gated operations.
249
+
250
+ | Strategy | Good for | Source of truth |
251
+ |---|---|---|
252
+ | Static config | audited/manual release identity | release config |
253
+ | Package manifest | npm/package releases with one version source | `package.json` |
254
+ | Git tag | tag-triggered release workflows | current Git tag |
255
+ | Conventional commits | automated SemVer from commit messages | commits since the latest matching tag |
256
+ | Intent files | reviewed release intent in PRs | `.release/intents/*.json` |
257
+
258
+ Static identity remains supported:
259
+
260
+ ```json
261
+ {
262
+ "identity": {
263
+ "name": "@scope/pkg",
264
+ "version": "0.1.0",
265
+ "commit": "abc123",
266
+ "tag": "v0.1.0"
267
+ }
268
+ }
269
+ ```
270
+
271
+ For npm-style packages, prefer manifest-derived identity to avoid repeating versions in release config:
272
+
273
+ ```json
274
+ {
275
+ "identity": {
276
+ "_tag": "PackageManifestReleaseIdentitySource",
277
+ "packagePath": "package.json",
278
+ "commit": "HEAD",
279
+ "tagTemplate": "v{version}"
280
+ }
281
+ }
282
+ ```
283
+
284
+ Decision strategies are opt-in through `releaseDecision`. The default `RemoteStateReleaseDecision` uses the resolved identity, then checks npm and GitHub state. Git tag and conventional commit strategies can return `skipped` without error when no release input is present. Intent files are small JSON documents in `.release/intents`:
285
+
286
+ ```json
287
+ {
288
+ "$schema": "https://mannyc2.github.io/ts-release/schema/release-intent.schema.json",
289
+ "package": "@scope/pkg",
290
+ "release": "patch",
291
+ "summary": "Explain the user-visible change.",
292
+ "empty": false
293
+ }
294
+ ```
295
+
296
+ This is a first-party intent-file format, not full Changesets compatibility. Publish operations remain plan data until explicit execution approval, regardless of which strategy chose the intended version.
242
297
 
243
298
  Homebrew tap targets model catalog updates as generated files plus an approval-gated push:
244
299
 
@@ -366,16 +421,22 @@ Config templates are intentionally narrow:
366
421
  ```sh
367
422
  bun run cli init --template npm-github --package @scope/pkg --repo owner/repo
368
423
  bun run cli init --template npm-github --package @scope/pkg --repo owner/repo --write
424
+ bun run cli init --template npm-github --package @scope/pkg --repo owner/repo --github-actions --package-manager npm --write
369
425
  bun run cli plan --config release.config.json --format text
370
426
  ```
371
427
 
372
428
  The npm templates enable provenance and set `verifyPackageExists: true`, which
373
429
  adds a read-only `npm view <package>` validation before trusted publishing.
374
430
  Add `--github-actions` to include the action-first trusted-publishing workflow
375
- template in the preview or write set. Existing files are not overwritten unless
376
- `--overwrite` is also passed.
431
+ template in the preview or write set. Workflow scaffolding supports
432
+ `--package-manager bun|npm|pnpm|yarn`, plus single-line `--install-command` and
433
+ `--build-command` overrides. Those commands are CI setup steps, not release
434
+ target policy; publish operations still come from the `ts-release` plan.
435
+ Existing files are not overwritten unless `--overwrite` is also passed.
377
436
 
378
- Action-first GitHub templates live under `templates/github-actions/`.
437
+ Action-first GitHub templates live under `templates/github-actions/`. The
438
+ checked-in templates use npm setup by default, while this repository's own
439
+ self-release workflow uses the Bun preset.
379
440
 
380
441
  Use `doctor`, `check-auth`, and `check-ci` after writing a template to inspect
381
442
  static readiness before any publish operation is approved.
@@ -437,7 +498,9 @@ Normal verification stays deterministic and does not require live external servi
437
498
  bun run check:release
438
499
  ```
439
500
 
440
- CI runs the portable package checks on Linux, macOS, and Windows. The Ubuntu release-readiness lane also runs the self-release config guard.
501
+ CI runs the portable package checks on Linux, macOS, and Windows. The release
502
+ gate runs the self-release config guard, the static self-release CI diagnostic,
503
+ and then the portable checks.
441
504
 
442
505
  Real-tool integration checks are opt-in:
443
506
 
@@ -454,10 +517,11 @@ Example configs and templates are checked through the TypeScript workflow path:
454
517
  bun run check:examples
455
518
  ```
456
519
 
457
- This repository also includes a self-release config at `apps/release-ts/release.config.json` that targets both npm and GitHub for the scoped `@mannyc1/ts-release` package. The app-owned self-release scripts live under `apps/release-ts/scripts`, with root package scripts delegating to them. The self-release config must pass `bun run check:self-release-config` before release checks proceed. Its `identity.commit` may be the explicit current short commit, or `HEAD` as a stored-config convenience. Generated plans resolve `HEAD` to the current short commit, and the self-release guard requires a committed Git checkout with clean tracked files.
520
+ This repository also includes a self-release config at `apps/release-ts/release.config.json` that targets both npm and GitHub for the scoped `@mannyc1/ts-release` package. The app-owned self-release scripts live under `apps/release-ts/scripts`, with root package scripts delegating to them. The self-release config must pass `bun run check:self-release-config`, and the workflow must pass `bun run check:self-release-ci`, before portable release checks proceed. It derives name and version from the root `package.json`, uses `{version}` artifact templates, and keeps `identity.commit` as `HEAD` for stored-config convenience. Generated plans resolve `HEAD` to the current short commit, and the self-release guard requires a committed Git checkout with clean tracked files.
458
521
 
459
522
  ```sh
460
523
  bun run check:self-release-config
524
+ bun run check:self-release-ci
461
525
  ```
462
526
 
463
527
  ### Self Release
@@ -470,7 +534,7 @@ bun run release:artifacts
470
534
  bun run cli plan --config apps/release-ts/release.config.json --format text
471
535
  ```
472
536
 
473
- `release:artifacts` delegates to `apps/release-ts/scripts/build-release-artifacts.ts` and writes ignored files under `.release/artifacts`: the npm package tarball and standalone CLI executables for Linux, macOS, and Windows. GitHub Actions runs the approved release workflow on protected `main` when the package version has not already been published. The workflow uses npm trusted publishing with GitHub Actions OIDC instead of an npm token, runs the app CLI with `--config apps/release-ts/release.config.json`, and uploads `.release/evidence/**` for audit.
537
+ `release:artifacts` delegates to `apps/release-ts/scripts/build-release-artifacts.ts` and writes ignored files under `.release/artifacts`: the npm package tarball and standalone CLI executables for Linux, macOS, and Windows. GitHub Actions runs on protected `main` and checks release eligibility before the full release gate. When `should_release` is true, the plan job runs `check:release`, builds artifacts, records a Markdown release plan, uploads evidence, and does not execute release operations. The protected `execute` job uses the reviewed `.release/artifacts` download, grants `contents: write` and `id-token: write`, and runs approved execution with npm trusted publishing OIDC instead of an npm token.
474
538
 
475
539
  ### Local Release Auth
476
540
 
package/SPEC.md CHANGED
@@ -51,7 +51,7 @@ The primary output of the package is a release plan, not a side effect.
51
51
 
52
52
  A plan should be serializable, reviewable, and suitable for CI artifacts. It should explain:
53
53
 
54
- - release identity: name, version, commit, tag, notes, and source metadata
54
+ - release identity: name, version, commit, tag, notes, source metadata, and the strategy that resolved it
55
55
  - artifact inventory: files, checksums, sizes, formats, and intended consumers
56
56
  - target operations: what each target will do and what inputs it needs
57
57
  - validation steps: which checks must run before publishing
@@ -149,6 +149,10 @@ User-authored input describing what should be released.
149
149
 
150
150
  It should be concise but complete enough to identify the release, locate artifacts, choose targets, and declare policy.
151
151
 
152
+ Identity may be static config data or may be derived from a package manifest. Decision strategies may then decide whether a release should be attempted from explicit remote-state config, the current Git tag, conventional commits since the latest matching tag, or first-party intent files. These strategies choose the intended identity and skipped/ready/complete/partial eligibility result; they do not publish.
153
+
154
+ Intent files are a small first-party reviewed-intent format, not a promise of full Changesets compatibility. An empty/no-release intent can satisfy CI while producing a skipped release decision.
155
+
152
156
  ### Release Model
153
157
 
154
158
  A normalized internal representation with defaults resolved, paths normalized, targets expanded, and invalid combinations rejected.
@@ -215,6 +219,16 @@ Good config answers:
215
219
  - Which generated files or indexes will change?
216
220
  - Which operations are allowed to execute in this environment?
217
221
 
222
+ Release strategies should stay declarative:
223
+
224
+ - static config is for manually audited release identity
225
+ - package manifest identity is for package releases with one version source
226
+ - Git tag decisions are for tag-triggered workflows
227
+ - conventional commit decisions are for automated SemVer from commit messages
228
+ - intent-file decisions are for release intent reviewed in PRs
229
+
230
+ Artifact path templates may interpolate only named release data such as `{version}`, `{name}`, and `{normalizedName}`. They must be expanded before path safety and artifact inventory checks.
231
+
218
232
  ## Testing Strategy
219
233
 
220
234
  The core should be heavily testable without real external services.
@@ -3,12 +3,14 @@ export type * from "../types/effect-internal.js";
3
3
  declare const ConfigReadError_base: Schema.Class<ConfigReadError, Schema.TaggedStruct<"ConfigReadError", {
4
4
  readonly path: Schema.String;
5
5
  readonly reason: Schema.String;
6
+ readonly cause: Schema.optionalKey<Schema.Defect>;
6
7
  }>, import("effect/Cause").YieldableError>;
7
8
  export declare class ConfigReadError extends ConfigReadError_base {
8
9
  }
9
10
  declare const ConfigParseError_base: Schema.Class<ConfigParseError, Schema.TaggedStruct<"ConfigParseError", {
10
11
  readonly path: Schema.String;
11
12
  readonly reason: Schema.String;
13
+ readonly cause: Schema.optionalKey<Schema.Defect>;
12
14
  }>, import("effect/Cause").YieldableError>;
13
15
  export declare class ConfigParseError extends ConfigParseError_base {
14
16
  }
@@ -19,5 +21,4 @@ declare const ConfigValidationError_base: Schema.Class<ConfigValidationError, Sc
19
21
  export declare class ConfigValidationError extends ConfigValidationError_base {
20
22
  }
21
23
  export type ConfigError = ConfigReadError | ConfigParseError | ConfigValidationError;
22
- export declare const formatUnknown: (cause: unknown) => string;
23
24
  //# sourceMappingURL=errors.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;;;;;AAEhD,qBAAa,eAAgB,SAAQ,oBAGnC;CAAG;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAGpC;CAAG;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,qBAAqB,CAAA;AAEpF,eAAO,MAAM,aAAa,GAAI,OAAO,OAAO,KAAG,MACS,CAAA"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;;;;;;AAEhD,qBAAa,eAAgB,SAAQ,oBAInC;CAAG;;;;;;AAEL,qBAAa,gBAAiB,SAAQ,qBAIpC;CAAG;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAGzC;CAAG;AAEL,MAAM,MAAM,WAAW,GAAG,eAAe,GAAG,gBAAgB,GAAG,qBAAqB,CAAA"}
@@ -1,12 +1,14 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  export class ConfigReadError extends Schema.TaggedErrorClass()("ConfigReadError", {
3
3
  path: Schema.String,
4
- reason: Schema.String
4
+ reason: Schema.String,
5
+ cause: Schema.optionalKey(Schema.Defect())
5
6
  }) {
6
7
  }
7
8
  export class ConfigParseError extends Schema.TaggedErrorClass()("ConfigParseError", {
8
9
  path: Schema.String,
9
- reason: Schema.String
10
+ reason: Schema.String,
11
+ cause: Schema.optionalKey(Schema.Defect())
10
12
  }) {
11
13
  }
12
14
  export class ConfigValidationError extends Schema.TaggedErrorClass()("ConfigValidationError", {
@@ -14,5 +16,4 @@ export class ConfigValidationError extends Schema.TaggedErrorClass()("ConfigVali
14
16
  reason: Schema.String
15
17
  }) {
16
18
  }
17
- export const formatUnknown = (cause) => cause instanceof Error ? cause.message : String(cause);
18
19
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,gBAAgB,EAAmB,CAAC,iBAAiB,EAAE;IACjG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,gBAAgB,EAAoB,CAAC,kBAAkB,EAAE;IACpG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IACnH,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG;AAIL,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAc,EAAU,EAAE,CACtD,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/config/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,OAAO,eAAgB,SAAQ,MAAM,CAAC,gBAAgB,EAAmB,CAAC,iBAAiB,EAAE;IACjG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC;CAAG;AAEL,MAAM,OAAO,gBAAiB,SAAQ,MAAM,CAAC,gBAAgB,EAAoB,CAAC,kBAAkB,EAAE;IACpG,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;IACrB,KAAK,EAAE,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;CAC3C,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,gBAAgB,EAAyB,CAAC,uBAAuB,EAAE;IACnH,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,MAAM,CAAC,MAAM;CACtB,CAAC;CAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAiB,MAAM,aAAa,CAAA;AAGrG,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,kBAAkB,6HAkB7B,CAAA;AAEF,eAAO,MAAM,iBAAiB,gJAY5B,CAAA;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,aAAuB,CAAA"}
1
+ {"version":3,"file":"load.d.ts","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AAGtF,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,kBAAkB,6HAmB7B,CAAA;AAEF,eAAO,MAAM,iBAAiB,gJAa5B,CAAA;AAEF,eAAO,MAAM,mBAAmB,GAAI,QAAQ,aAAa,KAAG,aAAuB,CAAA"}
@@ -1,13 +1,14 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as FileSystem from "effect/FileSystem";
3
- import { ConfigParseError, ConfigReadError, ConfigValidationError, formatUnknown } from "./errors.js";
3
+ import { ConfigParseError, ConfigReadError, ConfigValidationError } from "./errors.js";
4
4
  import { decodeReleaseConfig, DEFAULT_CONFIG_PATH } from "./schema.js";
5
5
  export const parseReleaseIntent = Effect.fn("parseReleaseIntent")(function* (input, path = DEFAULT_CONFIG_PATH) {
6
6
  const parsed = yield* Effect.try({
7
7
  try: () => JSON.parse(input),
8
8
  catch: (cause) => ConfigParseError.make({
9
9
  path,
10
- reason: formatUnknown(cause)
10
+ reason: "Release config is not valid JSON.",
11
+ cause
11
12
  })
12
13
  });
13
14
  return yield* decodeReleaseConfig(parsed).pipe(Effect.mapError((error) => ConfigValidationError.make({
@@ -19,7 +20,8 @@ export const loadReleaseIntent = Effect.fn("loadReleaseIntent")(function* (path
19
20
  const fs = yield* FileSystem.FileSystem;
20
21
  const contents = yield* fs.readFileString(path).pipe(Effect.mapError((error) => ConfigReadError.make({
21
22
  path,
22
- reason: error.message
23
+ reason: error.message,
24
+ cause: error
23
25
  })));
24
26
  return yield* parseReleaseIntent(contents, path);
25
27
  });
@@ -1 +1 @@
1
- {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,aAAa,EAAE,MAAM,aAAa,CAAA;AACrG,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAItE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAC,KAAa,EAAE,OAAe,mBAAmB;IAC3H,MAAM,MAAM,GAAY,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI;YACJ,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC;SAC7B,CAAC;KACL,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,qBAAqB,CAAC,IAAI,CAAC;QACzB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC,CACH,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAC,OAAe,mBAAmB;IAC1G,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,eAAe,CAAC,IAAI,CAAC;QACnB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC,CACH,CACF,CAAA;IAED,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAiB,EAAE,CAAC,MAAM,CAAA"}
1
+ {"version":3,"file":"load.js","sourceRoot":"","sources":["../../src/config/load.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AACvC,OAAO,KAAK,UAAU,MAAM,mBAAmB,CAAA;AAE/C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAA;AACtF,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAA;AAItE,MAAM,CAAC,MAAM,kBAAkB,GAAG,MAAM,CAAC,EAAE,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,EAAC,KAAa,EAAE,OAAe,mBAAmB;IAC3H,MAAM,MAAM,GAAY,KAAK,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;QACxC,GAAG,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC;QAC5B,KAAK,EAAE,CAAC,KAAK,EAAE,EAAE,CACf,gBAAgB,CAAC,IAAI,CAAC;YACpB,IAAI;YACJ,MAAM,EAAE,mCAAmC;YAC3C,KAAK;SACN,CAAC;KACL,CAAC,CAAA;IAEF,OAAO,KAAK,CAAC,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,IAAI,CAC5C,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,qBAAqB,CAAC,IAAI,CAAC;QACzB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;KACtB,CAAC,CACH,CACF,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,EAAE,CAAC,mBAAmB,CAAC,CAAC,QAAQ,CAAC,EAAC,OAAe,mBAAmB;IAC1G,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,UAAU,CAAC,UAAU,CAAA;IACvC,MAAM,QAAQ,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,IAAI,CAClD,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE,CACxB,eAAe,CAAC,IAAI,CAAC;QACnB,IAAI;QACJ,MAAM,EAAE,KAAK,CAAC,OAAO;QACrB,KAAK,EAAE,KAAK;KACb,CAAC,CACH,CACF,CAAA;IAED,OAAO,KAAK,CAAC,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;AAClD,CAAC,CAAC,CAAA;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,MAAqB,EAAiB,EAAE,CAAC,MAAM,CAAA"}
@@ -1,6 +1,6 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  export type * from "../types/effect-internal.js";
3
- export declare const ArtifactId: Schema.String;
3
+ export declare const ArtifactId: Schema.NonEmptyString;
4
4
  export type ArtifactId = typeof ArtifactId.Type;
5
5
  export declare const ArtifactFormat: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
6
6
  export type ArtifactFormat = typeof ArtifactFormat.Type;
@@ -13,7 +13,7 @@ declare const Checksum_base: Schema.Class<Checksum, Schema.Struct<{
13
13
  export declare class Checksum extends Checksum_base {
14
14
  }
15
15
  declare const ArtifactIntent_base: Schema.Class<ArtifactIntent, Schema.Struct<{
16
- readonly id: Schema.String;
16
+ readonly id: Schema.NonEmptyString;
17
17
  readonly path: Schema.String;
18
18
  readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
19
19
  readonly consumers: Schema.$Array<Schema.String>;
@@ -22,7 +22,7 @@ declare const ArtifactIntent_base: Schema.Class<ArtifactIntent, Schema.Struct<{
22
22
  export declare class ArtifactIntent extends ArtifactIntent_base {
23
23
  }
24
24
  declare const ArtifactInventoryItem_base: Schema.Class<ArtifactInventoryItem, Schema.Struct<{
25
- readonly id: Schema.String;
25
+ readonly id: Schema.NonEmptyString;
26
26
  readonly path: Schema.String;
27
27
  readonly format: Schema.Literals<readonly ["tarball", "zip", "file", "directory", "oci-image"]>;
28
28
  readonly consumers: Schema.$Array<Schema.String>;
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,eAAgB,CAAA;AACvC,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,cAAc,gFAAwE,CAAA;AACnG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,iBAAiB,gDAAwC,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;;;;;AAE7D,qBAAa,QAAS,SAAQ,aAG5B;CAAG;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAMlC;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;AAEL,eAAO,MAAM,mBAAmB,GAAI,MAAM,cAAc,EAAE,OAAO,cAAc,KAAG,MACjD,CAAA;AAEjC,eAAO,MAAM,sBAAsB,GACjC,MAAM,qBAAqB,EAC3B,OAAO,qBAAqB,KAC3B,MAAyC,CAAA"}
1
+ {"version":3,"file":"artifact.d.ts","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAEvC,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,uBAAwB,CAAA;AAC/C,MAAM,MAAM,UAAU,GAAG,OAAO,UAAU,CAAC,IAAI,CAAA;AAE/C,eAAO,MAAM,cAAc,gFAAwE,CAAA;AACnG,MAAM,MAAM,cAAc,GAAG,OAAO,cAAc,CAAC,IAAI,CAAA;AAEvD,eAAO,MAAM,iBAAiB,gDAAwC,CAAA;AACtE,MAAM,MAAM,iBAAiB,GAAG,OAAO,iBAAiB,CAAC,IAAI,CAAA;;;;;AAE7D,qBAAa,QAAS,SAAQ,aAG5B;CAAG;;;;;;;;AAEL,qBAAa,cAAe,SAAQ,mBAMlC;CAAG;;;;;;;;;AAEL,qBAAa,qBAAsB,SAAQ,0BAOzC;CAAG;AAEL,eAAO,MAAM,mBAAmB,GAAI,MAAM,cAAc,EAAE,OAAO,cAAc,KAAG,MACjD,CAAA;AAEjC,eAAO,MAAM,sBAAsB,GACjC,MAAM,qBAAqB,EAC3B,OAAO,qBAAqB,KAC3B,MAAyC,CAAA"}
@@ -1,5 +1,5 @@
1
1
  import * as Schema from "effect/Schema";
2
- export const ArtifactId = Schema.String;
2
+ export const ArtifactId = Schema.NonEmptyString;
3
3
  export const ArtifactFormat = Schema.Literals(["tarball", "zip", "file", "directory", "oci-image"]);
4
4
  export const ChecksumAlgorithm = Schema.Literals(["sha256", "sha512"]);
5
5
  export class Checksum extends Schema.Class("Checksum")({
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,MAAM,CAAA;AAGvC,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAGnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGtE,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IAC/D,SAAS,EAAE,iBAAiB;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,KAAK,CAAwB,uBAAuB,CAAC,CAAC;IACtG,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAqB,EAAU,EAAE,CACzF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2B,EAC3B,KAA4B,EACpB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"artifact.js","sourceRoot":"","sources":["../../src/domain/artifact.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,eAAe,CAAA;AAIvC,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,cAAc,CAAA;AAG/C,MAAM,CAAC,MAAM,cAAc,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC,CAAA;AAGnG,MAAM,CAAC,MAAM,iBAAiB,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC,CAAA;AAGtE,MAAM,OAAO,QAAS,SAAQ,MAAM,CAAC,KAAK,CAAW,UAAU,CAAC,CAAC;IAC/D,SAAS,EAAE,iBAAiB;IAC5B,KAAK,EAAE,MAAM,CAAC,MAAM;CACrB,CAAC;CAAG;AAEL,MAAM,OAAO,cAAe,SAAQ,MAAM,CAAC,KAAK,CAAiB,gBAAgB,CAAC,CAAC;IACjF,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,OAAO,qBAAsB,SAAQ,MAAM,CAAC,KAAK,CAAwB,uBAAuB,CAAC,CAAC;IACtG,EAAE,EAAE,UAAU;IACd,IAAI,EAAE,MAAM,CAAC,MAAM;IACnB,MAAM,EAAE,cAAc;IACtB,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC,MAAM;IACxB,QAAQ,EAAE,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC;CACvC,CAAC;CAAG;AAEL,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,IAAoB,EAAE,KAAqB,EAAU,EAAE,CACzF,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;AAEjC,MAAM,CAAC,MAAM,sBAAsB,GAAG,CACpC,IAA2B,EAC3B,KAA4B,EACpB,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA"}
@@ -1,17 +1,17 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  import { CommandSpec, HttpEnvHeader, HttpHeader } from "./operation.js";
3
3
  export type * from "../types/effect-internal.js";
4
- export declare const EvidenceId: Schema.String;
4
+ export declare const EvidenceId: Schema.NonEmptyString;
5
5
  export type EvidenceId = typeof EvidenceId.Type;
6
6
  export declare const EvidenceSeverity: Schema.Literals<readonly ["info", "warning", "error"]>;
7
7
  export type EvidenceSeverity = typeof EvidenceSeverity.Type;
8
8
  export declare const EvidenceStatus: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
9
9
  export type EvidenceStatus = typeof EvidenceStatus.Type;
10
10
  declare const CommandEvidence_base: Schema.Class<CommandEvidence, Schema.Struct<{
11
- readonly id: Schema.String;
12
- readonly operationId: Schema.String;
11
+ readonly id: Schema.NonEmptyString;
12
+ readonly operationId: Schema.NonEmptyString;
13
13
  readonly operationFingerprint: Schema.String;
14
- readonly targetId: Schema.optionalKey<Schema.String>;
14
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
15
15
  readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
16
16
  readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
17
17
  readonly command: typeof CommandSpec;
@@ -39,10 +39,10 @@ declare const HttpCheckEvidence_base: Schema.Class<HttpCheckEvidence, Schema.Str
39
39
  export declare class HttpCheckEvidence extends HttpCheckEvidence_base {
40
40
  }
41
41
  declare const HttpEvidence_base: Schema.Class<HttpEvidence, Schema.Struct<{
42
- readonly id: Schema.String;
43
- readonly operationId: Schema.String;
42
+ readonly id: Schema.NonEmptyString;
43
+ readonly operationId: Schema.NonEmptyString;
44
44
  readonly operationFingerprint: Schema.String;
45
- readonly targetId: Schema.optionalKey<Schema.String>;
45
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
46
46
  readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
47
47
  readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
48
48
  readonly request: typeof HttpRequestEvidence;
@@ -56,9 +56,9 @@ declare const HttpEvidence_base: Schema.Class<HttpEvidence, Schema.Struct<{
56
56
  export declare class HttpEvidence extends HttpEvidence_base {
57
57
  }
58
58
  declare const ValidationEvidence_base: Schema.Class<ValidationEvidence, Schema.Struct<{
59
- readonly id: Schema.String;
59
+ readonly id: Schema.NonEmptyString;
60
60
  readonly operationFingerprint: Schema.String;
61
- readonly targetId: Schema.optionalKey<Schema.String>;
61
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
62
62
  readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
63
63
  readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
64
64
  readonly message: Schema.String;
@@ -68,10 +68,10 @@ declare const ValidationEvidence_base: Schema.Class<ValidationEvidence, Schema.S
68
68
  export declare class ValidationEvidence extends ValidationEvidence_base {
69
69
  }
70
70
  declare const ExecutionEvidence_base: Schema.Class<ExecutionEvidence, Schema.Struct<{
71
- readonly id: Schema.String;
72
- readonly operationId: Schema.String;
71
+ readonly id: Schema.NonEmptyString;
72
+ readonly operationId: Schema.NonEmptyString;
73
73
  readonly operationFingerprint: Schema.String;
74
- readonly targetId: Schema.optionalKey<Schema.String>;
74
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
75
75
  readonly status: Schema.Literals<readonly ["passed", "failed", "skipped", "warning"]>;
76
76
  readonly severity: Schema.Literals<readonly ["info", "warning", "error"]>;
77
77
  readonly message: Schema.String;
@@ -83,8 +83,8 @@ export declare const EvidenceRecord: Schema.Union<readonly [typeof CommandEviden
83
83
  export type EvidenceRecord = typeof EvidenceRecord.Type;
84
84
  declare const EvidenceBundle_base: Schema.Class<EvidenceBundle, Schema.Struct<{
85
85
  readonly schemaVersion: Schema.Literal<"release-evidence/v1">;
86
- readonly releaseName: Schema.String;
87
- readonly releaseVersion: Schema.String;
86
+ readonly releaseName: Schema.NonEmptyString;
87
+ readonly releaseVersion: Schema.NonEmptyString;
88
88
  readonly records: Schema.$Array<Schema.Union<readonly [typeof CommandEvidence, typeof HttpEvidence, typeof ValidationEvidence, typeof ExecutionEvidence]>>;
89
89
  }>, {}>;
90
90
  export declare class EvidenceBundle extends EvidenceBundle_base {
@@ -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,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,oBAcnC;CAAG;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAchC;CAAG;;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAStC;CAAG;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBASrC;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
+ {"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;AAIhG,mBAAmB,6BAA6B,CAAA;AAEhD,eAAO,MAAM,UAAU,uBAAwB,CAAA;AAC/C,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,oBAcnC;CAAG;;;;;;;AAEL,qBAAa,mBAAoB,SAAQ,wBAKvC;CAAG;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBAGrC;CAAG;;;;;;;;;;;;;;;;AAEL,qBAAa,YAAa,SAAQ,iBAchC;CAAG;;;;;;;;;;;AAEL,qBAAa,kBAAmB,SAAQ,uBAStC;CAAG;;;;;;;;;;;AAEL,qBAAa,iBAAkB,SAAQ,sBASrC;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,7 +1,8 @@
1
1
  import * as Schema from "effect/Schema";
2
2
  import { CommandSpec, HttpEnvHeader, HttpHeader, HttpMethod, OperationId } from "./operation.js";
3
+ import { ReleaseName, ReleaseVersion } from "./release.js";
3
4
  import { TargetId } from "./target.js";
4
- export const EvidenceId = Schema.String;
5
+ export const EvidenceId = Schema.NonEmptyString;
5
6
  export const EvidenceSeverity = Schema.Literals(["info", "warning", "error"]);
6
7
  export const EvidenceStatus = Schema.Literals(["passed", "failed", "skipped", "warning"]);
7
8
  export class CommandEvidence extends Schema.Class("CommandEvidence")({
@@ -73,8 +74,8 @@ export class ExecutionEvidence extends Schema.Class("ExecutionEvidence")({
73
74
  export const EvidenceRecord = Schema.Union([CommandEvidence, HttpEvidence, ValidationEvidence, ExecutionEvidence]);
74
75
  export class EvidenceBundle extends Schema.Class("EvidenceBundle")({
75
76
  schemaVersion: Schema.Literal("release-evidence/v1"),
76
- releaseName: Schema.String,
77
- releaseVersion: Schema.String,
77
+ releaseName: ReleaseName,
78
+ releaseVersion: ReleaseVersion,
78
79
  records: Schema.Array(EvidenceRecord)
79
80
  }) {
80
81
  }
@@ -1 +1 @@
1
- {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"evidence.js","sourceRoot":"","sources":["../../src/domain/evidence.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Schema from "effect/Schema";
3
3
  export type * from "../types/effect-internal.js";
4
- export declare const OperationId: Schema.String;
4
+ export declare const OperationId: Schema.NonEmptyString;
5
5
  export type OperationId = typeof OperationId.Type;
6
6
  export declare const OperationRisk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
7
7
  export type OperationRisk = typeof OperationRisk.Type;
@@ -64,8 +64,8 @@ export declare class HttpJsonArrayObjectFieldEqualsCheck extends HttpJsonArrayOb
64
64
  export declare const HttpJsonCheck: Schema.Union<readonly [typeof HttpJsonEqualsCheck, typeof HttpJsonArrayObjectFieldEqualsCheck]>;
65
65
  export type HttpJsonCheck = typeof HttpJsonCheck.Type;
66
66
  declare const RenderFileOperation_base: Schema.Class<RenderFileOperation, Schema.TaggedStruct<"RenderFileOperation", {
67
- readonly id: Schema.String;
68
- readonly targetId: Schema.optionalKey<Schema.String>;
67
+ readonly id: Schema.NonEmptyString;
68
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
69
69
  readonly description: Schema.String;
70
70
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
71
71
  readonly gate: typeof ExecutionGate;
@@ -75,8 +75,8 @@ declare const RenderFileOperation_base: Schema.Class<RenderFileOperation, Schema
75
75
  export declare class RenderFileOperation extends RenderFileOperation_base {
76
76
  }
77
77
  declare const ValidateCommandOperation_base: Schema.Class<ValidateCommandOperation, Schema.TaggedStruct<"ValidateCommandOperation", {
78
- readonly id: Schema.String;
79
- readonly targetId: Schema.optionalKey<Schema.String>;
78
+ readonly id: Schema.NonEmptyString;
79
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
80
80
  readonly description: Schema.String;
81
81
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
82
82
  readonly gate: typeof ExecutionGate;
@@ -85,8 +85,8 @@ declare const ValidateCommandOperation_base: Schema.Class<ValidateCommandOperati
85
85
  export declare class ValidateCommandOperation extends ValidateCommandOperation_base {
86
86
  }
87
87
  declare const ValidationNoteOperation_base: Schema.Class<ValidationNoteOperation, Schema.TaggedStruct<"ValidationNoteOperation", {
88
- readonly id: Schema.String;
89
- readonly targetId: Schema.optionalKey<Schema.String>;
88
+ readonly id: Schema.NonEmptyString;
89
+ readonly targetId: Schema.optionalKey<Schema.NonEmptyString>;
90
90
  readonly description: Schema.String;
91
91
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
92
92
  readonly gate: typeof ExecutionGate;
@@ -97,8 +97,8 @@ declare const ValidationNoteOperation_base: Schema.Class<ValidationNoteOperation
97
97
  export declare class ValidationNoteOperation extends ValidationNoteOperation_base {
98
98
  }
99
99
  declare const PublishCommandOperation_base: Schema.Class<PublishCommandOperation, Schema.TaggedStruct<"PublishCommandOperation", {
100
- readonly id: Schema.String;
101
- readonly targetId: Schema.String;
100
+ readonly id: Schema.NonEmptyString;
101
+ readonly targetId: Schema.NonEmptyString;
102
102
  readonly description: Schema.String;
103
103
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
104
104
  readonly gate: typeof ExecutionGate;
@@ -107,8 +107,8 @@ declare const PublishCommandOperation_base: Schema.Class<PublishCommandOperation
107
107
  export declare class PublishCommandOperation extends PublishCommandOperation_base {
108
108
  }
109
109
  declare const VerifyRemoteOperation_base: Schema.Class<VerifyRemoteOperation, Schema.TaggedStruct<"VerifyRemoteOperation", {
110
- readonly id: Schema.String;
111
- readonly targetId: Schema.String;
110
+ readonly id: Schema.NonEmptyString;
111
+ readonly targetId: Schema.NonEmptyString;
112
112
  readonly description: Schema.String;
113
113
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
114
114
  readonly gate: typeof ExecutionGate;
@@ -117,8 +117,8 @@ declare const VerifyRemoteOperation_base: Schema.Class<VerifyRemoteOperation, Sc
117
117
  export declare class VerifyRemoteOperation extends VerifyRemoteOperation_base {
118
118
  }
119
119
  declare const VerifyHttpOperation_base: Schema.Class<VerifyHttpOperation, Schema.TaggedStruct<"VerifyHttpOperation", {
120
- readonly id: Schema.String;
121
- readonly targetId: Schema.String;
120
+ readonly id: Schema.NonEmptyString;
121
+ readonly targetId: Schema.NonEmptyString;
122
122
  readonly description: Schema.String;
123
123
  readonly risk: Schema.Literals<readonly ["read-only", "writes-local", "externally-visible", "irreversible"]>;
124
124
  readonly gate: typeof ExecutionGate;
@@ -139,7 +139,7 @@ export declare class ExecutionApproval extends ExecutionApproval_base {
139
139
  static readonly none: ExecutionApproval;
140
140
  }
141
141
  declare const ExecutionApprovalError_base: Schema.Class<ExecutionApprovalError, Schema.TaggedStruct<"ExecutionApprovalError", {
142
- readonly operationId: Schema.String;
142
+ readonly operationId: Schema.NonEmptyString;
143
143
  readonly reason: Schema.String;
144
144
  }>, import("effect/Cause").YieldableError>;
145
145
  export declare class ExecutionApprovalError extends ExecutionApprovalError_base {
@@ -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,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;AAsG7C,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,KAAG,MA+B3D,CAAA;;;;;AAED,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"}
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,uBAAwB,CAAA;AAChD,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;AAsG7C,eAAO,MAAM,oBAAoB,GAAI,WAAW,SAAS,KAAG,MA+B3D,CAAA;;;;;AAED,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"}
@@ -1,7 +1,7 @@
1
1
  import * as Effect from "effect/Effect";
2
2
  import * as Schema from "effect/Schema";
3
3
  import { TargetId } from "./target.js";
4
- export const OperationId = Schema.String;
4
+ export const OperationId = Schema.NonEmptyString;
5
5
  export const OperationRisk = Schema.Literals(["read-only", "writes-local", "externally-visible", "irreversible"]);
6
6
  export class ExecutionGate extends Schema.Class("ExecutionGate")({
7
7
  requiresExecute: Schema.Boolean,