/** * 0.15.0-α.1 — vibe's output parser + writer. * * Vibe emits multi-artifact XML-tagged blocks (matching testgen's shape): * contents * prose * * `parseVibeOutput` extracts the blocks. `writeVibeFiles` writes them to * disk under repoRoot, with path-safety checks (no escapes, no absolute * paths, must be under repoRoot). * * Component-change requests are surfaced separately; they don't write * files. The plate agent (later) handles them by either applying or * rejecting via PM iteration. */ export interface VibeFileBlock { /** Repo-relative path; validated to be safe. */ path: string; /** File contents verbatim. */ contents: string; } export interface VibeChangeRequest { component: string; path: string; rationale: string; } export interface VibeOutput { files: VibeFileBlock[]; changeRequests: VibeChangeRequest[]; } export declare function parseVibeOutput(body: string): VibeOutput; /** * Validate a vibe-emitted path is safe to write under repoRoot. * Rejects absolute paths, parent-dir escapes, and paths that normalize * outside the repo. * * 0.16.0-α.4 — also requires the path start with `mock/`. Vibe writes * ONLY into the mock app (per the singular-mock-app architecture); any * write to `src/` or elsewhere is a sign the prompt steering failed. * The hard signal here is structural — the agent can't accidentally * leak into production source. * * Returns the absolute target path on success; throws on rejection. */ export declare function validateAndResolveVibePath(repoRoot: string, relPath: string): string; export declare function writeVibeFiles(repoRoot: string, files: VibeFileBlock[]): string[]; //# sourceMappingURL=emit.d.ts.map