@savvy-web/silk-effects 7.5.3 → 8.0.1

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.
package/index.d.ts CHANGED
@@ -1,7 +1,8 @@
1
- import { Context, Effect, Equal, FileSystem, Hash, Layer, Option, Path, Schema } from "effect";
1
+ import { AnalyzedWorkspace, BiomeSyncError, BiomeSyncError as BiomeSyncError$1, BiomeSyncOptions, BiomeSyncResult, BiomeSyncResult as BiomeSyncResult$1, ChangesetConfigError, ChangesetConfigError as ChangesetConfigError$1, ChangesetConfigFile, ChangesetConfigFile as ChangesetConfigFile$1, ConfigDiscoveryOptions, ConfigLocation, ConfigLocation as ConfigLocation$1, ConfigNotFoundError, ConfigSource, LIFECYCLE_SCRIPTS_CONFIG_KEY, PrBody, PublishTargetBindingError, PublishTargetBindingError as PublishTargetBindingError$1, SavvyBaseSection, SavvyHooksSection, SavvyInstallHook, SavvyInstallSection, SavvyToolchainSection, SilkChangesetConfigFile, SilkChangesetConfigFile as SilkChangesetConfigFile$1, SilkPublishConfig, WorkspaceAnalysis, WorkspaceAnalysis as WorkspaceAnalysis$1, WorkspaceAnalysisError, WorkspaceAnalysisError as WorkspaceAnalysisError$1, publishesBuiltLinkDirectory, savvyBasePreamble, savvyHooksHygiene, savvyInstallBlock, savvyInstallDeps, savvyToolSection, savvyToolchainCheck } from "@savvy-web/silk-core";
2
+ import { Context, Effect, FileSystem, Layer, Path, Schema } from "effect";
2
3
  import { Plugin } from "unified";
3
4
  import { ChildProcessSpawner } from "effect/unstable/process";
4
- import { PackageManagerDetector, PublishConfig, PublishTarget, PublishabilityDetector, VersioningStrategy, WorkspaceDiscovery, WorkspaceDiscoveryFailure, WorkspacePackage, WorkspaceSnapshotAtFailure, WorkspaceSnapshotWorktreeFailure, WorkspaceSnapshots, WorkspaceStateSnapshot, WorkspacesOptions } from "@effected/workspaces";
5
+ import { PackageManagerDetector, PublishTarget, PublishabilityDetector, WorkspaceDiscovery, WorkspaceDiscoveryFailure, WorkspacePackage, WorkspaceSnapshotAtFailure, WorkspaceSnapshotWorktreeFailure, WorkspaceSnapshots, WorkspaceStateSnapshot, WorkspacesOptions } from "@effected/workspaces";
5
6
  import { Git } from "@effected/git";
6
7
  import { GlobExpansionError } from "@effected/walker";
7
8
  import * as PlatformError from "effect/PlatformError";
@@ -291,6 +292,40 @@ declare class Categories {
291
292
  static isValidHeading(heading: string): boolean;
292
293
  }
293
294
  //#endregion
295
+ //#region src/changesets/utils/logger.d.ts
296
+ /**
297
+ * How changelog warnings are emitted.
298
+ *
299
+ * - `"stderr"` — `console.warn(message, ...args)` (the default).
300
+ * - `"github"` — a `::warning::` workflow annotation that surfaces in the
301
+ * GitHub Actions UI.
302
+ * - `"silent"` — discarded; the mode a test runner provides.
303
+ *
304
+ * @public
305
+ */
306
+ type ChangesetLogModeValue = "silent" | "github" | "stderr";
307
+ /**
308
+ * The reference that selects the {@link ChangesetLogModeValue}.
309
+ *
310
+ * @remarks
311
+ * Defaults to `"stderr"` when no front end provides it, so a program that
312
+ * never touches the reference still reports. Provide with
313
+ * `Layer.succeed(ChangesetLogMode, "github")` or
314
+ * `Effect.provideService(ChangesetLogMode, "silent")`.
315
+ *
316
+ * @example
317
+ * ```typescript
318
+ * import { Effect } from "effect";
319
+ * import { Changesets } from "\@savvy-web/silk-effects";
320
+ *
321
+ * const mode = process.env.GITHUB_ACTIONS === "true" ? "github" : "stderr";
322
+ * program.pipe(Effect.provideService(Changesets.ChangesetLogMode, mode));
323
+ * ```
324
+ *
325
+ * @public
326
+ */
327
+ declare const ChangesetLogMode: Context.Reference<ChangesetLogModeValue>;
328
+ //#endregion
294
329
  //#region ../../node_modules/.pnpm/@changesets+types@7.0.0/node_modules/@changesets/types/dist/index.d.mts
295
330
  //#region src/index.d.ts
296
331
  type MaybePromise<T> = T | Promise<T>;
@@ -515,9 +550,12 @@ declare class Changelog {
515
550
  * @param versionType - The semantic version bump type (`"major"`, `"minor"`, or `"patch"`)
516
551
  * @param options - Configuration object; must include `repo` in `"owner/repo"` format.
517
552
  * Pass `null` to use defaults (no GitHub link resolution).
553
+ * @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
554
+ * the host reads its own environment and passes `"github"` / `"silent"` — this
555
+ * engine never does. See `ChangesetLogMode`.
518
556
  * @returns A promise resolving to the formatted markdown string
519
557
  */
520
- static formatReleaseLine(changeset: NewChangesetWithCommit, versionType: VersionType$1, options: Record<string, unknown> | null): Promise<string>;
558
+ static formatReleaseLine(changeset: NewChangesetWithCommit, versionType: VersionType$1, options: Record<string, unknown> | null, logMode?: ChangesetLogModeValue): Promise<string>;
521
559
  /**
522
560
  * Format dependency update release lines into a markdown table.
523
561
  *
@@ -531,10 +569,12 @@ declare class Changelog {
531
569
  * old/new versions and package metadata
532
570
  * @param options - Configuration object; must include `repo` in `"owner/repo"` format.
533
571
  * Pass `null` to use defaults.
572
+ * @param logMode - How a failed GitHub lookup is reported (`"stderr"` when omitted);
573
+ * see {@link Changelog.formatReleaseLine}.
534
574
  * @returns A promise resolving to the formatted markdown string containing
535
575
  * the dependency update table
536
576
  */
537
- static formatDependencyReleaseLine(changesets: NewChangesetWithCommit[], dependenciesUpdated: ModCompWithPackage[], options: Record<string, unknown> | null): Promise<string>;
577
+ static formatDependencyReleaseLine(changesets: NewChangesetWithCommit[], dependenciesUpdated: ModCompWithPackage[], options: Record<string, unknown> | null, logMode?: ChangesetLogModeValue): Promise<string>;
538
578
  }
539
579
  //#endregion
540
580
  //#region ../../node_modules/.pnpm/@types+unist@3.0.3/node_modules/@types/unist/index.d.ts
@@ -2337,12 +2377,43 @@ declare class ChangelogTransformer {
2337
2377
  //#endregion
2338
2378
  //#region src/changesets/changelog/index.d.ts
2339
2379
  /**
2340
- * Changesets API `ChangelogFunctions` implementation.
2380
+ * Options for {@link makeChangelogFunctions}.
2381
+ *
2382
+ * @public
2383
+ */
2384
+ interface MakeChangelogFunctionsOptions {
2385
+ /**
2386
+ * How warnings are emitted. Omit to leave the {@link ChangesetLogMode}
2387
+ * default (`"stderr"`) in force.
2388
+ */
2389
+ readonly logMode?: ChangesetLogModeValue | undefined;
2390
+ }
2391
+ /**
2392
+ * Build a Changesets `ChangelogFunctions` implementation bound to a warning
2393
+ * mode.
2394
+ *
2395
+ * @remarks
2396
+ * This module is engine code and reads no environment; the host that installs
2397
+ * the functions (the `\@savvy-web/changelog` package under the changesets CLI)
2398
+ * decides the mode from its own `process.env` and passes it here. Each method
2399
+ * validates options, runs the corresponding Effect program with the merged
2400
+ * service layer and the chosen {@link ChangesetLogMode}, and returns a
2401
+ * `Promise<string>`.
2402
+ *
2403
+ * @param options - The warning mode to provide
2404
+ * @returns A `ChangelogFunctions` object for `.changeset/config.json`
2405
+ *
2406
+ * @public
2407
+ */
2408
+ declare function makeChangelogFunctions(options?: MakeChangelogFunctionsOptions): ChangelogFunctions;
2409
+ /**
2410
+ * Changesets API `ChangelogFunctions` implementation with the default warning
2411
+ * mode (`"stderr"`).
2341
2412
  *
2342
- * This object satisfies the `ChangelogFunctions` contract from
2343
- * `\@changesets/types`. Each method validates options, runs the
2344
- * corresponding Effect program with the merged service layer, and
2345
- * returns a `Promise<string>`.
2413
+ * @remarks
2414
+ * Equivalent to `makeChangelogFunctions()`. A host that runs under GitHub
2415
+ * Actions or a test runner should call {@link makeChangelogFunctions} with the
2416
+ * mode it detects instead.
2346
2417
  *
2347
2418
  * @internal
2348
2419
  */
@@ -2791,104 +2862,6 @@ declare class ReleasePlanError extends ReleasePlanErrorBase<{
2791
2862
  get message(): string;
2792
2863
  }
2793
2864
  //#endregion
2794
- //#region src/errors/ChangesetConfigError.d.ts
2795
- declare const ChangesetConfigError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
2796
- readonly _tag: "ChangesetConfigError";
2797
- } & Readonly<A>;
2798
- /**
2799
- * Raised when the `.changeset/config.json` file cannot be read or decoded.
2800
- *
2801
- * @remarks
2802
- * Returned by `ChangesetConfigReader.read` when the file is missing,
2803
- * contains invalid JSON, or fails Effect Schema validation.
2804
- *
2805
- * @since 0.1.0
2806
- * @public
2807
- */
2808
- export declare class ChangesetConfigError extends ChangesetConfigError_base<{
2809
- readonly path: string;
2810
- readonly reason: string;
2811
- }> {
2812
- get message(): string;
2813
- }
2814
- //#endregion
2815
- //#region src/schemas/VersioningSchemas.d.ts
2816
- /**
2817
- * Standard changesets configuration matching the `@changesets/config@4.0.0` spec.
2818
- *
2819
- * @remarks
2820
- * Represents the parsed `.changeset/config.json` file. All fields are optional
2821
- * to allow partial configs. Use {@link (SilkChangesetConfigFile:type)} when the Silk changelog
2822
- * adapter is detected.
2823
- *
2824
- * @since 0.1.0
2825
- */
2826
- /** @public */
2827
- declare const ChangesetConfigFile: Schema.Struct<{
2828
- readonly changelog: Schema.optional<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Unknown>, Schema.Literal<false>]>>;
2829
- readonly commit: Schema.optional<Schema.Union<readonly [Schema.Boolean, Schema.String, Schema.$Array<Schema.Unknown>]>>;
2830
- readonly fixed: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
2831
- readonly linked: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
2832
- readonly access: Schema.optional<Schema.Literals<readonly ["public", "restricted"]>>;
2833
- readonly baseBranch: Schema.optional<Schema.String>;
2834
- readonly updateInternalDependencies: Schema.optional<Schema.Literals<readonly ["patch", "minor", "major"]>>;
2835
- readonly ignore: Schema.optional<Schema.$Array<Schema.String>>;
2836
- readonly privatePackages: Schema.optional<Schema.Union<readonly [Schema.Struct<{
2837
- readonly tag: Schema.optional<Schema.Boolean>;
2838
- readonly version: Schema.optional<Schema.Boolean>;
2839
- }>, Schema.Literal<false>]>>;
2840
- readonly prettier: Schema.optional<Schema.Boolean>;
2841
- readonly changedFilePatterns: Schema.optional<Schema.$Array<Schema.String>>;
2842
- readonly bumpVersionsWithWorkspaceProtocolOnly: Schema.optional<Schema.Boolean>;
2843
- readonly snapshot: Schema.optional<Schema.Struct<{
2844
- readonly useCalculatedVersion: Schema.optional<Schema.Boolean>;
2845
- readonly prereleaseTemplate: Schema.optional<Schema.String>;
2846
- }>>;
2847
- }>;
2848
- /**
2849
- * @since 0.1.0
2850
- * @public
2851
- */
2852
- type ChangesetConfigFile = typeof ChangesetConfigFile.Type;
2853
- /**
2854
- * Extended changeset config for repos using the `@savvy-web/changesets` changelog adapter.
2855
- *
2856
- * @remarks
2857
- * Extends {@link (ChangesetConfigFile:type)} with a `_isSilk` marker flag that is automatically
2858
- * set to `true`. Detected by {@link ChangesetConfigReader} when the `changelog` field
2859
- * references `@savvy-web/changesets`.
2860
- *
2861
- * @since 0.1.0
2862
- */
2863
- /** @public */
2864
- declare const SilkChangesetConfigFile: Schema.Struct<{
2865
- readonly changelog: Schema.optional<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Unknown>, Schema.Literal<false>]>>;
2866
- readonly commit: Schema.optional<Schema.Union<readonly [Schema.Boolean, Schema.String, Schema.$Array<Schema.Unknown>]>>;
2867
- readonly fixed: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
2868
- readonly linked: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
2869
- readonly access: Schema.optional<Schema.Literals<readonly ["public", "restricted"]>>;
2870
- readonly baseBranch: Schema.optional<Schema.String>;
2871
- readonly updateInternalDependencies: Schema.optional<Schema.Literals<readonly ["patch", "minor", "major"]>>;
2872
- readonly ignore: Schema.optional<Schema.$Array<Schema.String>>;
2873
- readonly privatePackages: Schema.optional<Schema.Union<readonly [Schema.Struct<{
2874
- readonly tag: Schema.optional<Schema.Boolean>;
2875
- readonly version: Schema.optional<Schema.Boolean>;
2876
- }>, Schema.Literal<false>]>>;
2877
- readonly prettier: Schema.optional<Schema.Boolean>;
2878
- readonly changedFilePatterns: Schema.optional<Schema.$Array<Schema.String>>;
2879
- readonly bumpVersionsWithWorkspaceProtocolOnly: Schema.optional<Schema.Boolean>;
2880
- readonly snapshot: Schema.optional<Schema.Struct<{
2881
- readonly useCalculatedVersion: Schema.optional<Schema.Boolean>;
2882
- readonly prereleaseTemplate: Schema.optional<Schema.String>;
2883
- }>>;
2884
- readonly _isSilk: Schema.withConstructorDefault<Schema.withDecodingDefaultType<Schema.Boolean, never>>;
2885
- }>;
2886
- /**
2887
- * @since 0.1.0
2888
- * @public
2889
- */
2890
- type SilkChangesetConfigFile = typeof SilkChangesetConfigFile.Type;
2891
- //#endregion
2892
2865
  //#region src/services/ChangesetConfigReader.d.ts
