import type { PromptRunnerHarnessName } from '../promptRunnerCliOptions'; /** * Description of a standalone *(self-managed)* installation of one CLI coding harness. * * Some harnesses are also distributed by their own installer which puts the harness outside of npm and * updates it in place. Such an installation must never be updated with `npm install -g`, because that * installs a second copy of the harness instead of updating the one which is really used. * * @private internal utility of `promptbookCli` */ export type HarnessStandaloneInstallation = { /** * Directory names which appear in the resolved path of a standalone installation of the harness, * for example `.codex` in `~/.codex/packages/standalone/current/bin/codex`. */ readonly directoryNames: ReadonlyArray; /** * Command which updates the standalone installation in place. */ readonly updateCommand: string; }; /** * Static description of one supported CLI coding harness. * * @private internal utility of `promptbookCli` */ export type HarnessDefinition = { /** * Harness identifier used by the `--harness` option. */ readonly harnessName: PromptRunnerHarnessName; /** * Human-readable harness name shown in the terminal. */ readonly label: string; /** * Globally installed command which runs the harness. */ readonly commandName: string; /** * Npm package which installs the harness command globally. */ readonly npmPackageName: string; /** * Extra environment variables required by the global npm installation of this harness. */ readonly npmInstallEnvironment?: Readonly>; /** * Project-local files or directories which this harness can create and which should not be committed. */ readonly projectGitignoreRules: ReadonlyArray; /** * How a standalone installation of this harness is recognized and updated. * * Harnesses which are distributed only through npm leave this undefined. */ readonly standaloneInstallation?: HarnessStandaloneInstallation; }; /** * Single source of truth about how each supported CLI coding harness is installed and detected. * * @private internal utility of `promptbookCli` */ export declare const HARNESS_DEFINITIONS: Readonly>; /** * Looks up the definition of one supported CLI coding harness. * * @private internal utility of `promptbookCli` */ export declare function getHarnessDefinition(harnessName: PromptRunnerHarnessName): HarnessDefinition; /** * Lists the unique project ignore rules required by the selected harnesses, in selection order. * * @private internal utility of `promptbookCli` */ export declare function getHarnessProjectGitignoreRules(harnessNames: ReadonlyArray): ReadonlyArray;