{
  "version": "2.0.0",
  "generatedAt": "2026-06-16T12:27:28.867Z",
  "domains": {
    "setup": {
      "label": "对话搭建",
      "components": [
        "chat-container",
        "message-container"
      ]
    },
    "message": {
      "label": "消息系统",
      "components": [
        "activity-message",
        "assistant-message",
        "info-message",
        "loading-message",
        "message-render",
        "reasoning-message",
        "tool-message",
        "user-message"
      ]
    },
    "rendering": {
      "label": "内容渲染",
      "components": [
        "animation-text",
        "cite-content",
        "code-content",
        "common-error-content",
        "content-render",
        "desc-panel",
        "key-value-content",
        "latex-content",
        "markdown-content",
        "mermaid-content",
        "reference-content",
        "text-content"
      ]
    },
    "input": {
      "label": "输入交互",
      "components": [
        "ai-prompt-list",
        "ai-selection",
        "ai-slash-editor",
        "ai-slash-input",
        "ai-slash-menu",
        "chat-input",
        "file-upload-btn",
        "input-attachment",
        "input-info-alert",
        "selection-footer",
        "shortcut-btn",
        "shortcut-btns",
        "shortcut-render"
      ]
    },
    "agent": {
      "label": "Agent 能力",
      "components": [
        "detail-section",
        "execution-summary",
        "flow-agent-content",
        "flow-agent-node-detail",
        "interrupt-message",
        "knowledge-rag-content",
        "reference-doc-content",
        "simple-table",
        "tool-approval-card",
        "toolcall-render",
        "user-question-answered-card",
        "user-question-card",
        "user-question-choice",
        "user-question-option"
      ]
    },
    "feedback": {
      "label": "工具与反馈",
      "components": [
        "delete-tool",
        "message-tools",
        "scroll-btn",
        "tool-btn",
        "user-feedback"
      ]
    },
    "media": {
      "label": "媒体文件",
      "components": []
    },
    "helper": {
      "label": "辅助能力",
      "components": [
        "activity-layout",
        "ai-loading",
        "highlight-keyword",
        "message-loading",
        "questions-container",
        "selection-question",
        "vnode-renderer",
        "ai-image",
        "file-content",
        "image-content",
        "image-preview-group",
        "image-preview",
        "preview-toolbar"
      ]
    }
  },
  "components": [
    {
      "name": "DetailSection 详情分段",
      "slug": "detail-section",
      "kind": "component",
      "description": "FlowAgent 节点详情中的标题/内容分段容器。",
      "aiSummary": "FlowAgent 节点详情中的标题/内容分段容器。 源码位置：src/components/chat-content/flow-agent-content/detail-section.vue。",
      "relatedComponents": [
        {
          "slug": "flow-agent-node-detail",
          "relation": "节点详情中用于承载基础信息、输入参数、输出参数等区块"
        },
        {
          "slug": "simple-table",
          "relation": "常作为分段内容展示结构化参数表格"
        }
      ],
      "docFile": "docs/detail-section.md",
      "domain": "agent"
    },
    {
      "name": "ExecutionSummary 执行摘要",
      "slug": "execution-summary",
      "kind": "component",
      "description": "按消息流提取执行摘要，支持关键词定位和消息渲染。",
      "aiSummary": "按消息流提取执行摘要，支持关键词定位和消息渲染。 源码位置：src/components/execution-summary/execution-summary.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "摘要列表内渲染消息内容"
        },
        {
          "slug": "highlight-keyword",
          "relation": "搜索关键词注入与高亮"
        },
        {
          "slug": "chat-container",
          "relation": "常与侧栏「执行情况」Tab 组合"
        }
      ],
      "docFile": "docs/execution-summary.md",
      "domain": "agent"
    },
    {
      "name": "FlowAgentContent FlowAgent 执行内容",
      "slug": "flow-agent-content",
      "kind": "component",
      "description": "渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。",
      "aiSummary": "渲染 FlowAgent 任务/节点执行状态、耗时、详情入口和自定义 Tab 联动。 源码位置：src/components/chat-content/flow-agent-content/flow-agent-content.vue。",
      "relatedComponents": [
        {
          "slug": "flow-agent-node-detail",
          "relation": "详情入口点击后挂载到自定义 Tab 渲染"
        },
        {
          "slug": "activity-layout",
          "relation": "提供可折叠的活动容器外壳"
        },
        {
          "slug": "chat-container",
          "relation": "通过自定义 Tab 在侧栏展示节点详情"
        }
      ],
      "docFile": "docs/flow-agent-content.md",
      "domain": "agent"
    },
    {
      "name": "FlowAgentNodeDetail FlowAgent 节点详情",
      "slug": "flow-agent-node-detail",
      "kind": "component",
      "description": "展示 FlowAgent 节点输入、输出、异常、耗时等详情。",
      "aiSummary": "展示 FlowAgent 节点输入、输出、异常、耗时等详情。 源码位置：src/components/chat-content/flow-agent-content/flow-agent-node-detail.vue。",
      "relatedComponents": [
        {
          "slug": "flow-agent-content",
          "relation": "节点详情入口由 FlowAgentContent 挂载到自定义 Tab"
        },
        {
          "slug": "detail-section",
          "relation": "详情页内部分段容器"
        },
        {
          "slug": "simple-table",
          "relation": "展示输入参数、插件输出定义与结构化输出"
        },
        {
          "slug": "chat-container",
          "relation": "应用层通过 onCustomTabChange 拉取节点详情并回填"
        }
      ],
      "docFile": "docs/flow-agent-node-detail.md",
      "domain": "agent"
    },
    {
      "name": "InterruptMessage 中断消息",
      "slug": "interrupt-message",
      "kind": "component",
      "description": "渲染 human-in-the-loop 中断消息，分发工具审批，并按 reason 回显 resume 结果。",
      "aiSummary": "渲染 human-in-the-loop 中断消息，分发工具审批，并按 reason 回显 resume 结果（审批单 / 用户回答）。 源码位置：src/components/chat-message/interrupt-message/interrupt-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "role 为 interrupt 时渲染本组件"
        },
        {
          "slug": "user-question-card",
          "relation": "UserQuestion 待回答面板与回答回显"
        },
        {
          "slug": "tool-approval-card",
          "relation": "AIDevToolApproval 专用子卡片"
        },
        {
          "slug": "message-container",
          "relation": "透传 onInterruptResume；末条为 interrupt 时不触发组 hover"
        }
      ],
      "docFile": "docs/interrupt-message.md",
      "domain": "agent"
    },
    {
      "name": "KnowledgeRagContent 知识召回内容",
      "slug": "knowledge-rag-content",
      "kind": "component",
      "description": "渲染知识召回活动，包含加载态、Markdown 内容与引用来源。",
      "aiSummary": "渲染知识召回活动，包含加载态、Markdown 内容与引用来源。 源码位置：src/components/chat-content/knowledge-rag-content/knowledge-rag-content.vue。",
      "relatedComponents": [
        {
          "slug": "activity-message",
          "relation": "activityType 为 knowledge_rag 时分发到本组件"
        },
        {
          "slug": "activity-layout",
          "relation": "提供可折叠的活动容器外壳"
        },
        {
          "slug": "markdown-content",
          "relation": "渲染知识召回摘要正文"
        },
        {
          "slug": "reference-content",
          "relation": "渲染召回引用来源列表"
        }
      ],
      "docFile": "docs/knowledge-rag-content.md",
      "domain": "agent"
    },
    {
      "name": "ReferenceDocContent 引用文档活动",
      "slug": "reference-doc-content",
      "kind": "component",
      "description": "渲染引用文档类活动内容，复用 ActivityLayout 与 ReferenceContent。",
      "aiSummary": "渲染引用文档类活动内容，复用 ActivityLayout 与 ReferenceContent。 源码位置：src/components/chat-content/reference-doc-content/reference-doc-content.vue。",
      "relatedComponents": [
        {
          "slug": "activity-message",
          "relation": "非 knowledge_rag / flow_agent 活动默认可分发为引用文档活动"
        },
        {
          "slug": "activity-layout",
          "relation": "提供可折叠的活动容器外壳"
        },
        {
          "slug": "reference-content",
          "relation": "渲染引用文档列表"
        }
      ],
      "docFile": "docs/reference-doc-content.md",
      "domain": "agent"
    },
    {
      "name": "SimpleTable 简易表格",
      "slug": "simple-table",
      "kind": "component",
      "description": "FlowAgent 节点详情中的轻量表格展示组件。",
      "aiSummary": "FlowAgent 节点详情中的轻量表格展示组件。 源码位置：src/components/chat-content/flow-agent-content/simple-table.vue。",
      "relatedComponents": [
        {
          "slug": "flow-agent-node-detail",
          "relation": "节点详情中用于展示输入参数、插件输出定义和结构化输出"
        },
        {
          "slug": "detail-section",
          "relation": "通常放在详情分段容器内使用"
        }
      ],
      "docFile": "docs/simple-table.md",
      "domain": "agent"
    },
    {
      "name": "ToolApprovalCard 工具审批卡片",
      "slug": "tool-approval-card",
      "kind": "component",
      "description": "渲染 AIDevToolApproval 中断的审批信息与取消操作，支持只读回显态。",
      "aiSummary": "渲染 AIDevToolApproval 中断的审批信息与取消操作；outcome.success 回显时以 readonly 只读展示。 源码位置：src/components/chat-message/interrupt-message/tool-approval-card.vue。",
      "relatedComponents": [
        {
          "slug": "interrupt-message",
          "relation": "InterruptMessageRender 按 reason 派发渲染"
        }
      ],
      "docFile": "docs/tool-approval-card.md",
      "domain": "agent"
    },
    {
      "name": "ToolcallRender 工具调用渲染器",
      "slug": "toolcall-render",
      "kind": "component",
      "description": "渲染 assistant toolCalls，展示工具调用状态、参数和结果。",
      "aiSummary": "渲染 assistant toolCalls，展示工具调用状态、参数和结果。 源码位置：src/components/tool-call/toolcall-render/toolcall-render.vue。",
      "relatedComponents": [
        {
          "slug": "desc-panel",
          "relation": "详情区展示参数与描述文本"
        },
        {
          "slug": "highlight-keyword",
          "relation": "标题与状态文案关键词高亮"
        },
        {
          "slug": "tool-message",
          "relation": "详情底部可内联工具返回消息"
        }
      ],
      "docFile": "docs/toolcall-render.md",
      "domain": "agent"
    },
    {
      "name": "UserQuestionAnsweredCard 用户问题回答回显",
      "slug": "user-question-answered-card",
      "kind": "component",
      "description": "在 UserQuestion resume 成功后回显用户回答或取消状态。",
      "aiSummary": "在 UserQuestion resume 成功后回显用户回答或取消状态。 源码位置：src/components/chat-message/interrupt-message/user-question/user-question-answered-card.vue。",
      "relatedComponents": [
        {
          "slug": "interrupt-message",
          "relation": "outcome.success 且 reason 为 UserQuestion 时挂载本组件"
        },
        {
          "slug": "user-question-card",
          "relation": "待回答面板，与本组件成对出现"
        }
      ],
      "docFile": "docs/user-question-answered-card.md",
      "domain": "agent"
    },
    {
      "name": "UserQuestionCard 用户问题中断",
      "slug": "user-question-card",
      "kind": "component",
      "description": "渲染 UserQuestion 中断的待回答面板，支持单选、多选、Others 与跳过。",
      "aiSummary": "渲染 UserQuestion 中断的待回答面板，支持单选、多选、Others 与跳过。 源码位置：src/components/chat-message/interrupt-message/user-question/user-question-card.vue。",
      "relatedComponents": [
        {
          "slug": "interrupt-message",
          "relation": "outcome.success 时挂载 UserQuestionAnsweredCard 回显回答"
        },
        {
          "slug": "chat-container",
          "relation": "检测最近待回答 UserQuestion 并把 UserQuestionCard 放在输入区上方"
        },
        {
          "slug": "interrupt",
          "relation": "定义 UserQuestionInterrupt 与 UserQuestionResume 协议"
        }
      ],
      "docFile": "docs/user-question-card.md",
      "domain": "agent"
    },
    {
      "name": "UserQuestionChoice 用户问题选择题",
      "slug": "user-question-choice",
      "kind": "component",
      "description": "UserQuestionCard 默认的选择题渲染组件，封装单选/多选、Others 输入与答案组装。",
      "aiSummary": "UserQuestionCard 默认的选择题渲染组件，封装单选/多选、Others 输入与答案组装。 源码位置：src/components/chat-message/interrupt-message/user-question/user-question-choice.vue。",
      "relatedComponents": [
        {
          "slug": "user-question-card",
          "relation": "默认通过"
        },
        {
          "slug": "user-question-option",
          "relation": "内部逐条渲染选项行"
        },
        {
          "slug": "interrupt",
          "relation": "答案结构遵循 UserQuestionAnswerItem"
        }
      ],
      "docFile": "docs/user-question-choice.md",
      "domain": "agent"
    },
    {
      "name": "UserQuestionOption 用户问题选项",
      "slug": "user-question-option",
      "kind": "component",
      "description": "UserQuestionChoice 内部选项行，处理单选/多选状态和 Others 输入。",
      "aiSummary": "UserQuestionChoice 内部选项行，处理单选/多选状态和 Others 输入。 源码位置：src/components/chat-message/interrupt-message/user-question/user-question-option.vue。",
      "relatedComponents": [],
      "docFile": "docs/user-question-option.md",
      "domain": "agent"
    },
    {
      "name": "DeleteTool 删除确认按钮",
      "slug": "delete-tool",
      "kind": "component",
      "description": "消息删除二次确认工具。",
      "aiSummary": "消息删除二次确认工具。 源码位置：src/components/message-tools/delete-tool/delete-tool.vue。",
      "relatedComponents": [
        {
          "slug": "tool-btn",
          "relation": "删除图标与触发入口"
        },
        {
          "slug": "message-tools",
          "relation": "delete 工具 id 时自动采用本组件"
        }
      ],
      "docFile": "docs/delete-tool.md",
      "domain": "feedback"
    },
    {
      "name": "MessageTools 消息工具栏",
      "slug": "message-tools",
      "kind": "component",
      "description": "消息悬浮工具栏，组合复制、删除、反馈等工具按钮。",
      "aiSummary": "消息悬浮工具栏，组合复制、删除、反馈等工具按钮。 源码位置：src/components/message-tools/message-tools.vue。",
      "relatedComponents": [
        {
          "slug": "tool-btn",
          "relation": "普通工具项由 ToolBtn 渲染"
        },
        {
          "slug": "user-feedback",
          "relation": "like/unlike 时弹出反馈表单"
        },
        {
          "slug": "delete-tool",
          "relation": "id 为 delete 时替换为带确认的删除按钮"
        }
      ],
      "docFile": "docs/message-tools.md",
      "domain": "feedback"
    },
    {
      "name": "ScrollBtn 滚动按钮",
      "slug": "scroll-btn",
      "kind": "component",
      "description": "停止生成或返回底部等滚动/状态按钮。",
      "aiSummary": "停止生成或返回底部等滚动/状态按钮。 源码位置：src/components/ai-buttons/scroll-btn/scroll-btn.vue。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "消息列表底部固定区挂载滚动与停止按钮"
        }
      ],
      "docFile": "docs/scroll-btn.md",
      "domain": "feedback"
    },
    {
      "name": "ToolBtn 工具按钮",
      "slug": "tool-btn",
      "kind": "component",
      "description": "工具栏图标按钮。",
      "aiSummary": "工具栏图标按钮。 源码位置：src/components/ai-buttons/tool-btn/tool-btn.vue。",
      "relatedComponents": [
        {
          "slug": "message-tools",
          "relation": "父级组装多个工具按钮与交互"
        },
        {
          "slug": "delete-tool",
          "relation": "删除确认场景内嵌为触发控件"
        }
      ],
      "docFile": "docs/tool-btn.md",
      "domain": "feedback"
    },
    {
      "name": "UserFeedback 用户反馈",
      "slug": "user-feedback",
      "kind": "component",
      "description": "用户反馈弹层，提交踩/反馈原因。",
      "aiSummary": "用户反馈弹层，提交踩/反馈原因。 源码位置：src/components/message-tools/user-feedback/user-feedback.vue。",
      "relatedComponents": [
        {
          "slug": "message-tools",
          "relation": "点赞/踩操作触发并收集反馈"
        }
      ],
      "docFile": "docs/user-feedback.md",
      "domain": "feedback"
    },
    {
      "name": "ActivityLayout 活动布局",
      "slug": "activity-layout",
      "kind": "component",
      "description": "活动消息的折叠布局容器，提供 title/default 插槽。",
      "aiSummary": "活动消息的折叠布局容器，提供 title/default 插槽。 源码位置：src/components/chat-content/activity-layout/activity-layout.vue。",
      "relatedComponents": [
        {
          "slug": "activity-message",
          "relation": "活动消息通过本组件承载标题栏与内容区"
        },
        {
          "slug": "knowledge-rag-content",
          "relation": "知识召回活动复用本组件展示加载标题与正文"
        },
        {
          "slug": "reference-doc-content",
          "relation": "引用文档活动复用本组件展示文档数量与引用列表"
        },
        {
          "slug": "flow-agent-content",
          "relation": "FlowAgent 活动复用本组件，但隐藏默认折叠箭头"
        }
      ],
      "docFile": "docs/activity-layout.md",
      "domain": "helper"
    },
    {
      "name": "AiLoading 三点加载",
      "slug": "ai-loading",
      "kind": "component",
      "description": "小尺寸 AI 加载动效。",
      "aiSummary": "小尺寸 AI 加载动效。 源码位置：src/components/ai-loading/ai-loading.vue。",
      "relatedComponents": [
        {
          "slug": "loading-message",
          "relation": "列表末尾加载占位"
        },
        {
          "slug": "reasoning-message",
          "relation": "推理进行中的加载指示"
        },
        {
          "slug": "activity-message",
          "relation": "活动消息加载态指示"
        }
      ],
      "docFile": "docs/ai-loading.md",
      "domain": "helper"
    },
    {
      "name": "HighlightKeyword 关键词高亮",
      "slug": "highlight-keyword",
      "kind": "component",
      "description": "根据注入关键词高亮文本片段。",
      "aiSummary": "根据注入关键词高亮文本片段。 源码位置：src/components/highlight-keyword/highlight-keyword.ts。",
      "relatedComponents": [
        {
          "slug": "toolcall-render",
          "relation": "工具调用标题与状态文案高亮"
        },
        {
          "slug": "desc-panel",
          "relation": "工具详情键值与描述文本高亮"
        },
        {
          "slug": "execution-summary",
          "relation": "执行摘要搜索过滤与列表高亮"
        }
      ],
      "docFile": "docs/highlight-keyword.md",
      "domain": "helper"
    },
    {
      "name": "MessageLoading 品牌加载",
      "slug": "message-loading",
      "kind": "component",
      "description": "带品牌图标和逐字渐变动画的加载组件。",
      "aiSummary": "带品牌图标和逐字渐变动画的加载组件。 源码位置：src/components/message-loading/message-loading.vue。",
      "relatedComponents": [
        {
          "slug": "loading-message",
          "relation": "消息列表加载占位可选择使用品牌加载动效"
        },
        {
          "slug": "ai-loading",
          "relation": "更轻量的三点加载动画"
        }
      ],
      "docFile": "docs/message-loading.md",
      "domain": "helper"
    },
    {
      "name": "QuestionsContainer 问题容器占位",
      "slug": "questions-container",
      "kind": "component",
      "description": "源码为空文件，没有 props、emits、slots 或渲染能力；不建议作为功能组件使用。",
      "aiSummary": "源码为空文件，没有 props、emits、slots 或渲染能力；不建议作为功能组件使用。 源码位置：src/components/ai-questions/questions-container.vue。",
      "relatedComponents": [
        {
          "slug": "user-question-card",
          "relation": "用户问题中断交互请使用实际可渲染的问题卡片组件"
        },
        {
          "slug": "user-question-option",
          "relation": "用户问题选项行由实际中断组件承载"
        },
        {
          "slug": "interrupt-message",
          "relation": "HITL 中断消息由 InterruptMessage 分发到具体问题组件"
        }
      ],
      "docFile": "docs/questions-container.md",
      "domain": "helper"
    },
    {
      "name": "SelectionQuestion 选择问题占位",
      "slug": "selection-question",
      "kind": "component",
      "description": "源码为空文件，没有 props、emits、slots 或渲染能力；不建议作为功能组件使用。",
      "aiSummary": "源码为空文件，没有 props、emits、slots 或渲染能力；不建议作为功能组件使用。 源码位置：src/components/ai-questions/selection-question.vue。",
      "relatedComponents": [
        {
          "slug": "user-question-card",
          "relation": "选择类问题交互请使用实际可渲染的问题卡片组件"
        },
        {
          "slug": "user-question-option",
          "relation": "单个选项行由实际问题组件渲染"
        },
        {
          "slug": "interrupt-message",
          "relation": "HITL 中断消息由 InterruptMessage 分发到具体问题组件"
        }
      ],
      "docFile": "docs/selection-question.md",
      "domain": "helper"
    },
    {
      "name": "VNodeRenderer VNode 渲染器",
      "slug": "vnode-renderer",
      "kind": "component",
      "description": "将 Markdown token 转成 VNode 的内部渲染桥。",
      "aiSummary": "将 Markdown token 转成 VNode 的内部渲染桥。 源码位置：src/components/chat-content/vnode-renderer.ts。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "MarkdownContent 对普通 token 分组使用本组件渲染"
        },
        {
          "slug": "code-content",
          "relation": "fence/code_block 代码块通常会被 MarkdownContent 提前分流到 CodeContent"
        },
        {
          "slug": "mermaid-content",
          "relation": "mermaid 代码块通常会被 MarkdownContent 提前分流到 MermaidContent"
        },
        {
          "slug": "image-content",
          "relation": "图片 token 由 tokensToVNodes 转为 ImageContent"
        }
      ],
      "docFile": "docs/vnode-renderer.md",
      "domain": "helper"
    },
    {
      "name": "AiPromptList Prompt 列表",
      "slug": "ai-prompt-list",
      "kind": "component",
      "description": "/ Prompt 选择列表，供 AiSlashInput 插入模板文本。",
      "aiSummary": "/ Prompt 选择列表，供 AiSlashInput 插入模板文本。 源码位置：src/components/chat-input/ai-slash-input/ai-prompt-list/ai-prompt-list.vue。",
      "relatedComponents": [],
      "docFile": "docs/ai-prompt-list.md",
      "domain": "input"
    },
    {
      "name": "AiSelection 划词选择",
      "slug": "ai-selection",
      "kind": "component",
      "description": "监听选中文本并展示快捷操作浮窗。",
      "aiSummary": "监听选中文本并展示快捷操作浮窗。 源码位置：src/components/ai-selection/ai-selection.vue。",
      "relatedComponents": [
        {
          "slug": "shortcut-btn",
          "relation": "弹窗内快捷指令按钮/菜单项由该基础组件渲染"
        },
        {
          "slug": "chat-input",
          "relation": "划词结果常回填或触发与输入框联动的快捷指令"
        }
      ],
      "docFile": "docs/ai-selection.md",
      "domain": "input"
    },
    {
      "name": "AiSlashEditor 富文本编辑器",
      "slug": "ai-slash-editor",
      "kind": "component",
      "description": "旧版富文本编辑器实现，封装 command selection 与提示菜单。",
      "aiSummary": "旧版富文本编辑器实现，封装 command selection 与提示菜单。 源码位置：src/components/chat-input/ai-slash-editor/ai-slash-editor.vue。",
      "relatedComponents": [],
      "docFile": "docs/ai-slash-editor.md",
      "domain": "input"
    },
    {
      "name": "AiSlashInput 富文本命令输入",
      "slug": "ai-slash-input",
      "kind": "component",
      "description": "ChatInput 内部富文本输入，支持 / Prompt 与 @ 资源标签。",
      "aiSummary": "ChatInput 内部富文本输入，支持 / Prompt 与 @ 资源标签。 源码位置：src/components/chat-input/ai-slash-input/ai-slash-input.vue。",
      "relatedComponents": [],
      "docFile": "docs/ai-slash-input.md",
      "domain": "input"
    },
    {
      "name": "AiSlashMenu 资源菜单",
      "slug": "ai-slash-menu",
      "kind": "component",
      "description": "@ 资源选择菜单，展示资源项供 AiSlashInput 插入标签。",
      "aiSummary": "@ 资源选择菜单，展示资源项供 AiSlashInput 插入标签。 源码位置：src/components/chat-input/ai-slash-input/ai-slash-menu/ai-slash-menu.vue。",
      "relatedComponents": [],
      "docFile": "docs/ai-slash-menu.md",
      "domain": "input"
    },
    {
      "name": "ChatInput 聊天输入框",
      "slug": "chat-input",
      "kind": "component",
      "description": "聊天输入区，组合富文本输入、快捷指令、附件、引用、发送/停止等交互。",
      "aiSummary": "聊天输入区，组合富文本输入、快捷指令、附件、引用、发送/停止等交互。 源码位置：src/components/chat-input/chat-input.vue。",
      "relatedComponents": [
        {
          "slug": "shortcut-btns",
          "relation": "底部附件区默认展示的快捷指令列表"
        },
        {
          "slug": "shortcut-btn",
          "relation": "已选快捷指令以单按钮形式展示并可关闭"
        },
        {
          "slug": "shortcut-render",
          "relation": "快捷指令含 components 时由外层唤起表单渲染"
        },
        {
          "slug": "chat-container",
          "relation": "顶层聊天布局中作为输入区子组件"
        },
        {
          "slug": "cite-content",
          "relation": "消息引用区展示选中的上下文片段"
        }
      ],
      "docFile": "docs/chat-input.md",
      "domain": "input"
    },
    {
      "name": "FileUploadBtn 文件上传按钮",
      "slug": "file-upload-btn",
      "kind": "component",
      "description": "文件选择按钮，封装 input[type=file] 并输出选择事件。",
      "aiSummary": "文件选择按钮，封装 input[type=file] 并输出选择事件。 源码位置：src/components/ai-buttons/file-upload-btn/file-upload-btn.vue。",
      "relatedComponents": [
        {
          "slug": "chat-input",
          "relation": "输入区附件上传按钮常见挂载位置"
        },
        {
          "slug": "file-content",
          "relation": "选中文件常以列表形式展示待发送内容"
        }
      ],
      "docFile": "docs/file-upload-btn.md",
      "domain": "input"
    },
    {
      "name": "InputAttachment 输入附件区",
      "slug": "input-attachment",
      "kind": "component",
      "description": "ChatInput 底部附件区布局，承载快捷按钮、文件与发送图标。",
      "aiSummary": "ChatInput 底部附件区布局，承载快捷按钮、文件与发送图标。 源码位置：src/components/chat-input/input-attachment/input-attachment.vue。",
      "relatedComponents": [],
      "docFile": "docs/input-attachment.md",
      "domain": "input"
    },
    {
      "name": "InputInfoAlert 输入提示条",
      "slug": "input-info-alert",
      "kind": "component",
      "description": "ChatInput 上方的信息提示条。",
      "aiSummary": "ChatInput 上方的信息提示条。 源码位置：src/components/chat-input/input-info-alert.vue。",
      "relatedComponents": [],
      "docFile": "docs/input-info-alert.md",
      "domain": "input"
    },
    {
      "name": "SelectionFooter 多选操作栏",
      "slug": "selection-footer",
      "kind": "component",
      "description": "消息多选/分享模式下的底部操作栏。",
      "aiSummary": "消息多选/分享模式下的底部操作栏。 源码位置：src/components/selection-footer/selection-footer.vue。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "多选/分享模式由容器渲染底部栏"
        },
        {
          "slug": "message-container",
          "relation": "与消息列表勾选状态联动"
        }
      ],
      "docFile": "docs/selection-footer.md",
      "domain": "input"
    },
    {
      "name": "ShortcutBtn 快捷指令按钮",
      "slug": "shortcut-btn",
      "kind": "component",
      "description": "单个快捷指令按钮，支持默认/append 插槽和 expose focus。",
      "aiSummary": "单个快捷指令按钮，支持默认/append 插槽和 expose focus。 源码位置：src/components/ai-shortcut/shortcut-btn/shortcut-btn.vue。",
      "relatedComponents": [
        {
          "slug": "shortcut-btns",
          "relation": "快捷指令横向列表中作为单项渲染"
        },
        {
          "slug": "ai-selection",
          "relation": "划词浮窗内展示快捷操作按钮或溢出菜单项"
        },
        {
          "slug": "chat-input",
          "relation": "已选快捷指令在输入框底部以单按钮展示"
        }
      ],
      "docFile": "docs/shortcut-btn.md",
      "domain": "input"
    },
    {
      "name": "ShortcutBtns 快捷指令按钮组",
      "slug": "shortcut-btns",
      "kind": "component",
      "description": "快捷指令列表入口，内部组合多个 ShortcutBtn。",
      "aiSummary": "快捷指令列表入口，内部组合多个 ShortcutBtn。 源码位置：src/components/ai-shortcut/shortcut-btns/shortcut-btns.vue。",
      "relatedComponents": [
        {
          "slug": "shortcut-btn",
          "relation": "列表中每一项由 ShortcutBtn 渲染"
        },
        {
          "slug": "chat-input",
          "relation": "默认嵌入输入框底部附件区"
        },
        {
          "slug": "shortcut-render",
          "relation": "表单类快捷指令选中后的表单渲染"
        }
      ],
      "docFile": "docs/shortcut-btns.md",
      "domain": "input"
    },
    {
      "name": "ShortcutRender 快捷指令表单",
      "slug": "shortcut-render",
      "kind": "component",
      "description": "渲染快捷指令 components 表单并回传确认数据。",
      "aiSummary": "渲染快捷指令 components 表单并回传确认数据。 源码位置：src/components/ai-shortcut/shortcut-render/shortcut-render.vue。",
      "relatedComponents": [
        {
          "slug": "shortcut-btn",
          "relation": "与快捷指令 Shortcut 元数据一致，表单提交前在列表中选中入口"
        },
        {
          "slug": "chat-input",
          "relation": "提交或取消后与输入框内容与状态联动"
        },
        {
          "slug": "chat-container",
          "relation": "顶层聊天布局中承载快捷表单区域"
        }
      ],
      "docFile": "docs/shortcut-render.md",
      "domain": "input"
    },
    {
      "name": "AiImage 图片展示",
      "slug": "ai-image",
      "kind": "component",
      "description": "图片展示组件，组合加载、错误、预览和 extra 插槽。",
      "aiSummary": "图片展示组件，组合加载、错误、预览和 extra 插槽。 源码位置：src/components/image-preview/image.vue。",
      "relatedComponents": [
        {
          "slug": "image-preview",
          "relation": "独立模式下内嵌全屏预览，单图预览入口"
        },
        {
          "slug": "image-preview-group",
          "relation": "组内注册子图并统一打开多图预览"
        }
      ],
      "docFile": "docs/ai-image.md",
      "domain": "helper"
    },
    {
      "name": "FileContent 文件内容",
      "slug": "file-content",
      "kind": "component",
      "description": "渲染文件附件，支持图片预览和下载事件。",
      "aiSummary": "渲染文件附件，支持图片预览和下载事件。 源码位置：src/components/chat-content/file-content/file-content.vue。",
      "relatedComponents": [
        {
          "slug": "image-preview",
          "relation": "点击图片缩略图打开全屏预览"
        },
        {
          "slug": "user-message",
          "relation": "用户消息只读展示附件列表"
        }
      ],
      "docFile": "docs/file-content.md",
      "domain": "helper"
    },
    {
      "name": "ImageContent 图片内容",
      "slug": "image-content",
      "kind": "component",
      "description": "渲染 Markdown 图片 token。",
      "aiSummary": "渲染 Markdown 图片 token。 源码位置：src/components/markdown-token/image-content/image-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "解析图片 token 后挂载本组件"
        }
      ],
      "docFile": "docs/image-content.md",
      "domain": "helper"
    },
    {
      "name": "ImagePreviewGroup 图片预览组",
      "slug": "image-preview-group",
      "kind": "component",
      "description": "通过 provide/inject 管理同组图片预览。",
      "aiSummary": "通过 provide/inject 管理同组图片预览。 源码位置：src/components/image-preview/image-preview-group.vue。",
      "relatedComponents": [
        {
          "slug": "ai-image",
          "relation": "子级注册并参与多图预览集合"
        },
        {
          "slug": "image-preview",
          "relation": "内置实例承载多图切换与工具栏"
        }
      ],
      "docFile": "docs/image-preview-group.md",
      "domain": "helper"
    },
    {
      "name": "ImagePreview 图片预览",
      "slug": "image-preview",
      "kind": "component",
      "description": "图片全屏预览容器，支持缩放、旋转、下载工具栏。",
      "aiSummary": "图片全屏预览容器，支持缩放、旋转、下载工具栏。 源码位置：src/components/image-preview/image-preview.vue。",
      "relatedComponents": [
        {
          "slug": "ai-image",
          "relation": "独立模式下由 AiImage 打开预览"
        },
        {
          "slug": "image-preview-group",
          "relation": "组内容器内持有一个实例做多图切换"
        },
        {
          "slug": "file-content",
          "relation": "文件列表点击缩略图触发预览"
        }
      ],
      "docFile": "docs/image-preview.md",
      "domain": "helper"
    },
    {
      "name": "PreviewToolbar 图片预览工具栏",
      "slug": "preview-toolbar",
      "kind": "component",
      "description": "图片预览的缩放、旋转、下载等工具按钮。",
      "aiSummary": "图片预览的缩放、旋转、下载等工具按钮。 源码位置：src/components/image-preview/preview-toolbar.vue。",
      "relatedComponents": [],
      "docFile": "docs/preview-toolbar.md",
      "domain": "helper"
    },
    {
      "name": "ActivityMessage 活动消息",
      "slug": "activity-message",
      "kind": "component",
      "description": "按 activityType 分发 FlowAgent、知识召回、引用文档等活动内容。",
      "aiSummary": "按 activityType 分发 FlowAgent、知识召回、引用文档等活动内容。 源码位置：src/components/chat-message/activity-message/activity-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "由 MessageRender 在 role 为 activity 时创建"
        },
        {
          "slug": "assistant-message",
          "relation": "常与助手回复相邻，描述检索或执行背景"
        }
      ],
      "docFile": "docs/activity-message.md",
      "domain": "message"
    },
    {
      "name": "AssistantMessage AI 助手消息",
      "slug": "assistant-message",
      "kind": "component",
      "description": "渲染助手消息主体、工具调用与文件内容，默认插槽可覆盖正文渲染。",
      "aiSummary": "渲染助手消息主体、工具调用与文件内容，默认插槽可覆盖正文渲染。 源码位置：src/components/chat-message/assistant-message/assistant-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "由 MessageRender 在 role 为 assistant 时创建"
        },
        {
          "slug": "tool-message",
          "relation": "工具结果通过 toolCall.toolMessage 内联或独立 tool 消息关联展示"
        },
        {
          "slug": "toolcall-render",
          "relation": "多条工具调用由 ToolcallRender 统一渲染"
        }
      ],
      "docFile": "docs/assistant-message.md",
      "domain": "message"
    },
    {
      "name": "InfoMessage 信息消息",
      "slug": "info-message",
      "kind": "component",
      "description": "渲染居中的系统信息提示。",
      "aiSummary": "渲染居中的系统信息提示。 源码位置：src/components/chat-message/info-message/info-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "由 MessageRender 在 role 为 info 时创建"
        },
        {
          "slug": "message-container",
          "relation": "嵌入消息列表时由 MessageContainer 统一布局与滚动"
        }
      ],
      "docFile": "docs/info-message.md",
      "domain": "message"
    },
    {
      "name": "LoadingMessage 加载消息",
      "slug": "loading-message",
      "kind": "component",
      "description": "消息列表中的加载占位，默认使用 AiLoading，也支持默认插槽覆盖。",
      "aiSummary": "消息列表中的加载占位，默认使用 AiLoading，也支持默认插槽覆盖。 源码位置：src/components/chat-message/loading-message/loading-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "在消息列表末尾自动追加 Loading 消息组"
        },
        {
          "slug": "message-render",
          "relation": "role 为 loading 时由 MessageRender 渲染"
        },
        {
          "slug": "ai-loading",
          "relation": "内部使用 AiLoading 基础组件"
        }
      ],
      "docFile": "docs/loading-message.md",
      "domain": "message"
    },
    {
      "name": "MessageRender 消息渲染器",
      "slug": "message-render",
      "kind": "component",
      "description": "按 message.role 分发到用户、助手、工具、推理、活动、中断等消息组件。",
      "aiSummary": "按 message.role 分发到用户、助手、工具、推理、活动、中断等消息组件。 源码位置：src/components/chat-message/message-render/message-render.vue。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "在 MessageContainer 中按组调用以渲染每条消息"
        },
        {
          "slug": "assistant-message",
          "relation": "role 为 assistant 时渲染 AI 回复与工具调用"
        },
        {
          "slug": "user-message",
          "relation": "role 为 user 时渲染用户消息"
        },
        {
          "slug": "interrupt-message",
          "relation": "role 为 interrupt 时渲染 InterruptMessageRender"
        }
      ],
      "docFile": "docs/message-render.md",
      "domain": "message"
    },
    {
      "name": "ReasoningMessage 推理消息",
      "slug": "reasoning-message",
      "kind": "component",
      "description": "渲染推理过程，覆盖加载、错误与 Markdown 内容展示。",
      "aiSummary": "渲染推理过程，覆盖加载、错误与 Markdown 内容展示。 源码位置：src/components/chat-message/reasoning-message/reasoning-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "由 MessageRender 在 role 为 reasoning 时创建"
        },
        {
          "slug": "assistant-message",
          "relation": "推理结束后通常紧跟 Assistant 的正式回复"
        },
        {
          "slug": "markdown-content",
          "relation": "内容区通过 Markdown 渲染推理文本"
        }
      ],
      "docFile": "docs/reasoning-message.md",
      "domain": "message"
    },
    {
      "name": "ToolMessage 工具消息",
      "slug": "tool-message",
      "kind": "component",
      "description": "渲染工具返回内容，JSON 场景交给 DescPanel 展示。",
      "aiSummary": "渲染工具返回内容，JSON 场景交给 DescPanel 展示。 源码位置：src/components/chat-message/tool-message/tool-message.vue。",
      "relatedComponents": [
        {
          "slug": "assistant-message",
          "relation": "结果常作为 assistant 消息中 toolCall.toolMessage 内联展示"
        },
        {
          "slug": "message-render",
          "relation": "独立 tool 角色消息由 MessageRender 渲染为 ToolMessage"
        },
        {
          "slug": "desc-panel",
          "relation": "内部使用 DescPanel 展示「返回内容」"
        }
      ],
      "docFile": "docs/tool-message.md",
      "domain": "message"
    },
    {
      "name": "UserMessage 用户消息",
      "slug": "user-message",
      "kind": "component",
      "description": "渲染用户消息，支持文本、键值、Markdown、引用、文件和编辑态输入。",
      "aiSummary": "渲染用户消息，支持文本、键值、Markdown、引用、文件和编辑态输入。 源码位置：src/components/chat-message/user-message/user-message.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "由 MessageRender 在 role 为 user 时创建"
        },
        {
          "slug": "message-tools",
          "relation": "消息工具栏交互与状态由 MessageTools 体系承载"
        },
        {
          "slug": "message-container",
          "relation": "嵌入列表时由 MessageContainer 管理分组与多选"
        }
      ],
      "docFile": "docs/user-message.md",
      "domain": "message"
    },
    {
      "name": "AnimationText 动画文本",
      "slug": "animation-text",
      "kind": "component",
      "description": "按文本增量播放流式动画。",
      "aiSummary": "按文本增量播放流式动画。 源码位置：src/components/animation-text/animation-text.vue。",
      "relatedComponents": [
        {
          "slug": "use-animation-text",
          "relation": "提供 chunk 拆分与 animationStyle 的 composable"
        },
        {
          "slug": "markdown-content",
          "relation": "流式 Markdown 中可与渐显策略配合"
        }
      ],
      "docFile": "docs/animation-text.md",
      "domain": "rendering"
    },
    {
      "name": "CiteContent 引用内容",
      "slug": "cite-content",
      "kind": "component",
      "description": "渲染输入或消息中的引用片段。",
      "aiSummary": "渲染输入或消息中的引用片段。 源码位置：src/components/chat-content/cite-content/cite-content.vue。",
      "relatedComponents": [
        {
          "slug": "chat-input",
          "relation": "输入区展示待发送引用内容"
        }
      ],
      "docFile": "docs/cite-content.md",
      "domain": "rendering"
    },
    {
      "name": "CodeContent 代码块",
      "slug": "code-content",
      "kind": "component",
      "description": "渲染 Markdown 代码块，支持高亮、复制和 header 插槽。",
      "aiSummary": "渲染 Markdown 代码块，支持高亮、复制和 header 插槽。 源码位置：src/components/markdown-token/code-content/code-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "解析 Markdown 后生成 fence token 并渲染本组件"
        }
      ],
      "docFile": "docs/code-content.md",
      "domain": "rendering"
    },
    {
      "name": "CommonErrorContent 错误内容",
      "slug": "common-error-content",
      "kind": "component",
      "description": "展示统一错误提示内容。",
      "aiSummary": "展示统一错误提示内容。 源码位置：src/components/chat-content/common-error-content/common-error-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "Markdown 渲染错误态展示"
        },
        {
          "slug": "reasoning-message",
          "relation": "推理消息错误态展示"
        }
      ],
      "docFile": "docs/common-error-content.md",
      "domain": "rendering"
    },
    {
      "name": "ContentRender 内容渲染器",
      "slug": "content-render",
      "kind": "component",
      "description": "按 MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。",
      "aiSummary": "按 MessageContentType 分发 Markdown、文本、引用、键值、图片等内容。 源码位置：src/components/chat-content/content-render/content-render.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "文本类 Markdown 正文的默认渲染实现"
        },
        {
          "slug": "reference-content",
          "relation": "引用文档数组类型的列表渲染"
        },
        {
          "slug": "assistant-message",
          "relation": "AI 回复中默认通过本组件渲染正文"
        }
      ],
      "docFile": "docs/content-render.md",
      "domain": "rendering"
    },
    {
      "name": "DescPanel 描述面板",
      "slug": "desc-panel",
      "kind": "component",
      "description": "将文本或 JSON 内容降级为可读描述面板。",
      "aiSummary": "将文本或 JSON 内容降级为可读描述面板。 源码位置：src/components/tool-call/desc-panel/desc-panel.vue。",
      "relatedComponents": [
        {
          "slug": "toolcall-render",
          "relation": "工具调用详情中渲染描述与参数"
        },
        {
          "slug": "highlight-keyword",
          "relation": "键值与文本匹配关键词高亮"
        }
      ],
      "docFile": "docs/desc-panel.md",
      "domain": "rendering"
    },
    {
      "name": "KeyValueContent 键值内容",
      "slug": "key-value-content",
      "kind": "component",
      "description": "以键值列表展示结构化内容。",
      "aiSummary": "以键值列表展示结构化内容。 源码位置：src/components/chat-content/key-value-content/key-value-content.vue。",
      "relatedComponents": [
        {
          "slug": "user-message",
          "relation": "用户消息内展示结构化附加信息"
        }
      ],
      "docFile": "docs/key-value-content.md",
      "domain": "rendering"
    },
    {
      "name": "LatexContent LaTeX 公式",
      "slug": "latex-content",
      "kind": "component",
      "description": "使用 KaTeX 渲染 LaTeX 公式内容。",
      "aiSummary": "使用 KaTeX 渲染 LaTeX 公式内容。 源码位置：src/components/markdown-token/latex-content/latex-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "插件解析 $...$ / $$...$$ 后生成数学 token 并挂载本组件"
        }
      ],
      "docFile": "docs/latex-content.md",
      "domain": "rendering"
    },
    {
      "name": "MarkdownContent Markdown 内容渲染",
      "slug": "markdown-content",
      "kind": "component",
      "description": "Markdown 主渲染器，集成代码块、公式、错误降级和 codeHeader 插槽。",
      "aiSummary": "Markdown 主渲染器，集成代码块、公式、错误降级和 codeHeader 插槽。 源码位置：src/components/chat-content/markdown-content/markdown-content.vue。",
      "relatedComponents": [
        {
          "slug": "code-content",
          "relation": "fence 代码块语法高亮与复制"
        },
        {
          "slug": "latex-content",
          "relation": "数学公式 token 的 KaTeX 渲染"
        },
        {
          "slug": "mermaid-content",
          "relation": "mermaid 代码块的图表渲染"
        },
        {
          "slug": "content-render",
          "relation": "上层按类型分发到本组件渲染 Markdown 字符串"
        }
      ],
      "docFile": "docs/markdown-content.md",
      "domain": "rendering"
    },
    {
      "name": "MermaidContent Mermaid 图表",
      "slug": "mermaid-content",
      "kind": "component",
      "description": "渲染 Mermaid 图表并处理渲染事件。",
      "aiSummary": "渲染 Mermaid 图表并处理渲染事件。 源码位置：src/components/markdown-token/mermaid-content/mermaid-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "解析 mermaid 类型 fence 代码块后传入 token"
        }
      ],
      "docFile": "docs/mermaid-content.md",
      "domain": "rendering"
    },
    {
      "name": "ReferenceContent 引用来源",
      "slug": "reference-content",
      "kind": "component",
      "description": "渲染引用文档/来源列表。",
      "aiSummary": "渲染引用文档/来源列表。 源码位置：src/components/chat-content/reference-content/reference-content.vue。",
      "relatedComponents": [
        {
          "slug": "content-render",
          "relation": "ReferenceDocument 类型内容路由到本组件"
        },
        {
          "slug": "activity-message",
          "relation": "知识库等活动场景内嵌引用列表"
        }
      ],
      "docFile": "docs/reference-content.md",
      "domain": "rendering"
    },
    {
      "name": "TextContent 文本内容",
      "slug": "text-content",
      "kind": "component",
      "description": "渲染纯文本内容。",
      "aiSummary": "渲染纯文本内容。 源码位置：src/components/chat-content/text-content/text-content.vue。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "需要富文本时的替代方案"
        },
        {
          "slug": "user-message",
          "relation": "用户消息中纯文本内容展示"
        }
      ],
      "docFile": "docs/text-content.md",
      "domain": "rendering"
    },
    {
      "name": "ChatContainer 聊天容器",
      "slug": "chat-container",
      "kind": "component",
      "description": "完整对话容器，组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab。",
      "aiSummary": "完整对话容器，组合消息列表、输入区、快捷指令、执行摘要、分享选择和自定义 Tab。 源码位置：src/components/chat-container/chat-container.vue。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "消息列表与滚动区域"
        },
        {
          "slug": "chat-input",
          "relation": "对话输入与快捷指令入口"
        },
        {
          "slug": "shortcut-render",
          "relation": "快捷指令表单浮层"
        },
        {
          "slug": "execution-summary",
          "relation": "执行摘要侧栏与定位"
        },
        {
          "slug": "selection-footer",
          "relation": "多选分享底部操作栏"
        }
      ],
      "docFile": "docs/chat-container.md",
      "domain": "setup"
    },
    {
      "name": "MessageContainer 消息列表容器",
      "slug": "message-container",
      "kind": "component",
      "description": "负责消息分组渲染、滚动控制、工具栏和消息插槽透传。",
      "aiSummary": "负责消息分组渲染、滚动控制、工具栏和消息插槽透传。 源码位置：src/components/chat-message/message-container/message-container.vue。",
      "relatedComponents": [
        {
          "slug": "message-render",
          "relation": "按组渲染每条消息时委托 MessageRender"
        },
        {
          "slug": "chat-input",
          "relation": "常与 ChatInput 组合构成完整对话界面"
        },
        {
          "slug": "loading-message",
          "relation": "末尾为用户消息时自动追加 Loading 消息组"
        },
        {
          "slug": "interrupt-message",
          "relation": "透传 onInterruptResume；末条 interrupt 消息不触发组 hover"
        }
      ],
      "docFile": "docs/message-container.md",
      "domain": "setup"
    }
  ],
  "composables": [
    {
      "name": "useAnimationText",
      "slug": "use-animation-text",
      "kind": "composable",
      "description": "文本淡入动画的组合式函数。将响应式文本按**增量**拆分为独立 chunk，每个新增 chunk 对应一次淡入动画，适用于 AI 流式输出的逐段渐显效果。",
      "aiSummary": "useAnimationText 接收 MaybeRef<string> 与可选 AnimationConfig（fadeDuration、easing），返回 chunks 与 animationStyle。 监听文本变化：前缀追加则增量拆分为新 chunk 并触发动画，否则重置为单 chunk，适合流式输出逐段淡入。 全局样式已含 ai-markdown-fade-in。AnimationText 组件内部封装同一逻辑。",
      "relatedComponents": [
        {
          "slug": "animation-text",
          "relation": "封装 chunks 与样式渲染"
        },
        {
          "slug": "markdown-content",
          "relation": "流式 Markdown 文本展示场景可组合使用"
        }
      ],
      "docFile": "docs/use-animation-text.md"
    },
    {
      "name": "useClipboard",
      "slug": "use-clipboard",
      "kind": "composable",
      "description": "复制文本到剪贴板的组合式函数。内置两级降级策略，并自动通过 bkui-vue `Message` 提示复制结果，调用方无需关心成功/失败处理。",
      "aiSummary": "useClipboard 返回 { copy }，copy(text) 将字符串写入剪贴板，返回 Promise<void>。 优先使用 navigator.clipboard.writeText，失败或不支持时降级为隐藏 textarea + execCommand('copy')。 成功/失败均通过 bkui-vue Message 提示，调用方无需处理结果。CodeContent、MessageContainer、UserMessage 的复制能力内部使用。",
      "relatedComponents": [
        {
          "slug": "code-content",
          "relation": "复制代码块时取 innerText 后调用 copy"
        },
        {
          "slug": "message-container",
          "relation": "AI 消息复制工具回调"
        },
        {
          "slug": "user-message",
          "relation": "用户消息复制工具回调"
        }
      ],
      "docFile": "docs/use-clipboard.md"
    },
    {
      "name": "useCommandSelection",
      "slug": "use-command-selection",
      "kind": "composable",
      "description": "为 `edix` 富文本编辑器提供光标位置追踪能力的组合式函数。内部封装一个 `EditorCommand`，由编辑器调用后将光标的行列信息存入响应式变量，供后续编辑命令（如插入 tag、删除关键词）精确定位。",
      "aiSummary": "useCommandSelection 无参数，返回 commandSelection、docSnapshot、GetCursorPosition、GetDocSnapshot。 GetCursorPosition 写入光标行列；GetDocSnapshot 将当前文档快照写入 docSnapshot，供外部 modelValue 与编辑器比对同步。 仅在 AiSlashInput（@ 菜单插入与 modelValue 同步）内部使用。",
      "relatedComponents": [
        {
          "slug": "chat-input",
          "relation": "AiSlashInput 内部使用"
        }
      ],
      "docFile": "docs/use-command-selection.md"
    },
    {
      "name": "useContainerScroll",
      "slug": "use-container-scroll",
      "kind": "composable",
      "description": "为消息容器提供滚动控制的组合式函数对，通过 **Provider/Consumer** 模式在父子组件间共享滚动状态。",
      "aiSummary": "useContainerScrollProvider 在滚动容器与底部锚点上绑定 IntersectionObserver、scroll、wheel，提供 isScrollBottom、scrollBottomHeight、autoScrollEnabled、toScrollBottom/toScrollTop 及防抖「返回底部」按钮状态。 useContainerScrollConsumer 通过 inject 在子组件中获取同一套控制，无需 props 透传。 典型用于流式输出时仅在用户位于底部时自动滚底。MessageContainer 与 ScrollBtn 配合使用。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "Provider 挂载于消息列表滚动区域"
        },
        {
          "slug": "scroll-btn",
          "relation": "使用 debouncedShowScrollBottomBtn 与 toScrollBottom"
        },
        {
          "slug": "chat-container",
          "relation": "组合消息区与输入区时的整体布局上下文"
        }
      ],
      "docFile": "docs/use-container-scroll.md"
    },
    {
      "name": "useCustomTab",
      "slug": "use-custom-tab",
      "kind": "composable",
      "description": "Provider/Consumer 模式的自定义 Tab 管理，用于 `ChatContainer` 侧边栏的 Tab 动态管理。Provider 在 `ChatContainer` 中创建，Consumer 在任意后代组件中注入使用。",
      "aiSummary": "useCustomTabProvider 返回 tabs、selectedTab、isCollapse 及 add/remove/selectCustomTab，并通过 provide 共享；可选 onTabChange 在切换时拉取数据。 useCustomTabConsumer 在后代注入同一套 API，常用于侧栏动态节点详情等。EXECUTION_TAB_NAME 标识默认「执行情况」Tab。 ChatContainer 侧栏集成 Provider 与 Tab UI。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "Provider 与侧栏 Tab 主场景"
        }
      ],
      "docFile": "docs/use-custom-tab.md"
    },
    {
      "name": "useFlowNodeActions",
      "slug": "use-flow-node-actions",
      "kind": "composable",
      "description": "聚合 FlowAgent 节点行尾操作（详情 / 重试 / 跳过）为声明式视图模型列表，显隐与 resume 回调收敛于此。",
      "aiSummary": "useFlowNodeActions 接收 onInterruptResume 与 openNodeDetail，返回 getNodeActions(task, node)。 失败节点按 retryable/skippable 展示重试/跳过，详情恒在末尾；点击 resume 时不传 interrupt。",
      "relatedComponents": [
        {
          "slug": "flow-agent-content",
          "relation": "FlowAgentContent 内部消费，驱动节点行尾按钮组渲染"
        }
      ],
      "docFile": "docs/use-flow-node-actions.md"
    },
    {
      "name": "useFullScreen",
      "slug": "use-full-screen",
      "kind": "composable",
      "description": "基于浏览器原生 Fullscreen API 的全屏控制组合式函数，自动嗅探标准与 WebKit 前缀，状态与 ESC 退出保持同步。",
      "aiSummary": "useFullScreen 将目标元素（或 document.documentElement）以浏览器原生全屏展示。 模块加载时一次性嗅探 requestFullscreen / webkitRequestFullscreen，返回 isSupported、只读 isFullScreen 与 enter/exit/toggle。 监听 fullscreenchange 同步 ESC 等外部退出；ChatContainer 侧栏全屏按钮使用此 composable。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "侧栏 .ai-full-screen-wrapper 全屏切换"
        },
        {
          "slug": "tool-btn",
          "relation": "全屏按钮通过插槽渲染 FullScreenIcon"
        }
      ],
      "docFile": "docs/use-full-screen.md"
    },
    {
      "name": "useGlobalConfig",
      "slug": "use-global-config",
      "kind": "composable",
      "description": "在聊天根容器与子组件之间通过 provide/inject 共享全局展示配置（字号主题档位、是否支持上传等）。",
      "aiSummary": "useGlobalConfig 接收 GlobalConfig（含 size?: ComputedRef<AiSizeMode>、supportUpload: ComputedRef<boolean>），以 GLOBAL_CONFIG_TOKEN provide 给后代； injectGlobalConfig 在子组件中取出配置，无 Provider 时返回 undefined。ChatContainer 在 setup 中调用 useGlobalConfig 注入 size 与 supportUpload； 后代组件可通过 injectGlobalConfig 读取配置；字号主题主要通过根节点 data-ai-size 与 CSS 变量生效。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "根容器调用 useGlobalConfig 注入 supportUpload"
        }
      ],
      "docFile": "docs/use-global-config.md"
    },
    {
      "name": "useMenuKeydown",
      "slug": "use-menu-keydown",
      "kind": "composable",
      "description": "为弹出菜单提供键盘导航能力的组合式函数。在 `onMounted` 时于 **`window` 捕获阶段**注册 `keydown` 监听，在 `onScopeDispose` 时自动移除，通过 `menuRef.offsetParent` 检测菜单可见性来决定是否响应按键。",
      "aiSummary": "useMenuKeydown 接收 items、menuRef、onSelect，在 window 捕获阶段监听 keydown；菜单不可见（offsetParent 为空）或列表为空时不响应。 维护 activeIndex，处理 ArrowUp/ArrowDown 循环与 Enter 选中，并 scrollIntoView 当前 .is-active 项。 AiSlashMenu、AiPromptList（ChatInput 子模块）内部使用。",
      "relatedComponents": [
        {
          "slug": "chat-input",
          "relation": "AiSlashMenu / AiPromptList 键盘导航"
        }
      ],
      "docFile": "docs/use-menu-keydown.md"
    },
    {
      "name": "useMessageGroup",
      "slug": "use-message-group",
      "kind": "composable",
      "description": "核心消息分组逻辑，将原始 `Message[]` 数组转换为结构化的 `MessageGroup[]`。处理 Tool 消息合并、Loading 自动注入、执行摘要过滤和消息多选/分享等逻辑。",
      "aiSummary": "useMessageGroup 接收 keyword、messages、selectedUserMessages，通过 watchEffect 产出 messageGroups（User/Assistant/Tool 合并、末尾 Loading 注入且占位 id 为 LOADING_MESSAGE_ID、pause 与分享勾选等）。 executionGroups 供侧边执行摘要过滤，并暴露 isShareMode、全选与 onConfirmShare。 ChatContainer 组装后传给 MessageContainer；ExecutionSummary 消费 executionGroups。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "调用并传入 MessageContainer"
        },
        {
          "slug": "message-container",
          "relation": "必填 messageGroups 数据源"
        },
        {
          "slug": "execution-summary",
          "relation": "使用 executionGroups 与定位"
        }
      ],
      "docFile": "docs/use-message-group.md"
    },
    {
      "name": "useObserverVisibleList",
      "slug": "use-observer-visible-list",
      "kind": "composable",
      "description": "基于 `ResizeObserver` 的容器宽度感知组合式函数：遍历列表项的实际 `offsetWidth`，使用贪心算法计算在容器中能完整显示的项目子集，并为\"更多\"按钮动态预留空间。",
      "aiSummary": "useObserverVisibleList 根据 containerRef、itemRefs、gap、ComputedRef items 与可选 moreItemRef，用 ResizeObserver + 贪心算法得到 visibleItems。 依赖每项真实 offsetWidth，隐藏项需仍挂载于 DOM。返回 calculateVisibleMenuItems 供必要时手动触发。 ShortcutBtns 内部用于快捷指令溢出收入「更多」菜单。",
      "relatedComponents": [
        {
          "slug": "shortcut-btns",
          "relation": "唯一内置使用方"
        }
      ],
      "docFile": "docs/use-observer-visible-list.md"
    },
    {
      "name": "useParentScrolling",
      "slug": "use-parent-scrolling",
      "kind": "composable",
      "description": "向上递归查找**最近可滚动祖先**，监听其 `scroll` / `scrollend` 事件，提供 `isScrolling` 状态。常用于滚动时自动关闭浮层、禁用交互等场景。",
      "aiSummary": "useParentScrolling(domRef) 在挂载后通过 getScrollParent 找到最近可滚动祖先，监听 scroll 与 scrollend，返回 isScrolling 与 scrollParent。 scroll 时将 isScrolling 置 true，300ms 无滚动或 scrollend 时置 false，适合滚动时隐藏浮层等交互。getScrollParent 可单独导出使用。 当前源码无组件内引用，供业务或后续浮层组件按需集成。",
      "relatedComponents": [],
      "docFile": "docs/use-parent-scrolling.md"
    }
  ],
  "types": [
    {
      "name": "常量枚举",
      "slug": "constants",
      "kind": "type",
      "description": "`@blueking/chat-x` 导出的常量和枚举类型。",
      "aiSummary": "汇总 MessageRole、MessageStatus（含 Fetching 请求中）、MessageContentType、MessageToolsStatus、MessageState、Z-Index 与 CONST_MESSAGE_TOOLS 等导出常量。 用于构造消息、配置 MessageContainer 工具栏与输入态，以及层级与默认快捷指令。与类型 messages 配套使用。",
      "relatedComponents": [
        {
          "slug": "message-tools",
          "relation": "默认工具 ID 与展示"
        },
        {
          "slug": "chat-input",
          "relation": "MessageState 与快捷指令"
        },
        {
          "slug": "message-container",
          "relation": "工具栏与消息态"
        }
      ],
      "docFile": "docs/constants.md"
    },
    {
      "name": "中断类型 Interrupt",
      "slug": "interrupt",
      "kind": "type",
      "description": "AG-UI human-in-the-loop 中断相关类型，含 Interrupt、UserQuestion、InterruptMessage 与 resume 回调。",
      "aiSummary": "定义 RunFinishedOutcome、BaseInterrupt、AIDevToolApprovalInterrupt、AIDevToolApprovalResume、UserQuestionInterrupt、InterruptResult、BaseResume、InterruptMessage 与 OnInterruptResume。 与 MessageRole.Interrupt、InterruptMessageRender、UserQuestionCard、ToolApprovalCard 配合，对应 RUN_FINISHED outcome。",
      "relatedComponents": [
        {
          "slug": "interrupt-message",
          "relation": "根据 outcome.interrupts 与 reason 渲染中断 UI，success 时按 result.reason 回显审批单或用户回答"
        },
        {
          "slug": "user-question-card",
          "relation": "UserQuestion 交互面板，挂载在 ChatInput 上方"
        },
        {
          "slug": "tool-approval-card",
          "relation": "AIDevToolApproval 专用卡片"
        },
        {
          "slug": "message-render",
          "relation": "role 为 interrupt 时派发 InterruptMessageRender"
        }
      ],
      "docFile": "docs/interrupt.md"
    },
    {
      "name": "消息类型",
      "slug": "messages",
      "kind": "type",
      "description": "`@blueking/chat-x` 提供了完整的消息类型定义，用于构建 AI 对话消息。",
      "aiSummary": "文档说明 Message 联合类型、BaseMessage、MessageRole、MessageStatus、User/Assistant/Tool/Activity/Reasoning 等具体形态及 MessageContentType。 业务构造 messages 数组供 ChatContainer/MessageContainer 渲染；Tool 消息经 useMessageGroup 注入 Assistant。可声明合并扩展 AIBluekingMessageMap。",
      "relatedComponents": [
        {
          "slug": "message-container",
          "relation": "列表渲染与工具栏"
        },
        {
          "slug": "message-render",
          "relation": "按 role 分发渲染"
        },
        {
          "slug": "chat-container",
          "relation": "数据源与交互入口"
        }
      ],
      "docFile": "docs/messages.md"
    },
    {
      "name": "用户问题 Schema",
      "slug": "schema",
      "kind": "type",
      "description": "历史 human-in-the-loop 用户问题 JSON Schema 工具；新 UserQuestion 中断协议以 Interrupt 文档为准。",
      "aiSummary": "schema.ts 仍导出 UserSingleChoiceQuestionSchema、UserMultiChoiceQuestionSchema、UserQuestionSchema 及 FromSchema 推导类型； 新的 aidev:user_question 中断不再通过 BaseInterrupt.responseSchema 区分单选/多选，而是在 metadata.questions[].multiSelect 中描述题型。",
      "relatedComponents": [
        {
          "slug": "interrupt",
          "relation": "新 UserQuestionInterrupt 与 UserQuestionResume 协议"
        },
        {
          "slug": "user-question-card",
          "relation": "根据 metadata.questions 渲染单选、多选与 Others 输入"
        }
      ],
      "docFile": "docs/schema.md"
    }
  ],
  "directives": [
    {
      "name": "OverflowTips",
      "slug": "overflow-tips",
      "kind": "directive",
      "description": "当元素文本**水平溢出**（`scrollWidth > clientWidth`）时，鼠标悬停自动弹出 Tippy tooltip 显示完整内容；未溢出时不创建实例，零性能损耗。",
      "aiSummary": "v-overflow-tips 在元素水平溢出（scrollWidth > clientWidth）时于 mouseenter 懒创建 Tippy，展示完整文本或自定义 text/content。 结合 IntersectionObserver 仅在可见时绑定悬停；隐藏时销毁实例。指令值为 Partial<TippyProps> 与 disabled 等。 DescPanel、ExecutionSummary、ToolcallRender、AiSlashMenu 等用于标题或列表溢出提示。",
      "relatedComponents": [
        {
          "slug": "desc-panel",
          "relation": "工具描述面板溢出"
        },
        {
          "slug": "execution-summary",
          "relation": "执行摘要标签溢出"
        },
        {
          "slug": "toolcall-render",
          "relation": "工具标题行溢出"
        },
        {
          "slug": "chat-input",
          "relation": "AiSlashMenu 资源项（侧栏子模块）"
        }
      ],
      "docFile": "docs/overflow-tips.md"
    }
  ],
  "plugins": [
    {
      "name": "markdownItContainer",
      "slug": "markdown-container",
      "kind": "plugin",
      "description": "Markdown-it 自定义容器插件，支持 ::: name ... ::: 语法，用于对齐块等场景。",
      "aiSummary": "markdownItContainer 基于 markdown-it-container，支持字符串或正则匹配容器名；MarkdownContent 中用于 hljs-left/center/right 对齐。 渲染为带 class 的 div，与 tokens-to-vnodes 及样式配合。",
      "relatedComponents": [
        {
          "slug": "markdown-content",
          "relation": "渲染管线中注册插件"
        }
      ],
      "docFile": "docs/markdown-container.md"
    },
    {
      "name": "markdownItLatex",
      "slug": "markdown-latex",
      "kind": "plugin",
      "description": "Markdown-it LaTeX 解析插件，用于解析 LaTeX 数学公式语法。",
      "aiSummary": "markdownItLatex 为 markdown-it 插件，解析 $...$、$$...$$、\\\\(...\\\\)、\\\\[...\\\\] 为 math_inline / math_block token，可选 LatexOption.replaceAlignStart。 不负责渲染，KaTeX 在 LatexContent 中异步渲染。与 Markdown 管道、ContentRender 中的公式展示链路配合。",
      "relatedComponents": [
        {
          "slug": "latex-content",
          "relation": "消费 math token 并 KaTeX 渲染"
        },
        {
          "slug": "markdown-content",
          "relation": "Markdown 渲染管线"
        },
        {
          "slug": "content-render",
          "relation": "消息内容统一渲染入口"
        }
      ],
      "docFile": "docs/markdown-latex.md"
    },
    {
      "name": "markdownItMermaid",
      "slug": "markdown-mermaid",
      "kind": "plugin",
      "description": "Markdown-it Mermaid 解析插件，用于解析 Mermaid 图表代码块。",
      "aiSummary": "markdownItMermaid 为 markdown-it 插件，将 ```mermaid 代码块转为带 data-mermaid-code、data-mermaid-idx 的占位 DOM，便于前端挂载渲染。 实际绘图由 Mermaid 动态导入在 MermaidContent 中完成，支持流式场景节流与缓存。ContentRender 驱动完整消息 Markdown 流程。",
      "relatedComponents": [
        {
          "slug": "mermaid-content",
          "relation": "解析占位并渲染图表"
        },
        {
          "slug": "markdown-content",
          "relation": "Markdown fence 管线"
        },
        {
          "slug": "content-render",
          "relation": "消息块级内容渲染"
        }
      ],
      "docFile": "docs/markdown-mermaid.md"
    }
  ],
  "utils": [],
  "edix": [],
  "i18n": [],
  "icons": [],
  "theme": [
    {
      "name": "主题配置",
      "slug": "theme",
      "kind": "theme",
      "description": "`@blueking/chat-x` 使用 SCSS 变量和 CSS 类来控制样式，支持通过覆盖变量或样式来自定义主题。",
      "aiSummary": "说明通过 SCSS 变量（尺寸、颜色、z-index）、字号主题 CSS 变量（data-ai-size 切换 small/normal）与 CSS 类覆盖自定义主题。 ChatContainer.size 控制根节点 data-ai-size；浮层同步 document.body.dataset.aiSize。含渐变边框 mixin、骨架屏类 ai-skeleton-element 等。",
      "relatedComponents": [
        {
          "slug": "chat-container",
          "relation": "整体布局与侧栏"
        },
        {
          "slug": "chat-input",
          "relation": "输入区与渐变边框"
        },
        {
          "slug": "message-container",
          "relation": "消息区样式上下文"
        }
      ],
      "docFile": "docs/theme.md"
    }
  ]
}