2893
2866
  /**
2894
2867
  * The {@link ChangesetConfigReader} service shape.
@@ -2901,11 +2874,11 @@ interface ChangesetConfigReaderShape {
2901
2874
  * Read and decode `.changeset/config.json` from the given workspace root.
2902
2875
  *
2903
2876
  * @param root - Absolute path to the workspace root containing the `.changeset/` directory.
2904
- * @returns An `Effect` that succeeds with the decoded config or fails with {@link ChangesetConfigError}.
2877
+ * @returns An `Effect` that succeeds with the decoded config or fails with `ChangesetConfigError`.
2905
2878
  *
2906
2879
  * @since 0.1.0
2907
2880
  */
2908
- readonly read: (root: string) => Effect.Effect<ChangesetConfigFile | SilkChangesetConfigFile, ChangesetConfigError>;
2881
+ readonly read: (root: string) => Effect.Effect<ChangesetConfigFile$1 | SilkChangesetConfigFile$1, ChangesetConfigError$1>;
2909
2882
  }
2910
2883
  declare const ChangesetConfigReader_base: Context.ServiceClass<ChangesetConfigReader, "@savvy-web/silk-effects/ChangesetConfigReader", ChangesetConfigReaderShape>;
2911
2884
  /**
@@ -2913,8 +2886,8 @@ declare const ChangesetConfigReader_base: Context.ServiceClass<ChangesetConfigRe
2913
2886
  *
2914
2887
  * @remarks
2915
2888
  * Automatically detects whether the config uses the Silk changelog adapter
2916
- * (`@savvy-web/changesets`) and decodes as {@link (SilkChangesetConfigFile:type)} or the
2917
- * standard {@link (ChangesetConfigFile:type)} accordingly.
2889
+ * (`@savvy-web/changesets`) and decodes as `SilkChangesetConfigFile` or the
2890
+ * standard `ChangesetConfigFile` accordingly.
2918
2891
  *
2919
2892
  * @example
2920
2893
  * ```typescript
@@ -5856,7 +5829,7 @@ declare const RequiredSectionsRule: import("unified-lint-rule").Plugin<Root, unk
5856
5829
  //#region src/changesets/remark/rules/uncategorized-content.d.ts
5857
5830
  declare const UncategorizedContentRule: import("unified-lint-rule").Plugin<Root, unknown>;
5858
5831
  declare namespace index_d_exports {
5859
- 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, CoexistingChangeset, CoexistingChangesetSchema, 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, RegenDiffRow, RegenDiffRowSchema, RegenPlan, RegenPlanSchema, RegenResult, RegenResultSchema, 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, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, parseChangesetPackages, serializeDependencyTableToMarkdown, vanillaChangelogFunctions };
5832
+ export { AggregateDependencyTablesPlugin, AppliedRelease, AppliedReleaseEntrySchema, AppliedReleaseSchema, BranchAnalysis, BranchAnalysisSchema, BranchAnalyzer, BranchAnalyzerShape, BranchFileEntry, BranchFileEntrySchema, BumpType, BumpTypeSchema, Categories, Changelog, ChangelogService, ChangelogServiceShape, ChangelogTransformer, Changeset, ChangesetIOError, ChangesetLinter, ChangesetLogMode, ChangesetLogModeValue, ChangesetOptions, ChangesetOptionsSchema, ChangesetPreview, ChangesetPreviewSchema, ChangesetSchema, ChangesetSummarySchema, ChangesetValidationError, Classification, ClassificationReason, ClassificationReasonSchema, ClassificationSchema, CoexistingChangeset, CoexistingChangesetSchema, 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, MakeChangelogFunctionsOptions, 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, RegenDiffRow, RegenDiffRowSchema, RegenPlan, RegenPlanSchema, RegenResult, RegenResultSchema, 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, computeWorkspaceDependencyDiffs, deriveMaintenanceReason, gitMergeBase, isPureDependencyChangeset, listPublishablePackageNames, makeBranchAnalyzerTest, makeChangelogFunctions, makeConfigInspectorTest, makeDepsRegenDefault, makeGitHubTest, makeReleasePlannerTest, parseChangesetPackages, serializeDependencyTableToMarkdown, vanillaChangelogFunctions };
5860
5833
  }
5861
5834
  //#endregion
5862
5835
  //#region src/commitlint/config/schema.d.ts
@@ -6796,106 +6769,6 @@ declare class CommitlintConfig {
6796
6769
  private constructor();
6797
6770
  }
6798
6771
  //#endregion
6799
- //#region src/errors/BiomeSyncError.d.ts
6800
- declare const BiomeSyncError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6801
- readonly _tag: "BiomeSyncError";
6802
- } & Readonly<A>;
6803
- /**
6804
- * Raised when a Biome config file cannot be read or its `$schema` URL cannot be updated.
6805
- *
6806
- * @remarks
6807
- * Returned by `BiomeSchemaSync.sync` and `BiomeSchemaSync.check` when
6808
- * a `biome.json` or `biome.jsonc` file exists but cannot be read, contains invalid JSON,
6809
- * or cannot be written back to disk.
6810
- *
6811
- * @since 0.1.0
6812
- * @public
6813
- */
6814
- export declare class BiomeSyncError extends BiomeSyncError_base<{
6815
- readonly path: string;
6816
- readonly reason: string;
6817
- }> {
6818
- get message(): string;
6819
- }
6820
- //#endregion
6821
- //#region src/errors/ConfigNotFoundError.d.ts
6822
- declare const ConfigNotFoundError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6823
- readonly _tag: "ConfigNotFoundError";
6824
- } & Readonly<A>;
6825
- /**
6826
- * Raised when a config file cannot be located in any of the expected locations.
6827
- *
6828
- * @remarks
6829
- * Returned by consumers that require a config file to exist. `ConfigDiscovery.find`
6830
- * itself returns `null` instead of failing — callers that need a hard failure should
6831
- * map `null` to this error.
6832
- *
6833
- * @since 0.1.0
6834
- * @public
6835
- */
6836
- export declare class ConfigNotFoundError extends ConfigNotFoundError_base<{
6837
- readonly name: string;
6838
- readonly searchedPaths: ReadonlyArray<string>;
6839
- }> {
6840
- get message(): string;
6841
- }
6842
- //#endregion
6843
- //#region src/errors/PublishTargetBindingError.d.ts
6844
- declare const PublishTargetBindingError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6845
- readonly _tag: "PublishTargetBindingError";
6846
- } & Readonly<A>;
6847
- /**
6848
- * Raised when publishability detection selects a directory that the package's
6849
- * `dist/prod/targets.json` binding does not describe.
6850
- *
6851
- * @remarks
6852
- * The bundler's prod build writes `targets.json` naming every byte-group
6853
- * directory it produced. Once that binding exists it is authoritative: the only
6854
- * directories whose bytes may be published are the ones it lists. A detector
6855
- * that returns anything else — most often `publishConfig.directory` pointing at
6856
- * a **dev** build, because silk mode was misdetected — is about to pack an
6857
- * unresolved workspace manifest and ship it to a registry.
6858
- *
6859
- * That is the `yaml-effect@0.7.1` failure: detection picked `dist/dev/pkg`, the
6860
- * dev manifest still carried `catalog:` specifiers, and the published package
6861
- * was uninstallable (`EUNSUPPORTEDPROTOCOL`).
6862
- *
6863
- * @since 3.1.0
6864
- * @public
6865
- */
6866
- export declare class PublishTargetBindingError extends PublishTargetBindingError_base<{
6867
- /** The package whose targets were being resolved. */
6868
- readonly pkg: string;
6869
- /** The directory detection selected, relative to the package root. */
6870
- readonly directory: string;
6871
- /** The group directories the prod binding actually describes. */
6872
- readonly boundDirectories: ReadonlyArray<string>;
6873
- }> {
6874
- get message(): string;
6875
- }
6876
- //#endregion
6877
- //#region src/errors/WorkspaceAnalysisError.d.ts
6878
- declare const WorkspaceAnalysisError_base: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
6879
- readonly _tag: "WorkspaceAnalysisError";
6880
- } & Readonly<A>;
6881
- /**
6882
- * Raised when workspace analysis fails for a given root directory.
6883
- *
6884
- * @remarks
6885
- * Returned by `SilkWorkspaceAnalyzer.analyze` when the analysis pipeline
6886
- * encounters an unrecoverable error — e.g. workspace discovery failure,
6887
- * package manager detection failure, or publishability detection errors.
6888
- *
6889
- * @since 0.2.0
6890
- * @public
6891
- */
6892
- export declare class WorkspaceAnalysisError extends WorkspaceAnalysisError_base<{
6893
- readonly root: string;
6894
- readonly reason: string;
6895
- }> {
6896
- get message(): string;
6897
- }
6898
- //#endregion
6899
6772
  //#region src/lint/types.d.ts
