workspace-conformance 1.5.0 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.cts CHANGED
@@ -255,6 +255,10 @@ interface Job {
255
255
  readonly needs: readonly string[];
256
256
  readonly condition: string | undefined;
257
257
  readonly permissions: Permissions;
258
+ /**
259
+ * The name of the deployment environment the job runs in, written as `environment: <name>` or `environment: { name: <name> }`; `undefined` when it names none.
260
+ */
261
+ readonly environment: string | undefined;
258
262
  readonly env: Readonly<Record<string, string>>;
259
263
  readonly runsOn: RunsOn;
260
264
  readonly timeoutMinutes: string | undefined;
@@ -282,6 +286,10 @@ interface Workflow {
282
286
  */
283
287
  readonly triggerLocations: ReadonlyMap<string, SourceLocation>;
284
288
  readonly permissions: Permissions;
289
+ /**
290
+ * Where the workflow's `permissions` is written; `undefined` when it declares none.
291
+ */
292
+ readonly permissionsLocation: SourceLocation | undefined;
285
293
  readonly env: Readonly<Record<string, string>>;
286
294
  readonly jobs: readonly Job[];
287
295
  /**
@@ -516,6 +524,15 @@ interface CommitTypesOptions {
516
524
  */
517
525
  readonly release?: string;
518
526
  }
527
+ /**
528
+ * Options of the `engines-floor` check: the `engines.node` range of a package is a subset of the `engines.node` range of each of its installed dependencies.
529
+ */
530
+ interface EnginesFloorOptions {
531
+ /**
532
+ * Globs of the package directories to judge, in the form of the `packages` list of `pnpm-workspace.yaml` (a `!` pattern excludes), relative to the directory the checks run in; `.` is the root package. The root package and the `packages` of `pnpm-workspace.yaml`, when that file exists, when omitted.
533
+ */
534
+ readonly packages?: readonly string[];
535
+ }
519
536
  /**
520
537
  * Options of the `dockerfile-package-manager` check: a package manager version pinned in a Dockerfile is the one `packageManager` names.
521
538
  */
@@ -667,6 +684,15 @@ type WorkflowVersionSingleSourceOptions = WorkflowSelection;
667
684
  * Options of the `workflow-credentials` check.
668
685
  */
669
686
  type WorkflowCredentialsOptions = WorkflowSelection;
687
+ /**
688
+ * Options of the `workflow-release-job` check: the job that publishes is the only one that can mint the OIDC identity, runs in an environment and leaves no credentials behind.
689
+ */
690
+ interface WorkflowReleaseJobOptions extends WorkflowSelection {
691
+ /**
692
+ * Ids of release jobs: the jobs that publish, and the only ones that may hold `id-token: write`. `release` when omitted.
693
+ */
694
+ readonly releaseJobs?: readonly string[];
695
+ }
670
696
  /**
671
697
  * Options of the `workflow-repository-dispatch` check: what a handler of `repository_dispatch` may do.
672
698
  */
@@ -773,6 +799,7 @@ interface CheckOptionsByName {
773
799
  readonly "instruction-symlinks": InstructionSymlinksOptions;
774
800
  readonly "single-storybook": SingleStorybookOptions;
775
801
  readonly "commit-types": CommitTypesOptions;
802
+ readonly "engines-floor": EnginesFloorOptions;
776
803
  readonly "dockerfile-package-manager": DockerfilePackageManagerOptions;
777
804
  readonly "migrations-directory": MigrationsDirectoryOptions;
778
805
  readonly eslint: EslintOptions;
@@ -781,6 +808,7 @@ interface CheckOptionsByName {
781
808
  readonly "workflow-runner-resolution": WorkflowRunnerResolutionOptions;
782
809
  readonly "workflow-version-single-source": WorkflowVersionSingleSourceOptions;
783
810
  readonly "workflow-credentials": WorkflowCredentialsOptions;
811
+ readonly "workflow-release-job": WorkflowReleaseJobOptions;
784
812
  readonly "workflow-repository-dispatch": WorkflowRepositoryDispatchOptions;
785
813
  readonly "workflow-update-bot-cooldown": WorkflowUpdateBotCooldownOptions;
786
814
  readonly "workflow-merge-group": WorkflowMergeGroupOptions;
@@ -854,6 +882,18 @@ export declare const derivedTypes: CheckFunction<DerivedTypesOptions>;
854
882
  */
855
883
  export declare const dockerfilePackageManager: CheckFunction<DockerfilePackageManagerOptions>;
856
884
  //#endregion
885
+ //#region src/checks/engines-floor.d.ts
886
+ /**
887
+ * The `engines.node` range of each package is a subset of the `engines.node` range of each dependency and optional dependency it lists, and of each peer dependency whose range admits a single version, as installed in `node_modules`, so the package admits no Node version that something it needs at run time rejects. A package that declares no range admits every version, so it is reported for each dependency that declares one. A dependency that declares no range constrains nothing and is ignored.
888
+ *
889
+ * The comparison is `semver.subset(package, dependency)`: every version the package's range admits satisfies the dependency's range. A floor alone is not enough, because a range of several lines (`^20.19.0 || ^22.13.0 || >=24`) also rejects the versions between them, which `>=20.19.0` admits. semver compares a range of several comparator sets set by set, so each set of the package's range must lie within one set of the dependency's; a set that only two adjacent dependency sets cover together (`>=22` against `^22.0.0 || >=23`) is reported, and splitting it the same way (`^22.0.0 || >=23`) satisfies the check.
890
+ *
891
+ * A peer dependency is judged only when its range admits a single version (`1.2.3` or `=1.2.3`), and then by the copy installed, which must be that version. The consumer chooses which admitted version to install, so the package's range holds when each Node version in it is accepted by some admitted version; one installed copy that rejects a Node version does not show that every admitted version does, and the others are not on disk.
892
+ *
893
+ * A dependency that is not installed fails the run: its range cannot be read, and passing it unjudged would read as a pass. An optional dependency and a peer dependency marked optional in `peerDependenciesMeta` may be absent and are then skipped.
894
+ */
895
+ export declare const enginesFloor: CheckFunction<EnginesFloorOptions>;
896
+ //#endregion
857
897
  //#region src/checks/eslint.d.ts
858
898
  /**
859
899
  * Proves the repository's own ESLint is applied, which no check that runs inside ESLint can notice: a config that dropped a shared preset, switched its rules off or narrowed `ignores` until nothing is linted still passes its own lint.
@@ -1088,6 +1128,18 @@ export declare const workflowJobOrdering: CheckFunction<WorkflowJobOrderingOptio
1088
1128
  */
1089
1129
  export declare const workflowMergeGroup: CheckFunction<WorkflowMergeGroupOptions>;
1090
1130
  //#endregion
1131
+ //#region src/checks/workflow-release-job.d.ts
1132
+ /**
1133
+ * npm binds a trusted publisher to the repository and the workflow file, not to a branch, so anyone who can push a branch can edit that branch's copy of the workflow, drop an `if` that keeps publishing to the default branch, and publish. What stops that has to live outside the file: a protected environment that only the default branch may deploy to, named in npm's trusted publisher too. This check holds the release job to the shape that makes that protection hold.
1134
+ *
1135
+ * In a workflow with a release job (by id, `releaseJobs`, `release` by default): `workflow-release-job/id-token-workflow-level`, the workflow's own `permissions` grant `id-token: write` (directly or through `write-all`), which every job that declares none inherits; `id-token-outside-release`, a job that is not a release job declares `id-token: write` itself, a job that calls a reusable workflow included; `missing-environment`, a release job declares no `environment`; `persisted-credentials`, a release job runs `actions/checkout` without `persist-credentials: false` (literally; an expression is unknown and reported), so the job token, a `token` input or an `ssh-key` stays in git config for every later step. A release job that pushes as a deploy key provisions the key in a step and hands it to git through that step's `GIT_SSH_COMMAND`, after a checkout that persists nothing, and is accepted as written; semantic-release authenticates its own push (`repositoryUrl` as written, else the URL with `GITHUB_TOKEN` or `GH_TOKEN` from the environment), so it needs nothing from the checkout.
1136
+ *
1137
+ * In every workflow: `token-beside-oidc`, a job whose effective permissions grant `id-token: write` sets `NODE_AUTH_TOKEN` or `NPM_TOKEN` from the `secrets` context in its workflow, job or step `env`.
1138
+ *
1139
+ * Limits: the environment's protection rules and npm's trusted publisher settings are not visible in the file and are not read; a release job that calls a reusable workflow is judged only for `id-token`, since `environment` and steps belong to the called workflow; a token passed through `with`, written to an `.npmrc` by a script, or inherited through a composite action is not seen.
1140
+ */
1141
+ export declare const workflowReleaseJob: CheckFunction<WorkflowReleaseJobOptions>;
1142
+ //#endregion
1091
1143
  //#region src/checks/workflow-repository-dispatch.d.ts
1092
1144
  /**
1093
1145
  * A workflow that handles `repository_dispatch` can be started by anyone with write access through the API, so what it does with the repository is held to a higher bar.
@@ -1356,4 +1408,4 @@ export declare function proveExhaustive(input: {
1356
1408
  readonly compilerOptions?: CompilerOptions;
1357
1409
  }): ExhaustivenessProof;
1358
1410
  //#endregion
1359
- export type { AggregateMappersOptions, BranchRules, CaseRemoval, CheckContext, CheckFunction, CheckName, CheckOptionsByName, CheckResult, ChecksConfig, CodecPairsOptions, CommandTypesOptions, CommitTypesOptions, ConformanceConfig, DeployDirectory, DeploySelector, DeployToolAdapter, DeployToolName, DerivedTypesOptions, DerivedTypesPair, DiscoveredPackage, DockerfilePackageManagerOptions, EslintOptions, EslintRequiredSeverity, EslintSample, ExhaustivenessProof, GeneratorAdapter, GeneratorName, GitHubCheckContext, GitHubCheckFunction, GitHubClient, GitHubClientOptions, ImportGraphOptions, InstructionSymlinksOptions, Job, LayoutCheckContext, LayoutCheckFunction, MigrationsDirectoryOptions, PermissionAccess, Permissions, PinningLevel, RegisteredCheck, RepositorySettings, RepositorySlug, RunChecksOptions, RunResult, RunsOn, SettingsMergeMethodsOptions, SettingsOptions, SettingsRequiredChecksOptions, SettingsReviewThreadResolutionOptions, SingleStorybookOptions, SourceLocation, Step, TypeErrorReport, UsesReference, Violation, Workflow, WorkflowActionPinningOptions, WorkflowCredentialsOptions, WorkflowJobOrderingOptions, WorkflowMergeGroupOptions, WorkflowRepositoryDispatchOptions, WorkflowRunnerResolutionOptions, WorkflowSelection, WorkflowSkippableJobsOptions, WorkflowUpdateBotCooldownOptions, WorkflowVersionSingleSourceOptions, WorkspacePackage };
1411
+ export type { AggregateMappersOptions, BranchRules, CaseRemoval, CheckContext, CheckFunction, CheckName, CheckOptionsByName, CheckResult, ChecksConfig, CodecPairsOptions, CommandTypesOptions, CommitTypesOptions, ConformanceConfig, DeployDirectory, DeploySelector, DeployToolAdapter, DeployToolName, DerivedTypesOptions, DerivedTypesPair, DiscoveredPackage, DockerfilePackageManagerOptions, EnginesFloorOptions, EslintOptions, EslintRequiredSeverity, EslintSample, ExhaustivenessProof, GeneratorAdapter, GeneratorName, GitHubCheckContext, GitHubCheckFunction, GitHubClient, GitHubClientOptions, ImportGraphOptions, InstructionSymlinksOptions, Job, LayoutCheckContext, LayoutCheckFunction, MigrationsDirectoryOptions, PermissionAccess, Permissions, PinningLevel, RegisteredCheck, RepositorySettings, RepositorySlug, RunChecksOptions, RunResult, RunsOn, SettingsMergeMethodsOptions, SettingsOptions, SettingsRequiredChecksOptions, SettingsReviewThreadResolutionOptions, SingleStorybookOptions, SourceLocation, Step, TypeErrorReport, UsesReference, Violation, Workflow, WorkflowActionPinningOptions, WorkflowCredentialsOptions, WorkflowJobOrderingOptions, WorkflowMergeGroupOptions, WorkflowReleaseJobOptions, WorkflowRepositoryDispatchOptions, WorkflowRunnerResolutionOptions, WorkflowSelection, WorkflowSkippableJobsOptions, WorkflowUpdateBotCooldownOptions, WorkflowVersionSingleSourceOptions, WorkspacePackage };
package/dist/index.d.ts CHANGED
@@ -255,6 +255,10 @@ interface Job {
255
255
  readonly needs: readonly string[];
256
256
  readonly condition: string | undefined;
257
257
  readonly permissions: Permissions;
258
+ /**
259
+ * The name of the deployment environment the job runs in, written as `environment: <name>` or `environment: { name: <name> }`; `undefined` when it names none.
260
+ */
261
+ readonly environment: string | undefined;
258
262
  readonly env: Readonly<Record<string, string>>;
259
263
  readonly runsOn: RunsOn;
260
264
  readonly timeoutMinutes: string | undefined;
@@ -282,6 +286,10 @@ interface Workflow {
282
286
  */
283
287
  readonly triggerLocations: ReadonlyMap<string, SourceLocation>;
284
288
  readonly permissions: Permissions;
289
+ /**
290
+ * Where the workflow's `permissions` is written; `undefined` when it declares none.
291
+ */
292
+ readonly permissionsLocation: SourceLocation | undefined;
285
293
  readonly env: Readonly<Record<string, string>>;
286
294
  readonly jobs: readonly Job[];
287
295
  /**
@@ -516,6 +524,15 @@ interface CommitTypesOptions {
516
524
  */
517
525
  readonly release?: string;
518
526
  }
527
+ /**
528
+ * Options of the `engines-floor` check: the `engines.node` range of a package is a subset of the `engines.node` range of each of its installed dependencies.
529
+ */
530
+ interface EnginesFloorOptions {
531
+ /**
532
+ * Globs of the package directories to judge, in the form of the `packages` list of `pnpm-workspace.yaml` (a `!` pattern excludes), relative to the directory the checks run in; `.` is the root package. The root package and the `packages` of `pnpm-workspace.yaml`, when that file exists, when omitted.
533
+ */
534
+ readonly packages?: readonly string[];
535
+ }
519
536
  /**
520
537
  * Options of the `dockerfile-package-manager` check: a package manager version pinned in a Dockerfile is the one `packageManager` names.
521
538
  */
@@ -667,6 +684,15 @@ type WorkflowVersionSingleSourceOptions = WorkflowSelection;
667
684
  * Options of the `workflow-credentials` check.
668
685
  */
669
686
  type WorkflowCredentialsOptions = WorkflowSelection;
687
+ /**
688
+ * Options of the `workflow-release-job` check: the job that publishes is the only one that can mint the OIDC identity, runs in an environment and leaves no credentials behind.
689
+ */
690
+ interface WorkflowReleaseJobOptions extends WorkflowSelection {
691
+ /**
692
+ * Ids of release jobs: the jobs that publish, and the only ones that may hold `id-token: write`. `release` when omitted.
693
+ */
694
+ readonly releaseJobs?: readonly string[];
695
+ }
670
696
  /**
671
697
  * Options of the `workflow-repository-dispatch` check: what a handler of `repository_dispatch` may do.
672
698
  */
@@ -773,6 +799,7 @@ interface CheckOptionsByName {
773
799
  readonly "instruction-symlinks": InstructionSymlinksOptions;
774
800
  readonly "single-storybook": SingleStorybookOptions;
775
801
  readonly "commit-types": CommitTypesOptions;
802
+ readonly "engines-floor": EnginesFloorOptions;
776
803
  readonly "dockerfile-package-manager": DockerfilePackageManagerOptions;
777
804
  readonly "migrations-directory": MigrationsDirectoryOptions;
778
805
  readonly eslint: EslintOptions;
@@ -781,6 +808,7 @@ interface CheckOptionsByName {
781
808
  readonly "workflow-runner-resolution": WorkflowRunnerResolutionOptions;
782
809
  readonly "workflow-version-single-source": WorkflowVersionSingleSourceOptions;
783
810
  readonly "workflow-credentials": WorkflowCredentialsOptions;
811
+ readonly "workflow-release-job": WorkflowReleaseJobOptions;
784
812
  readonly "workflow-repository-dispatch": WorkflowRepositoryDispatchOptions;
785
813
  readonly "workflow-update-bot-cooldown": WorkflowUpdateBotCooldownOptions;
786
814
  readonly "workflow-merge-group": WorkflowMergeGroupOptions;
@@ -854,6 +882,18 @@ export declare const derivedTypes: CheckFunction<DerivedTypesOptions>;
854
882
  */
855
883
  export declare const dockerfilePackageManager: CheckFunction<DockerfilePackageManagerOptions>;
856
884
  //#endregion
885
+ //#region src/checks/engines-floor.d.ts
886
+ /**
887
+ * The `engines.node` range of each package is a subset of the `engines.node` range of each dependency and optional dependency it lists, and of each peer dependency whose range admits a single version, as installed in `node_modules`, so the package admits no Node version that something it needs at run time rejects. A package that declares no range admits every version, so it is reported for each dependency that declares one. A dependency that declares no range constrains nothing and is ignored.
888
+ *
889
+ * The comparison is `semver.subset(package, dependency)`: every version the package's range admits satisfies the dependency's range. A floor alone is not enough, because a range of several lines (`^20.19.0 || ^22.13.0 || >=24`) also rejects the versions between them, which `>=20.19.0` admits. semver compares a range of several comparator sets set by set, so each set of the package's range must lie within one set of the dependency's; a set that only two adjacent dependency sets cover together (`>=22` against `^22.0.0 || >=23`) is reported, and splitting it the same way (`^22.0.0 || >=23`) satisfies the check.
890
+ *
891
+ * A peer dependency is judged only when its range admits a single version (`1.2.3` or `=1.2.3`), and then by the copy installed, which must be that version. The consumer chooses which admitted version to install, so the package's range holds when each Node version in it is accepted by some admitted version; one installed copy that rejects a Node version does not show that every admitted version does, and the others are not on disk.
892
+ *
893
+ * A dependency that is not installed fails the run: its range cannot be read, and passing it unjudged would read as a pass. An optional dependency and a peer dependency marked optional in `peerDependenciesMeta` may be absent and are then skipped.
894
+ */
895
+ export declare const enginesFloor: CheckFunction<EnginesFloorOptions>;
896
+ //#endregion
857
897
  //#region src/checks/eslint.d.ts
858
898
  /**
859
899
  * Proves the repository's own ESLint is applied, which no check that runs inside ESLint can notice: a config that dropped a shared preset, switched its rules off or narrowed `ignores` until nothing is linted still passes its own lint.
@@ -1088,6 +1128,18 @@ export declare const workflowJobOrdering: CheckFunction<WorkflowJobOrderingOptio
1088
1128
  */
1089
1129
  export declare const workflowMergeGroup: CheckFunction<WorkflowMergeGroupOptions>;
1090
1130
  //#endregion
1131
+ //#region src/checks/workflow-release-job.d.ts
1132
+ /**
1133
+ * npm binds a trusted publisher to the repository and the workflow file, not to a branch, so anyone who can push a branch can edit that branch's copy of the workflow, drop an `if` that keeps publishing to the default branch, and publish. What stops that has to live outside the file: a protected environment that only the default branch may deploy to, named in npm's trusted publisher too. This check holds the release job to the shape that makes that protection hold.
1134
+ *
1135
+ * In a workflow with a release job (by id, `releaseJobs`, `release` by default): `workflow-release-job/id-token-workflow-level`, the workflow's own `permissions` grant `id-token: write` (directly or through `write-all`), which every job that declares none inherits; `id-token-outside-release`, a job that is not a release job declares `id-token: write` itself, a job that calls a reusable workflow included; `missing-environment`, a release job declares no `environment`; `persisted-credentials`, a release job runs `actions/checkout` without `persist-credentials: false` (literally; an expression is unknown and reported), so the job token, a `token` input or an `ssh-key` stays in git config for every later step. A release job that pushes as a deploy key provisions the key in a step and hands it to git through that step's `GIT_SSH_COMMAND`, after a checkout that persists nothing, and is accepted as written; semantic-release authenticates its own push (`repositoryUrl` as written, else the URL with `GITHUB_TOKEN` or `GH_TOKEN` from the environment), so it needs nothing from the checkout.
1136
+ *
1137
+ * In every workflow: `token-beside-oidc`, a job whose effective permissions grant `id-token: write` sets `NODE_AUTH_TOKEN` or `NPM_TOKEN` from the `secrets` context in its workflow, job or step `env`.
1138
+ *
1139
+ * Limits: the environment's protection rules and npm's trusted publisher settings are not visible in the file and are not read; a release job that calls a reusable workflow is judged only for `id-token`, since `environment` and steps belong to the called workflow; a token passed through `with`, written to an `.npmrc` by a script, or inherited through a composite action is not seen.
1140
+ */
1141
+ export declare const workflowReleaseJob: CheckFunction<WorkflowReleaseJobOptions>;
1142
+ //#endregion
1091
1143
  //#region src/checks/workflow-repository-dispatch.d.ts
1092
1144
  /**
1093
1145
  * A workflow that handles `repository_dispatch` can be started by anyone with write access through the API, so what it does with the repository is held to a higher bar.
@@ -1356,4 +1408,4 @@ export declare function proveExhaustive(input: {
1356
1408
  readonly compilerOptions?: CompilerOptions;
1357
1409
  }): ExhaustivenessProof;
1358
1410
  //#endregion
1359
- export type { AggregateMappersOptions, BranchRules, CaseRemoval, CheckContext, CheckFunction, CheckName, CheckOptionsByName, CheckResult, ChecksConfig, CodecPairsOptions, CommandTypesOptions, CommitTypesOptions, ConformanceConfig, DeployDirectory, DeploySelector, DeployToolAdapter, DeployToolName, DerivedTypesOptions, DerivedTypesPair, DiscoveredPackage, DockerfilePackageManagerOptions, EslintOptions, EslintRequiredSeverity, EslintSample, ExhaustivenessProof, GeneratorAdapter, GeneratorName, GitHubCheckContext, GitHubCheckFunction, GitHubClient, GitHubClientOptions, ImportGraphOptions, InstructionSymlinksOptions, Job, LayoutCheckContext, LayoutCheckFunction, MigrationsDirectoryOptions, PermissionAccess, Permissions, PinningLevel, RegisteredCheck, RepositorySettings, RepositorySlug, RunChecksOptions, RunResult, RunsOn, SettingsMergeMethodsOptions, SettingsOptions, SettingsRequiredChecksOptions, SettingsReviewThreadResolutionOptions, SingleStorybookOptions, SourceLocation, Step, TypeErrorReport, UsesReference, Violation, Workflow, WorkflowActionPinningOptions, WorkflowCredentialsOptions, WorkflowJobOrderingOptions, WorkflowMergeGroupOptions, WorkflowRepositoryDispatchOptions, WorkflowRunnerResolutionOptions, WorkflowSelection, WorkflowSkippableJobsOptions, WorkflowUpdateBotCooldownOptions, WorkflowVersionSingleSourceOptions, WorkspacePackage };
1411
+ export type { AggregateMappersOptions, BranchRules, CaseRemoval, CheckContext, CheckFunction, CheckName, CheckOptionsByName, CheckResult, ChecksConfig, CodecPairsOptions, CommandTypesOptions, CommitTypesOptions, ConformanceConfig, DeployDirectory, DeploySelector, DeployToolAdapter, DeployToolName, DerivedTypesOptions, DerivedTypesPair, DiscoveredPackage, DockerfilePackageManagerOptions, EnginesFloorOptions, EslintOptions, EslintRequiredSeverity, EslintSample, ExhaustivenessProof, GeneratorAdapter, GeneratorName, GitHubCheckContext, GitHubCheckFunction, GitHubClient, GitHubClientOptions, ImportGraphOptions, InstructionSymlinksOptions, Job, LayoutCheckContext, LayoutCheckFunction, MigrationsDirectoryOptions, PermissionAccess, Permissions, PinningLevel, RegisteredCheck, RepositorySettings, RepositorySlug, RunChecksOptions, RunResult, RunsOn, SettingsMergeMethodsOptions, SettingsOptions, SettingsRequiredChecksOptions, SettingsReviewThreadResolutionOptions, SingleStorybookOptions, SourceLocation, Step, TypeErrorReport, UsesReference, Violation, Workflow, WorkflowActionPinningOptions, WorkflowCredentialsOptions, WorkflowJobOrderingOptions, WorkflowMergeGroupOptions, WorkflowReleaseJobOptions, WorkflowRepositoryDispatchOptions, WorkflowRunnerResolutionOptions, WorkflowSelection, WorkflowSkippableJobsOptions, WorkflowUpdateBotCooldownOptions, WorkflowVersionSingleSourceOptions, WorkspacePackage };