import type { InjectionState } from "./session.js"; /** v14.x(tagline):对 footer tagline 作脱裁 + separator 拼装。 * - 缺省 tagline → 返回 ''(外层拼接到 footer 不变) * - tagline.length ≤ maxLen → 原样 * - tagline.length > maxLen → 裁到 maxLen - 1 + '…' * 返回 `: ` 形式(带 separator),便于直拼。 * * maxLen 默认 35(与 health suffix 分享 footer 宽度预算)。 */ export declare function formatTaglineForFooter(tagline: string | undefined, maxLen?: number): string; /** 颜色模式。 * - "auto"(默认):根据 process.stdout.isTTY 自动判断(TUI 用颜色,web 不用) * - "always":强制开启 ANSI(手动 debug / 调试 输出场景) * - "never": 强制关闭 ANSI(CI / pipe / 重定向场景) * * v14.x(issue pt-asset-migration-visibility Layer 2):加 colorMode 让测试与 CLI 可覆盖默认 TTY 检测。 */ export type ColorMode = "auto" | "always" | "never"; /** 把 InjectionState × profile × error × healthIssueCount × tagline 渲染为 footer 文本。 * * 状态颜色映射: * - injected → green * - pending → yellow * - idle → dim gray * - failed → red * * Health suffix:healthIssueCount > 0 → 末尾追加 ` ⚠ N issue(s)`(emoji 前缀作主视觉信号,颜色补充) * * Tagline(v14.x):profile 名后追加 `: `(≤35 字符),超长裁短 + …: * - tagline 缺省 → 不追加(back-compat) * - tagline 存在且短 → `pt: pt-dev: Senior dev + QA + Reviewer (3 agents) ok` * - tagline 超长 → 裁到 34 + '…' * * profile=null → "pt: 无 context"(其它状态必先有 profile,统一降级) * failed 时追加 ": " * * TUI / Web 兼容: * - TUI(isTTY=true):状态染色 ANSI + ⚠ 后缀(颜色补充) * - Web(isTTY=false):纯文本 + ⚠ 前缀(无 ANSI 避免 [31m 字面量) * - colorMode='always'|'never':覆盖自动检测(调试 / 测试用) * * back-compat:healthIssueCount + colorMode + tagline 均有默认值,旧 call site 行为不变。 */ export declare function renderInjectionFooter(state: InjectionState, profile: string | null, error: string | null, healthIssueCount?: number, colorMode?: ColorMode, tagline?: string | null): string; /** 把 ANSI 颜色码剥成纯文本(test 工具——便于断言内容而忽略颜色)。 */ export declare function stripAnsi(text: string): string;