6900
6773
  /**
6901
6774
  * A lint-staged handler function.
@@ -8471,606 +8344,74 @@ declare namespace index_d_exports$2 {
8471
8344
  export { BaseHandlerOptions, Biome, BiomeOptions, Command, CreateConfigOptions, DEFAULT_CONFIG_PATH, Filter, HUSKY_HOOK_PATH, Handler, LegacySavvyLintHygieneDef, LintStagedConfig, LintStagedEntry, LintStagedHandler, MARKDOWNLINT_CONFIG, MARKDOWNLINT_CONFIG_PATH, MARKDOWNLINT_SCHEMA, MARKDOWNLINT_TEMPLATE, Markdown, MarkdownOptions, POST_CHECKOUT_HOOK_PATH, POST_COMMIT_HOOK_PATH, POST_MERGE_HOOK_PATH, PackageJson, PackageJsonOptions, PackageManager, PnpmWorkspace, PnpmWorkspaceContent, PnpmWorkspaceOptions, Preset, PresetExtendOptions, PresetType, SavvyLintSectionDef, ShellScripts, ShellScriptsOptions, ToolSearchResult, TypeScript, TypeScriptCompiler, TypeScriptOptions, WorkspacePackageInfo, Yaml, YamlOptions, createConfig, generateManagedContent, getWorkspacePackagePaths, getWorkspacePackages, getWorkspaceRoot, isWorkspacePackagePath, resetWorkspaceCache, savvyLintBlock };
8472
8345
  }
8473
8346
  //#endregion
8474
- //#region src/pr-body/linked-issue.d.ts
8475
- declare const LinkedIssueRef_base: Schema.Class<LinkedIssueRef, Schema.Struct<{
8476
- readonly number: Schema.Number;
8477
- readonly title: Schema.String;
8478
- readonly state: Schema.String;
8479
- }>, {}>;
8347
+ //#region src/repos/constants.d.ts
8480
8348
  /**
8481
- * The minimum an issue must carry to appear in a managed PR body.
8482
- *
8483
- * @remarks
8484
- * `state` is deliberately a tolerant `Schema.String` rather than a literal
8485
- * union: GitHub's REST API reports `"open"`/`"closed"` while GraphQL reports
8486
- * `"OPEN"`/`"CLOSED"`, and both actions pass their existing issue shapes
8487
- * through unchanged. **`LinkedIssueRef.isClosed` is the ONLY sanctioned way
8488
- * to test closedness** — it lowercases before comparing, so both spellings
8489
- * classify correctly. A hand-written `issue.state === "closed"` comparison
8490
- * silently misclassifies GraphQL's `"CLOSED"` as open, which re-links (and on
8491
- * merge auto-closes) an issue the release deliberately dropped.
8492
- *
8493
- * The class carries no instance members, so a plain
8494
- * `{ number, title, state }` literal satisfies the type structurally — both
8495
- * actions' existing `LinkedIssue` shapes are accepted without mapping.
8496
- *
8349
+ * Directory vendored reference repos live under, relative to the repo root.
8497
8350
  * @public
8498
8351
  */
8499
- declare class LinkedIssueRef extends LinkedIssueRef_base {
8500
- /**
8501
- * Whether an issue is closed, case-insensitively.
8502
- *
8503
- * @remarks
8504
- * The only sanctioned closedness test — see the class remarks for why a
8505
- * bare `state === "closed"` comparison is a silent bug against GraphQL
8506
- * payloads.
8507
- *
8508
- * @public
8509
- */
8510
- static isClosed(issue: {
8511
- readonly state: string;
8512
- }): boolean;
8513
- }
8514
- //#endregion
8515
- //#region src/pr-body/body.d.ts
8352
+ declare const REPOS_DIR = ".repos";
8516
8353
  /**
8517
- * The inputs to {@link ManagedPrBody.build}.
8518
- *
8354
+ * Path of the committed vendored-repos manifest, relative to the repo root.
8519
8355
  * @public
8520
8356
  */
8521
- interface ManagedPrBodyOptions {
8522
- /** The proposed squash-commit subject — a conventional-commit header. */
8523
- readonly subject: string;
8524
- /**
8525
- * Every issue this run knows about, open AND closed.
8526
- *
8527
- * @remarks
8528
- * The run decides every issue it knows about: an open issue is emitted, a
8529
- * closed one is dropped, and a carried line cannot resurrect one it
8530
- * deliberately dropped. Closedness is tested with
8531
- * `LinkedIssueRef.isClosed` (case-insensitive), so REST and GraphQL
8532
- * payloads both classify correctly.
8533
- */
8534
- readonly linkedIssues: ReadonlyArray<LinkedIssueRef>;
8535
- /** The DCO signoff line the squash-commit block carries. */
8536
- readonly signoff: string;
8537
- /**
8538
- * The summary region's current content, from
8539
- * {@link ManagedPrBody.extractSummary}.
8540
- *
8541
- * @remarks
8542
- * Passed in rather than read from `priorBody` so `build` stays explicit
8543
- * about it: the summary's owner decides what it says, and this function
8544
- * must not quietly overrule a caller that passed one. `""` reserves an
8545
- * empty region.
8546
- */
8547
- readonly summary: string;
8548
- /**
8549
- * The PR's previous description, verbatim.
8550
- *
8551
- * @remarks
8552
- * The WHOLE prior body rather than an extracted region: merging
8553
- * references needs both the region's lines and the `owned` attribute on
8554
- * its opening marker, and two separate parameters would eventually be
8555
- * passed inconsistently. Optional because a PR being created has no
8556
- * prior body.
8557
- */
8558
- readonly priorBody?: string;
8559
- }
8357
+ declare const MANIFEST_PATH = ".repos/config.json";
8560
8358
  /**
8561
- * The shared managed-PR-body renderer and its carry-through readers the
8562
- * single implementation of the contract `silk-release-action` dogfooded at
8563
- * `src/utils/pr-body.ts` (savvy-web/systems#419).
8564
- *
8565
- * @remarks
8566
- * Every operation is pure and total: markers absent, regions broken, or
8567
- * attributes malformed all degrade to the documented fail-safe result
8568
- * (preserve too much rather than delete someone's work) instead of failing —
8569
- * a regenerating action must still produce a body when the prior one is
8570
- * malformed. Use `PrBodyDiagnostic.scan` where a writer wants to be told
8571
- * about a broken pair instead of tolerating it.
8572
- *
8359
+ * Maximum notes per vendored repo; enforced at write time to force
8360
+ * consolidation into orientation.
8573
8361
  * @public
8574
8362
  */
8575
- declare class ManagedPrBody {
8576
- private constructor();
8577
- /**
8578
- * Build the region of the PR description the generating run owns.
8579
- *
8580
- * @remarks
8581
- * Delimited by `Markers.MANAGED_START` / `Markers.MANAGED_END` so
8582
- * {@link ManagedPrBody.upsert} can regenerate it without touching
8583
- * anything a human wrote around it. Layout, in order: the reserved
8584
- * summary region (nothing may sit above it — a reader meets the prose
8585
- * before the machinery), the proposed-squash-commit fence, and the
8586
- * bare-reference region. No preamble, no file listing, no linked-issues
8587
- * list, no run attribution — each said something already on the page.
8588
- *
8589
- * @public
8590
- */
8591
- static build(options: ManagedPrBodyOptions): string;
8592
- /**
8593
- * Put `managed` (a full {@link ManagedPrBody.build} result) into
8594
- * `existing`, replacing a previous managed region and leaving everything
8595
- * else alone.
8596
- *
8597
- * @remarks
8598
- * Human edits outside the markers survive; a body with no markers keeps
8599
- * its content and gains the region below it. See `Region.upsert` for the
8600
- * splice semantics.
8601
- *
8602
- * @public
8603
- */
8604
- static upsert(existing: string, managed: string): string;
8605
- /**
8606
- * The summary region's current content, or `""` when it is empty or
8607
- * absent.
8608
- *
8609
- * @remarks
8610
- * Extraction exists because the managed region is REGENERATED on every
8611
- * run. Re-emitting the region empty would delete a summary the moment
8612
- * any commit landed — destructive and silent, with no signal back to the
8613
- * summariser whose work was discarded. Feed the result to
8614
- * {@link ManagedPrBody.build}'s `summary` option.
8615
- *
8616
- * @public
8617
- */
8618
- static extractSummary(existing: string): string;
8619
- /**
8620
- * The reference region's current content, or `""` when it is empty or
8621
- * absent.
8622
- *
8623
- * @remarks
8624
- * Symmetric to {@link ManagedPrBody.extractSummary}, and for the same
8625
- * reason. Located by `Markers.REFERENCES_START_PREFIX` — never the plain
8626
- * opening constant — because a generating run emits the attributed form.
8627
- *
8628
- * @public
8629
- */
8630
- static extractReferences(existing: string): string;
8631
- }
8363
+ declare const NOTE_LIMIT = 10;
8632
8364
  //#endregion
8633
- //#region src/pr-body/diagnostics.d.ts
8365
+ //#region src/repos/errors.d.ts
8366
+ /** @internal */
8367
+ declare const ReposConfigErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
8368
+ readonly _tag: "ReposConfigError";
8369
+ } & Readonly<A>;
8634
8370
  /**
8635
- * The problems {@link PrBodyDiagnostic.scan} can report about a body's
8636
- * markers.
8637
- *
8371
+ * The .repos/config.json manifest is missing, unreadable, or invalid.
8638
8372
  * @public
8639
8373
  */
8640
- declare const PrBodyDiagnosticCode: Schema.Literals<readonly ["unpairedMarker", "duplicateMarker"]>;
8374
+ declare class ReposConfigError extends ReposConfigErrorBase<{
8375
+ readonly path: string;
8376
+ readonly reason: string;
8377
+ readonly kind: "missing" | "invalid";
8378
+ }> {
8379
+ get message(): string;
8380
+ }
8381
+ /** @internal */
8382
+ declare const GitSubmoduleErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
8383
+ readonly _tag: "GitSubmoduleError";
8384
+ } & Readonly<A>;
8641
8385
  /**
8642
- * The problems {@link PrBodyDiagnostic.scan} can report about a body's
8643
- * markers.
8644
- *
8386
+ * A git submodule operation failed.
8645
8387
  * @public
8646
8388
  */
8647
- type PrBodyDiagnosticCode = typeof PrBodyDiagnosticCode.Type;
8648
- declare const PrBodyDiagnostic_base: Schema.Class<PrBodyDiagnostic, Schema.Struct<{
8649
- readonly code: Schema.Literals<readonly ["unpairedMarker", "duplicateMarker"]>;
8650
- /** The region token the problem is about, e.g. `silk-release:summary`. */
8651
- readonly token: Schema.String;
8652
- }>, {}>;
8389
+ declare class GitSubmoduleError extends GitSubmoduleErrorBase<{
8390
+ readonly command: string;
8391
+ readonly cwd: string;
8392
+ readonly reason: string;
8393
+ }> {
8394
+ get message(): string;
8395
+ }
8396
+ /** @internal */
8397
+ declare const RepoNotFoundErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
8398
+ readonly _tag: "RepoNotFoundError";
8399
+ } & Readonly<A>;
8653
8400
  /**
8654
- * One problem with a body's silk-release markers.
8655
- *
8656
- * @remarks
8657
- * Diagnostics are advisory VALUES, not a typed error channel: every parse and
8658
- * render operation in this namespace is deliberately total (a regenerating
8659
- * action must still produce a body when the prior one is malformed, and the
8660
- * fail-safe direction is to preserve too much rather than delete someone's
8661
- * work). `scan` exists for the writer that wants to be told about a broken
8662
- * pair before editing — the `pr-body` skill instructs an agent that finds a
8663
- * region missing its pair to stop and report rather than guess, and this is
8664
- * the check that instruction points at. A misplaced marker pair is worse than
8665
- * none: it makes the next regeneration rewrite content it does not own.
8666
- *
8401
+ * The named repo is not present in the manifest.
8667
8402
  * @public
8668
8403
  */
