import type { VisualDiagnostic, VisualSessionRequest } from './protocol-contract.js'; export interface VisualSessionRequestOptions { readonly cwd: string; /** Defaults to the workspace id. */ readonly title?: string; /** Defaults to a line naming the workspace and its manifest. */ readonly description?: string; /** Defaults to the first projection the workspace declares. */ readonly initialView?: string; /** Defaults to `false`: a diagram-only session needs no model provider. */ readonly chatEnabled?: boolean; } export type VisualSessionRequestResult = { readonly ok: true; readonly request: VisualSessionRequest; } | { readonly ok: false; readonly diagnostics: readonly VisualDiagnostic[]; }; /** * Builds the `yarramate/visual-session-request/v1` document that `start` * consumes, from the workspace on disk. * * The request carries a whole compiled model — 247 nodes and 338 edges for this * repository's own architecture — so it is a machine's transcription of the * workspace, never something an agent can honestly hand-author. Every input the * document needs is already derivable: the graph from the native compiler, the * digests from the same sources that compiled, and the view list from the * workspace's declared projections. * * The result is validated through `parseVisualSessionRequest` before it is * returned, so the byte ceiling, digest confinement, and authority agreement * are the protocol's own rules rather than a second set restated here. A * builder that cannot produce a valid document refuses instead of handing a * session something it would reject at start. */ export declare const buildVisualSessionRequest: (options: VisualSessionRequestOptions) => VisualSessionRequestResult;