/**
 * Shared adapter types.
 *
 * These are the transport-neutral contracts used by both the CLI and MCP
 * adapters. Handlers produce `AdapterResponse` values; each transport
 * renders them via `renderEnvelope` in `formatters/response-envelope.ts`.
 *
 * Adapter-only — no engine imports, no runtime state.
 */
export type ResponseDetailLevel = 'compact' | 'standard' | 'debug';
export type ResponseIntent = 'inspect' | 'plan' | 'mutate';
export type ResponseTopology = 'auto' | 'manager-tools' | 'handoff' | 'dag-pool' | 'worktree-swarm';
export interface AdapterResponse {
    /** Headline/body text. Usually branded markdown from formatBrandedResponse. */
    primary: string;
    /** Optional structured bullets appended after the primary text. */
    bullets?: string[];
    /** Optional machine-parseable payload. When present and `format` is
     *  `'debug'` or `'standard'`, the envelope renders it as a fenced JSON
     *  block. In `'compact'` mode it is suppressed. */
    jsonDetails?: {
        label: string;
        value: unknown;
    };
    /** Transport-independent detail level. Drives whether the envelope
     *  attaches telemetry, the JSON block, or both. */
    format: ResponseDetailLevel;
    /** Trailing text (telemetry / protocol nudges / "next steps" reminders).
     *  Kept separate from `primary` so compact rendering can choose to
     *  elide it. */
    trailer?: string;
}
export interface RenderOptions {
    /** If true, wrap JSON details in a fenced markdown block. Default: true.
     *  CLI may pass `false` when `NEXUS_CLI_PLAIN=1`. */
    fencedJson?: boolean;
    /** If false, strip the trailer. Used by MCP `compact` responses that
     *  should not emit telemetry lines. Default: true. */
    includeTrailer?: boolean;
}