8669
- declare class PrBodyDiagnostic extends PrBodyDiagnostic_base {
8670
- /**
8671
- * A human-readable description, derived from the structured fields.
8672
- *
8673
- * @public
8674
- */
8404
+ declare class RepoNotFoundError extends RepoNotFoundErrorBase<{
8405
+ readonly name: string;
8406
+ }> {
8675
8407
  get message(): string;
8676
- /**
8677
- * Every marker problem in `body`, or an empty array when the markers are
8678
- * well-formed (including entirely absent — an unmanaged body is not a
8679
- * defect).
8680
- *
8681
- * @remarks
8682
- * The references region is located by its attributed opening prefix, so a
8683
- * marker carrying an `owned="…"` attribute counts as present.
8684
- *
8685
- * @public
8686
- */
8687
- static scan(body: string): ReadonlyArray<PrBodyDiagnostic>;
8688
8408
  }
8689
- //#endregion
8690
- //#region src/pr-body/markers.d.ts
8691
- /**
8692
- * The frozen `silk-release` marker vocabulary — the wire format of the shared
8693
- * PR-body contract.
8694
- *
8695
- * @remarks
8696
- * **The `silk-release:` token is frozen and names the CONTRACT, not the
8697
- * emitting action.** `silk-update-action` PRs carry the same markers as
8698
- * release PRs, deliberately: every live document, the `pr-body` plugin skill,
8699
- * and every agent that edits a managed PR description key on these exact
8700
- * byte sequences. Do not parameterize the token per action and do not rename
8701
- * it — either forks the wire format for zero gain and orphans every open PR
8702
- * (ruled in savvy-web/systems#419).
8703
- *
8704
- * These constants are the single source of truth for the marker grammar.
8705
- * The agent-facing documentation in the silk plugin (`pr-body` and
8706
- * `commit-create` skills) duplicates the literals for readability; a drift
8707
- * lint in this package's test suite asserts the copies stay in sync.
8708
- */
8409
+ /** @internal */
8410
+ declare const NoteNotFoundErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
8411
+ readonly _tag: "NoteNotFoundError";
8412
+ } & Readonly<A>;
8709
8413
  /**
8710
- * The marker constants of the `silk-release` PR-body contract.
8711
- *
8712
- * @public
8713
- */
8714
- declare class Markers {
8715
- private constructor();
8716
- /**
8717
- * Opening marker of the whole managed region.
8718
- *
8719
- * @remarks
8720
- * Everything between this and {@link Markers.MANAGED_END} that is not
8721
- * inside the summary or references region is regenerated wholesale on
8722
- * every run; everything outside the pair is human territory and survives
8723
- * every regeneration.
8724
- *
8725
- * @public
8726
- */
8727
- static readonly MANAGED_START: string;
8728
- /**
8729
- * Closing marker of the whole managed region.
8730
- *
8731
- * @public
8732
- */
8733
- static readonly MANAGED_END: string;
8734
- /**
8735
- * Opening marker of the region an AI summariser owns.
8736
- *
8737
- * @remarks
8738
- * The generating action never writes into this region — it only reserves
8739
- * it and carries its content through on regeneration.
8740
- *
8741
- * @public
8742
- */
8743
- static readonly SUMMARY_START: string;
8744
- /**
8745
- * Closing marker of the summariser's region.
8746
- *
8747
- * @public
8748
- */
8749
- static readonly SUMMARY_END: string;
8750
- /**
8751
- * The PLAIN opening marker of the closing-reference region — the form an
8752
- * author writes by hand.
8753
- *
8754
- * @remarks
8755
- * A generating run emits the ATTRIBUTED form instead (the plain prefix
8756
- * plus an `owned="…"` attribute). Never locate the region by matching
8757
- * this constant — match {@link Markers.REFERENCES_START_PREFIX}, or a
8758
- * region a run wrote will not be found.
8759
- *
8760
- * @public
8761
- */
8762
- static readonly REFERENCES_START: string;
8763
- /**
8764
- * Closing marker of the closing-reference region.
8765
- *
8766
- * @public
8767
- */
8768
- static readonly REFERENCES_END: string;
8769
- /**
8770
- * The references opening marker up to its attributes, for locating a
8771
- * region whose `owned` list is unknown.
8772
- *
8773
- * @public
8774
- */
8775
- static readonly REFERENCES_START_PREFIX = "<!-- silk-release:references:start";
8776
- /**
8777
- * The fence language for the proposed squash-commit block.
8778
- *
8779
- * @remarks
8780
- * Not a GFM language and apparently undocumented, but GitHub renders it.
8781
- * It is a target for AI integrations to read and rewrite into the
8782
- * eventual squash-commit message. **Do not "correct" it to `text`.**
8783
- *
8784
- * @public
8785
- */
8786
- static readonly SQUASH_FENCE_LANGUAGE = "proposed-squash-commit";
8787
- }
8788
- //#endregion
8789
- //#region src/pr-body/references.d.ts
8790
- declare const ClosingReferences_base: Schema.Class<ClosingReferences, Schema.Struct<{
8791
- readonly ids: Schema.$Array<Schema.Number>;
8792
- }>, {}>;
8793
- /**
8794
- * An ordered list of issue ids destined for closing references, with the two
8795
- * renderers whose difference is the whole point of this module.
8796
- *
8797
- * @remarks
8798
- * The same issues appear twice in a managed PR body, spelled differently, and
8799
- * **neither consumer accepts the other's spelling**:
8800
- *
8801
- * - commitlint reads ONE comma-joined trailer (`Closes #1, #2`) inside the
8802
- * proposed-squash-commit fence — {@link ClosingReferences.renderTrailer};
8803
- * - GitHub's linker reads one bare `Closes #N` line each, OUTSIDE every
8804
- * fence — {@link ClosingReferences.renderBareLines}. A reference inside a
8805
- * fenced block is inert to GitHub.
8806
- *
8807
- * The duplication is load-bearing. Never "simplify" a body by emitting one
8808
- * form in both places: comma-joined bare lines link nothing (verified by hand
8809
- * against live pull requests — `savvy-web/silk-integration` #242/#232 with no
8810
- * bare line reported `closingIssuesReferences: []`, #243 with one reported
8811
- * `[168]`), and per-line trailers inside the fence break the commit contract.
8812
- *
8813
- * Ids are stored exactly as given — construction neither deduplicates nor
8814
- * sorts. Call {@link ClosingReferences.dedupe} where uniqueness is wanted;
8815
- * the split exists because the squash trailer historically renders duplicates
8816
- * as-given while the references region deduplicates, and byte-compatibility
8817
- * with live PR bodies pins that behavior.
8818
- *
8819
- * @public
8820
- */
8821
- declare class ClosingReferences extends ClosingReferences_base {
8822
- /**
8823
- * The open issues' ids, in input order, duplicates preserved.
8824
- *
8825
- * @remarks
8826
- * Closedness is decided by `LinkedIssueRef.isClosed` — the only
8827
- * sanctioned test, case-insensitive so REST (`closed`) and GraphQL
8828
- * (`CLOSED`) payloads classify identically.
8829
- *
8830
- * @public
8831
- */
8832
- static fromIssues(issues: ReadonlyArray<LinkedIssueRef>): ClosingReferences;
8833
- /**
8834
- * Issue ids carried by a region's bare closing lines.
8835
- *
8836
- * @remarks
8837
- * The region is read with `@effected/github-references`' `parseBareLines`
8838
- * — per line, the whole line, after trimming, must be
8839
- * `<keyword>[:] #<number>`, so a number mentioned in passing is never
8840
- * mistaken for a closing reference. Every keyword GitHub accepts counts,
8841
- * not just the present-tense plural this contract emits, because a
8842
- * reference the parser fails to recognise is one the next regeneration
8843
- * silently deletes.
8844
- *
8845
- * @public
8846
- */
8847
- static parseBare(region: string): ReadonlyArray<number>;
8848
- /**
8849
- * A copy with duplicate ids removed, first occurrence winning.
8850
- *
8851
- * @public
8852
- */
8853
- dedupe(): ClosingReferences;
8854
- /**
8855
- * The comma-joined trailer the squash-commit message carries, or `""`
8856
- * when there is nothing to close.
8857
- *
8858
- * @remarks
8859
- * `Closes #1, #2` on ONE line — the spelling commitlint reads and
8860
- * GitHub's linker ignores. See the class remarks before changing either
8861
- * renderer.
8862
- *
8863
- * @public
8864
- */
8865
- renderTrailer(): string;
8866
- /**
8867
- * One bare `Closes #N` line per id, or `""` when empty.
8868
- *
8869
- * @remarks
8870
- * The spelling GitHub's linker reads — each line must sit OUTSIDE every
8871
- * fenced block to link. See the class remarks before changing either
8872
- * renderer.
8873
- *
8874
- * @public
8875
- */
8876
- renderBareLines(): string;
8877
- }
8878
- /**
8879
- * The `owned="…"` attribute on the references region's opening marker.
8880
- *
8881
- * @remarks
8882
- * Records the issue ids a generating run emitted itself, so the next run can
8883
- * tell its own references from ones an agent or human added. "Not in this
8884
- * run's linked set" is NOT enough: a reference the previous run emitted also
8885
- * disappears from the linked set when the release stops tracking that issue,
8886
- * and treating it as agent-authored would preserve it forever — re-linking,
8887
- * and on merge auto-closing, an issue the release deliberately dropped.
8888
- *
8889
- * **Never hand-edit the attribute.** A wrong value makes the next run delete
8890
- * a real reference or resurrect a dropped one.
8891
- *
8892
- * @public
8893
- */
8894
- declare class OwnedAttribute {
8895
- private constructor();
8896
- /**
8897
- * The attribute as emitted on the opening marker.
8898
- *
8899
- * @public
8900
- */
8901
- static render(ids: ReadonlyArray<number>): string;
8902
- /**
8903
- * The ids the prior body's opening marker claims as the previous run's
8904
- * own.
8905
- *
8906
- * @remarks
8907
- * An absent or malformed attribute reads as "none", which degrades to
8908
- * treating every reference in the region as agent-authored. That
8909
- * preserves too much rather than deleting someone's work — the safe
8910
- * direction to fail. The match is anchored to an attribute boundary: an
8911
- * unanchored match also finds `data-owned="…"` and `unowned="…"`, which
8912
- * would let an unrelated attribute claim an agent's reference and get it
8913
- * dropped on the next run.
8914
- *
8915
- * @public
8916
- */
8917
- static parse(priorBody: string): ReadonlySet<number>;
8918
- }
8919
- //#endregion
8920
- //#region src/pr-body/region.d.ts
8921
- /**
8922
- * The generic marker-delimited region grammar every silk-managed document
8923
- * uses: `<!-- token:start -->` … `<!-- token:end -->`.
8924
- *
8925
- * @remarks
8926
- * Extracted from `silk-release-action` (its `pr-body.ts` and
8927
- * `managed-sections.ts` both carried a private copy) so the grammar has one
8928
- * owner. **Every marker is a pair.** A lone opening marker can only be located
8929
- * by scanning forward to whatever happens to follow it, which makes the
8930
- * region's extent a function of its neighbours rather than of itself — moving
8931
- * anything nearby silently redefines it. The token is free-form; `:start` and
8932
- * `:end` are the whole contract, so pairs nest and a region can contain
8933
- * sub-regions without either needing to know about the other.
8934
- */
8935
- /**
8936
- * Pure helpers over the `<!-- token:start -->` / `<!-- token:end -->` region
8937
- * grammar.
8938
- *
8939
- * @remarks
8940
- * Every operation is total: a body with no region (or a broken pair) degrades
8941
- * to the documented fail-safe result rather than failing, because the callers
8942
- * are regenerating actions that must still produce a body when the prior one
8943
- * is malformed. Use `PrBodyDiagnostic.scan` when a caller wants to be told
8944
- * about a broken pair instead of silently tolerating it.
8945
- *
8946
- * @public
8947
- */
8948
- declare class Region {
8949
- private constructor();
8950
- /**
8951
- * The opening delimiter for a named region.
8952
- *
8953
- * @public
8954
- */
8955
- static start(token: string): string;
8956
- /**
8957
- * The closing delimiter for a named region.
8958
- *
8959
- * @public
8960
- */
8961
- static end(token: string): string;
8962
- /**
8963
- * The content between a region's delimiters, or `undefined` when absent.
8964
- *
8965
- * @remarks
8966
- * Finds the FIRST opening marker and the matching close after it, so a
8967
- * nested region of a different token is returned as part of the content
8968
- * rather than truncating it.
8969
- *
8970
- * @public
8971
- */
8972
- static read(body: string, token: string): string | undefined;
8973
- /**
8974
- * Everything outside a region, with the region and its delimiters removed.
8975
- *
8976
- * @remarks
8977
- * A body without the region comes back unchanged — removal of an absent
8978
- * region is a no-op, not an error.
8979
- *
8980
- * @public
8981
- */
8982
- static strip(body: string, token: string): string;
8983
- /**
8984
- * Put `rendered` (a fully rendered region, its own markers included) into
8985
- * `body`, replacing a previous region of the same token and leaving
8986
- * everything else alone.
8987
- *
8988
- * @remarks
8989
- * **Human edits outside the markers survive.** A predecessor spliced on a
8990
- * markdown heading, which silently ate any content a human happened to put
8991
- * under a heading of that name and could not tell generated text from
8992
- * theirs. An explicit marker pair can.
8993
- *
8994
- * A body with no markers keeps its content and gains the region **below**
8995
- * it, so an existing hand-written document is not displaced. The result is
8996
- * trimmed.
8997
- *
8998
- * @public
8999
- */
9000
- static upsert(body: string, token: string, rendered: string): string;
9001
- }
9002
- declare namespace index_d_exports$3 {
9003
- export { ClosingReferences, LinkedIssueRef, ManagedPrBody, ManagedPrBodyOptions, Markers, OwnedAttribute, PrBodyDiagnostic, PrBodyDiagnosticCode, Region };
9004
- }
9005
- //#endregion
9006
- //#region src/repos/constants.d.ts
9007
- /**
9008
- * Directory vendored reference repos live under, relative to the repo root.
9009
- * @public
9010
- */
9011
- declare const REPOS_DIR = ".repos";
9012
- /**
9013
- * Path of the committed vendored-repos manifest, relative to the repo root.
9014
- * @public
9015
- */
9016
- declare const MANIFEST_PATH = ".repos/config.json";
9017
- /**
9018
- * Maximum notes per vendored repo; enforced at write time to force
9019
- * consolidation into orientation.
9020
- * @public
9021
- */
9022
- declare const NOTE_LIMIT = 10;
9023
- //#endregion
9024
- //#region src/repos/errors.d.ts
9025
- /** @internal */
9026
- declare const ReposConfigErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9027
- readonly _tag: "ReposConfigError";
9028
- } & Readonly<A>;
9029
- /**
9030
- * The .repos/config.json manifest is missing, unreadable, or invalid.
9031
- * @public
9032
- */
9033
- declare class ReposConfigError extends ReposConfigErrorBase<{
9034
- readonly path: string;
9035
- readonly reason: string;
9036
- readonly kind: "missing" | "invalid";
9037
- }> {
9038
- get message(): string;
9039
- }
9040
- /** @internal */
9041
- declare const GitSubmoduleErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9042
- readonly _tag: "GitSubmoduleError";
9043
- } & Readonly<A>;
9044
- /**
9045
- * A git submodule operation failed.
9046
- * @public
9047
- */
9048
- declare class GitSubmoduleError extends GitSubmoduleErrorBase<{
9049
- readonly command: string;
9050
- readonly cwd: string;
9051
- readonly reason: string;
9052
- }> {
9053
- get message(): string;
9054
- }
9055
- /** @internal */
9056
- declare const RepoNotFoundErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9057
- readonly _tag: "RepoNotFoundError";
9058
- } & Readonly<A>;
9059
- /**
9060
- * The named repo is not present in the manifest.
9061
- * @public
9062
- */
9063
- declare class RepoNotFoundError extends RepoNotFoundErrorBase<{
9064
- readonly name: string;
9065
- }> {
9066
- get message(): string;
9067
- }
9068
- /** @internal */
9069
- declare const NoteNotFoundErrorBase: new <A extends Record<string, any> = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & {
9070
- readonly _tag: "NoteNotFoundError";
9071
- } & Readonly<A>;
9072
- /**
9073
- * The note id does not exist on the named repo.
8414
+ * The note id does not exist on the named repo.
9074
8415
  * @public
9075
8416
  */
