@savvy-web/silk 3.2.9 → 3.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -3711,7 +3711,7 @@ declare class Git extends Git_base {
3711
3711
  static readonly layerTest: (overrides?: Partial<GitShape>) => Layer.Layer<Git>;
3712
3712
  }
3713
3713
  //#endregion
3714
- //#region ../../node_modules/.pnpm/@effected+semver@0.2.1_effect@4.0.0-beta.101/node_modules/@effected/semver/index.d.ts
3714
+ //#region ../../node_modules/.pnpm/@effected+semver@0.3.0_effect@4.0.0-beta.101/node_modules/@effected/semver/index.d.ts
3715
3715
  //#region src/SemVer.d.ts
3716
3716
  declare const InvalidVersionError_base: Schema.Class<InvalidVersionError, Schema.TaggedStruct<"InvalidVersionError", {
3717
3717
  /** The raw input string that failed to parse. */
@@ -3779,6 +3779,35 @@ declare class SemVer extends SemVer_base {
3779
3779
  * prints `major.minor.patch[-prerelease][+build]`.
3780
3780
  */
3781
3781
  static readonly FromString: Schema.Codec<SemVer, string>;
3782
+ /**
3783
+ * `Schema.String` refined by {@link SemVer.isValid}: an exact SemVer 2.0.0
3784
+ * version string whose type stays `string`.
3785
+ *
3786
+ * @remarks
3787
+ * For consumer structs whose field must remain a plain string — a manifest
3788
+ * model, an action input — while still refusing everything that is not
3789
+ * exactly one version: ranges, partial versions, dist-tags, and padded
3790
+ * input (see {@link SemVer.isValid} for the whitespace posture). Build
3791
+ * metadata is valid grammar and passes; reach for
3792
+ * {@link SemVer.PinnableVersionString} when the `+` position is spoken for.
3793
+ * Decode to a {@link SemVer} instance with {@link SemVer.FromString}
3794
+ * instead when the parsed components are wanted.
3795
+ */
3796
+ static readonly ExactVersionString: Schema.String;
3797
+ /**
3798
+ * `Schema.String` refined by {@link SemVer.isPinnable}: an exact,
3799
+ * build-metadata-free SemVer 2.0.0 version string whose type stays
3800
+ * `string`.
3801
+ *
3802
+ * @remarks
3803
+ * The corepack-pinnable notion: what the `<name>@<version>[+<integrity>]`
3804
+ * pin grammar can express in its version position, where the first `+`
3805
+ * always begins the integrity component. `@effected/package-json`'s
3806
+ * `PackageManager` field model consumes this schema directly; suites that
3807
+ * must prove they share it rather than carrying a copy can assert object
3808
+ * identity against this export.
3809
+ */
3810
+ static readonly PinnableVersionString: Schema.String;
3782
3811
  /**
3783
3812
  * Parse a strict SemVer 2.0.0 version string, synchronously, returning a
3784
3813
  * `Result` instead of an `Effect`.
@@ -3787,6 +3816,12 @@ declare class SemVer extends SemVer_base {
3787
3816
  * identifiers and partially consumed input.
3788
3817
  *
3789
3818
  * @remarks
3819
+ * **Surrounding whitespace is TRIMMED before parsing**, matching
3820
+ * node-semver's constructor: `" 1.2.3"` parses successfully. When padded
3821
+ * input should be the caller's error rather than silently canonicalized,
3822
+ * reach for {@link SemVer.isValid} / {@link SemVer.ExactVersionString}
3823
+ * (or their pinnable twins), which deliberately reject it.
3824
+ *
3790
3825
  * {@link SemVer.parse} is defined in terms of this function; the two never
3791
3826
  * diverge. Reach for the `Effect` variant inside Effect code — it carries
3792
3827
  * the `SemVer.parse` tracing span — and for this one at synchronous
@@ -3824,6 +3859,43 @@ declare class SemVer extends SemVer_base {
3824
3859
  * when `input` is not a valid version string.
3825
3860
  */
3826
3861
  static readonly parse: (input: string) => Effect.Effect<SemVer, InvalidVersionError, never>;
3862
+ /**
3863
+ * Whether `input` is a valid SemVer 2.0.0 version string, exactly as
3864
+ * given.
3865
+ *
3866
+ * @remarks
3867
+ * Strict grammar validity — the same grammar as {@link SemVer.parseResult}
3868
+ * — with one deliberate divergence: surrounding whitespace is **rejected**.
3869
+ * `parseResult` trims its input (matching node-semver, whose `SemVer`
3870
+ * constructor trims), so `" 1.2.3"` parses; this predicate answers a
3871
+ * different question — "is this string, byte for byte, a version?" — and a
3872
+ * padded input is the caller's bug to surface, not this package's to hide.
3873
+ * Build metadata is valid grammar (`isValid("1.2.3+build")` is `true`);
3874
+ * reach for {@link SemVer.isPinnable} when the `+` position must stay
3875
+ * free.
3876
+ *
3877
+ * @param input - the candidate version string
3878
+ * @returns `true` when `input` is a valid version string with no
3879
+ * surrounding whitespace.
3880
+ */
3881
+ static isValid(input: string): boolean;
3882
+ /**
3883
+ * Whether `input` is a corepack-pinnable version string: valid by
3884
+ * {@link SemVer.isValid} **and** carrying no build metadata.
3885
+ *
3886
+ * @remarks
3887
+ * The notion the `<name>@<version>[+<integrity>]` pin grammar needs: there
3888
+ * the first `+` after the version always begins the integrity component,
3889
+ * so a version carrying build identifiers would encode to a string that
3890
+ * re-parses differently. Prerelease versions are pinnable; the whitespace
3891
+ * posture is {@link SemVer.isValid}'s.
3892
+ *
3893
+ * @param input - the candidate version string
3894
+ * @returns `true` when `input` is a valid version string with no
3895
+ * surrounding whitespace (the string equals its own trim) and whose
3896
+ * build metadata is empty.
3897
+ */
3898
+ static isPinnable(input: string): boolean;
3827
3899
  /**
3828
3900
  * Positional convenience constructor: `SemVer.of(1, 2, 3)`.
3829
3901
  *
@@ -4286,7 +4358,7 @@ declare class UnsatisfiableConstraintError extends UnsatisfiableConstraintError_
4286
4358
  get message(): string;
4287
4359
  }
4288
4360
  //#endregion
4289
- //#region ../../node_modules/.pnpm/@effected+npm@0.5.0_@effected+semver@0.2.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/index.d.ts
4361
+ //#region ../../node_modules/.pnpm/@effected+npm@0.8.0_@effected+semver@0.3.0_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/npm/index.d.ts
4290
4362
  //#region src/CatalogAssemblyError.d.ts
4291
4363
  declare const CatalogAssemblyError_base: Schema.Class<CatalogAssemblyError, Schema.TaggedStruct<"CatalogAssemblyError", {
4292
4364
  /**
@@ -4532,9 +4604,15 @@ type ClassifiedSpecifier = CatalogSpecifier | WorkspaceSpecifier | RangeSpecifie
4532
4604
  /**
4533
4605
  * A supported integrity hash algorithm.
4534
4606
  *
4607
+ * @remarks
4608
+ * `sha224` appears only in the corepack form — corepack's own transparent
4609
+ * default pins emit it (e.g. `yarn@4.x+sha224.<hex>`) — and never in SRI,
4610
+ * whose specification names only `sha256`/`sha384`/`sha512` (plus legacy
4611
+ * `sha1`).
4612
+ *
4535
4613
  * @public
4536
4614
  */
4537
- type IntegrityAlgorithm = "sha1" | "sha256" | "sha384" | "sha512";
4615
+ type IntegrityAlgorithm = "sha1" | "sha224" | "sha256" | "sha384" | "sha512";
4538
4616
  declare const InvalidIntegrityHashError_base: Schema.Class<InvalidIntegrityHashError, Schema.TaggedStruct<"InvalidIntegrityHashError", {
4539
4617
  /** The raw input string that failed validation. */
4540
4618
  readonly input: Schema.String;
@@ -4854,7 +4932,7 @@ declare class GlobPattern extends GlobPattern_base {
4854
4932
  static readonly FromString: Schema.Codec<GlobPattern, string>;
4855
4933
  }
4856
4934
  //#endregion
4857
- //#region ../../node_modules/.pnpm/@effected+lockfiles@0.2.1_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._44d8f67a8ab767df898f59f0e01343be/node_modules/@effected/lockfiles/index.d.ts
4935
+ //#region ../../node_modules/.pnpm/@effected+lockfiles@0.3.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__@effected+npm@0._6d3ff0eb8f85b9388aafe615e49a1bcb/node_modules/@effected/lockfiles/index.d.ts
4858
4936
  //#region src/BunExtension.d.ts
4859
4937
  declare const BunExtension_base: Schema.Class<BunExtension, Schema.Struct<{
4860
4938
  readonly _tag: Schema.tag<"bun">;
@@ -5284,7 +5362,7 @@ declare class LockfileIntegrity extends LockfileIntegrity_base {
5284
5362
  static compare(lockfile: Lockfile, manifests: ReadonlyArray<WorkspaceManifest>): LockfileIntegrity;
5285
5363
  }
5286
5364
  //#endregion
5287
- //#region ../../node_modules/.pnpm/@effected+package-json@0.6.0_effect@4.0.0-beta.101/node_modules/@effected/package-json/index.d.ts
5365
+ //#region ../../node_modules/.pnpm/@effected+package-json@0.7.1_effect@4.0.0-beta.101/node_modules/@effected/package-json/index.d.ts
5288
5366
  //#region src/Dependency.d.ts
5289
5367
  declare const Dependency_base: Schema.Class<Dependency, Schema.Struct<{
5290
5368
  /** The package name. */
@@ -5369,23 +5447,78 @@ declare class InvalidSpdxLicenseError extends InvalidSpdxLicenseError_base {
5369
5447
  //#endregion
5370
5448
  //#region src/PackageManager.d.ts
5371
5449
  declare const PackageManager_base: Schema.Class<PackageManager, Schema.Struct<{
5372
- /** The package-manager name (e.g. `pnpm`). */
5450
+ /** The package-manager name (e.g. `pnpm`). Any lowercase name — see the class remarks. */
5373
5451
  readonly name: Schema.String;
5374
- /** The version (e.g. `10.33.0`). */
5452
+ /**
5453
+ * The version (e.g. `10.33.0`): `@effected/semver`'s
5454
+ * `SemVer.PinnableVersionString` — an exact SemVer 2.0.0 version with no
5455
+ * build metadata and no surrounding whitespace. Prerelease versions are
5456
+ * allowed (`10.0.0-rc.1`); ranges, partial versions, dist-tags,
5457
+ * leading-zero components and padded values are not, and a version
5458
+ * carrying build metadata is rejected at construction because the grammar
5459
+ * cannot express it. The shared schema is consumed by identity, not
5460
+ * copied — the suite asserts `fields.version === SemVer.PinnableVersionString`.
5461
+ */
5375
5462
  readonly version: Schema.String;
5376
- /** The optional integrity hash (e.g. `sha512.abc`), an `@effected/npm` `IntegrityHash` restricted to the corepack `<algo>.<hex>` form. */
5463
+ /**
5464
+ * The optional integrity hash (e.g. `sha512.abc`): `@effected/npm`'s
5465
+ * `CorepackIntegrityHash`, the shared restriction of the `IntegrityHash`
5466
+ * brand to the corepack `<algo>.<hex>` form.
5467
+ */
5377
5468
  readonly integrity: Schema.Option<Schema.brand<Schema.String, "IntegrityHash">>;
5378
5469
  }>, {}>;
5379
5470
  /**
5380
5471
  * A structured `packageManager` value with `name`, `version` and an optional
5381
5472
  * `integrity` hash.
5382
5473
  *
5474
+ * @remarks
5475
+ * The same `<name>@<version>[+<integrity>]` triple `@effected/npm`'s
5476
+ * `PackageManagerPin` models, in its `package.json` field form. Both share the
5477
+ * strict pieces — the version is `@effected/semver`'s
5478
+ * `SemVer.PinnableVersionString` (decode rules through `SemVer.isPinnable`),
5479
+ * the integrity is npm's `CorepackIntegrityHash` — and
5480
+ * both apply the first-`+`-is-integrity rule. Reach for the pin when
5481
+ * provisioning a package manager; reach for this class when reading or writing
5482
+ * the manifest field.
5483
+ *
5484
+ * **The one deliberate divergence is the name grammar**, and it points this
5485
+ * way: the pin closes the set to the four managers the kit can provision
5486
+ * (`npm | pnpm | yarn | bun`), while this field model accepts any lowercase
5487
+ * name. The evidence:
5488
+ *
5489
+ * - Corepack 0.34.0 (`specUtils.ts`, `parseSpec`) recognises **three** names —
5490
+ * `npm`, `pnpm`, `yarn` — and throws an "unsupported package manager
5491
+ * specification" usage error for any other. Adopting that set here would reject
5492
+ * `bun@1.2.20`, which is real: six published packages in this repo's own
5493
+ * `node_modules` carry exactly that value, and a manifest model that cannot
5494
+ * read them is useless for the job it has.
5495
+ * - Corepack does not treat the set as closed either. `parseSpec` skips the
5496
+ * name check entirely when the spec is a URL, so a custom name is reachable
5497
+ * in corepack's own grammar (behind `COREPACK_ENABLE_UNSAFE_CUSTOM_URLS`).
5498
+ * - npm documents no constraint on this field at all. Its `package.json`
5499
+ * reference constrains only `devEngines.packageManager.name` — a different
5500
+ * field, modeled here by `DevEngine` and out of scope for this class.
5501
+ *
5502
+ * So: field model = manifests as they exist in the wild; pin = the kit's
5503
+ * provisioning vocabulary. A name outside the pin's four is representable here
5504
+ * and simply will not be installable through the pin — which is the honest
5505
+ * relationship between a document model and a provisioning contract.
5506
+ *
5383
5507
  * @public
5384
5508
  */
5385
5509
  declare class PackageManager extends PackageManager_base {
5386
5510
  /**
5387
5511
  * Schema transformation between the `"name@version+integrity"` string and a
5388
5512
  * {@link PackageManager}.
5513
+ *
5514
+ * @remarks
5515
+ * Decoding splits on the first `@`, then on the first `+` — which always
5516
+ * begins the integrity, never semver build metadata — and validates each
5517
+ * component: the name against the lowercase grammar, the version through
5518
+ * `@effected/semver`'s strict parse, the integrity through
5519
+ * `CorepackIntegrityHash`. Every failure is a typed decode failure naming
5520
+ * the component that failed. Encoding prints the canonical string, which is
5521
+ * byte-identical to any input this codec accepts.
5389
5522
  */
5390
5523
  static readonly FromString: Schema.Codec<PackageManager, string>;
5391
5524
  /** Whether an integrity hash is present. */
@@ -5811,7 +5944,7 @@ declare class Package extends Package_base {
5811
5944
  toJsonString(options?: PackageFormatOptions): string;
5812
5945
  }
5813
5946
  //#endregion
5814
- //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.0_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/index.d.ts
5947
+ //#region ../../node_modules/.pnpm/@effected+workspaces@0.9.3_@effected+jsonc@0.5.1_effect@4.0.0-beta.101__effect@4.0.0-beta.101/node_modules/@effected/workspaces/index.d.ts
5815
5948
  //#region src/WorkspacePackage.d.ts
5816
5949
  declare const PublishConfig_base: Schema.Class<PublishConfig, Schema.Struct<{
5817
5950
  /** Scoped-package visibility. Its presence overrides `private`. */
@@ -6405,7 +6538,10 @@ declare class WorkspaceDiscovery extends WorkspaceDiscovery_base {
6405
6538
  * (a fabricated root path would leak into consumer path logic), so an
6406
6539
  * unstubbed `info()` call is a test-wiring mistake and fails loudly as a
6407
6540
  * defect rather than succeeding with a lie or failing with a dishonest
6408
- * typed error.
6541
+ * typed error. A defect is not absorbed by `Effect.catch` or any
6542
+ * typed-error handler — deliberately, so code under test with a
6543
+ * best-effort `catch` cannot make the mandatory stub look optional; the
6544
+ * unstubbed call still fails the test.
6409
6545
  *
6410
6546
  * @example
6411
6547
  * ```ts
@@ -6701,6 +6837,11 @@ declare class PackageManagerDetector extends PackageManagerDetector_base {
6701
6837
  * reads as a legitimate "no manager here" answer, so a consumer would branch
6702
6838
  * on it and proceed, never learning that the test simply forgot to stub.
6703
6839
  *
6840
+ * The defect is also not absorbed by `Effect.catch` or any typed-error
6841
+ * handler — deliberately, so code under test with a best-effort `catch`
6842
+ * around detection cannot make the mandatory stub look optional; the
6843
+ * unstubbed call still fails the test.
6844
+ *
6704
6845
  * @param overrides - Members to supply; anything omitted dies on use.
6705
6846
  *
6706
6847
  * @example
@@ -7049,8 +7190,15 @@ declare class PublishabilityDetector extends PublishabilityDetector_base {
7049
7190
  * silence — `Layer.mergeAll(myDetector, Workspaces.layer())` resolved to the
7050
7191
  * default, because `mergeAll` is last-wins. For a service that decides
7051
7192
  * whether a package publishes and to which registry, that silent revert was
7052
- * the worst available failure. The requirement now sits in `R`, so the
7053
- * choice is made once, explicitly, and unmade wiring does not compile.
7193
+ * the worst available failure.
7194
+ *
7195
+ * The composites do not *require* a detector either — nothing inside them
7196
+ * asks a publishability question, so their `R` stays `FileSystem | Path`.
7197
+ * The requirement instead surfaces in the `R` of each operation that asks
7198
+ * (`VersioningStrategy.detect`, e.g.): a program that asks and never wires
7199
+ * a detector fails to compile where that operation's `R` must close — which
7200
+ * can be far from the layer-wiring site — and a program that never asks
7201
+ * never supplies a publish policy at all.
7054
7202
  */
7055
7203
  static readonly layerNpm: Layer.Layer<PublishabilityDetector>;
7056
7204
  /**
@@ -7640,6 +7788,13 @@ declare class WorkspaceSnapshots extends WorkspaceSnapshots_base {
7640
7788
  * test-wiring mistake fails loudly as a defect rather than succeeding with a
7641
7789
  * lie.
7642
7790
  *
7791
+ * **A defect is not absorbed by `Effect.catch` or any typed-error handler**,
7792
+ * and that is the point: code under test with a best-effort `catch` around
7793
+ * its snapshot reads cannot make a mandatory stub look optional — the
7794
+ * unstubbed call still fails the test instead of quietly taking the catch
7795
+ * branch. Only defect-level combinators (`Effect.catchDefect`,
7796
+ * `Effect.exit`) would see it.
7797
+ *
7643
7798
  * @example
7644
7799
  * ```ts
7645
7800
  * import { CatalogSet, WorkspaceSnapshots, WorkspaceStateSnapshot } from "@effected/workspaces";
@@ -8040,7 +8195,7 @@ declare class Categories {
8040
8195
  static isValidHeading(heading: string): boolean;
8041
8196
  }
8042
8197
  //#endregion
8043
- //#region ../../node_modules/.pnpm/@changesets+types@7.0.0-next.7/node_modules/@changesets/types/dist/index.d.mts
8198
+ //#region ../../node_modules/.pnpm/@changesets+types@7.0.0-next.8/node_modules/@changesets/types/dist/index.d.mts
8044
8199
  //#region src/index.d.ts
8045
8200
  type MaybePromise<T> = T | Promise<T>;
8046
8201
  type VersionType$1 = "major" | "minor" | "patch" | "none";
@@ -8049,13 +8204,34 @@ type Release = {
8049
8204
  name: string;
8050
8205
  type: VersionType$1;
8051
8206
  };
8052
- type ComprehensiveRelease = {
8207
+ interface ComprehensiveReleaseBase {
8053
8208
  name: string;
8054
- type: VersionType$1;
8209
+ type: "major" | "minor" | "patch" | "none";
8210
+ changesets: string[];
8211
+ oldVersion: string | undefined;
8212
+ newVersion: string | undefined;
8213
+ }
8214
+ interface ComprehensiveMajorRelease extends ComprehensiveReleaseBase {
8215
+ type: "major";
8055
8216
  oldVersion: string;
8056
8217
  newVersion: string;
8057
- changesets: string[];
8058
- };
8218
+ }
8219
+ interface ComprehensiveMinorRelease extends ComprehensiveReleaseBase {
8220
+ type: "minor";
8221
+ oldVersion: string;
8222
+ newVersion: string;
8223
+ }
8224
+ interface ComprehensivePatchRelease extends ComprehensiveReleaseBase {
8225
+ type: "patch";
8226
+ oldVersion: string;
8227
+ newVersion: string;
8228
+ }
8229
+ interface ComprehensiveNoneRelease extends ComprehensiveReleaseBase {
8230
+ type: "none";
8231
+ oldVersion: string | undefined;
8232
+ newVersion: string | undefined;
8233
+ }
8234
+ type ComprehensiveRelease = ComprehensiveMajorRelease | ComprehensiveMinorRelease | ComprehensivePatchRelease | ComprehensiveNoneRelease;
8059
8235
  type Changeset$1 = {
8060
8236
  summary: string;
8061
8237
  releases: Array<Release>;
@@ -9914,6 +10090,10 @@ type MaintenanceReason = typeof MaintenanceReasonSchema.Type;
9914
10090
  * will not match here; the release then degrades gracefully to the
9915
10091
  * `"unspecified"` fallback sentence instead of naming its triggers.
9916
10092
  *
10093
+ * Co-members releasing as `type: "none"` are never triggers — they carry no
10094
+ * version bump (and, per `@changesets/types`, no guaranteed `newVersion`), so
10095
+ * naming one would print an unchanged version as the cause of the release.
10096
+ *
9917
10097
  * @public
9918
10098
  */
9919
10099
  declare function deriveMaintenanceReason(release: ComprehensiveRelease, plan: ReleasePlan, config: Config): MaintenanceReason | undefined;
@@ -10606,7 +10786,7 @@ declare const ChangesetConfigReader_base: Context.ServiceClass<ChangesetConfigRe
10606
10786
  * const reader = yield* ChangesetConfigReader;
10607
10787
  * return yield* reader.read(process.cwd());
10608
10788
  * }).pipe(
10609
- * Effect.provide(ChangesetConfigReaderLive),
10789
+ * Effect.provide(ChangesetConfigReader.layer),
10610
10790
  * Effect.provide(NodeServices.layer),
10611
10791
  * )
10612
10792
  * );
@@ -10615,7 +10795,19 @@ declare const ChangesetConfigReader_base: Context.ServiceClass<ChangesetConfigRe
10615
10795
  * @since 0.1.0
10616
10796
  * @public
10617
10797
  */
10618
- declare class ChangesetConfigReader extends ChangesetConfigReader_base {}
10798
+ declare class ChangesetConfigReader extends ChangesetConfigReader_base {
10799
+ /**
10800
+ * Production implementation of {@link ChangesetConfigReader}.
10801
+ *
10802
+ * @remarks
10803
+ * Requires the core `FileSystem` service. Provide `NodeServices.layer` (or
10804
+ * `NodeFileSystem.layer`) from `@effect/platform-node` to satisfy this dependency.
10805
+ *
10806
+ * @since 0.1.0
10807
+ * @public
10808
+ */
10809
+ static readonly layer: Layer.Layer<ChangesetConfigReader, never, FileSystem.FileSystem>;
10810
+ }
10619
10811
  //#endregion
10620
10812
  //#region src/changesets/services/config-inspector.d.ts
10621
10813
  /** A `versionFiles` entry expanded to its absolute target paths. @public */
@@ -10732,7 +10924,7 @@ declare const ConfigInspector_base: Context.ServiceClass<ConfigInspector, "Confi
10732
10924
  * @example
10733
10925
  * ```typescript
10734
10926
  * import { Effect } from "effect";
10735
- * import { ConfigInspector, ConfigInspectorLive } from "@savvy-web/changesets";
10927
+ * import { ConfigInspector } from "@savvy-web/changesets";
10736
10928
  *
10737
10929
  * const program = Effect.gen(function* () {
10738
10930
  * const inspector = yield* ConfigInspector;
@@ -10740,27 +10932,28 @@ declare const ConfigInspector_base: Context.ServiceClass<ConfigInspector, "Confi
10740
10932
  * return config.packages.map((p) => p.name);
10741
10933
  * });
10742
10934
  *
10743
- * Effect.runPromise(program.pipe(Effect.provide(ConfigInspectorLive)));
10935
+ * Effect.runPromise(program.pipe(Effect.provide(ConfigInspector.layer)));
10744
10936
  * ```
10745
10937
  *
10746
10938
  * @public
10747
10939
  */
10748
- declare class ConfigInspector extends ConfigInspector_base {}
10749
- /**
10750
- * Live layer for {@link ConfigInspector}.
10751
- *
10752
- * Requires {@link ChangesetConfigReader} and `WorkspaceDiscovery`
10753
- * in the environment.
10754
- *
10755
- * @public
10756
- */
10757
- declare const ConfigInspectorLive: Layer.Layer<ConfigInspector, never, ChangesetConfigReader | WorkspaceDiscovery | FileSystem.FileSystem>;
10940
+ declare class ConfigInspector extends ConfigInspector_base {
10941
+ /**
10942
+ * Production layer for {@link ConfigInspector}.
10943
+ *
10944
+ * Requires {@link ChangesetConfigReader} and `WorkspaceDiscovery`
10945
+ * in the environment.
10946
+ *
10947
+ * @public
10948
+ */
10949
+ static readonly layer: Layer.Layer<ConfigInspector, never, ChangesetConfigReader | WorkspaceDiscovery | FileSystem.FileSystem>;
10950
+ }
10758
10951
  /**
10759
10952
  * Test factory — build a {@link ConfigInspector} that returns a fixed
10760
10953
  * {@link InspectedConfig} without touching the filesystem.
10761
10954
  *
10762
10955
  * Tests that need to exercise the inspect/classify logic against real files
10763
- * should compose `ConfigInspectorLive` with test layers for
10956
+ * should compose `ConfigInspector.layer` with test layers for
10764
10957
  * `ChangesetConfigReader` and `WorkspaceDiscovery` instead.
10765
10958
  *
10766
10959
  * @public
@@ -10834,7 +11027,7 @@ declare const BranchAnalyzer_base: Context.ServiceClass<BranchAnalyzer, "BranchA
10834
11027
  * @example
10835
11028
  * ```typescript
10836
11029
  * import { Effect } from "effect";
10837
- * import { BranchAnalyzer, BranchAnalyzerLive, ConfigInspectorLive } from "@savvy-web/changesets";
11030
+ * import { BranchAnalyzer, ConfigInspector } from "@savvy-web/changesets";
10838
11031
  *
10839
11032
  * const program = Effect.gen(function* () {
10840
11033
  * const analyzer = yield* BranchAnalyzer;
@@ -10844,27 +11037,28 @@ declare const BranchAnalyzer_base: Context.ServiceClass<BranchAnalyzer, "BranchA
10844
11037
  *
10845
11038
  * Effect.runPromise(
10846
11039
  * program.pipe(
10847
- * Effect.provide(BranchAnalyzerLive),
10848
- * Effect.provide(ConfigInspectorLive),
10849
- * // ... + ChangesetConfigReaderLive + kit workspace layers + NodeServices.layer
11040
+ * Effect.provide(BranchAnalyzer.layer),
11041
+ * Effect.provide(ConfigInspector.layer),
11042
+ * // ... + ChangesetConfigReader.layer + kit workspace layers + NodeServices.layer
10850
11043
  * ),
10851
11044
  * );
10852
11045
  * ```
10853
11046
  *
10854
11047
  * @public
10855
11048
  */
10856
- declare class BranchAnalyzer extends BranchAnalyzer_base {}
10857
- /**
10858
- * Live layer for {@link BranchAnalyzer}.
10859
- *
10860
- * Requires {@link ConfigInspector} (which in turn requires
10861
- * `ChangesetConfigReader` and `WorkspaceDiscovery`) and a
10862
- * `ChildProcessSpawner` (satisfied by `NodeServices.layer`) for the
10863
- * internally-composed `@effected/git` layer.
10864
- *
10865
- * @public
10866
- */
10867
- declare const BranchAnalyzerLive: Layer.Layer<BranchAnalyzer, never, ConfigInspector | ChildProcessSpawner.ChildProcessSpawner>;
11049
+ declare class BranchAnalyzer extends BranchAnalyzer_base {
11050
+ /**
11051
+ * Production layer for {@link BranchAnalyzer}.
11052
+ *
11053
+ * Requires {@link ConfigInspector} (which in turn requires
11054
+ * `ChangesetConfigReader` and `WorkspaceDiscovery`) and a
11055
+ * `ChildProcessSpawner` (satisfied by `NodeServices.layer`) for the
11056
+ * internally-composed `@effected/git` layer.
11057
+ *
11058
+ * @public
11059
+ */
11060
+ static readonly layer: Layer.Layer<BranchAnalyzer, never, ConfigInspector | ChildProcessSpawner.ChildProcessSpawner>;
11061
+ }
10868
11062
  /**
10869
11063
  * Test factory — build a {@link BranchAnalyzer} that returns a fixed
10870
11064
  * {@link BranchAnalysis} for any input.
@@ -11073,13 +11267,13 @@ declare const GitHubService_base: Context.ServiceClass<GitHubService, "GitHubSer
11073
11267
  * This tag follows the standard Effect `Context.Service` pattern. Two layers
11074
11268
  * are provided out of the box:
11075
11269
  *
11076
- * - {@link GitHubLive} — production layer backed by the GitHub REST API
11270
+ * - `GitHubService.layer` — production layer backed by the GitHub REST API
11077
11271
  * - {@link makeGitHubTest} — factory for deterministic test layers
11078
11272
  *
11079
11273
  * @example
11080
11274
  * ```typescript
11081
- * import { Effect, Layer } from "effect";
11082
- * import { GitHubService, GitHubLive } from "\@savvy-web/changesets";
11275
+ * import { Effect } from "effect";
11276
+ * import { GitHubService } from "\@savvy-web/changesets";
11083
11277
  *
11084
11278
  * const program = Effect.gen(function* () {
11085
11279
  * const github = yield* GitHubService;
@@ -11091,7 +11285,7 @@ declare const GitHubService_base: Context.ServiceClass<GitHubService, "GitHubSer
11091
11285
  * });
11092
11286
  *
11093
11287
  * // Provide the live layer and run
11094
- * Effect.runPromise(program.pipe(Effect.provide(GitHubLive)));
11288
+ * Effect.runPromise(program.pipe(Effect.provide(GitHubService.layer)));
11095
11289
  * ```
11096
11290
  *
11097
11291
  * @example Creating a test layer with canned responses
@@ -11115,41 +11309,41 @@ declare const GitHubService_base: Context.ServiceClass<GitHubService, "GitHubSer
11115
11309
  * ```
11116
11310
  *
11117
11311
  * @see {@link GitHubServiceShape} for the service interface
11118
- * @see {@link GitHubLive} for the production layer
11119
11312
  * @see {@link makeGitHubTest} for creating test layers
11120
11313
  *
11121
11314
  * @public
11122
11315
  */
11123
- declare class GitHubService extends GitHubService_base {}
11124
- /**
11125
- * Production layer for {@link GitHubService}.
11126
- *
11127
- * Delegates to `\@changesets/get-github-info` to fetch commit metadata
11128
- * from the GitHub REST API. Requires a `GITHUB_TOKEN` environment variable
11129
- * to be set for authenticated requests.
11130
- *
11131
- * @remarks
11132
- * This layer is used by the `\@savvy-web/changesets/changelog` entry point
11133
- * to resolve commit hashes into PR numbers and author attribution. It is
11134
- * used by the changelog formatter's
11135
- * `MainLayer`.
11136
- *
11137
- * @example
11138
- * ```typescript
11139
- * import { Effect } from "effect";
11140
- * import { GitHubService, GitHubLive } from "\@savvy-web/changesets";
11141
- *
11142
- * const program = Effect.gen(function* () {
11143
- * const github = yield* GitHubService;
11144
- * return yield* github.getInfo({ commit: "abc1234", repo: "owner/repo" });
11145
- * });
11146
- *
11147
- * Effect.runPromise(program.pipe(Effect.provide(GitHubLive)));
11148
- * ```
11149
- *
11150
- * @public
11151
- */
11152
- declare const GitHubLive: Layer.Layer<GitHubService, never, never>;
11316
+ declare class GitHubService extends GitHubService_base {
11317
+ /**
11318
+ * Production layer for {@link GitHubService}.
11319
+ *
11320
+ * Delegates to `\@changesets/get-github-info` to fetch commit metadata
11321
+ * from the GitHub REST API. Requires a `GITHUB_TOKEN` environment variable
11322
+ * to be set for authenticated requests.
11323
+ *
11324
+ * @remarks
11325
+ * This layer is used by the `\@savvy-web/changesets/changelog` entry point
11326
+ * to resolve commit hashes into PR numbers and author attribution. It is
11327
+ * used by the changelog formatter's
11328
+ * `MainLayer`.
11329
+ *
11330
+ * @example
11331
+ * ```typescript
11332
+ * import { Effect } from "effect";
11333
+ * import { GitHubService } from "\@savvy-web/changesets";
11334
+ *
11335
+ * const program = Effect.gen(function* () {
11336
+ * const github = yield* GitHubService;
11337
+ * return yield* github.getInfo({ commit: "abc1234", repo: "owner/repo" });
11338
+ * });
11339
+ *
11340
+ * Effect.runPromise(program.pipe(Effect.provide(GitHubService.layer)));
11341
+ * ```
11342
+ *
11343
+ * @public
11344
+ */
11345
+ static readonly layer: Layer.Layer<GitHubService>;
11346
+ }
11153
11347
  /**
11154
11348
  * Create a test layer for {@link GitHubService} with pre-configured responses.
11155
11349
  *
@@ -11246,7 +11440,7 @@ declare const ChangelogService_base: Context.ServiceClass<ChangelogService, "Cha
11246
11440
  * ```typescript
11247
11441
  * import { Effect } from "effect";
11248
11442
  * import type { ChangesetOptions } from "\@savvy-web/changesets";
11249
- * import { ChangelogService, GitHubLive } from "\@savvy-web/changesets";
11443
+ * import { ChangelogService } from "\@savvy-web/changesets";
11250
11444
  *
11251
11445
  * const program = Effect.gen(function* () {
11252
11446
  * const changelog = yield* ChangelogService;
@@ -11308,6 +11502,17 @@ declare class ChangesetConfig extends ChangesetConfig_base {
11308
11502
  * but not the bare scope `"@scope"`.
11309
11503
  */
11310
11504
  static matches(name: string, pattern: string): boolean;
11505
+ /**
11506
+ * Production layer for {@link ChangesetConfig}, reading via {@link ChangesetConfigReader}, cached per root.
11507
+ *
11508
+ * @remarks
11509
+ * Requires `ChangesetConfigReader` (which requires `FileSystem`). Provide
11510
+ * `ChangesetConfigReader.layer` + a platform layer (`NodeServices.layer`).
11511
+ *
11512
+ * @since 0.4.0
11513
+ * @public
11514
+ */
11515
+ static readonly layer: Layer.Layer<ChangesetConfig, never, ChangesetConfigReader>;
11311
11516
  }
11312
11517
  //#endregion
11313
11518
  //#region src/changesets/utils/dep-diff.d.ts
@@ -11481,20 +11686,21 @@ declare const DepsRegen_base: Context.ServiceClass<DepsRegen, "Changesets/DepsRe
11481
11686
  *
11482
11687
  * @public
11483
11688
  */
11484
- declare class DepsRegen extends DepsRegen_base {}
11485
- /**
11486
- * Live layer for {@link DepsRegen}.
11487
- *
11488
- * Requires `WorkspaceSnapshots`, `WorkspaceDiscovery`,
11489
- * `PublishabilityDetector` (all from `@effected/workspaces`),
11490
- * `Git` (from `@effected/git`, backing merge-base resolution),
11491
- * {@link ConfigInspector}, {@link ChangesetConfig}, and
11492
- * `FileSystem.FileSystem` (resolved once at construction and closed over by
11493
- * the shape, keeping `plan`/`execute` themselves requirement-free).
11494
- *
11495
- * @public
11496
- */
11497
- declare const DepsRegenLive: Layer.Layer<DepsRegen, never, WorkspaceSnapshots | ConfigInspector | WorkspaceDiscovery | PublishabilityDetector | ChangesetConfig | Git | FileSystem.FileSystem>;
11689
+ declare class DepsRegen extends DepsRegen_base {
11690
+ /**
11691
+ * Production layer for {@link DepsRegen}.
11692
+ *
11693
+ * Requires `WorkspaceSnapshots`, `WorkspaceDiscovery`,
11694
+ * `PublishabilityDetector` (all from `@effected/workspaces`),
11695
+ * `Git` (from `@effected/git`, backing merge-base resolution),
11696
+ * {@link ConfigInspector}, {@link ChangesetConfig}, and
11697
+ * `FileSystem.FileSystem` (resolved once at construction and closed over by
11698
+ * the shape, keeping `plan`/`execute` themselves requirement-free).
11699
+ *
11700
+ * @public
11701
+ */
11702
+ static readonly layer: Layer.Layer<DepsRegen, never, WorkspaceSnapshots | ConfigInspector | WorkspaceDiscovery | PublishabilityDetector | ChangesetConfig | Git | FileSystem.FileSystem>;
11703
+ }
11498
11704
  /**
11499
11705
  * Build the batteries-included {@link DepsRegen} layer over a
11500
11706
  * `@effected/workspaces` kit graph bound to `options.cwd`.
@@ -11525,10 +11731,10 @@ declare function makeDepsRegenDefault(options?: WorkspacesOptions): Layer.Layer<
11525
11731
  * (`NodeServices.layer`), not a bare filesystem-only layer.
11526
11732
  *
11527
11733
  * Gating uses silk's adaptive publishability detector
11528
- * ({@link PublishabilityDetectorAdaptiveLive}), so the default semantics
11734
+ * (`SilkPublishability.layerAdaptive`), so the default semantics
11529
11735
  * are "versionable minus ignored" — identical to the savvy CLI and MCP
11530
11736
  * runtimes. Consumers who need to swap any dependency (test detectors,
11531
- * alternate config sources) should keep composing {@link DepsRegenLive}
11737
+ * alternate config sources) should keep composing {@link DepsRegen.layer}
11532
11738
  * directly; this layer is purely additive.
11533
11739
  *
11534
11740
  * @example
@@ -11658,9 +11864,10 @@ interface ReleasePlannerShape {
11658
11864
  }
11659
11865
  declare const ReleasePlanner_base: Context.ServiceClass<ReleasePlanner, "ReleasePlanner", ReleasePlannerShape>;
11660
11866
  /** Effect service tag for the release planner. @public */
11661
- declare class ReleasePlanner extends ReleasePlanner_base {}
11662
- /** Production layer. Requires {@link ConfigInspector} (used by `apply`) and `FileSystem`. @public */
11663
- declare const ReleasePlannerLive: Layer.Layer<ReleasePlanner, never, ConfigInspector | FileSystem.FileSystem>;
11867
+ declare class ReleasePlanner extends ReleasePlanner_base {
11868
+ /** Production layer. Requires {@link ConfigInspector} (used by `apply`) and `FileSystem`. @public */
11869
+ static readonly layer: Layer.Layer<ReleasePlanner, never, ConfigInspector | FileSystem.FileSystem>;
11870
+ }
11664
11871
  /**
11665
11872
  * Test factory — supply fixed results for any subset of methods. Unsupplied
11666
11873
  * methods fail with a `ReleasePlanError`.
@@ -12384,10 +12591,10 @@ declare function gitMergeBase(cwd: string, base: string): Effect.Effect<string,
12384
12591
  *
12385
12592
  * @remarks
12386
12593
  * Uses the currently-active {@link SilkPublishability} — wire the
12387
- * {@link SilkPublishabilityDetectorLive} layer to get silk semantics.
12594
+ * `SilkPublishability.layer` layer to get silk semantics.
12388
12595
  *
12389
12596
  * The kit's `PublishabilityDetector.detect` contract no longer receives the
12390
- * workspace root — the ignore/mode-aware `PublishabilityDetectorAdaptiveLive`
12597
+ * workspace root — the ignore/mode-aware `SilkPublishability.layerAdaptive`
12391
12598
  * derives the `.changeset/config.json` root per package from the package's
12392
12599
  * own discovery coordinates (`pkg.path` ascended by `pkg.relativePath`).
12393
12600
  * The `root` parameter is retained for signature stability
@@ -13341,7 +13548,7 @@ declare const RequiredSectionsRule: Plugin<Root, unknown>;
13341
13548
  //#region src/changesets/remark/rules/uncategorized-content.d.ts
13342
13549
  declare const UncategorizedContentRule: Plugin<Root, unknown>;
13343
13550
  declare namespace index_d_exports {
13344
- export { AggregateDependencyTablesPlugin, AppliedRelease, AppliedReleaseEntrySchema, AppliedReleaseSchema, BranchAnalysis, BranchAnalysisSchema, BranchAnalyzer, BranchAnalyzerLive, BranchAnalyzerShape, BranchFileEntry, BranchFileEntrySchema, BumpType, BumpTypeSchema, Categories, Changelog, ChangelogService, ChangelogServiceShape, ChangelogTransformer, Changeset, ChangesetIOError, ChangesetLinter, ChangesetOptions, ChangesetOptionsSchema, ChangesetPreview, ChangesetPreviewSchema, ChangesetSchema, ChangesetSummarySchema, ChangesetValidationError, Classification, ClassificationReason, ClassificationReasonSchema, ClassificationSchema, CommitHashSchema, ConfigInspector, ConfigInspectorLive, ConfigInspectorShape, ConfigurationError, ContentStructureRule, ContributorFootnotesPlugin, DeduplicateItemsPlugin, DependencyAction, DependencyActionSchema, DependencyTable, DependencyTableFormatRule, DependencyTableRow, DependencyTableRowSchema, DependencyTableSchema, DependencyTableType, DependencyTableTypeSchema, DependencyType, DependencyTypeSchema, DependencyUpdate, DependencyUpdateSchema, DepsRegen, DepsRegenDefault, DepsRegenLive, DepsRegenOptions, DepsRegenPlanError, DepsRegenShape, FileStatus, FileStatusSchema, GitError, GitHubApiError, GitHubCommitInfo, GitHubInfo, GitHubInfoSchema, GitHubLive, GitHubService, GitHubServiceShape, GlobSchema, HeadingHierarchyRule, InspectedConfig, InspectedConfigSchema, IssueLinkRefsPlugin, IssueNumberSchema, JsonPathSchema, LegacyVersionFileConfig, LegacyVersionFileConfigSchema, LegacyVersionFilesSchema, LintMessage, MaintenanceNoteOptions, MaintenanceNotePlugin, MaintenanceReason, MaintenanceReasonSchema, MaintenanceTrigger, MaintenanceTriggerSchema, MarkdownParseError, ContentStructureRule$1 as MarkdownlintContentStructureRule, DependencyTableFormatRule$1 as MarkdownlintDependencyTableFormatRule, HeadingHierarchyRule$1 as MarkdownlintHeadingHierarchyRule, RequiredSectionsRule$1 as MarkdownlintRequiredSectionsRule, UncategorizedContentRule$1 as MarkdownlintUncategorizedContentRule, MergeSectionsPlugin, NonEmptyString, NormalizeFormatPlugin, PackageScope, PackageScopeSchema, PackagesRecordSchema, PendingChangeset, PendingChangesetSchema, PositiveInteger, PreviewRelease, PreviewReleaseSchema, RegenPlan, RegenResult, ReleasePlanError, ReleasePlanner, ReleasePlannerLive, ReleasePlannerShape, ReorderSectionsPlugin, RepoSchema, RequiredSectionsRule, ResolvedPackageScope, ResolvedPackageScopeSchema, ResolvedVersionFile, ResolvedVersionFileSchema, SectionCategory, SectionCategorySchema, SilkChangesetPreset, SilkChangesetTransformPreset, SilkChangesetsRules, TransformOptions, UncategorizedContentRule, UrlOrMarkdownLinkSchema, UsernameSchema, VERSION_RE, VersionFileConfig, VersionFileConfigSchema, VersionFileError, VersionFileUpdate, VersionFileUpdateRecordSchema, VersionFiles, VersionFilesSchema, VersionOrEmptySchema, VersionType, VersionTypeSchema, WorkspaceDependencyDiff, WorkspaceVersion, changelogFunctions$1 as changelogFunctions, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, serializeDependencyTableToMarkdown };
13551
+ export { AggregateDependencyTablesPlugin, AppliedRelease, AppliedReleaseEntrySchema, AppliedReleaseSchema, BranchAnalysis, BranchAnalysisSchema, BranchAnalyzer, BranchAnalyzerShape, BranchFileEntry, BranchFileEntrySchema, BumpType, BumpTypeSchema, Categories, Changelog, ChangelogService, ChangelogServiceShape, ChangelogTransformer, Changeset, ChangesetIOError, ChangesetLinter, ChangesetOptions, ChangesetOptionsSchema, ChangesetPreview, ChangesetPreviewSchema, ChangesetSchema, ChangesetSummarySchema, ChangesetValidationError, Classification, ClassificationReason, ClassificationReasonSchema, ClassificationSchema, CommitHashSchema, ConfigInspector, ConfigInspectorShape, ConfigurationError, ContentStructureRule, ContributorFootnotesPlugin, DeduplicateItemsPlugin, DependencyAction, DependencyActionSchema, DependencyTable, DependencyTableFormatRule, DependencyTableRow, DependencyTableRowSchema, DependencyTableSchema, DependencyTableType, DependencyTableTypeSchema, DependencyType, DependencyTypeSchema, DependencyUpdate, DependencyUpdateSchema, DepsRegen, DepsRegenDefault, DepsRegenOptions, DepsRegenPlanError, DepsRegenShape, FileStatus, FileStatusSchema, GitError, GitHubApiError, GitHubCommitInfo, GitHubInfo, GitHubInfoSchema, GitHubService, GitHubServiceShape, GlobSchema, HeadingHierarchyRule, InspectedConfig, InspectedConfigSchema, IssueLinkRefsPlugin, IssueNumberSchema, JsonPathSchema, LegacyVersionFileConfig, LegacyVersionFileConfigSchema, LegacyVersionFilesSchema, LintMessage, MaintenanceNoteOptions, MaintenanceNotePlugin, MaintenanceReason, MaintenanceReasonSchema, MaintenanceTrigger, MaintenanceTriggerSchema, MarkdownParseError, ContentStructureRule$1 as MarkdownlintContentStructureRule, DependencyTableFormatRule$1 as MarkdownlintDependencyTableFormatRule, HeadingHierarchyRule$1 as MarkdownlintHeadingHierarchyRule, RequiredSectionsRule$1 as MarkdownlintRequiredSectionsRule, UncategorizedContentRule$1 as MarkdownlintUncategorizedContentRule, MergeSectionsPlugin, NonEmptyString, NormalizeFormatPlugin, PackageScope, PackageScopeSchema, PackagesRecordSchema, PendingChangeset, PendingChangesetSchema, PositiveInteger, PreviewRelease, PreviewReleaseSchema, RegenPlan, RegenResult, ReleasePlanError, ReleasePlanner, ReleasePlannerShape, ReorderSectionsPlugin, RepoSchema, RequiredSectionsRule, ResolvedPackageScope, ResolvedPackageScopeSchema, ResolvedVersionFile, ResolvedVersionFileSchema, SectionCategory, SectionCategorySchema, SilkChangesetPreset, SilkChangesetTransformPreset, SilkChangesetsRules, TransformOptions, UncategorizedContentRule, UrlOrMarkdownLinkSchema, UsernameSchema, VERSION_RE, VersionFileConfig, VersionFileConfigSchema, VersionFileError, VersionFileUpdate, VersionFileUpdateRecordSchema, VersionFiles, VersionFilesSchema, VersionOrEmptySchema, VersionType, VersionTypeSchema, WorkspaceDependencyDiff, WorkspaceVersion, changelogFunctions$1 as changelogFunctions, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, serializeDependencyTableToMarkdown };
13345
13552
  }
13346
13553
  //#endregion
13347
13554
  //#region src/changesets/changelog.d.ts