/** * End-to-End Test Cases contract — a local CLI mirror of * `packages/shared/src/planning.ts` (`parsePlanE2eCases` / * `validatePlanE2eCases` / `parseAcceptanceCriteria`). * * The authoritative contract lives in `@hula/shared`. The CLI deliberately does * NOT depend on `@hula/shared` (see `src/commands/plan.ts` and * `src/commands/errorWatcher.ts`): it is published to npm as a standalone, * tsc-built package, so pulling in a private, unpublished workspace package * would break `npm install -g hub-launch` at runtime. As with * `normalizeQuestionOption`, the small, stable contract is mirrored here instead. * Keep this file in lockstep with the shared module. */ /** Valid `driver` values for an e2e case. Mirrors the jq predicate and shared. */ export declare const PLAN_E2E_DRIVERS: readonly ["http", "api", "cli", "browser", "sandbox-run", "not-testable"]; export type PlanE2eDriver = (typeof PLAN_E2E_DRIVERS)[number]; /** Max number of cases retained by {@link parsePlanE2eCases}. */ export declare const MAX_PLAN_E2E_CASES = 50; /** Max length (chars) of any single case string before truncation. */ export declare const MAX_PLAN_E2E_FIELD_LEN = 500; /** The H2 heading whose fenced ```json block holds the cases. */ export declare const PLAN_E2E_SECTION_HEADING = "End-to-End Test Cases"; export interface PlanE2eCase { index: number; item: string; driver: string; expected: string; needsRealClaude: boolean; criterion?: string; setup?: string; struck?: boolean; reason?: string; } export interface PlanE2eCases { version: number; cases: PlanE2eCase[]; } export interface PlanE2eValidationResult { ok: boolean; errors: string[]; warnings: string[]; } /** See the shared `parsePlanE2eCases`. Never throws; returns null when absent. */ export declare function parsePlanE2eCases(raw: string | unknown): PlanE2eCases | null; /** See the shared `parseAcceptanceCriteria`. Never throws. */ export declare function parseAcceptanceCriteria(markdown: string): string[]; /** See the shared `validatePlanE2eCases`. Never throws. */ export declare function validatePlanE2eCases(cases: PlanE2eCases | null, acceptanceCriteria: string[]): PlanE2eValidationResult; //# sourceMappingURL=plan-e2e-cases.d.ts.map