9076
8417
  declare class NoteNotFoundError extends NoteNotFoundErrorBase<{
@@ -9739,520 +9080,10 @@ declare class ReposManager extends ReposManager_base {
9739
9080
  */
9740
9081
  static readonly layer: Layer.Layer<ReposManager, never, ReposConfigStore | Git | FileSystem.FileSystem | Path.Path | ReposLockdown>;
9741
9082
  }
9742
- declare namespace index_d_exports$4 {
9083
+ declare namespace index_d_exports$3 {
9743
9084
  export { DriftKind, GitSubmoduleError, GitSubmoduleErrorBase, MANIFEST_PATH, NOTE_LIMIT, NoteNotFoundError, NoteNotFoundErrorBase, REPOS_DIR, RepoDrift, RepoEntry, RepoName, RepoNotFoundError, RepoNotFoundErrorBase, RepoNote, RepoOrientation, RepoStatusEntry, ReposAddResult, ReposConfigError, ReposConfigErrorBase, ReposConfigStore, ReposConfigStoreShape, ReposDeregisterResult, ReposDrift, ReposDriftReport, ReposDriftShape, ReposLockdown, ReposLockdownError, ReposLockdownErrorBase, ReposLockdownShape, ReposManager, ReposManagerShape, ReposManifestFile, ReposNoteResult, ReposPinResult, ReposRemoveResult, ReposRenameResult, ReposRestoreResult, ReposStatusReport, ReposSyncReport, STALE_LOCK_MAX_AGE_MS, resolveModuleDir, submoduleNameFromKey };
9744
9085
  }
9745
9086
  //#endregion
9746
- //#region src/schemas/BiomeConfig.d.ts
9747
- /**
9748
- * Result of a Biome schema URL sync or check operation.
9749
- *
9750
- * @remarks
9751
- * - `updated` — paths of config files whose `$schema` URL was changed (or would be changed on `check`).
9752
- * - `skipped` — paths of config files with no `$schema` field or a non-biomejs.dev URL.
9753
- * - `current` — paths of config files already pointing to the expected schema URL.
9754
- *
9755
- * @since 0.1.0
9756
- * @public
9757
- */
9758
- declare const BiomeSyncResult: Schema.Struct<{
9759
- readonly updated: Schema.$Array<Schema.String>;
9760
- readonly skipped: Schema.$Array<Schema.String>;
9761
- readonly current: Schema.$Array<Schema.String>;
9762
- }>;
9763
- /**
9764
- * @since 0.1.0
9765
- * @public
9766
- */
9767
- type BiomeSyncResult = typeof BiomeSyncResult.Type;
9768
- /**
9769
- * Options for {@link BiomeSchemaSync} operations.
9770
- *
9771
- * @remarks
9772
- * `cwd` overrides the working directory used to locate `biome.json` / `biome.jsonc`.
9773
- * `gitignore` is reserved for future use to skip gitignored config files (defaults to `true`).
9774
- *
9775
- * @since 0.1.0
9776
- * @public
9777
- */
9778
- declare const BiomeSyncOptions: Schema.Struct<{
9779
- readonly cwd: Schema.optional<Schema.String>;
9780
- readonly gitignore: Schema.withConstructorDefault<Schema.withDecodingDefaultType<Schema.Boolean, never>>;
9781
- }>;
9782
- /**
9783
- * @since 0.1.0
9784
- * @public
9785
- */
9786
- type BiomeSyncOptions = typeof BiomeSyncOptions.Type;
9787
- //#endregion
9788
- //#region src/schemas/ConfigDiscoverySchemas.d.ts
9789
- /**
9790
- * The discovery strategy used to locate a config file.
9791
- *
9792
- * @remarks
9793
- * - `"lib"` — found under `lib/configs/{name}` relative to the workspace root.
9794
- * - `"root"` — found directly in the workspace root as `{name}`.
9795
- * - `"cosmiconfig"` — reserved for future cosmiconfig-based discovery.
9796
- *
9797
- * @since 0.1.0
9798
- * @public
9799
- */
9800
- declare const ConfigSource: Schema.Literals<readonly ["lib", "root", "cosmiconfig"]>;
9801
- /**
9802
- * @since 0.1.0
9803
- * @public
9804
- */
9805
- type ConfigSource = typeof ConfigSource.Type;
9806
- /**
9807
- * The resolved location of a discovered config file.
9808
- *
9809
- * @remarks
9810
- * Produced by `ConfigDiscovery.find` and `ConfigDiscovery.findAll`.
9811
- * `path` is the absolute file path; `source` indicates how it was discovered.
9812
- *
9813
- * @since 0.1.0
9814
- * @public
9815
- */
9816
- declare const ConfigLocation: Schema.Struct<{
9817
- readonly path: Schema.String;
9818
- readonly source: Schema.Literals<readonly ["lib", "root", "cosmiconfig"]>;
9819
- }>;
9820
- /**
9821
- * @since 0.1.0
9822
- * @public
9823
- */
9824
- type ConfigLocation = typeof ConfigLocation.Type;
9825
- /**
9826
- * Options passed to config discovery methods.
9827
- *
9828
- * @remarks
9829
- * `cwd` overrides the working directory for path resolution (defaults to `process.cwd()`).
9830
- * `tool` is reserved for future use as a tool-specific discovery hint.
9831
- *
9832
- * @since 0.1.0
9833
- * @public
9834
- */
9835
- declare const ConfigDiscoveryOptions: Schema.Struct<{
9836
- readonly cwd: Schema.optional<Schema.String>;
9837
- readonly tool: Schema.optional<Schema.String>;
9838
- }>;
9839
- /**
9840
- * @since 0.1.0
9841
- * @public
9842
- */
9843
- type ConfigDiscoveryOptions = typeof ConfigDiscoveryOptions.Type;
9844
- //#endregion
9845
- //#region src/schemas/SavvyInstallSection.d.ts
9846
- /**
9847
- * The hooks {@link savvyInstallDeps} can be generated for.
9848
- *
9849
- * @remarks
9850
- * Both are needed, and `post-merge` is the one that matters most in practice:
9851
- * a fast-forward `git pull` — the batch-alignment case this exists for — fires
9852
- * `post-merge` and never `post-checkout`. They are separate spellings rather
9853
- * than one argument-sniffing block because the two hooks disagree on both
9854
- * halves of the decision: `post-checkout` is handed `<prev> <new> <flag>` and
9855
- * must ignore a file checkout, while `post-merge` is handed only a squash flag
9856
- * and has to recover its own range from `ORIG_HEAD`.
9857
- *
9858
- * @since 7.5.0
9859
- * @public
9860
- */
9861
- type SavvyInstallHook = "post-checkout" | "post-merge";
9862
- /**
9863
- * Section identity for the dependency auto-install block.
9864
- *
9865
- * `toolName` is `"savvy-install"`; pair with {@link savvyInstallDeps}.
9866
- *
9867
- * @since 7.5.0
9868
- * @public
9869
- */
9870
- export declare const SavvyInstallSection: SectionId;
9871
- /**
9872
- * Dependency auto-install shared across Silk Suite hook files.
9873
- *
9874
- * @remarks
9875
- * Brings `node_modules` back in line after a branch switch or a pull, so a batch
9876
- * of repos pulled to align their dependencies does not each need a manual
9877
- * install. Installs with lifecycle scripts skipped — `--ignore-scripts`, or
9878
- * `--mode=skip-build` for Yarn Berry, which dropped the former — because the goal
9879
- * is to get the dependency tree on disk, not to run a full postinstall.
9880
- *
9881
- * **That flag has a cost, and one shape of repo cannot pay it.** Where a package
9882
- * publishes through a built link directory — `publishConfig.directory` with
9883
- * `linkDirectory: true`, which is how this monorepo wires `dist/dev/pkg` — the
9884
- * workspace resolves its own dependencies through a directory that a `prepare`
9885
- * script has to build, and skipping scripts yields a populated `node_modules`
9886
- * pointing at nothing.
9887
- *
9888
- * Those repos ask for a full install through the LOCAL git config key
9889
- * `savvy.installLifecycleScripts`, which `savvy init` sets when it finds the
9890
- * shape. The decision deliberately does NOT read the checked-out tree. Doing so
9891
- * failed in both directions at once: a branch that merely declared the shape
9892
- * could turn lifecycle scripts back on just by being checked out, making
9893
- * `git checkout` of an untrusted revision a code-execution path; and the `jq`
9894
- * the scan needed is absent on stock macOS and Ubuntu, where the missing answer
9895
- * silently skipped scripts in precisely the repos that cannot survive it.
9896
- * `.git/config` is neither checked out nor parsed with `jq`, so it has neither
9897
- * failure mode.
9898
- *
9899
- * The package managers gate dependency scripts themselves on top of this —
9900
- * pnpm's `strictDepBuilds` with an `allowBuilds` allowlist being the case in
9901
- * point — but workspace and root lifecycle scripts still run, which is why the
9902
- * opt-in is local rather than inferred. With the flag on, the hook says on the
9903
- * way out that scripts were skipped rather than leaving it to be discovered.
9904
- *
9905
- * Deliberately self-contained, like `savvyToolchainCheck`: its homes carry
9906
- * `SavvyHooksSection` but no `SavvyBaseSection`, so it defines its own root, CI
9907
- * and package-manager lookups rather than depending on `ROOT`, `in_ci` or `PM`.
9908
- *
9909
- * Four guards keep it from firing on the many checkouts that are not dependency
9910
- * events, each a silent no-op:
9911
- *
9912
- * - CI, where the runtime action owns installation by construction.
9913
- * - `SAVVY_SKIP_INSTALL`, the escape hatch for a bisect or a scripted sweep that
9914
- * does not want an install between steps.
9915
- * - `post-checkout` only: a branch-flag of `0`, which is `git checkout -- <file>`
9916
- * and not a move between commits.
9917
- * - **The gate that makes this affordable:** nothing dependency-related actually
9918
- * changed across the move. Without it every branch switch would pay for a full
9919
- * install. A missing `node_modules` overrides it, since there is nothing to be
9920
- * stale.
9921
- *
9922
- * A fresh clone is not among the cases it handles, and cannot be: husky sets
9923
- * `core.hooksPath` from its own `prepare` script, so until the first manual
9924
- * install has run there is no hook installed to fire.
9925
- *
9926
- * The install's exit status is swallowed and its output goes to stderr. Git
9927
- * ignores what `post-checkout` and `post-merge` return, so a failure here must
9928
- * not look like a failed checkout; the hint names the escape hatch instead.
9929
- *
9930
- * Every probe that can legitimately fail — no `ORIG_HEAD` to compare against, an
9931
- * unresolvable range — is neutralised with `|| true` rather than left to its own
9932
- * status. These blocks are co-owned and consumer content can sit below them, so
9933
- * under a hook running `set -e` a bare failing substitution would abort the whole
9934
- * file and take those later sections with it.
9935
- *
9936
- * @param hook - Which hook the block is being generated for; decides the
9937
- * argument guard and how the comparison range is recovered.
9938
- * @returns The install shell, with no surrounding markers or trailing newline.
9939
- *
9940
- * @since 7.5.0
9941
- * @public
9942
- */
9943
- export declare function savvyInstallDeps(hook: SavvyInstallHook): string;
9944
- /**
9945
- * The local git config key that authorizes lifecycle scripts during a hook install.
9946
- *
9947
- * @remarks
9948
- * Local scope only. It lives in `.git/config`, which is never checked out, so no
9949
- * incoming revision can set it — that is the whole point of reading the decision
9950
- * from here rather than from a manifest in the tree.
9951
- *
9952
- * @since 7.5.0
9953
- * @public
9954
- */
9955
- export declare const LIFECYCLE_SCRIPTS_CONFIG_KEY = "savvy.installLifecycleScripts";
9956
- /**
9957
- * Whether `manifest` publishes through a built link directory.
9958
- *
9959
- * @remarks
9960
- * `publishConfig.directory` with `linkDirectory: true` means consumers of this
9961
- * package resolve it through a directory that a `prepare` script has to produce,
9962
- * so an install that skips lifecycle scripts leaves the link pointing at nothing.
9963
- * A workspace containing any such package is one whose owner probably wants
9964
- * {@link LIFECYCLE_SCRIPTS_CONFIG_KEY} set.
9965
- *
9966
- * Reporting the shape is deliberately separate from acting on it: this answers
9967
- * "does this repo need scripts", and a human still decides whether hook-time
9968
- * installs may run them.
9969
- *
9970
- * @param manifest - A parsed `package.json`; any non-object reads as `false`.
9971
- *
9972
- * @since 7.5.0
9973
- * @public
9974
- */
9975
- export declare function publishesBuiltLinkDirectory(manifest: unknown): boolean;
9976
- /**
9977
- * Build the dependency auto-install block for `hook`.
9978
- *
9979
- * @param hook - Which hook the section is destined for.
9980
- * @returns A shell `Section` (`commentStyle: hash`) keyed `SAVVY-INSTALL`.
9981
- *
9982
- * @since 7.5.0
9983
- * @public
9984
- */
9985
- export declare function savvyInstallBlock(hook: SavvyInstallHook): Section;
9986
- //#endregion
9987
- //#region src/schemas/SavvySections.d.ts
9988
- /**
9989
- * Section identity for the shared package-manager preamble.
9990
- *
9991
- * `toolName` is `"savvy-base"`; pair with {@link savvyBasePreamble} to build the block:
9992
- *
9993
- * @example
9994
- * ```ts
9995
- * const section = SavvyBaseSection.section(savvyBasePreamble());
9996
- * ```
9997
- *
9998
- * @since 0.5.0
9999
- * @public
10000
- */
10001
- export declare const SavvyBaseSection: SectionId;
10002
- /**
10003
- * Section identity for the shared repo-hygiene block.
10004
- *
10005
- * `toolName` is `"savvy-hooks"`; pair with {@link savvyHooksHygiene}.
10006
- *
10007
- * @since 0.5.0
10008
- * @public
10009
- */
10010
- export declare const SavvyHooksSection: SectionId;
10011
- /**
10012
- * Package-manager detection preamble shared across Silk Suite hook files.
10013
- *
10014
- * @remarks
10015
- * Side-effect-free definitions meant to run unconditionally — no markers, no outer CI
10016
- * guard. Defines `ROOT`, the `in_ci` predicate, `PM` (via `detect_pm`), and `pm_exec`.
10017
- * `pm_exec` uses local/exec semantics for every package manager and `bun x` (space form),
10018
- * which works regardless of how bun was installed (the `bunx` shim is not always on PATH).
10019
- *
10020
- * @returns The preamble shell, with no surrounding markers or trailing newline.
10021
- *
10022
- * @since 0.5.0
10023
- * @public
10024
- */
10025
- export declare function savvyBasePreamble(): string;
10026
- /**
10027
- * Repo-hygiene block shared across Silk Suite hook files.
10028
- *
10029
- * @remarks
10030
- * Self-guarded against CI and needs no package manager: disables Git's `core.fileMode`
10031
- * tracking and marks tracked shell scripts executable.
10032
- *
10033
- * @returns The hygiene shell, with no surrounding markers or trailing newline.
10034
- *
10035
- * @since 0.5.0
10036
- * @public
10037
- */
10038
- export declare function savvyHooksHygiene(): string;
10039
- /**
10040
- * Build a consumer's one-line tool section so every consumer calls the shared base
10041
- * helpers identically.
10042
- *
10043
- * @remarks
10044
- * The returned block's content is exactly `in_ci || pm_exec <command>` with `command`
10045
- * appended verbatim — it is not parsed, quoted, or interpolated, so shell tokens like
10046
- * `$ROOT` and `$1` survive into the generated literal.
10047
- *
10048
- * **Precondition:** a {@link SavvyBaseSection} block must precede this section in the same
10049
- * hook file so `in_ci` and `pm_exec` are defined. Consumers guarantee this by passing both
10050
- * to `ManagedSection.syncAll` in order:
10051
- *
10052
- * @example
10053
- * ```ts
10054
- * yield* sections.syncAll(".husky/commit-msg", [
10055
- * SavvyBaseSection.section(savvyBasePreamble()),
10056
- * savvyToolSection("savvy-commit", 'commitlint --config "$ROOT/lib/configs/commitlint.config.ts" --edit "$1"'),
10057
- * ]);
10058
- * ```
10059
- *
10060
- * @param toolName - Section identity; also drives the marker names (uppercased).
10061
- * @param command - The command passed verbatim to `pm_exec`, run only outside CI.
10062
- * @returns A shell `Section` (`commentStyle: hash`) for `toolName`.
10063
- *
10064
- * @since 0.5.0
10065
- * @public
10066
- */
10067
- export declare function savvyToolSection(toolName: string, command: string): Section;
10068
- /**
10069
- * Section identity for the package-manager toolchain drift check.
10070
- *
10071
- * `toolName` is `"savvy-toolchain"`; pair with {@link savvyToolchainCheck}.
10072
- *
10073
- * @since 7.3.0
10074
- * @public
10075
- */
10076
- export declare const SavvyToolchainSection: SectionId;
10077
- /**
10078
- * Package-manager drift check shared across Silk Suite hook files.
10079
- *
10080
- * @remarks
10081
- * Compares the running package manager's version against the repo's
10082
- * `devEngines.packageManager` pin and prints a warning on mismatch. **Warn only** —
10083
- * it never blocks the hook and never installs anything, so nobody mid-bisect or
10084
- * mid-rebase on an older pin is stranded.
10085
- *
10086
- * Deliberately self-contained: its homes are `.husky/post-checkout` and
10087
- * `.husky/post-merge`, which carry {@link SavvyHooksSection} but no
10088
- * {@link SavvyBaseSection}, so it defines its own root/CI/pin lookups rather than
10089
- * depending on `ROOT`, `in_ci` or `PM`. It honours the `name` recorded in the pin
10090
- * rather than assuming pnpm.
10091
- *
10092
- * Every input is treated as optional: no `git` root, no `jq`, no `devEngines` block,
10093
- * or a package manager that is not on `PATH` all mean "say nothing". Only an exact
10094
- * pin is comparable, so ranges (`^1.2.3`, `>=1 || <2`) and wildcards (`1.x`) are
10095
- * skipped, and the `+sha512…` integrity tail `devEngines` versions routinely carry is
10096
- * stripped before comparison. Skipped under CI, where the runtime action installs the
10097
- * pin by construction.
10098
- *
10099
- * @returns The drift-check shell, with no surrounding markers or trailing newline.
10100
- *
10101
- * @since 7.3.0
10102
- * @public
10103
- */
10104
- export declare function savvyToolchainCheck(): string;
10105
- //#endregion
10106
- //#region src/schemas/WorkspaceAnalysisSchemas.d.ts
10107
- declare const SilkPublishConfig_base: Schema.Class<SilkPublishConfig, Schema.Struct<{
10108
- readonly access: Schema.optionalKey<Schema.Literals<readonly ["public", "restricted"]>>;
10109
- readonly registry: Schema.optionalKey<Schema.String>;
10110
- readonly directory: Schema.optionalKey<Schema.String>;
10111
- readonly linkDirectory: Schema.optionalKey<Schema.Boolean>;
10112
- readonly tag: Schema.optionalKey<Schema.String>;
10113
- targets: Schema.optional<Schema.$Array<Schema.Union<readonly [Schema.Literals<readonly ["npm", "github", "jsr"]>, Schema.Struct<{
10114
- readonly protocol: Schema.withConstructorDefault<Schema.withDecodingDefaultType<Schema.Literals<readonly ["npm", "jsr"]>, never>>;
10115
- readonly registry: Schema.optional<Schema.String>;
10116
- readonly directory: Schema.optional<Schema.String>;
10117
- readonly access: Schema.optional<Schema.Literals<readonly ["public", "restricted"]>>;
10118
- readonly provenance: Schema.optional<Schema.Boolean>;
10119
- readonly tag: Schema.optional<Schema.String>;
10120
- }>]>>>;
10121
- }>, PublishConfig> & Pick<{}, never>;
10122
- /**
10123
- * Silk-extended publishConfig schema.
10124
- *
10125
- * @remarks
10126
- * Extends the base PublishConfig from `@effected/workspaces` (which covers the
10127
- * npm standard fields — access, registry, directory, tag — and, as of kit
10128
- * round 3, `linkDirectory`) with the Silk `targets` extension for
10129
- * multi-registry publishing.
10130
- *
10131
- * @since 0.2.0
10132
- * @public
10133
- */
10134
- export declare class SilkPublishConfig extends SilkPublishConfig_base {}
10135
- declare const AnalyzedWorkspace_base: Schema.Class<AnalyzedWorkspace, Schema.TaggedStruct<"AnalyzedWorkspace", {
10136
- readonly name: Schema.String;
10137
- readonly version: Schema.Struct<{
10138
- readonly current: Schema.optional<Schema.String>;
10139
- }>;
10140
- readonly path: Schema.String;
10141
- readonly root: Schema.Boolean;
10142
- readonly publishConfig: Schema.NullOr<typeof SilkPublishConfig>;
10143
- readonly publishable: Schema.Boolean;
10144
- readonly targets: Schema.$Array<typeof PublishTarget>;
10145
- readonly versioned: Schema.Boolean;
10146
- readonly tagged: Schema.Boolean;
10147
- readonly released: Schema.Boolean;
10148
- readonly linked: Schema.$Array<Schema.suspend<any>>;
10149
- readonly fixed: Schema.$Array<Schema.suspend<any>>;
10150
- }>, {}>;
10151
- /**
10152
- * A fully analyzed workspace with publish targets, versioning status,
10153
- * and release group membership.
10154
- *
10155
- * @since 0.2.0
10156
- * @public
10157
- */
10158
- export declare class AnalyzedWorkspace extends AnalyzedWorkspace_base {
10159
- get isRoot(): boolean;
10160
- get isPublishable(): boolean;
10161
- get isReleasable(): boolean;
10162
- get isFixed(): boolean;
10163
- get isLinked(): boolean;
10164
- publishesTo(registry: string): boolean;
10165
- hasTarget(shorthand: "npm" | "github" | "jsr"): boolean;
10166
- targetFor(registry: string): Option.Option<PublishTarget>;
10167
- [Equal.symbol](that: Equal.Equal): boolean;
10168
- [Hash.symbol](): number;
10169
- toString(): string;
10170
- toJSON(): unknown;
10171
- static publishable(workspaces: ReadonlyArray<AnalyzedWorkspace>): ReadonlyArray<AnalyzedWorkspace>;
10172
- static releasable(workspaces: ReadonlyArray<AnalyzedWorkspace>): ReadonlyArray<AnalyzedWorkspace>;
10173
- static findByName: {
10174
- (name: string): (workspaces: ReadonlyArray<AnalyzedWorkspace>) => Option.Option<AnalyzedWorkspace>;
10175
- (workspaces: ReadonlyArray<AnalyzedWorkspace>, name: string): Option.Option<AnalyzedWorkspace>;
10176
- };
10177
- /** Pretty-print an AnalyzedWorkspace instance. */
10178
- static pretty: (self: AnalyzedWorkspace) => string;
10179
- }
10180
- declare const WorkspaceAnalysis_base: Schema.Class<WorkspaceAnalysis, Schema.TaggedStruct<"WorkspaceAnalysis", {
10181
- readonly root: Schema.String;
10182
- readonly runtime: Schema.Literals<readonly ["node", "bun"]>;
10183
- readonly packageManager: Schema.Struct<{
10184
- readonly type: Schema.Literals<readonly ["npm", "pnpm", "yarn", "bun"]>;
10185
- readonly version: Schema.optional<Schema.String>;
10186
- }>;
10187
- readonly workspaces: Schema.$Array<typeof AnalyzedWorkspace>;
10188
- readonly changesetConfig: Schema.NullOr<Schema.Union<readonly [Schema.Struct<{
10189
- readonly changelog: Schema.optional<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Unknown>, Schema.Literal<false>]>>;
10190
- readonly commit: Schema.optional<Schema.Union<readonly [Schema.Boolean, Schema.String, Schema.$Array<Schema.Unknown>]>>;
10191
- readonly fixed: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
10192
- readonly linked: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
10193
- readonly access: Schema.optional<Schema.Literals<readonly ["public", "restricted"]>>;
10194
- readonly baseBranch: Schema.optional<Schema.String>;
10195
- readonly updateInternalDependencies: Schema.optional<Schema.Literals<readonly ["patch", "minor", "major"]>>;
10196
- readonly ignore: Schema.optional<Schema.$Array<Schema.String>>;
10197
- readonly privatePackages: Schema.optional<Schema.Union<readonly [Schema.Struct<{
10198
- readonly tag: Schema.optional<Schema.Boolean>;
10199
- readonly version: Schema.optional<Schema.Boolean>;
10200
- }>, Schema.Literal<false>]>>;
10201
- readonly prettier: Schema.optional<Schema.Boolean>;
10202
- readonly changedFilePatterns: Schema.optional<Schema.$Array<Schema.String>>;
10203
- readonly bumpVersionsWithWorkspaceProtocolOnly: Schema.optional<Schema.Boolean>;
10204
- readonly snapshot: Schema.optional<Schema.Struct<{
10205
- readonly useCalculatedVersion: Schema.optional<Schema.Boolean>;
10206
- readonly prereleaseTemplate: Schema.optional<Schema.String>;
10207
- }>>;
10208
- readonly _isSilk: Schema.withConstructorDefault<Schema.withDecodingDefaultType<Schema.Boolean, never>>;
10209
- }>, Schema.Struct<{
10210
- readonly changelog: Schema.optional<Schema.Union<readonly [Schema.String, Schema.$Array<Schema.Unknown>, Schema.Literal<false>]>>;
10211
- readonly commit: Schema.optional<Schema.Union<readonly [Schema.Boolean, Schema.String, Schema.$Array<Schema.Unknown>]>>;
10212
- readonly fixed: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
10213
- readonly linked: Schema.optional<Schema.$Array<Schema.$Array<Schema.String>>>;
10214
- readonly access: Schema.optional<Schema.Literals<readonly ["public", "restricted"]>>;
10215
- readonly baseBranch: Schema.optional<Schema.String>;
10216
- readonly updateInternalDependencies: Schema.optional<Schema.Literals<readonly ["patch", "minor", "major"]>>;
10217
- readonly ignore: Schema.optional<Schema.$Array<Schema.String>>;
10218
- readonly privatePackages: Schema.optional<Schema.Union<readonly [Schema.Struct<{
10219
- readonly tag: Schema.optional<Schema.Boolean>;
10220
- readonly version: Schema.optional<Schema.Boolean>;
10221
- }>, Schema.Literal<false>]>>;
10222
- readonly prettier: Schema.optional<Schema.Boolean>;
10223
- readonly changedFilePatterns: Schema.optional<Schema.$Array<Schema.String>>;
10224
- readonly bumpVersionsWithWorkspaceProtocolOnly: Schema.optional<Schema.Boolean>;
10225
- readonly snapshot: Schema.optional<Schema.Struct<{
10226
- readonly useCalculatedVersion: Schema.optional<Schema.Boolean>;
10227
- readonly prereleaseTemplate: Schema.optional<Schema.String>;
10228
- }>>;
10229
- }>]>>;
10230
- readonly versioning: Schema.NullOr<typeof VersioningStrategy>;
10231
- readonly tagStrategy: Schema.NullOr<Schema.Literals<readonly ["single", "scoped"]>>;
10232
- }>, {}>;
10233
- /**
10234
- * Full workspace analysis result containing all analyzed workspaces
10235
- * and project-level configuration.
10236
- *
10237
- * @since 0.2.0
10238
- * @public
10239
- */
10240
- export declare class WorkspaceAnalysis extends WorkspaceAnalysis_base {
10241
- findWorkspace(name: string): Option.Option<AnalyzedWorkspace>;
10242
- get rootWorkspace(): Option.Option<AnalyzedWorkspace>;
10243
- get publishableWorkspaces(): ReadonlyArray<AnalyzedWorkspace>;
10244
- get versionedWorkspaces(): ReadonlyArray<AnalyzedWorkspace>;
10245
- get taggedWorkspaces(): ReadonlyArray<AnalyzedWorkspace>;
10246
- get releasableWorkspaces(): ReadonlyArray<AnalyzedWorkspace>;
10247
- get isSilk(): boolean;
10248
- get hasChangesets(): boolean;
10249
- [Equal.symbol](that: Equal.Equal): boolean;
10250
- [Hash.symbol](): number;
10251
- toString(): string;
10252
- /** Pretty-print a WorkspaceAnalysis instance. */
10253
- static pretty: (self: WorkspaceAnalysis) => string;
10254
- }
10255
- //#endregion
10256
9087
  //#region src/services/BiomeSchemaSync.d.ts
10257
9088
  /**
10258
9089
  * Strip leading semver range operators from a version string.
@@ -10285,29 +9116,31 @@ interface BiomeSchemaSyncShape {
10285
9116
  * Update the `$schema` URL in all located Biome config files to match `version`.
10286
9117
  *
10287
9118
  * @param version - Target Biome version (range operators are stripped automatically).
10288
- * @param options - Optional `cwd` and `gitignore` overrides.
10289
- * @returns An `Effect` that succeeds with a {@link (BiomeSyncResult:type)} or fails with {@link BiomeSyncError}.
9119
+ * @param options - The `cwd` to scan (required — engine code never reads `process.cwd()`; the front
9120
+ * end supplies it) and an optional `gitignore` override.
9121
+ * @returns An `Effect` that succeeds with a `BiomeSyncResult` or fails with `BiomeSyncError`.
10290
9122
  *
10291
9123
  * @since 0.1.0
10292
9124
  */
10293
- readonly sync: (version: string, options?: {
10294
- cwd?: string;
10295
- gitignore?: boolean;
10296
- }) => Effect.Effect<BiomeSyncResult, BiomeSyncError>;
9125
+ readonly sync: (version: string, options: {
9126
+ readonly cwd: string;
9127
+ readonly gitignore?: boolean;
9128
+ }) => Effect.Effect<BiomeSyncResult$1, BiomeSyncError$1>;
10297
9129
  /**
10298
9130
  * Check whether the `$schema` URL in Biome config files is current, without writing any changes.
10299
9131
  *
10300
9132
  * @param version - Target Biome version (range operators are stripped automatically).
10301
- * @param options - Optional `cwd` and `gitignore` overrides.
10302
- * @returns An `Effect` that succeeds with a {@link (BiomeSyncResult:type)} or fails with {@link BiomeSyncError}.
9133
+ * @param options - The `cwd` to scan (required — engine code never reads `process.cwd()`; the front
9134
+ * end supplies it) and an optional `gitignore` override.
9135
+ * @returns An `Effect` that succeeds with a `BiomeSyncResult` or fails with `BiomeSyncError`.
10303
9136
  * Files that would be updated appear in `updated`; no disk writes occur.
10304
9137
  *
10305
9138
  * @since 0.1.0
10306
9139
  */
10307
- readonly check: (version: string, options?: {
10308
- cwd?: string;
10309
- gitignore?: boolean;
10310
- }) => Effect.Effect<BiomeSyncResult, BiomeSyncError>;
9140
+ readonly check: (version: string, options: {
9141
+ readonly cwd: string;
9142
+ readonly gitignore?: boolean;
9143
+ }) => Effect.Effect<BiomeSyncResult$1, BiomeSyncError$1>;
10311
9144
  }
