import { type QualityLevel } from '../brand-tokens.js'; interface LocalizedText { zh?: string; en?: string; } interface DialogueFlow { flow_id: string; current_turn: number; total_turns: number; this_turn: { semantic_goal: string; talk_points: string[]; end_with: string; }; next_turn_hints: { if_user_engages: string; if_user_hesitates: string; if_user_declines: string; }; gentle_exit: { semantic_goal: string; talk_points: string[]; }; success_criterion: string; } interface EnhancedError { code: string; severity: string; user_message?: LocalizedText; agent_directive?: LocalizedText; dialogue_flow?: DialogueFlow | null; } export interface Envelope { ok: boolean; error?: EnhancedError | null; dialogue_flow?: DialogueFlow | null; conversation_hints?: Array<{ text?: LocalizedText; }>; } /** * 把一份 dialogue_flow 渲染成对 Agent 友好的 markdown 块。 * * 目标读者: Agent (Claude Code / Cursor 等), 不是终端用户。 * 因此用 [Guide / 引导剧本] 开头, 让 Agent 知道这是元信息而非用户话语。 */ export declare function renderDialogueFlow(flow: DialogueFlow): string; /** * 渲染整个 envelope 的"软错误 + dialogue_flow"区段。 * 用在 MCP 工具的 catch 路径里。 */ export declare function renderEnvelopeError(envelope: Envelope | null): string | null; /** * PRD-UX-PART3-AHA-V1 §4.3/4.4 · progress event 语义. * 与 platform/api/src/brain/progress-bus.ts 的 ProgressEventKind 对齐. */ export type ProgressEventKind = 'step_start' | 'step_tick' | 'step_end' | 'retry' | 'done'; /** * SSE /brain/stream 每条 event: progress 的 data 形状. * 字段集为 SDK 渲染最小依赖, 服务端多给字段时前向兼容. */ export interface ProgressEvent { request_id: string; current_round: number; estimated_total_rounds: number; label_zh: string; label_en?: string; eta_seconds?: number | null; percent?: number; seq?: number; ts?: number; event_kind?: ProgressEventKind; step_eta_seconds?: number; retry_reason?: string; } /** PRD §2.2 · SkillRunQuality 渲染侧最小 shape (全字段 optional 以便兜底) */ export interface SkillRunQualityRenderable { overall_score?: number; human_like_score?: number; dim_scores?: { burstiness?: number; lexical_diversity?: number; readability?: number; keyword_density?: number; structural?: number; }; anti_ai_badge?: { level?: QualityLevel; label_zh?: string; }; evidence?: Array<{ kind: 'positive' | 'improvement'; zh: string; locator?: { paragraph_index?: number; snippet?: string; }; }>; /** 兼容旧字段 — 若仅有 passed/suggestions 就走极简模式 */ passed?: boolean; suggestions?: string[]; } /** * 把一条 ProgressEvent 渲染成单行字符串 (带 `\r` 前缀, 无末尾 `\n`), * 供 `process.stderr.write(...)` 直接吐出. 连续写会在同一行刷新. * * 事件→文案映射: * step_start → 绿 `⏳ [N/M] label (预计 Xs)` * step_tick → 绿 `⏳ [N/M] label...` (label 已带服务端轮转后缀) * step_end → 灰 `✓ [N/M] label` + `\n` (换行为下一轮让位) * retry → 黄 `⟳ 重试:retry_reason` * done → 绿 `✅ 完成 (总耗时 Xs)` + `\u0007` (terminal bell, 3-beat ritual Beat 1) + `\n` * * 退化: label_zh 缺失 → "处理中…"; event_kind 缺失 → 视为 step_end (兼容旧 server). */ export declare function renderProgressEvent(ev: ProgressEvent): string; /** * 把一份 SkillRunQuality 渲染成字符画卡 (多行字符串, 末尾带 `\n`). * 输入 undefined / 缺 overall_score → 返回空串 (不渲染). * * 宽度降级: 终端 < 80 列 → 只显示 总分 + 徽章 + 第一条 evidence (R2 简洁模式). * S/A/B/C 用 ANSI 色从 brand-tokens.LEVEL_STYLE 取, 禁止硬编码. */ export declare function renderQualityCard(q: SkillRunQualityRenderable | null | undefined): string; export {}; //# sourceMappingURL=render-flow.d.ts.map