import { FileSystem, Layer, Path, Schema } from "effect"; import { AppDirs, Xdg } from "@effected/xdg"; //#region src/schemas/config.d.ts /** * The whole `reposets.config.toml` document. * * @remarks * `groups` is the only required key. Every resource map defaults to empty, so a * config that declares repositories and nothing else is valid and does nothing — * which is the right behaviour for a tool that mutates GitHub. * * @public */ export declare const ConfigSchema: Schema.Struct<{ readonly settings: Schema.withDecodingDefaultKey; readonly has_wiki: Schema.optional; readonly has_issues: Schema.optional; readonly has_projects: Schema.optional; readonly has_discussions: Schema.optional; readonly has_sponsorships: Schema.optional; readonly has_pull_requests: Schema.optional; readonly allow_forking: Schema.optional; readonly allow_merge_commit: Schema.optional; readonly allow_squash_merge: Schema.optional; readonly allow_rebase_merge: Schema.optional; readonly allow_auto_merge: Schema.optional; readonly allow_update_branch: Schema.optional; readonly squash_merge_commit_title: Schema.optional>; readonly squash_merge_commit_message: Schema.optional>; readonly merge_commit_title: Schema.optional>; readonly merge_commit_message: Schema.optional>; readonly delete_branch_on_merge: Schema.optional; readonly web_commit_signoff_required: Schema.optional; readonly security_and_analysis: Schema.optional>; readonly code_security: Schema.optional>; readonly secret_scanning: Schema.optional>; readonly secret_scanning_push_protection: Schema.optional>; readonly secret_scanning_ai_detection: Schema.optional>; readonly secret_scanning_non_provider_patterns: Schema.optional>; readonly secret_scanning_delegated_alert_dismissal: Schema.optional>; readonly secret_scanning_delegated_bypass: Schema.optional>; readonly delegated_bypass_reviewers: Schema.optional>; }>, Schema.Struct<{ readonly role: Schema.String; readonly mode: Schema.optional>; }>]>>>; readonly dependabot_security_updates: Schema.optional>; }>>; }>, readonly [Schema.$Record>]>>, never>; readonly secrets: Schema.withDecodingDefaultKey; }>, Schema.Struct<{ readonly value: Schema.$Record>]>>; }>, Schema.Struct<{ readonly resolved: Schema.$Record; }>]>>, never>; readonly variables: Schema.withDecodingDefaultKey; }>, Schema.Struct<{ readonly value: Schema.$Record>]>>; }>, Schema.Struct<{ readonly resolved: Schema.$Record; }>]>>, never>; readonly rulesets: Schema.withDecodingDefaultKey; readonly conditions: Schema.optional, never>; readonly exclude: Schema.withDecodingDefaultKey, never>; }>>; }>>; readonly bypass_actors: Schema.optional]>>; readonly actor_type: Schema.Literals; readonly bypass_mode: Schema.withDecodingDefaultKey, never>; }>>>; readonly creation: Schema.optional; readonly update: Schema.optional; readonly deletion: Schema.optional; readonly required_linear_history: Schema.optional; readonly required_signatures: Schema.optional; readonly non_fast_forward: Schema.optional; readonly deployments: Schema.optional>; readonly targets: Schema.optional, Schema.$Array, Schema.Struct<{ readonly exclude: Schema.String; }>]>>]>>; readonly status_checks: Schema.optional; readonly on_creation: Schema.optional; readonly default_integration_id: Schema.optional]>>; readonly required: Schema.$Array]>>; }>>; }>>; readonly commit_message: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly commit_author_email: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly committer_email: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly type: Schema.Literal<"branch">; readonly pull_requests: Schema.optional; readonly dismiss_stale_reviews: Schema.withDecodingDefaultKey; readonly code_owner_review: Schema.withDecodingDefaultKey; readonly last_push_approval: Schema.withDecodingDefaultKey; readonly resolve_threads: Schema.withDecodingDefaultKey; readonly merge_methods: Schema.optional>>; readonly reviewers: Schema.optional; readonly minimum_approvals: Schema.Int; readonly reviewer: Schema.Struct<{ readonly id: Schema.Natural; readonly type: Schema.Literal<"Team">; }>; }>>>; }>>; readonly merge_queue: Schema.optional; readonly max_build: Schema.Int; readonly max_merge: Schema.Int; readonly merge_method: Schema.Literals; readonly min_merge: Schema.Int; readonly min_wait: Schema.Int; }>>; readonly copilot_review: Schema.optional; readonly on_push: Schema.optional; }>>; readonly code_scanning: Schema.optional; readonly security_alerts: Schema.Literals; }>>>; readonly workflows: Schema.optional; readonly required: Schema.$Array; readonly repository_id: Schema.Union]>; readonly sha: Schema.optional; }>>; }>>; readonly branch_name: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; }>, Schema.Struct<{ readonly name: Schema.String; readonly enforcement: Schema.Literals; readonly conditions: Schema.optional, never>; readonly exclude: Schema.withDecodingDefaultKey, never>; }>>; }>>; readonly bypass_actors: Schema.optional]>>; readonly actor_type: Schema.Literals; readonly bypass_mode: Schema.withDecodingDefaultKey, never>; }>>>; readonly creation: Schema.optional; readonly update: Schema.optional; readonly deletion: Schema.optional; readonly required_linear_history: Schema.optional; readonly required_signatures: Schema.optional; readonly non_fast_forward: Schema.optional; readonly deployments: Schema.optional>; readonly targets: Schema.optional, Schema.$Array, Schema.Struct<{ readonly exclude: Schema.String; }>]>>]>>; readonly status_checks: Schema.optional; readonly on_creation: Schema.optional; readonly default_integration_id: Schema.optional]>>; readonly required: Schema.$Array]>>; }>>; }>>; readonly commit_message: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly commit_author_email: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly committer_email: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; readonly type: Schema.Literal<"tag">; readonly tag_name: Schema.optional; readonly pattern: Schema.String; readonly name: Schema.optional; readonly negate: Schema.optional; }>>>; }>]>>, never>; readonly environments: Schema.withDecodingDefaultKey; readonly prevent_self_review: Schema.optional; readonly reviewers: Schema.optional; readonly id: Schema.Natural; }>>>; readonly deployment_branches: Schema.optional, Schema.$Array, never>; }>>]>>; }>>, never>; readonly security: Schema.withDecodingDefaultKey; readonly automated_security_fixes: Schema.optional; readonly private_vulnerability_reporting: Schema.optional; }>>, never>; readonly code_scanning: Schema.withDecodingDefaultKey>; readonly languages: Schema.optional>>; readonly query_suite: Schema.optional>; readonly threat_model: Schema.optional>; readonly runner_type: Schema.optional>; readonly runner_label: Schema.optional; }>>, never>; readonly groups: Schema.withDecodingDefaultKey; readonly credentials: Schema.String; readonly settings: Schema.optional>; readonly environments: Schema.optional>; readonly secrets: Schema.optional>; readonly dependabot: Schema.optional>; readonly codespaces: Schema.optional>; readonly environments: Schema.optional>>; }>>; readonly variables: Schema.optional>; readonly environments: Schema.optional>>; }>>; readonly rulesets: Schema.optional>; readonly security: Schema.optional>; readonly code_scanning: Schema.optional>; readonly cleanup: Schema.optional; }>]>, never>; readonly dependabot: Schema.withDecodingDefaultKey; }>]>, never>; readonly codespaces: Schema.withDecodingDefaultKey; }>]>, never>; readonly environments: Schema.withDecodingDefaultKey; }>]>, never>; }>, never>; readonly variables: Schema.withDecodingDefaultKey; }>]>, never>; readonly environments: Schema.withDecodingDefaultKey; }>]>, never>; }>, never>; readonly rulesets: Schema.withDecodingDefaultKey; }>]>, never>; readonly environments: Schema.withDecodingDefaultKey; }>]>, never>; }>>; }>>, never>; }>; /** * The decoded shape of {@link ConfigSchema}. * * @public */ type Config = typeof ConfigSchema.Type; //#endregion //#region src/services/ConfigFiles.d.ts /** * The config file's fixed name, in every tier of the resolver chain. * * @public */ export declare const CONFIG_FILENAME = "reposets.config.toml"; declare const ReposetsConfigFile_base: import("effect/Context").ServiceClass>; /** * Service identity for the parsed `reposets.config.toml`. * * @public */ export declare class ReposetsConfigFile extends ReposetsConfigFile_base {} declare const ConfigFlagNotFound_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & { readonly _tag: "ConfigFlagNotFound"; } & Readonly; /** * Raised when `--config` names a path that does not exist. * * @remarks * Config discovery is best-effort by contract — every `ConfigResolver` has * `never` in its error channel — so a resolver that finds nothing falls through * to the next tier. That is right for a probe and wrong for an explicit request: * `--config /nope.toml` would otherwise load the XDG config instead. The * distinction is enforced here rather than pushed into the resolver contract. * * @public */ export declare class ConfigFlagNotFound extends ConfigFlagNotFound_base<{ readonly path: string; }> { /** * @remarks * Without this, the class renders as a bare `ConfigFlagNotFound:` and the * `path` never reaches the log line. The kit does the same on its own errors. */ get message(): string; } declare const ConfigFlagMissingConfig_base: new = {}>(args: import("effect/Types").VoidIfEmpty<{ readonly [P in keyof A as P extends "_tag" ? never : P]: A[P]; }>) => import("effect/Cause").YieldableError & { readonly _tag: "ConfigFlagMissingConfig"; } & Readonly; /** * Raised when `--config` names a directory that holds no `reposets.config.toml`. * * @remarks * The sibling of {@link ConfigFlagNotFound}, for the case it cannot see: the * path exists, so the existence check passes, but the directory resolver then * finds nothing and — being a probe with `never` in its error channel — falls * through to `AppConfig`'s XDG tier. `reposets doctor --config ./empty-dir` * would report on the user's XDG config, a different file from the one asked * about, with nothing to say so. An explicit request fails loudly here for the * same reason a missing path does. * * A separate tag rather than a widened `ConfigFlagNotFound`, because the two * call for different fixes — a mistyped path, versus a right directory with * the file missing or misnamed — and the message names both the directory and * the filename it looked for. Both are paths the user typed or a fixed name; * nothing secret reaches the message. * * @public */ export declare class ConfigFlagMissingConfig extends ConfigFlagMissingConfig_base<{ readonly dir: string; readonly filename: string; }> { /** * @remarks * As on {@link ConfigFlagNotFound}: without it the error renders as a bare * tag and the directory never reaches the log line. */ get message(): string; } /** * Builds the config-file layer for one invocation's `--config` flag. * * @remarks * Mints a fresh layer per call, so bind the result once per run rather than * inlining it at two provide sites. * * @public */ export declare const makeConfigFilesLive: (configFlag: string | undefined) => Layer.Layer; //#endregion export type { Config }; //# sourceMappingURL=index.d.ts.map