10312
9145
  declare const BiomeSchemaSync_base: Context.ServiceClass<BiomeSchemaSync, "@savvy-web/silk-effects/BiomeSchemaSync", BiomeSchemaSyncShape>;
10313
9146
  /**
@@ -10323,7 +9156,7 @@ declare const BiomeSchemaSync_base: Context.ServiceClass<BiomeSchemaSync, "@savv
10323
9156
  * const result = await Effect.runPromise(
10324
9157
  * Effect.gen(function* () {
10325
9158
  * const syncer = yield* BiomeSchemaSync;
10326
- * return yield* syncer.sync("^1.9.3");
9159
+ * return yield* syncer.sync("^1.9.3", { cwd: "/path/to/repo" });
10327
9160
  * }).pipe(
10328
9161
  * Effect.provide(BiomeSchemaSync.layer),
10329
9162
  * Effect.provide(NodeServices.layer),
@@ -10357,31 +9190,33 @@ export declare class BiomeSchemaSync extends BiomeSchemaSync_base {
10357
9190
  */
10358
9191
  interface ConfigDiscoveryShape {
10359
9192
  /**
10360
- * Return the highest-priority {@link (ConfigLocation:type)} for the given config file name,
9193
+ * Return the highest-priority `ConfigLocation` for the given config file name,
10361
9194
  * or `null` when none of the candidate paths exist.
10362
9195
  *
10363
9196
  * @param name - Config file name (e.g. `"biome.json"`).
10364
- * @param options - Optional `cwd` override for path resolution.
10365
- * @returns An `Effect` that always succeeds with a {@link (ConfigLocation:type)} or `null`.
9197
+ * @param options - The `cwd` the candidate paths are resolved against (no ambient default: this is
9198
+ * engine code and never reads `process.cwd()`; the front end supplies it).
9199
+ * @returns An `Effect` that always succeeds with a `ConfigLocation` or `null`.
10366
9200
  *
10367
9201
  * @since 0.1.0
10368
9202
  */
10369
- readonly find: (name: string, options?: {
10370
- cwd?: string;
10371
- }) => Effect.Effect<ConfigLocation | null>;
9203
+ readonly find: (name: string, options: {
9204
+ readonly cwd: string;
9205
+ }) => Effect.Effect<ConfigLocation$1 | null>;
10372
9206
  /**
10373
- * Return all existing {@link (ConfigLocation:type)} entries for the given config file name,
9207
+ * Return all existing `ConfigLocation` entries for the given config file name,
10374
9208
  * ordered from highest to lowest priority.
10375
9209
  *
10376
9210
  * @param name - Config file name (e.g. `"biome.json"`).
10377
- * @param options - Optional `cwd` override for path resolution.
10378
- * @returns An `Effect` that always succeeds with an array of {@link (ConfigLocation:type)} records.
9211
+ * @param options - The `cwd` the candidate paths are resolved against (no ambient default: this is
9212
+ * engine code and never reads `process.cwd()`; the front end supplies it).
9213
+ * @returns An `Effect` that always succeeds with an array of `ConfigLocation` records.
10379
9214
  *
10380
9215
  * @since 0.1.0
10381
9216
  */
10382
- readonly findAll: (name: string, options?: {
10383
- cwd?: string;
10384
- }) => Effect.Effect<ReadonlyArray<ConfigLocation>>;
9217
+ readonly findAll: (name: string, options: {
9218
+ readonly cwd: string;
9219
+ }) => Effect.Effect<ReadonlyArray<ConfigLocation$1>>;
10385
9220
  }
