/** * `peaks workspace migrate-1-4-1` — R004. * * Cleanup command for projects upgraded from peaks-loop 1.4.1 → 1.4.2. * * `.peaks/_runtime//`. Per-request artifacts (PRD, RD, QA, SC requests) * were written to the new root, but per-session artifacts (tech-doc.md, * code-review.md, test-cases/.md, etc.) were kept at the legacy * `.peaks/_runtime///.md` path. The 2-tier fallback in * `resolvePrerequisiteAbsolutePathWithFallback` accepts either location, so * the functional behavior is correct, but the user's filesystem has visible * dual-path duplication ("飘逸" — the user's term for the UX). * * R004 ships this command to physically move the legacy per-session files * into the canonical `_runtime///` location. After this runs, * the project has a single canonical tree; the legacy `//` * directories are removed (only if empty after the move). * * Default: dry-run. Pass `--apply` to actually move. */ export declare const PER_SESSION_ARTIFACT_TYPES: readonly ["rd/tech-doc.md", "rd/code-review.md", "rd/security-review.md", "rd/perf-baseline.md", "rd/bug-analysis.md", "qa/security-findings.md", "qa/performance-findings.md"]; export declare const PER_REQUEST_ARTIFACT_TYPES: readonly ["qa/test-cases/.md", "qa/test-reports/.md"]; export type MigrationPlanEntry = { readonly sessionId: string; readonly relativePath: string; readonly from: string; readonly to: string; readonly sha256: string; readonly reason: 'legacy-only' | 'identical-content-already-canonical' | 'content-mismatch' | 'no-legacy-file'; }; export type MigrationResult = { readonly plan: ReadonlyArray; readonly applied: boolean; readonly movedCount: number; readonly conflictCount: number; readonly deletedEmptyDirs: ReadonlyArray; readonly errors: ReadonlyArray<{ path: string; message: string; }>; }; export declare function planMigrate1_4_1(projectRoot: string): MigrationResult; export declare function applyMigrate1_4_1(projectRoot: string): MigrationResult;