export type BootstrapSource = "explicit" | "env" | "binding" | "preset"; export type KeyDecision = { key: string; source: BootstrapSource; }; export declare const DEFAULT_PRESETS_PATH: string; export type DecideProjectKeyOptions = { explicitKey?: string; env?: NodeJS.ProcessEnv; /** * The key this user has bound to this workspace, already looked up. Passed * in rather than read here so this function stays a pure ordering of * explicit sources. */ bindingKey?: string; presetsPath?: string; }; /** * Decide a project key from explicit sources only - JAM never guesses a Jira * project from a folder or repo name. Order: `--project` flag, then * `JAM_PROJECT_KEY`, then this user's binding for the workspace, then a * matching entry in the legacy preset file. Returns undefined when none * apply, which the caller must treat as "cannot decide safely". * * Flag over environment over persisted, because what someone typed for this * run should beat what a shell exported, which should beat what was recorded * some time ago. */ export declare function decideProjectKey(root: string, options?: DecideProjectKeyOptions): KeyDecision | undefined; /** Windows paths are case-insensitive; every other platform is compared as-is. */ export declare function normalizePath(p: string): string; /** * Writes the minimal `.jira-agent/project.yaml`. Only the key is set - every * other field is left to the schema's built-in defaults so this file stays * legible and merge-friendly. */ export declare function writeBootstrapConfig(root: string, key: string): string;