10386
9221
  declare const ConfigDiscovery_base: Context.ServiceClass<ConfigDiscovery, "@savvy-web/silk-effects/ConfigDiscovery", ConfigDiscoveryShape>;
10387
9222
  /**
@@ -10399,7 +9234,7 @@ declare const ConfigDiscovery_base: Context.ServiceClass<ConfigDiscovery, "@savv
10399
9234
  * const result = await Effect.runPromise(
10400
9235
  * Effect.gen(function* () {
10401
9236
  * const discovery = yield* ConfigDiscovery;
10402
- * return yield* discovery.find("biome.json");
9237
+ * return yield* discovery.find("biome.json", { cwd: "/path/to/repo" });
10403
9238
  * }).pipe(
10404
9239
  * Effect.provide(ConfigDiscovery.layer),
10405
9240
  * Effect.provide(NodeServices.layer),
@@ -10571,12 +9406,12 @@ export declare class SilkPublishability {
10571
9406
  * directories it names. A directory outside the binding means detection did
10572
9407
  * not select the prod output — the `yaml-effect@0.7.1` shape, where a dev
10573
9408
  * manifest carrying `catalog:` specifiers was packed and published. Rather
10574
- * than ship those bytes, fail with {@link PublishTargetBindingError}.
9409
+ * than ship those bytes, fail with `PublishTargetBindingError`.
10575
9410
  *
10576
9411
  * Before the prod build runs there is no binding, and the detector's
10577
9412
  * placeholder directories are left alone.
10578
9413
  */
10579
- static resolveTargets(pkg: WorkspacePackage, _root: string): Effect.Effect<ReadonlyArray<PublishTarget>, PublishTargetBindingError, PublishabilityDetector | FileSystem.FileSystem>;
9414
+ static resolveTargets(pkg: WorkspacePackage, _root: string): Effect.Effect<ReadonlyArray<PublishTarget>, PublishTargetBindingError$1, PublishabilityDetector | FileSystem.FileSystem>;
10580
9415
  /**
10581
9416
  * The publishable, non-ignored packages, resolved through the single
10582
9417
  * {@link SilkPublishability} (which already honors changeset ignore in adaptive mode).
@@ -10632,17 +9467,17 @@ export declare const readTargetsBinding: (fs: FileSystem.FileSystem, pkgPath: st
10632
9467
  */
10633
9468
  interface SilkWorkspaceAnalyzerShape {
10634
9469
  /**
10635
- * Analyze a workspace root and produce a full {@link WorkspaceAnalysis}.
9470
+ * Analyze a workspace root and produce a full `WorkspaceAnalysis`.
10636
9471
  *
10637
9472
  * @param root - Absolute path to the workspace root directory. Must match
10638
9473
  * the root that the `WorkspaceDiscovery` layer was initialised with. The analyzer
10639
9474
  * is single-root by design — build a fresh layer per workspace root.
10640
- * @returns An `Effect` that succeeds with a {@link WorkspaceAnalysis}, or
10641
- * fails with {@link WorkspaceAnalysisError}.
9475
+ * @returns An `Effect` that succeeds with a `WorkspaceAnalysis`, or
9476
+ * fails with `WorkspaceAnalysisError`.
10642
9477
  *
10643
9478
  * @since 0.2.0
10644
9479
  */
10645
- readonly analyze: (root: string) => Effect.Effect<WorkspaceAnalysis, WorkspaceAnalysisError>;
9480
+ readonly analyze: (root: string) => Effect.Effect<WorkspaceAnalysis$1, WorkspaceAnalysisError$1>;
10646
9481
  }
10647
9482
  declare const SilkWorkspaceAnalyzer_base: Context.ServiceClass<SilkWorkspaceAnalyzer, "@savvy-web/silk-effects/SilkWorkspaceAnalyzer", SilkWorkspaceAnalyzerShape>;
10648
9483
  /**
@@ -10654,7 +9489,7 @@ declare const SilkWorkspaceAnalyzer_base: Context.ServiceClass<SilkWorkspaceAnal
10654
9489
  * Orchestrates `WorkspaceDiscovery`, `PackageManagerDetector` and
10655
9490
  * {@link ChangesetConfigReader}, then classifies the result with
10656
9491
  * `@effected/workspaces`' pure `VersioningStrategy` value class, to produce a
10657
- * complete {@link WorkspaceAnalysis} for a given workspace root.
9492
+ * complete `WorkspaceAnalysis` for a given workspace root.
10658
9493
  *
10659
9494
  * @example
10660
9495
  * ```typescript
@@ -11038,9 +9873,9 @@ declare class TurboInspector extends TurboInspector_base {
11038
9873
  */
11039
9874
  static readonly layer: Layer.Layer<TurboInspector, never, ToolDiscovery | ChildProcessSpawner.ChildProcessSpawner | FileSystem.FileSystem | Git>;
11040
9875
  }
11041
- declare namespace index_d_exports$5 {
9876
+ declare namespace index_d_exports$4 {
11042
9877
  export { AffectedResult, AffectedResultType, CacheDiagnosis, CacheDiagnosisType, DryRunParseError, GlobalHashSummary, GraphNode, MissExplanation, NotATurboRepoError, PackageCacheStatus, TaskGraphResult, TaskGraphResultType, TurboCache, TurboDigest, TurboDryRun, TurboDryRunType, TurboDryTask, TurboDryTaskType, TurboEnvVars, TurboError, TurboExecError, TurboGlobalCacheInputs, TurboInspector, TurboInspectorShape, TurboNotInstalledError };
11043
9878
  }
11044
9879
  //#endregion
11045
- export { type BiomeSchemaSyncShape, type BiomeSyncOptions, type BiomeSyncResult, type ChangesetConfigFile, type ChangesetConfigReaderShape, type ChangesetConfigShape, type ChangesetMode, index_d_exports as Changesets, index_d_exports$1 as Commitlint, type CommitlintPlugin, type CommitlintUserConfig, type ConfigDiscoveryOptions, type ConfigDiscoveryShape, type ConfigLocation, type ConfigSource, index_d_exports$2 as Lint, index_d_exports$3 as PrBody, type PromptConfig, type PromptSettings, type PublishablePackage, type RawPackageJson, type RawPublishConfig, type RawPublishTargets, type RawTargetObject, type RawTargetValue, index_d_exports$4 as Repos, type RuleApplicability, type RuleConfigTuple, type RuleSeverity, type RulesConfig, type SavvyInstallHook, type SilkChangesetConfigFile, type SilkWorkspaceAnalyzerShape, type TargetBinding, type TargetGroupBinding, type TargetsBinding, index_d_exports$5 as Turbo };
9880
+ export { AnalyzedWorkspace, type BiomeSchemaSyncShape, BiomeSyncError, type BiomeSyncOptions, type BiomeSyncResult, ChangesetConfigError, type ChangesetConfigFile, type ChangesetConfigReaderShape, type ChangesetConfigShape, type ChangesetMode, index_d_exports as Changesets, index_d_exports$1 as Commitlint, type CommitlintPlugin, type CommitlintUserConfig, type ConfigDiscoveryOptions, type ConfigDiscoveryShape, type ConfigLocation, ConfigNotFoundError, type ConfigSource, LIFECYCLE_SCRIPTS_CONFIG_KEY, index_d_exports$2 as Lint, PrBody, type PromptConfig, type PromptSettings, PublishTargetBindingError, type PublishablePackage, type RawPackageJson, type RawPublishConfig, type RawPublishTargets, type RawTargetObject, type RawTargetValue, index_d_exports$3 as Repos, type RuleApplicability, type RuleConfigTuple, type RuleSeverity, type RulesConfig, SavvyBaseSection, SavvyHooksSection, type SavvyInstallHook, SavvyInstallSection, SavvyToolchainSection, type SilkChangesetConfigFile, SilkPublishConfig, type SilkWorkspaceAnalyzerShape, type TargetBinding, type TargetGroupBinding, type TargetsBinding, index_d_exports$4 as Turbo, WorkspaceAnalysis, WorkspaceAnalysisError, publishesBuiltLinkDirectory, savvyBasePreamble, savvyHooksHygiene, savvyInstallBlock, savvyInstallDeps, savvyToolSection, savvyToolchainCheck };
11046
9881
  //# sourceMappingURL=index.d.ts.map