diff --git a/CLAUDE.md b/CLAUDE.md index 315cdf7..3a65cb8 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -71,10 +71,10 @@ AI 智能客服系统,基于 Spring AI Alibaba + 通义千问 + PGVector,支 ### 模型配置管理 - **ai_model_config 表**: 存储大模型配置,支持多套配置按 App 类型(CHAT / PRODUCT_EXTRACT / EMBEDDING / RAG_REWRITE)独立管理。**所有模型参数(名称、温度、最大Token、API Key、Base URL 等)全部由此表管理,不再依赖 application.yml** - **激活互斥**: 同一 App 类型只能有一个 `is_active=true` 的配置,激活操作由 Service 层 `@Transactional` 保证 -- **启动 seed**: 首次启动时使用硬编码默认值写入 DB(`qwen-turbo` / `text-embedding-v2`),用户可在前端修改 +- **启动 seed**: 首次启动时使用硬编码默认值写入 DB(`qwen-turbo` / `text-embedding-v2`),用户可在前端修改。**DashScope 自动配置已禁用**(`spring.ai.dashscope.enabled=false`),api-key 可选——yml 与 DB 均未配置 api-key 不影响启动,实际调用 AI 功能前在前端「AI 大模型配置管理」页面配置即可 - **启动校验**: `ModelConfigLoader` 在应用就绪后检查 DB 中每种 App 类型是否有活跃配置,并对 DashScope 提供商比较 DB 与 yml 的 API Key 一致性 - **API Key 脱敏**: 前端展示时只显示前 4 位 + `****` + 后 4 位 -- **ChatModel 运行时切换**: 通过 `ChatModelFactory` 按 DB 活跃配置动态创建/缓存 ChatModel(包括 DashScope,不再复用 yml 自动配置的 Bean),配置变更时立即生效(无需重启) +- **ChatModel 运行时切换**: 通过 `ChatModelFactory` 按 DB 活跃配置动态创建/缓存 ChatModel(包括 DashScope,不再复用 yml 自动配置的 Bean),配置变更时立即生效(无需重启)。**OpenAI 兼容路径使用自定义 `completionsPath`**(与 EmbeddingModelFactory 的 embeddingsPath 对应),baseUrl 已含版本段的厂商(moonshot `/v1`、volcengine `/api/v3`、zhipu `/api/paas/v4`)设为 `/chat/completions`,其余使用默认 `/v1/chat/completions` - **EmbeddingModel 运行时切换**: 通过 `EmbeddingModelFactory` + `DynamicEmbeddingModel` 代理,按 DB 活跃配置动态创建/缓存 EmbeddingModel,`PgVectorStoreConfig` 和 `InMemoryVectorStoreConfig` 注入 `DynamicEmbeddingModel`,向量化模型配置变更后无需重启即可生效 - **多提供商支持**: DashScope(通义千问)+ OpenAI 兼容提供商(DeepSeek / 豆包 / Kimi / 智谱 / OpenAI),ChatModel 和 EmbeddingModel 均通过对应 API 手动构建 - **缓存刷新**: 配置增删改激活时 Controller 自动调用 `ChatModelFactory.clearCache()` + `EmbeddingModelFactory.clearCache()` + `AssistantApp.clearCache()` diff --git a/DEPLOY.md b/DEPLOY.md new file mode 100644 index 0000000..d602a95 --- /dev/null +++ b/DEPLOY.md @@ -0,0 +1,753 @@ +# AI 智能客服系统 Linux 部署详细教程 + +> 项目:AI 智能客服系统(Spring AI Alibaba + 通义千问 + PGVector) +> 适用服务器:Linux(CentOS 7/8、Ubuntu 20.04/22.04、Debian 等通用发行版) +> 部署方式:Docker 部署 PostgreSQL + PGVector 数据库,JDK 17 直接运行 Spring Boot Fat Jar +> 生成日期:2026-06-27 + +--- + +## 目录 + +1. [部署架构与端口规划](#1-部署架构与端口规划) +2. [服务器环境准备](#2-服务器环境准备) +3. [安装 Docker 与 Docker Compose](#3-安装-docker-与-docker-compose) +4. [Docker 部署 PostgreSQL + PGVector 数据库](#4-docker-部署-postgresql--pgvector-数据库) +5. [数据库初始化验证](#5-数据库初始化验证) +6. [后端项目打包](#6-后端项目打包) +7. [上传与生产配置](#7-上传与生产配置) +8. [启动后端服务](#8-启动后端服务) +9. [配置 AI 大模型(必做)](#9-配置-ai-大模型必做) +10. [开机自启:systemd 服务](#10-开机自启systemd-服务) +11. [Nginx 反向代理(可选)](#11-nginx-反向代理可选) +12. [日常运维与排错](#12-日常运维与排错) +13. [附:一键部署脚本](#13-附一键部署脚本) + +--- + +## 1. 部署架构与端口规划 + +``` +[浏览器/客户端] + │ :80 / :443(可选 Nginx) + ▼ +[ Linux 服务器 ] + ├── Docker 容器: postgres-pgvector :5432 ← 数据库 + └── JDK 17 进程: yu-ai-agent.jar :9090 ← 后端服务(含前端静态页面) +``` + +| 组件 | 端口 | 说明 | +|------|------|------| +| Spring Boot 后端 | 9090 | API + 前端管理页面(同源) | +| PostgreSQL | 5432 | 仅容器内 / 本机访问,不对公网开放 | + +**关键说明(务必先读)** + +- 本项目**前端页面已打包进 jar**(位于 `src/main/resources/static/`),部署时**无需单独部署前端**,访问 `http://服务器IP:9090/index.html` 即可。 +- 数据库表(`knowledge_category`、`knowledge_document`、`ai_model_config`、`chat_message` 等)由 `DatabaseInitConfig` 在应用启动时**自动创建**,向量表 `vector_store` 由 `PgVectorStore` 自动创建(`initializeSchema=true`),**无需手动执行 SQL**。 +- `application.yml` 中 `spring.ai.dashscope.enabled: false`,DashScope 自动配置已关闭;**即便没有 API Key 也能正常启动服务**,AI 功能在「AI 大模型配置管理」页面填入 Key 后热切换生效。 +- 模型名称、温度、最大 Token、API Key 等参数**全部在前端页面 / DB `ai_model_config` 表中管理**,yml 仅保留可选的种子 `api-key`。 + +--- + +## 2. 服务器环境准备 + +### 2.1 系统要求 + +| 项目 | 要求 | +|------|------| +| OS | Linux x86_64(CentOS 7+ / Ubuntu 20.04+) | +| CPU/内存 | 建议 2 核 4G 起步(知识库向量化较耗内存) | +| 磁盘 | 20G+(文档、向量数据) | +| 网络 | 服务器需能访问 `dashscope.aliyuncs.com`(通义千问)等 AI 提供商 API | + +### 2.2 基础工具安装 + +```bash +# Ubuntu / Debian +sudo apt update && sudo apt install -y wget curl vim tar unzip net-tools + +# CentOS / RHEL +sudo yum install -y wget curl vim tar unzip net-tools +``` + +### 2.3 防火墙放行端口 + +```bash +# Ubuntu (ufw) +sudo ufw allow 9090/tcp +sudo ufw reload + +# CentOS (firewalld) +sudo firewall-cmd --permanent --add-port=9090/tcp +sudo firewall-cmd --reload +``` + +> 若部署在云服务器(阿里云/腾讯云等),还需在**安全组**中放行 9090 端口。 + +--- + +## 3. 安装 Docker 与 Docker Compose + +### 3.1 一键安装 Docker + +```bash +# 使用阿里云镜像加速安装(国内推荐) +curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun + +# 启动并设置开机自启 +sudo systemctl start docker +sudo systemctl enable docker + +# 验证 +docker --version +docker compose version +``` + +### 3.2 配置 Docker 镜像加速(国内必做) + +```bash +sudo mkdir -p /etc/docker +sudo tee /etc/docker/daemon.json <<'EOF' +{ + "registry-mirrors": [ + "https://docker.m.daocloud.io", + "https://dockerproxy.com", + "https://docker.mirrors.ustc.edu.cn" + ] +} +EOF + +sudo systemctl daemon-reload +sudo systemctl restart docker +``` + +--- + +## 4. Docker 部署 PostgreSQL + PGVector 数据库 + +本项目原开发机使用 PostgreSQL + PGVector 扩展,部署时保持一致。`pgvector/pgvector` 镜像内置了 vector 扩展,开箱即用。 + +### 4.1 创建数据目录与 compose 文件 + +```bash +# 创建部署目录 +sudo mkdir -p /opt/support-bot/{db,data,app,logs} +cd /opt/support-bot + +# 创建 compose 文件 +sudo tee /opt/support-bot/docker-compose.yml <<'EOF' +version: "3.8" + +services: + postgres: + image: pgvector/pgvector:pg16 + container_name: support-bot-postgres + restart: always + ports: + - "5432:5432" + environment: + POSTGRES_USER: postgres + POSTGRES_PASSWORD: supportbot123 + POSTGRES_DB: support_bot + TZ: Asia/Shanghai + volumes: + - /opt/support-bot/data:/var/lib/postgresql/data + healthcheck: + test: ["CMD-SHELL", "pg_isready -U postgres -d support_bot"] + interval: 10s + timeout: 5s + retries: 5 +EOF +``` + +> **参数说明** +> - `pgvector/pgvector:pg16`:内置 PGVector 扩展的 PostgreSQL 16 镜像(与开发机 PG 12+ 兼容,建议用 16)。 +> - `POSTGRES_DB: support_bot`:自动创建本项目所需数据库。 +> - `POSTGRES_PASSWORD`:请修改为强密码,并同步修改后端配置。 +> - 数据持久化到宿主机 `/opt/support-bot/data`,容器重建不丢数据。 + +### 4.2 启动数据库 + +```bash +cd /opt/support-bot +sudo docker compose up -d + +# 查看状态(应为 healthy) +sudo docker compose ps +sudo docker logs -f support-bot-postgres +``` + +### 4.3 在数据库中启用 vector 扩展 + +进入容器执行(PGVector 扩展需在目标库中显式启用): + +```bash +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot -c "CREATE EXTENSION IF NOT EXISTS vector;" + +# 验证扩展已安装 +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot -c "\dx" +``` + +输出中应看到 `vector` 扩展。 + +> 说明:应用启动时 `PgVectorStore` 会自动创建 `vector_store` 表,但 vector 扩展本身需提前 `CREATE EXTENSION` 启用(上述命令已完成)。 + +--- + +## 5. 数据库初始化验证 + +确认数据库与扩展就绪: + +```bash +# 列出数据库 +sudo docker exec -it support-bot-postgres psql -U postgres -l + +# 查看 vector 扩展 +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot -c "SELECT extname FROM pg_extension;" +``` + +此时业务表(`knowledge_document` 等)尚不存在 —— 它们会在后端首次启动时由 `DatabaseInitConfig` 自动创建。**无需手动建表。** + +--- + +## 6. 后端项目打包 + +### 6.1 方式 A:在本机(Windows)打包后上传(推荐) + +项目根目录已含 `mvnw`,无需本机安装 Maven。 + +```bash +# 在项目根目录 D:\IdeaProjects\chat-bot 执行 +./mvnw clean package -DskipTests +``` + +打包成功后,jar 位于: + +``` +D:\IdeaProjects\chat-bot\target\yu-ai-agent-0.0.1-SNAPSHOT.jar +``` + +> `application.yml` 已被 `.gitignore` 排除,但 jar 中会包含本地 yml。打包前请确认 yml 中数据库地址已改为生产地址(见第 7 节),或使用外部配置覆盖(推荐)。 + +### 6.2 方式 B:在 Linux 服务器上打包 + +```bash +# 安装 JDK 17 与 Maven +# Ubuntu +sudo apt install -y openjdk-17-jdk maven +# CentOS +sudo yum install -y java-17-openjdk-devel maven + +# 验证 +java -version +mvn -version + +# 上传源码或 git clone 后,在项目根目录执行 +mvn clean package -DskipTests +# jar 同样生成在 target/ 目录 +``` + +### 6.3 上传 jar 到服务器 + +```bash +# 在本机 Windows 执行(scp 或使用 WinSCP / FinalShell 等工具) +scp target/yu-ai-agent-0.0.1-SNAPSHOT.jar user@服务器IP:/opt/support-bot/app/ +``` + +--- + +## 7. 上传与生产配置 + +### 7.1 安装 JDK 17(运行 jar 必需) + +```bash +# Ubuntu / Debian +sudo apt install -y openjdk-17-jre-headless + +# CentOS / RHEL +sudo yum install -y java-17-openjdk-headless + +# 验证 +java -version +``` + +### 7.2 准备外部配置文件(推荐,避免改 jar) + +在服务器上创建生产配置,覆盖 jar 内的默认 yml。Spring Boot 启动时同目录下的 `application.yml` 会自动覆盖 jar 内配置。 + +```bash +sudo tee /opt/support-bot/app/application.yml <<'EOF' +# ==================== 服务端口 ==================== +server: + port: 9090 + +spring: + ai: + dashscope: + # 关闭 DashScope 自动配置(本项目所有模型由 Factory 按 DB 活跃配置手动构建) + enabled: false + # 仅用于首次启动写入种子默认值;可留空,真正生效的 Key 在前端页面配置 + api-key: + + # ==================== 数据源配置(PostgreSQL + PGVector) ==================== + datasource: + driver-class-name: org.postgresql.Driver + # 指向本机 Docker 部署的 PostgreSQL + url: jdbc:postgresql://127.0.0.1:5432/support_bot + username: postgres + password: supportbot123 + hikari: + maximum-pool-size: 10 + minimum-idle: 5 + idle-timeout: 300000 + connection-timeout: 20000 + + sql: + init: + mode: never + schema-locations: classpath:support-bot.sql + continue-on-error: true + servlet: + multipart: + max-file-size: 50MB + max-request-size: 50MB + +# ==================== MyBatis Plus 配置 ==================== +mybatis-plus: + type-aliases-package: com.wok.supportbot.entity + mapper-locations: classpath*:mapper/**/*.xml + configuration: + log-impl: org.apache.ibatis.logging.stdout.StdOutImpl + map-underscore-to-camel-case: true + global-config: + db-config: + logic-delete-field: isDelete + logic-delete-value: true + logic-not-delete-value: false + id-type: assign_id + +# ==================== 知识库文档处理配置 ==================== +knowledge: + chunk: + chunk-size: 200 + overlap: 100 + min-chunk-size-chars: 10 + max-num-chunks: 5000 + keep-separator: true + vector: + # 向量维度,需与 Embedding 模型输出维度一致 + # 千问 text-embedding-v2: 1536 | 豆包 doubao-embedding-text-240515: 2048 + dimension: 1536 + role: + strict-isolation: false + +# ==================== Knife4j API 文档配置 ==================== +springdoc: + swagger-ui: + path: /swagger-ui.html + tags-sorter: alpha + operations-sorter: alpha + api-docs: + path: /v3/api-docs + group-configs: + - group: default + paths-to-match: /** + packages-to-scan: com.wok.supportbot.controller + +knife4j: + enable: true + setting: + language: zh_cn + swagger-model-name: 实体类列表 + +logging: + level: + root: INFO + com.wok.supportbot: DEBUG + org.springframework.ai: INFO + pattern: + console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" + file: + name: /opt/support-bot/logs/support-bot.log +EOF +``` + +> **关键修改点** +> - `datasource.url` 改为 `127.0.0.1:5432`(指向本机 Docker 容器)。 +> - `datasource.password` 与 docker-compose 中保持一致。 +> - `logging.file.name` 输出日志到宿主机目录。 +> - 生产环境建议将 `com.wok.supportbot` 日志级别从 `DEBUG` 调为 `INFO`。 + +### 7.3 目录结构最终如下 + +``` +/opt/support-bot/ +├── docker-compose.yml # 数据库编排 +├── data/ # PG 数据持久化 +├── logs/ # 应用日志 +└── app/ + ├── yu-ai-agent-0.0.1-SNAPSHOT.jar + └── application.yml # 外部配置(覆盖 jar 内默认值) +``` + +--- + +## 8. 启动后端服务 + +### 8.1 手动前台启动(首次验证用) + +```bash +cd /opt/support-bot/app +java -jar yu-ai-agent-0.0.1-SNAPSHOT.jar +``` + +观察启动日志,应看到: + +``` +数据库初始化完成 +... Tomcat started on port 9090 ... +... Started SupportBotApplication in x.xxx seconds ... +``` + +启动成功后业务表会自动创建,可用以下命令核对: + +```bash +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot -c "\dt" +``` + +应能看到 `chat_message`、`knowledge_category`、`knowledge_document`、`ai_model_config`、`vector_store`、`customer_service_role`、`customer_account`、`conversation_session` 等表。 + +### 8.2 后台启动(生产用) + +```bash +cd /opt/support-bot/app +nohup java -jar yu-ai-agent-0.0.1-SNAPSHOT.jar \ + --spring.config.additional-location=optional:file:./ \ + > /opt/support-bot/logs/startup.out 2>&1 & + +# 查看进程 +ps -ef | grep yu-ai-agent + +# 查看日志 +tail -f /opt/support-bot/logs/startup.out +``` + +### 8.3 访问验证 + +| 地址 | 说明 | +|------|------| +| `http://服务器IP:9090/index.html` | 前端管理页面 | +| `http://服务器IP:9090/doc.html` | Knife4j 接口文档 | + +能打开管理页面即部署成功。AI 对话功能需先配置模型(下一步)。 + +--- + +## 9. 配置 AI 大模型(必做) + +由于 `application.yml` 中 `api-key` 留空,首次启动时 `ai_model_config` 表会写入**空 Key 的默认配置**。调用 AI 功能前必须在前端填入真实 Key。 + +### 9.1 进入配置页面 + +打开 `http://服务器IP:9090/index.html` → 进入「**AI 大模型配置管理**」页面。 + +### 9.2 配置各应用类型 + +为以下 4 类应用分别填入 API Key 并激活(同一 App 类型仅一个激活): + +| App 类型 | 用途 | 默认模型 | +|----------|------|----------| +| CHAT | 主对话 | qwen-turbo | +| PRODUCT_EXTRACT | 结构化数据提取 | qwen-turbo | +| EMBEDDING | 知识库向量化 | text-embedding-v2 | +| RAG_REWRITE | RAG 查询重写 | qwen-turbo | + +### 9.3 通义千问(DashScope)配置示例 + +- **提供商**:dashscope +- **API Key**:在 [DashScope 控制台](https://dashscope.console.aliyun.com/) 获取,格式 `sk-xxxx` +- **Base URL**:留空(DashScope 内置) +- **EMBEDDING 类型**需在「向量维度」填 `1536`(与 `knowledge.vector.dimension` 一致) + +> 配置后**热切换生效,无需重启**。若切换非 1536 维的 Embedding 模型,需修改 `application.yml` 的 `knowledge.vector.dimension` 并重建 `vector_store` 表(见运维章节)。 + +### 9.4 其他提供商(可选) + +支持 OpenAI 兼容提供商:DeepSeek / 豆包 / Kimi / 智谱 / OpenAI。在配置页选择对应 provider,填入 `base_url` 与 `api_key` 即可。 + +--- + +## 10. 开机自启:systemd 服务 + +### 10.1 创建服务文件 + +```bash +sudo tee /etc/systemd/system/support-bot.service <<'EOF' +[Unit] +Description=AI Support Bot Spring Boot Service +After=network.target docker.service +Requires=docker.service + +[Service] +Type=simple +User=root +WorkingDirectory=/opt/support-bot/app +ExecStart=/usr/bin/java -jar /opt/support-bot/app/yu-ai-agent-0.0.1-SNAPSHOT.jar --spring.config.additional-location=optional:file:./ +SuccessExitStatus=143 +Restart=on-failure +RestartSec=10 +StandardOutput=append:/opt/support-bot/logs/support-bot.log +StandardError=append:/opt/support-bot/logs/support-bot.log + +[Install] +WantedBy=multi-user.target +EOF +``` + +### 10.2 启用服务 + +```bash +# 重载 systemd +sudo systemctl daemon-reload + +# 设置开机自启 +sudo systemctl enable support-bot + +# 启动 / 停止 / 重启 / 状态 +sudo systemctl start support-bot +sudo systemctl status support-bot +sudo systemctl restart support-bot +sudo systemctl stop support-bot + +# 查看实时日志 +sudo journalctl -u support-bot -f +``` + +> 数据库容器已设置 `restart: always`,服务器重启后会自动拉起数据库,再由 systemd 拉起后端服务(`Requires=docker.service` 保证顺序)。 + +--- + +## 11. Nginx 反向代理(可选) + +如需用 80 端口访问或加 HTTPS,可安装 Nginx 反向代理到 9090。 + +```bash +# Ubuntu +sudo apt install -y nginx + +sudo tee /etc/nginx/conf.d/support-bot.conf <<'EOF' +server { + listen 80; + server_name your-domain.com; # 改为域名或 IP + + client_max_body_size 50m; # 与后端上传限制一致 + + location / { + proxy_pass http://127.0.0.1:9090; + proxy_set_header Host $host; + proxy_set_header X-Real-IP $remote_addr; + proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; + + # SSE 流式响应必需 + proxy_buffering off; + proxy_cache off; + proxy_read_timeout 300s; + proxy_http_version 1.1; + } +} +EOF + +sudo nginx -t && sudo systemctl reload nginx +``` + +> SSE 流式接口(AI 对话)必须设置 `proxy_buffering off`,否则流式输出会被缓冲导致卡顿。 + +--- + +## 12. 日常运维与排错 + +### 12.1 常用命令速查 + +```bash +# —— 数据库 —— +sudo docker compose -f /opt/support-bot/docker-compose.yml ps # 状态 +sudo docker compose -f /opt/support-bot/docker-compose.yml restart # 重启 +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot # 进入 psql + +# —— 应用 —— +sudo systemctl status support-bot # 服务状态 +sudo systemctl restart support-bot # 重启 +sudo journalctl -u support-bot -f # 实时日志 +tail -f /opt/support-bot/logs/support-bot.log + +# —— 防火墙 —— +sudo firewall-cmd --list-ports # CentOS 查看开放端口 +sudo ufw status # Ubuntu 查看状态 +``` + +### 12.2 数据库备份与恢复 + +```bash +# 备份(含数据) +sudo docker exec support-bot-postgres \ + pg_dump -U postgres support_bot > /opt/support-bot/backup_$(date +%F).sql + +# 恢复 +sudo docker exec -i support-bot-postgres \ + psql -U postgres -d support_bot < /opt/support-bot/backup_2026-06-27.sql +``` + +建议加入 crontab 定时备份: + +```bash +# 每天凌晨 3 点备份,保留 30 天 +echo "0 3 * * * docker exec support-bot-postgres pg_dump -U postgres support_bot > /opt/support-bot/backup_\$(date +\%F).sql && find /opt/support-bot -name 'backup_*.sql' -mtime +30 -delete" | sudo tee /etc/cron.d/support-bot-backup +``` + +### 12.3 切换 Embedding 模型 / 重建向量表 + +若更换非 1536 维的 Embedding 模型: + +```bash +# 1. 修改 application.yml 中 knowledge.vector.dimension +# 2. 删除并重建 vector_store 表 +sudo docker exec -it support-bot-postgres psql -U postgres -d support_bot -c "DROP TABLE IF EXISTS vector_store CASCADE;" +# 3. 重启服务(启动时自动按新维度重建表) +sudo systemctl restart support-bot +# 4. 重新上传知识库文档(重新向量化) +``` + +### 12.4 常见问题 + +| 现象 | 原因与解决 | +|------|------------| +| 启动报 `Connection refused 127.0.0.1:5432` | 数据库容器未启动,执行 `docker compose up -d` | +| 启动报 `extension "vector" does not exist` | 未启用 PGVector 扩展,执行第 4.3 节 `CREATE EXTENSION vector` | +| 启动成功但 AI 对话报错 | `ai_model_config` 中 API Key 为空,去前端「AI 大模型配置管理」填入并激活 | +| 上传文档失败 / 向量化报错 | EMBEDDING 配置缺失或维度不匹配;核对维度与 `knowledge.vector.dimension` 一致 | +| SSE 对话卡顿不输出 | 经 Nginx 时未关 `proxy_buffering`,见第 11 节 | +| 前端页面 404 | 访问路径应为 `/index.html`(不带也行,但确认端口 9090 已放行) | +| 雪花 ID 前端精度丢失 | 已由 `@JsonSerialize(ToStringSerializer.class)` 处理,无需额外操作 | + +### 12.5 升级应用 + +```bash +# 1. 上传新 jar 覆盖旧 jar +# 2. 重启服务 +sudo systemctl restart support-bot +``` + +--- + +## 13. 附:一键部署脚本 + +将以下脚本保存为 `/opt/support-bot/deploy.sh`,可一键完成数据库部署 + 应用启动。 + +```bash +#!/bin/bash +# AI 智能客服系统 一键部署脚本 +set -e + +APP_DIR=/opt/support-bot +JAR_NAME=yu-ai-agent-0.0.1-SNAPSHOT.jar +DB_PASS=${DB_PASS:-supportbot123} + +echo "===== 1. 创建目录 =====" +sudo mkdir -p $APP_DIR/{db,data,app,logs} + +echo "===== 2. 生成 docker-compose.yml =====" +sudo tee $APP_DIR/docker-compose.yml < String(s).trim()).filter(Boolean) + : [], + theme: raw.theme === 'dark' ? 'dark' : 'light', + showTeaser: (_e = raw.showTeaser) !== null && _e !== void 0 ? _e : true, + teaserText: (typeof raw.teaserText === 'string' && raw.teaserText.trim()) || '', + streaming: (_f = raw.streaming) !== null && _f !== void 0 ? _f : true, locale: raw.locale || 'zh-CN', - debug: (_f = raw.debug) !== null && _f !== void 0 ? _f : true, + debug: (_g = raw.debug) !== null && _g !== void 0 ? _g : true, chatId: '', // 初始为空,由 chatId 初始化流程填充 }; logger.info(`配置解析完成 integrateId(=roleId)=${config.integrateId} userId(=accountId)=${config.userId || '(未设置)'} requestDomain=${config.requestDomain}`); @@ -153,6 +159,13 @@ var ChatbotSDK = (function () { // 输入区 placeholder: '输入您的问题...', send: '发送', + stop: '停止生成', + new_message: '新消息', + // 消息操作 + copy: '复制', + copied: '已复制', + retry: '重新生成', + retrying: '重新生成中...', // 消息 loading: '正在思考...', stream_interrupted: '回复被中断', @@ -174,6 +187,13 @@ var ChatbotSDK = (function () { history_delete_confirm: '确定删除该会话?', history_export: '导出', history_delete: '删除', + history_search: '搜索会话...', + // 消息反馈 + feedback_up: '有帮助', + feedback_down: '没帮助', + // 提示气泡 + teaser_text: '有什么可以帮你的吗?', + new_msg_announce: '收到新消息', // 错误提示 error_network: '网络连接失败,请检查网络', error_timeout: '请求超时,请稍后重试', @@ -200,6 +220,13 @@ var ChatbotSDK = (function () { // Input placeholder: 'Type your question...', send: 'Send', + stop: 'Stop generating', + new_message: 'New message', + // Message actions + copy: 'Copy', + copied: 'Copied', + retry: 'Regenerate', + retrying: 'Regenerating...', // Messages loading: 'Thinking...', stream_interrupted: 'Response interrupted', @@ -221,6 +248,13 @@ var ChatbotSDK = (function () { history_delete_confirm: 'Delete this conversation?', history_export: 'Export', history_delete: 'Delete', + history_search: 'Search conversations...', + // Feedback + feedback_up: 'Helpful', + feedback_down: 'Not helpful', + // Teaser + teaser_text: 'How can I help you?', + new_msg_announce: 'New message received', // Errors error_network: 'Network connection failed', error_timeout: 'Request timed out, please try again', @@ -364,15 +398,28 @@ var ChatbotSDK = (function () { return buildUrl(`/ai/assistant_app/rag/sources?${params.toString()}`); } // ==================== HTTP 基础封装 ==================== - /** 带超时的 fetch 封装 */ - async function safeFetch(url, options = {}, timeout = REQUEST_TIMEOUT) { + /** 带超时的 fetch 封装,支持外部 AbortSignal(用于流式主动中断) */ + async function safeFetch(url, options = {}, timeout = REQUEST_TIMEOUT, externalSignal) { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), timeout); + // 外部信号触发时同步中断内部请求 + if (externalSignal) { + if (externalSignal.aborted) { + controller.abort(); + } + else { + externalSignal.addEventListener('abort', () => controller.abort(), { once: true }); + } + } try { const response = await fetch(url, Object.assign(Object.assign({}, options), { signal: controller.signal, mode: 'cors', credentials: 'include' })); return response; } catch (err) { + // 用户主动中断(停止生成),不算错误 + if (externalSignal === null || externalSignal === void 0 ? void 0 : externalSignal.aborted) { + throw new CskError('aborted', 'aborted'); + } if (err instanceof DOMException && err.name === 'AbortError') { throw new CskError(t('error_timeout'), 'timeout'); } @@ -436,7 +483,7 @@ var ChatbotSDK = (function () { * @param useRag 是否使用 RAG 增强对话 * @param categoryId 知识库分类 ID */ - async function chatSSERequest(message, onChunk, onDone, onError, categoryId, useRag) { + async function chatSSERequest(message, onChunk, onDone, onError, categoryId, useRag, signal) { var _a; const url = useRag ? buildChatRAGSSEUrl(message, categoryId) @@ -444,7 +491,7 @@ var ChatbotSDK = (function () { let totalText = ''; logger.lifecycleSend(currentConfig.integrateId, message.length); try { - const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2); + const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2, signal); if (!response.ok) { const errorMsg = getHttpErrorMessage(response.status); logger.lifecycleError(currentConfig.integrateId, String(response.status), errorMsg); @@ -502,7 +549,11 @@ var ChatbotSDK = (function () { } } catch (readErr) { - if (totalText.length > 0) { + // 用户主动中断:视为正常结束,保留已生成内容 + if (signal === null || signal === void 0 ? void 0 : signal.aborted) { + logger.info(`流式被用户中断,保留已生成内容 length=${totalText.length}`); + } + else if (totalText.length > 0) { onChunk('\n\n' + t('stream_unstable')); } else { @@ -516,6 +567,11 @@ var ChatbotSDK = (function () { onDone(); } catch (err) { + // 用户主动中断不触发 onError,走 onDone + if ((signal === null || signal === void 0 ? void 0 : signal.aborted) || (err instanceof CskError && err.type === 'aborted')) { + onDone(); + return; + } if (err instanceof CskError) { onError(err); } @@ -1169,6 +1225,7 @@ var ChatbotSDK = (function () { color: #1F2937; } .csk-input::placeholder { color: #9CA3AF; } +.csk-root .csk-input:focus-visible { outline: none; } .csk-send-btn { display: flex; align-items: center; @@ -1540,6 +1597,355 @@ var ChatbotSDK = (function () { } .csk-history-panel__loadmore:hover { background: #F3F4F6; } +/* ========== 快捷问题芯片 ========== */ +.csk-quick-replies { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: center; + margin-top: 18px; + max-width: 320px; +} +.csk-quick-reply { + border: 1px solid var(--csk-border); + background: #fff; + color: #374151; + font-size: 12.5px; + padding: 7px 13px; + border-radius: 999px; + cursor: pointer; + font-family: inherit; + line-height: 1.3; + transition: all 0.18s ease; + max-width: 100%; +} +.csk-quick-reply:hover { + border-color: var(--csk-primary); + color: var(--csk-primary); + background: rgba(var(--csk-primary-rgb), 0.06); + transform: translateY(-1px); +} +.csk-quick-reply:active { transform: scale(0.96); } + +/* ========== AI 消息操作条 ========== */ +.csk-msg__actions { + display: flex; + gap: 2px; + margin-top: 5px; + padding: 0 2px; + opacity: 0; + transition: opacity 0.15s ease; +} +.csk-msg--ai:hover .csk-msg__actions { opacity: 1; } +.csk-msg--streaming .csk-msg__actions { display: none; } +.csk-action-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: transparent; + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; +} +.csk-action-btn:hover { + background: #F3F4F6; + color: #374151; +} +.csk-action-btn--done { color: #10B981; } +.csk-action-btn:active { transform: scale(0.9); } + +/* ========== 流式打字光标 ========== */ +.csk-caret { + display: inline-block; + width: 7px; + height: 15px; + margin-left: 2px; + vertical-align: text-bottom; + background: var(--csk-primary); + border-radius: 1px; + animation: csk-caret-blink 1s step-end infinite; +} +@keyframes csk-caret-blink { + 0%, 50% { opacity: 1; } + 51%, 100% { opacity: 0; } +} + +/* ========== 代码块复制按钮 ========== */ +.csk-md-code-block { position: relative; } +.csk-md-code-copy { + position: absolute; + top: 8px; + right: 8px; + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(255, 255, 255, 0.12); + color: #CBD5E1; + border-radius: 6px; + cursor: pointer; + opacity: 0; + transition: all 0.15s ease; +} +.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; } +.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; } +.csk-md-code-copy:active { transform: scale(0.9); } + +/* ========== 新消息提示按钮 ========== */ +.csk-newmsg { + position: absolute; + bottom: 82px; + left: 50%; + transform: translateX(-50%); + z-index: 5; + display: inline-flex; + align-items: center; + gap: 5px; + padding: 7px 14px; + border: none; + background: var(--csk-primary); + color: #fff; + font-size: 12px; + font-family: inherit; + border-radius: 999px; + cursor: pointer; + box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38); + transition: transform 0.2s ease, box-shadow 0.2s ease; + animation: csk-msg-in 0.25s ease; + white-space: nowrap; +} +.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); } +.csk-newmsg:active { transform: translateX(-50%) scale(0.95); } +.csk-newmsg--hidden { display: none; } + +/* ========== 发送按钮停止态 ========== */ +.csk-send-btn--stop { + background: #EF4444 !important; + box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important; +} +.csk-send-btn--stop:hover:not(:disabled) { + box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important; +} + +/* ========== 暗色模式 ========== */ +.csk-root.csk-dark { + --csk-bg-ai: #1E1E2E; + --csk-text-ai: #E2E8F0; + --csk-border: #3B3B52; + --csk-bg-app: #141421; + color: #E2E8F0; +} +.csk-dark .csk-window { + background: #1A1A2E; + box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); +} +.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); } +.csk-dark .csk-msg__avatar--ai { + background: var(--csk-bg-ai); + color: var(--csk-primary); + border-color: var(--csk-border); +} +.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); } +.csk-dark .csk-input { color: #E2E8F0; } +.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__dot { background: #6B7280; } +.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); } +.csk-dark .csk-sources__header { background: #25253A; } +.csk-dark .csk-sources__header:hover { background: #2D2D48; } +.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); } +.csk-dark .csk-source-item__name { color: #E2E8F0; } +.csk-dark .csk-source-item__meta { color: #6B7280; } +.csk-dark .csk-history-panel { background: #1A1A2E; } +.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); } +.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-history-panel__back:hover { background: #2D2D48; } +.csk-dark .csk-history-item:hover { background: #25253A; } +.csk-dark .csk-history-item__id { color: #E2E8F0; } +.csk-dark .csk-history-item__meta { color: #6B7280; } +.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); } +.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); } +.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; } +.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; } +.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; } +.csk-dark .csk-md-code-block { background: #0F0F1A; } +.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); } +.csk-dark .csk-md-link { color: var(--csk-primary-light); } +.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); } +.csk-dark .csk-welcome__title { color: #E2E8F0; } +.csk-dark .csk-welcome__desc { color: #6B7280; } +.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; } +.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); } +.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); } +.csk-dark .csk-teaser::after { border-top-color: #2D2D48; } +.csk-dark .csk-teaser__close { color: #6B7280; } +.csk-dark .csk-teaser__close:hover { color: #9CA3AF; } +.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; } +.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); } +.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); } +.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); } +.csk-dark .csk-history-panel__search { color: #E2E8F0; } +.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; } +.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); } +.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); } + +/* ========== Launcher 未读徽章 ========== */ +.csk-launcher__badge { + position: absolute; + top: -3px; + right: -3px; + width: 16px; + height: 16px; + border-radius: 50%; + background: #EF4444; + border: 2px solid #fff; + box-shadow: 0 0 0 2px #fff; + animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1); + pointer-events: none; +} +.csk-launcher__badge--hidden { display: none; } +@keyframes csk-badge-in { + from { transform: scale(0); } + to { transform: scale(1); } +} + +/* ========== Launcher 提示气泡 ========== */ +.csk-teaser { + position: fixed; + bottom: 90px; + z-index: 9997; + max-width: 240px; + padding: 10px 14px; + background: #fff; + color: #1F2937; + font-size: 13px; + line-height: 1.5; + border-radius: 12px; + box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15); + animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1); + cursor: pointer; + user-select: none; +} +.csk-teaser--right { right: 24px; } +.csk-teaser--left { left: 24px; } +.csk-teaser::after { + content: ''; + position: absolute; + bottom: -6px; + right: 28px; + width: 12px; + height: 12px; + background: inherit; + border-radius: 2px; + transform: rotate(45deg); + box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08); +} +.csk-teaser--left::after { right: auto; left: 28px; } +.csk-teaser__close { + position: absolute; + top: 4px; + right: 6px; + background: none; + border: none; + font-size: 16px; + color: #9CA3AF; + cursor: pointer; + padding: 2px 4px; + line-height: 1; + border-radius: 4px; +} +.csk-teaser__close:hover { color: #374151; } +.csk-teaser--hidden { display: none; } +@keyframes csk-teaser-in { + from { opacity: 0; transform: translateY(8px) scale(0.95); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +/* ========== 消息反馈按钮(👍 / 👎) ========== */ +.csk-feedback-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(var(--csk-primary-rgb), 0.08); + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; + padding: 0; +} +.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); } +.csk-feedback-btn--active { + background: rgba(var(--csk-primary-rgb), 0.28); + color: var(--csk-primary); +} +.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; } +.csk-feedback-btn:active { transform: scale(0.9); } +.csk-msg--streaming .csk-feedback-btn { display: none; } + +/* ========== 历史会话搜索框 ========== */ +.csk-history-panel__search-wrap { + padding: 8px 10px; + border-bottom: 1px solid var(--csk-border); + flex-shrink: 0; +} +.csk-history-panel__search-wrap:focus-within { + border-bottom-color: var(--csk-primary); +} +.csk-history-panel__search { + width: 100%; + padding: 7px 10px; + border: 1px solid var(--csk-border); + border-radius: 8px; + font-size: 12.5px; + font-family: inherit; + color: #1F2937; + background: var(--csk-bg-app); + outline: none; + transition: border-color 0.2s; +} +.csk-history-panel__search:focus { border-color: var(--csk-primary); } +.csk-history-panel__search::placeholder { color: #9CA3AF; } + +/* ========== a11y 焦点指示 ========== */ +.csk-root :focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; +} +.csk-root button:focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; + border-radius: inherit; +} +/* 弹窗打开时隐藏 launcher 上的焦点环 */ +.csk-launcher:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.4); } + +/* ========== a11y aria-live 播报区(视觉隐藏) ========== */ +.csk-sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0,0,0,0) !important; + white-space: nowrap !important; + border: 0 !important; +} + /* ========== 移动端适配 ========== */ @media (max-width: 480px) { .csk-window { @@ -1644,6 +2050,10 @@ var ChatbotSDK = (function () { launcher.setAttribute('tabindex', '0'); // 图标内容 launcher.innerHTML = config.launcherIcon; + // 未读徽章(初始隐藏,有未读消息时由 index.ts 显示) + const badge = document.createElement('div'); + badge.className = 'csk-launcher__badge csk-launcher__badge--hidden'; + launcher.appendChild(badge); // 点击事件(300ms 防抖) const debouncedClick = debounce(onClick, 300); launcher.addEventListener('click', debouncedClick); @@ -1662,7 +2072,10 @@ var ChatbotSDK = (function () { // 最外层容器 const windowEl = document.createElement('div'); windowEl.id = 'csk-window'; - windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden`; + windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden${config.theme === 'dark' ? ' csk-dark' : ''}`; + windowEl.setAttribute('role', 'dialog'); + windowEl.setAttribute('aria-label', config.title); + windowEl.setAttribute('aria-modal', 'false'); // === 头部 === const header = document.createElement('div'); header.className = 'csk-header'; @@ -1723,7 +2136,33 @@ var ChatbotSDK = (function () {
${t('welcome_title')}
${t('welcome_desc')}
`; + // 快捷问题芯片(点击即自动发送) + if (config.quickReplies.length > 0) { + const chips = document.createElement('div'); + chips.className = 'csk-quick-replies'; + for (const reply of config.quickReplies) { + const chip = document.createElement('button'); + chip.type = 'button'; + chip.className = 'csk-quick-reply'; + chip.textContent = reply; + chip.addEventListener('click', () => { + windowEl.dispatchEvent(new CustomEvent('csk:quickReply', { detail: { text: reply } })); + }); + chips.appendChild(chip); + } + welcomeEl.appendChild(chips); + } messagesContainer.appendChild(welcomeEl); + // === 新消息提示按钮(用户上滑时新消息到达显示) === + // 挂到 windowEl 而非 messagesContainer,绝对定位悬浮于输入区上方,避免随内容滚动 + const newMsgBtn = document.createElement('button'); + newMsgBtn.type = 'button'; + newMsgBtn.className = 'csk-newmsg csk-newmsg--hidden'; + newMsgBtn.innerHTML = ` + + ${t('new_message')} + `; + windowEl.appendChild(newMsgBtn); // === 会话管理面板(P2,默认隐藏) === const historyPanel = document.createElement('div'); historyPanel.className = 'csk-history-panel csk-history-panel--hidden'; @@ -1735,6 +2174,9 @@ var ChatbotSDK = (function () { ${t('close')} +
+ +
`; messagesContainer.appendChild(historyPanel); @@ -1843,6 +2285,22 @@ var ChatbotSDK = (function () { loadingEl = null; } } + // === a11y: aria-live 播报区域(视觉隐藏,供屏幕阅读器监听新消息) === + const ariaLiveEl = document.createElement('div'); + ariaLiveEl.className = 'csk-sr-only'; + ariaLiveEl.setAttribute('aria-live', 'polite'); + ariaLiveEl.setAttribute('aria-atomic', 'true'); + windowEl.appendChild(ariaLiveEl); + // === 历史搜索输入框引用 === + const searchInput = historyPanel.querySelector('#csk-history-search'); + // === Launcher 提示气泡(首访引导,初始隐藏,由 index.ts 定时控制) === + const teaserEl = document.createElement('div'); + teaserEl.className = `csk-teaser csk-teaser--${config.position === 'left-bottom' ? 'left' : 'right'} csk-teaser--hidden`; + teaserEl.setAttribute('role', 'status'); + teaserEl.innerHTML = ` + + ${config.teaserText || t('teaser_text')} + `; return { window: windowEl, messagesContainer, @@ -1852,6 +2310,10 @@ var ChatbotSDK = (function () { categorySelect, historyPanel, welcomeEl, + newMsgBtn, + teaserEl, + searchInput, + ariaLiveEl, showLoading, hideLoading, }; @@ -1928,9 +2390,11 @@ var ChatbotSDK = (function () { return wrapper; } /** 渲染 AI 消息气泡(支持 Markdown) */ - function renderAIBubble(container, text, timestamp, renderMd) { + function renderAIBubble(container, text, timestamp, renderMd, msgId) { const wrapper = document.createElement('div'); wrapper.className = 'csk-msg csk-msg--ai'; + if (msgId) + wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; avatar.innerHTML = BOT_ICON; @@ -1949,16 +2413,22 @@ var ChatbotSDK = (function () { time.className = 'csk-msg__time'; time.textContent = formatTime(timestamp); content.appendChild(bubble); + // AI 操作条(复制 / 重试),插入到气泡与时间戳之间 + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); container.appendChild(wrapper); + // 代码块复制按钮 + enhanceCodeBlocks(bubble); return wrapper; } /** 创建空的 AI 气泡(流式追加用) */ - function createEmptyAIBubble(container, timestamp) { + function createEmptyAIBubble(container, timestamp, msgId) { const wrapper = document.createElement('div'); - wrapper.className = 'csk-msg csk-msg--ai'; + wrapper.className = 'csk-msg csk-msg--ai csk-msg--streaming'; + if (msgId) + wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; avatar.innerHTML = BOT_ICON; @@ -1971,12 +2441,170 @@ var ChatbotSDK = (function () { time.className = 'csk-msg__time'; time.textContent = formatTime(timestamp); content.appendChild(bubble); + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); container.appendChild(wrapper); return { wrapper, bubble }; } + // ==================== AI 消息操作条 + 代码块复制 ==================== + /** 复制图标 */ + const COPY_ICON = ``; + /** 重试图标 */ + const RETRY_ICON = ``; + /** 构建 AI 消息操作条(复制 / 重试 / 反馈) */ + function buildAIActions(bubble, wrapper) { + const bar = document.createElement('div'); + bar.className = 'csk-msg__actions'; + // 复制按钮 + const copyBtn = document.createElement('button'); + copyBtn.type = 'button'; + copyBtn.className = 'csk-action-btn'; + copyBtn.setAttribute('title', t('copy')); + copyBtn.setAttribute('aria-label', t('copy')); + copyBtn.innerHTML = COPY_ICON; + copyBtn.addEventListener('click', async (e) => { + e.stopPropagation(); + const text = bubble.textContent || ''; + await copyToClipboard(text, copyBtn); + }); + // 重试按钮 + const retryBtn = document.createElement('button'); + retryBtn.type = 'button'; + retryBtn.className = 'csk-action-btn'; + retryBtn.setAttribute('title', t('retry')); + retryBtn.setAttribute('aria-label', t('retry')); + retryBtn.innerHTML = RETRY_ICON; + retryBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:retry', { + detail: { msgId: wrapper.dataset.cskMsgId || '' } + })); + } + }); + // 反馈按钮(👍 / 👎) + const THUMB_UP = ``; + const THUMB_DOWN = ``; + const upBtn = document.createElement('button'); + upBtn.type = 'button'; + upBtn.className = 'csk-feedback-btn'; + upBtn.setAttribute('title', t('feedback_up')); + upBtn.setAttribute('aria-label', t('feedback_up')); + upBtn.innerHTML = THUMB_UP; + upBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'up' } + })); + } + }); + const downBtn = document.createElement('button'); + downBtn.type = 'button'; + downBtn.className = 'csk-feedback-btn'; + downBtn.setAttribute('title', t('feedback_down')); + downBtn.setAttribute('aria-label', t('feedback_down')); + downBtn.innerHTML = THUMB_DOWN; + downBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'down' } + })); + } + }); + bar.appendChild(copyBtn); + bar.appendChild(retryBtn); + bar.appendChild(upBtn); + bar.appendChild(downBtn); + return bar; + } + /** + * 更新反馈按钮的视觉状态(由 chat.ts 调用) + * @param wrapper 消息 wrapper 元素 + * @param value 当前反馈值:'up' | 'down' | undefined + */ + function updateFeedbackUI(wrapper, value) { + const btns = wrapper.querySelectorAll('.csk-feedback-btn'); + if (btns.length < 2) + return; + btns.forEach((btn) => btn.classList.remove('csk-feedback-btn--active', 'down')); + if (value === 'up' && btns[0]) + btns[0].classList.add('csk-feedback-btn--active'); + if (value === 'down' && btns[1]) + btns[1].classList.add('csk-feedback-btn--active', 'down'); + } + /** 复制文本到剪贴板,带"已复制"反馈 */ + async function copyToClipboard(text, btn) { + const original = btn.innerHTML; + try { + if (navigator.clipboard && window.isSecureContext) { + await navigator.clipboard.writeText(text); + } + else { + // 降级方案:execCommand + const ta = document.createElement('textarea'); + ta.value = text; + ta.style.position = 'fixed'; + ta.style.opacity = '0'; + document.body.appendChild(ta); + ta.select(); + document.execCommand('copy'); + document.body.removeChild(ta); + } + btn.innerHTML = ``; + btn.classList.add('csk-action-btn--done'); + setTimeout(() => { + btn.innerHTML = original; + btn.classList.remove('csk-action-btn--done'); + }, 1500); + } + catch (_a) { + // 复制失败静默处理 + } + } + /** 为气泡内所有代码块添加复制按钮 */ + function enhanceCodeBlocks(bubble) { + const blocks = bubble.querySelectorAll('.csk-md-code-block'); + blocks.forEach((pre) => { + if (pre.querySelector('.csk-md-code-copy')) + return; + const codeEl = pre.querySelector('code'); + const btn = document.createElement('button'); + btn.type = 'button'; + btn.className = 'csk-md-code-copy'; + btn.setAttribute('title', t('copy')); + btn.setAttribute('aria-label', t('copy')); + btn.innerHTML = COPY_ICON; + btn.addEventListener('click', async (e) => { + e.stopPropagation(); + await copyToClipboard((codeEl === null || codeEl === void 0 ? void 0 : codeEl.textContent) || '', btn); + }); + pre.appendChild(btn); + }); + } + /** 流式打字光标:追加到气泡末尾(每次 chunk 后调用) */ + function appendStreamingCaret(bubble) { + if (bubble.querySelector('.csk-caret')) + return; + const caret = document.createElement('span'); + caret.className = 'csk-caret'; + caret.setAttribute('aria-hidden', 'true'); + bubble.appendChild(caret); + } + /** 标记 AI 气泡流式结束:移除流式态、补代码块复制按钮 */ + function finalizeAIBubble(wrapper, bubble) { + wrapper.classList.remove('csk-msg--streaming'); + const caret = bubble.querySelector('.csk-caret'); + if (caret) + caret.remove(); + enhanceCodeBlocks(bubble); + } // ==================== P1: RAG 引用来源渲染 ==================== /** 渲染 RAG 引用来源卡片 */ function renderSources(wrapper, sources) { @@ -2395,9 +3023,20 @@ var ChatbotSDK = (function () { let categorySelect$1 = null; let historyPanel$1 = null; let welcomeEl = null; + let newMsgBtn = null; + let searchInput = null; + let ariaLiveEl = null; let showLoadingFn$1 = null; let hideLoadingFn$1 = null; let isSending = false; + /** 当前流式请求的中断控制器(用于"停止生成") */ + let abortController = null; + /** 用户是否停留在底部附近(用于智能滚动 + 新消息提示) */ + let isNearBottom = true; + /** 缓存的历史会话列表(供搜索过滤用) */ + let historyItems = []; + /** 当前历史搜索关键字 */ + let historySearchText = ''; /** 当前选中的知识库分类 ID */ let currentCategoryId; /** 当前是否使用 RAG 对话 */ @@ -2415,6 +3054,9 @@ var ChatbotSDK = (function () { categorySelect$1 = dom.categorySelect; historyPanel$1 = dom.historyPanel; welcomeEl = dom.welcomeEl; + newMsgBtn = dom.newMsgBtn; + searchInput = dom.searchInput; + ariaLiveEl = dom.ariaLiveEl; showLoadingFn$1 = dom.showLoading; hideLoadingFn$1 = dom.hideLoading; // 初始化知识库分类 @@ -2422,6 +3064,10 @@ var ChatbotSDK = (function () { useRag = !!cfg.categoryId || !!cfg.showCategorySwitch; // 绑定发送事件 bindSendEvents(); + // 绑定滚动监听(智能滚动 + 新消息提示) + bindScrollEvents(); + // 绑定历史搜索过滤 + bindHistorySearch(); // 加载知识库分类下拉框 if (cfg.showCategorySwitch && categorySelect$1) { loadCategories(); @@ -2481,9 +3127,17 @@ var ChatbotSDK = (function () { function bindSendEvents() { if (!inputEl$1 || !sendBtn$1) return; - sendBtn$1.addEventListener('click', () => handleSend()); + // 发送按钮:发送态点击发送,停止态点击中断流式 + sendBtn$1.addEventListener('click', () => { + if (isSending && abortController) { + abortController.abort(); + return; + } + handleSend(); + }); inputEl$1.addEventListener('keydown', (e) => { - if (e.key === 'Enter' && !e.shiftKey) { + // IME 组合输入期间(中文/日文输入法选词回车)不触发发送 + if (e.key === 'Enter' && !e.shiftKey && !e.isComposing) { e.preventDefault(); handleSend(); } @@ -2505,7 +3159,143 @@ var ChatbotSDK = (function () { clearBtn$1.addEventListener('click', () => handleClear()); } } - /** 文本框自动撑高 */ + /** 绑定滚动监听:判断是否在底部,控制新消息提示按钮 */ + function bindScrollEvents() { + if (!messagesContainer$1) + return; + messagesContainer$1.addEventListener('scroll', () => { + if (!messagesContainer$1) + return; + const { scrollTop, scrollHeight, clientHeight } = messagesContainer$1; + // 距底部 80px 内视为"在底部" + isNearBottom = scrollHeight - scrollTop - clientHeight < 80; + if (isNearBottom) + hideNewMsgBtn(); + }); + // 新消息提示按钮点击 → 回到底部 + if (newMsgBtn) { + newMsgBtn.addEventListener('click', () => { + if (messagesContainer$1) + scrollToBottom(messagesContainer$1); + isNearBottom = true; + hideNewMsgBtn(); + }); + } + } + /** 显示新消息提示按钮 */ + function showNewMsgBtn() { + if (newMsgBtn) + newMsgBtn.classList.remove('csk-newmsg--hidden'); + } + /** 隐藏新消息提示按钮 */ + function hideNewMsgBtn() { + if (newMsgBtn) + newMsgBtn.classList.add('csk-newmsg--hidden'); + } + /** 智能滚动到底部:用户在底部时自动滚,上滑时显示新消息提示 */ + function smartScrollToBottom() { + if (!messagesContainer$1) + return; + if (isNearBottom) { + scrollToBottom(messagesContainer$1); + } + else { + showNewMsgBtn(); + } + } + /** 切换发送按钮模式:发送 / 停止生成 */ + function setSendButtonMode(mode) { + if (!sendBtn$1) + return; + if (mode === 'stop') { + sendBtn$1.classList.add('csk-send-btn--stop'); + sendBtn$1.removeAttribute('disabled'); + sendBtn$1.setAttribute('title', t('stop')); + sendBtn$1.setAttribute('aria-label', t('stop')); + sendBtn$1.innerHTML = ``; + } + else { + sendBtn$1.classList.remove('csk-send-btn--stop'); + sendBtn$1.setAttribute('title', t('send')); + sendBtn$1.setAttribute('aria-label', t('send')); + sendBtn$1.innerHTML = ``; + updateSendBtnState(); + } + } + // ==================== 历史会话搜索过滤 ==================== + /** 绑定历史搜索输入事件 */ + function bindHistorySearch() { + if (!searchInput) + return; + searchInput.addEventListener('input', () => { + historySearchText = searchInput.value.trim().toLowerCase(); + renderFilteredHistory(); + }); + } + /** 按搜索关键字过滤并重新渲染历史列表 */ + function renderFilteredHistory() { + const listEl = historyPanel$1 === null || historyPanel$1 === void 0 ? void 0 : historyPanel$1.querySelector('#csk-history-list'); + if (!listEl || !config$1) + return; + const filtered = historySearchText + ? historyItems.filter(item => { + const preview = (item.lastMessagePreview || item.chatId || item.id || '').toLowerCase(); + return preview.includes(historySearchText); + }) + : historyItems; + renderHistoryList(listEl, filtered, (conversationId) => { switchToConversation(conversationId); }, (id) => { window.open(getConversationExportUrl(id), '_blank'); }, async (id) => { + if (!confirm(t('history_delete_confirm'))) + return; + const ok = await deleteConversation(id); + if (ok) { + if (id === getChatId()) { + messages = []; + if (messagesContainer$1) { + messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); + } + if (clearBtn$1) + clearBtn$1.style.display = 'none'; + updateEmptyState(); + } + // 从缓存中移除并重新渲染 + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); + } + }, getChatId()); + } + // ==================== a11y 消息播报 ==================== + /** 通过 aria-live 区域播报新消息(供屏幕阅读器使用) */ + function announceMessage(text) { + if (!ariaLiveEl) + return; + // 截取前 120 字符,避免过长播报 + const snippet = text.length > 120 ? text.substring(0, 120) + '...' : text; + ariaLiveEl.textContent = t('new_msg_announce') + ':' + snippet; + } + // ==================== 消息反馈(👍 / 👎) ==================== + /** + * 处理消息反馈:切换 AI 消息的点赞/点踩状态 + * 当前仅前端状态持久化(存入 messages 数组 + localStorage), + * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + */ + function handleFeedback(msgId, value) { + if (!messagesContainer$1) + return; + const msg = messages.find(m => m.id === msgId && m.role === 'ai'); + if (!msg) + return; + // 切换逻辑:同值取消,异值切换 + const newValue = msg.feedback === value ? undefined : value; + msg.feedback = newValue; + // 更新 DOM 状态 + const wrapper = messagesContainer$1.querySelector(`[data-csk-msg-id="${msgId}"]`); + if (wrapper) + updateFeedbackUI(wrapper, newValue); + // 持久化(localStorage) + if (config$1) + saveMessages(config$1.integrateId, messages); + logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); + } function autoResizeInput() { if (!inputEl$1) return; @@ -2542,52 +3332,68 @@ var ChatbotSDK = (function () { inputEl$1.value = ''; updateSendBtnState(); inputEl$1.style.height = 'auto'; - isSending = true; - updateSendBtnState(); - // 确保 chatId 已初始化 - if (!config$1.chatId) { - await initChatId(); - } // 1. 渲染用户气泡 const userTimestamp = now(); + const userMsg = { id: uuid(), role: 'user', content: text, timestamp: userTimestamp }; if (messagesContainer$1) renderUserBubble(messagesContainer$1, text, userTimestamp); - const userMsg = { id: uuid(), role: 'user', content: text, timestamp: userTimestamp }; messages.push(userMsg); updateEmptyState(); if (clearBtn$1 && messages.length > 0) clearBtn$1.style.display = 'inline-flex'; if (messagesContainer$1) - scrollToBottom(messagesContainer$1); - // 2. 显示 loading + smartScrollToBottom(); + // 2. 生成 AI 回复 + await produceAIReply(text); + } + /** + * 生成 AI 回复(发送请求 + 渲染气泡 + 持久化) + * 复用于:正常发送、重试。调用方负责先渲染用户气泡。 + */ + async function produceAIReply(userText) { + if (!config$1 || !messagesContainer$1) + return; + isSending = true; + setSendButtonMode('stop'); + // 确保 chatId 已初始化 + if (!config$1.chatId) { + await initChatId(); + } + const aiTimestamp = now(); + const shouldUseRag = useRag && (currentCategoryId !== undefined || config$1.categoryId !== undefined); + // 显示 loading if (showLoadingFn$1) showLoadingFn$1(); if (messagesContainer$1) - scrollToBottom(messagesContainer$1); - // 3. 发送请求 + smartScrollToBottom(); + const aiMsgId = uuid(); + let aiContent = ''; try { - let aiContent; - const aiTimestamp = now(); - const shouldUseRag = useRag && (currentCategoryId !== undefined || config$1.categoryId !== undefined); if (config$1.streaming) { - aiContent = await sendStreamMessage(text, aiTimestamp, shouldUseRag); + aiContent = await sendStreamMessage(userText, aiTimestamp, shouldUseRag, aiMsgId); } else { - aiContent = await chatRequest(text); - } - if (hideLoadingFn$1) - hideLoadingFn$1(); - if (!config$1.streaming && messagesContainer$1) { - renderAIBubble(messagesContainer$1, aiContent, aiTimestamp, renderMarkdown); + aiContent = await chatRequest(userText); + if (hideLoadingFn$1) + hideLoadingFn$1(); + if (messagesContainer$1) { + renderAIBubble(messagesContainer$1, aiContent, aiTimestamp, renderMarkdown, aiMsgId); + } } - const aiMsg = { id: uuid(), role: 'ai', content: aiContent, timestamp: aiTimestamp }; + const aiMsg = { id: aiMsgId, role: 'ai', content: aiContent, timestamp: aiTimestamp }; messages.push(aiMsg); saveMessages(config$1.integrateId, messages); if (messagesContainer$1) - scrollToBottom(messagesContainer$1); + smartScrollToBottom(); + // a11y 播报新 AI 消息 + announceMessage(aiContent); + // 通知 launcher 显示未读徽章(弹窗关闭时生效,由 index.ts 监听) + if (messagesContainer$1) { + messagesContainer$1.dispatchEvent(new CustomEvent('csk:newMessage', { bubbles: true })); + } // RAG 引用来源 if (shouldUseRag) - fetchAndRenderSources(text, aiMsg); + fetchAndRenderSources(userText, aiMsg); } catch (err) { if (hideLoadingFn$1) @@ -2607,13 +3413,19 @@ var ChatbotSDK = (function () { } finally { isSending = false; + abortController = null; + setSendButtonMode('send'); updateSendBtnState(); } } /** 流式发送消息 */ - async function sendStreamMessage(text, aiTimestamp, shouldUseRag) { + async function sendStreamMessage(text, aiTimestamp, shouldUseRag, aiMsgId) { + // 创建中断控制器,供"停止生成"使用 + abortController = new AbortController(); + const signal = abortController.signal; return new Promise((resolve, reject) => { let bubbleEl = null; + let wrapperEl = null; let accumulated = ''; let streamStarted = false; chatSSERequest(text, (chunk) => { @@ -2621,34 +3433,90 @@ var ChatbotSDK = (function () { if (!streamStarted && messagesContainer$1) { if (hideLoadingFn$1) hideLoadingFn$1(); - const { bubble } = createEmptyAIBubble(messagesContainer$1, aiTimestamp); + const { wrapper, bubble } = createEmptyAIBubble(messagesContainer$1, aiTimestamp, aiMsgId); + wrapperEl = wrapper; bubbleEl = bubble; streamStarted = true; } - if (bubbleEl) + if (bubbleEl) { bubbleEl.textContent = accumulated; + appendStreamingCaret(bubbleEl); + } if (messagesContainer$1) - scrollToBottom(messagesContainer$1); + smartScrollToBottom(); }, () => { - if (!streamStarted && accumulated === '') { - chatRequest(text).then(resolve).catch(reject); - return; + // 流结束 + if (wrapperEl && bubbleEl) { + // 无流内容降级为同步请求 + if (!streamStarted && accumulated === '') { + chatRequest(text).then(resolve).catch(reject); + return; + } + if (accumulated) + bubbleEl.innerHTML = renderMarkdown(accumulated); + finalizeAIBubble(wrapperEl, bubbleEl); } - if (bubbleEl && accumulated) - bubbleEl.innerHTML = renderMarkdown(accumulated); resolve(accumulated); }, (error) => { if (accumulated.length > 0) { - if (bubbleEl) + if (bubbleEl) { bubbleEl.innerHTML = renderMarkdown(accumulated + '\n\n' + t('stream_interrupted')); + if (wrapperEl) + finalizeAIBubble(wrapperEl, bubbleEl); + } resolve(accumulated); } else { reject(error); } - }, currentCategoryId, shouldUseRag); + }, currentCategoryId, shouldUseRag, signal); }); } + /** + * 快捷问题发送:欢迎态点击芯片,直接以该文本发送 + */ + function sendQuickReply(text) { + if (!inputEl$1 || isSending) + return Promise.resolve(); + inputEl$1.value = text; + updateSendBtnState(); + return handleSend(); + } + /** + * 重试:根据 AI 消息 ID 重新生成该回复 + * 找到该 AI 消息及其上一条用户消息,移除该 AI 消息(及之后的所有消息)后重新请求 + */ + async function retryFromMessage(msgId) { + if (!config$1 || !messagesContainer$1 || isSending) + return; + const aiIndex = messages.findIndex(m => m.id === msgId && m.role === 'ai'); + if (aiIndex < 0) + return; + // 找到上一条用户消息文本 + let userText = ''; + for (let i = aiIndex - 1; i >= 0; i--) { + if (messages[i].role === 'user') { + userText = messages[i].content; + break; + } + } + if (!userText) + return; + // 移除该 AI 消息及其后所有消息(本地 + DOM) + const removed = messages.splice(aiIndex); + const removedIds = new Set(removed.map(m => m.id)); + const nodes = messagesContainer$1.querySelectorAll('.csk-msg'); + nodes.forEach(node => { + const id = node.dataset.cskMsgId; + // 无 id 的(如错误气泡、被中断的)按顺序兜底:此处仅按 id 精确移除 + if (id && removedIds.has(id)) + node.remove(); + }); + saveMessages(config$1.integrateId, messages); + updateEmptyState(); + // 重新生成(不重复渲染用户气泡) + await produceAIReply(userText); + } /** 获取并渲染 RAG 引用来源 */ async function fetchAndRenderSources(message, aiMsg) { try { @@ -2719,11 +3587,14 @@ var ChatbotSDK = (function () { renderUserBubble(messagesContainer$1, msg.content, msg.timestamp); } else { - const wrapper = renderAIBubble(messagesContainer$1, msg.content, msg.timestamp, renderMarkdown); + const wrapper = renderAIBubble(messagesContainer$1, msg.content, msg.timestamp, renderMarkdown, msg.id); if (msg.sources && msg.sources.length > 0) renderSources(wrapper, msg.sources); + if (msg.feedback) + updateFeedbackUI(wrapper, msg.feedback); } } + isNearBottom = true; scrollToBottom(messagesContainer$1); if (clearBtn$1 && messages.length > 0) clearBtn$1.style.display = 'inline-flex'; @@ -2778,43 +3649,37 @@ var ChatbotSDK = (function () { listEl.innerHTML = `
加载中...
`; try { const result = await fetchConversationList(1, 50, config$1.userId, config$1.integrateId); - const items = result.list.map(c => ({ + historyItems = result.list.map(c => ({ id: c.conversationId || '', - chatId: c.conversationId || '', // conversationId 就是 chatId + chatId: c.conversationId || '', messageCount: c.messageCount, lastMessageTime: c.lastMessageTime, lastMessagePreview: c.lastMessagePreview, createdAt: c.firstMessageTime || c.createdAt, })); - renderHistoryList(listEl, items, - // onSelect: 切换到选中的会话 - (conversationId) => { - switchToConversation(conversationId); - }, - // onExport - (id) => { window.open(getConversationExportUrl(id), '_blank'); }, - // onDelete - async (id) => { + // 重置搜索(新数据到达时清空过滤) + historySearchText = ''; + if (searchInput) + searchInput.value = ''; + renderHistoryList(listEl, historyItems, (conversationId) => { switchToConversation(conversationId); }, (id) => { window.open(getConversationExportUrl(id), '_blank'); }, async (id) => { if (!confirm(t('history_delete_confirm'))) return; const ok = await deleteConversation(id); if (ok) { - // 如果删的是当前会话,清空聊天窗口 if (id === getChatId()) { messages = []; if (messagesContainer$1) { - const msgs = messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading'); - msgs.forEach(el => el.remove()); + messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); } if (clearBtn$1) clearBtn$1.style.display = 'none'; updateEmptyState(); } - loadHistoryConversations(); + // 从缓存中移除并重新渲染(不再重新请求后端) + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); } - }, - // 当前活跃 chatId,用于高亮 - getChatId()); + }, getChatId()); } catch (err) { logger.error(t('history_load_error'), err); @@ -2880,6 +3745,12 @@ var ChatbotSDK = (function () { let showLoadingFn = null; let hideLoadingFn = null; let dragCleanup = null; + /** 提示气泡元素 */ + let teaserEl = null; + /** 提示气泡定时器 */ + let teaserTimer = null; + /** 未读徽章元素(挂在 launcher 内部) */ + let badgeEl = null; // ==================== 公开 API ==================== /** 初始化 SDK */ function init(rawConfig) { @@ -2903,6 +3774,8 @@ var ChatbotSDK = (function () { // 6. 创建悬浮按钮 launcherEl = createLauncher(config, toggle); document.body.appendChild(launcherEl); + // 获取未读徽章引用(由 createLauncher 创建) + badgeEl = launcherEl.querySelector('.csk-launcher__badge'); // 7. 创建聊天弹窗 const dom = createChatWindow(config); windowEl = dom.window; @@ -2915,12 +3788,16 @@ var ChatbotSDK = (function () { showLoadingFn = dom.showLoading; hideLoadingFn = dom.hideLoading; document.body.appendChild(windowEl); - // 8. 启用拖拽 + // 8. 安置提示气泡(挂在 launcher 同层,由配置控制显示) + teaserEl = dom.teaserEl; + document.body.appendChild(teaserEl); + positionTeaser(); + // 9. 启用拖拽 const headerEl = windowEl.querySelector('.csk-header'); if (headerEl) { dragCleanup = enableDrag(headerEl, windowEl); } - // 9. 初始化对话模块 + // 10. 初始化对话模块 initChat(config, { messagesContainer, inputEl, @@ -2929,28 +3806,172 @@ var ChatbotSDK = (function () { categorySelect, historyPanel, welcomeEl: dom.welcomeEl, + newMsgBtn: dom.newMsgBtn, + searchInput: dom.searchInput, + ariaLiveEl: dom.ariaLiveEl, showLoading: showLoadingFn, hideLoading: hideLoadingFn, }); - // 10. 监听知识库分类切换事件 + // 11. 监听知识库分类切换事件 windowEl.addEventListener('csk:categoryChange', ((e) => { setCategory(e.detail.categoryId); })); - // 11. 监听会话管理面板加载事件 + // 12. 监听会话管理面板加载事件 windowEl.addEventListener('csk:loadHistory', () => { loadHistoryConversations(); }); + // 13. 监听快捷问题芯片点击 + windowEl.addEventListener('csk:quickReply', ((e) => { + sendQuickReply(e.detail.text); + })); + // 14. 监听 AI 消息重试事件 + windowEl.addEventListener('csk:retry', ((e) => { + retryFromMessage(e.detail.msgId); + })); + // 15. 监听消息反馈事件(👍 / 👎) + windowEl.addEventListener('csk:feedback', ((e) => { + handleFeedback(e.detail.msgId, e.detail.value); + })); + // 16. 新消息到达通知(用于未读徽章) + windowEl.addEventListener('csk:newMessage', () => { + notifyNewMessage(); + }); + // 17. ESC 键关闭弹窗 + document.addEventListener('keydown', onKeyDown); + // 17. 窗口 resize 时重新定位 teaser + window.addEventListener('resize', onResize); isInitialized = true; logger.lifecycleInit(config.integrateId, config.requestDomain); - // 12. 异步初始化 chatId 和对话历史(不阻塞 UI) + // 18. 首访提示气泡(延迟显示,弹窗未打开时生效) + if (config.showTeaser) { + teaserTimer = setTimeout(() => { + // 弹窗关闭时才显示 + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showTeaser(); + } + }, 1500); + } + // 19. 异步初始化 chatId 和对话历史(不阻塞 UI) initChatHistory().catch(err => { logger.warn('chatId 初始化失败,将在发送消息时重试', err); }); } + // ==================== 提示气泡控制 ==================== + /** 根据 launcher 位置定位 teaser 气泡 */ + function positionTeaser() { + if (!teaserEl || !launcherEl) + return; + const rect = launcherEl.getBoundingClientRect(); + const isLeft = (config === null || config === void 0 ? void 0 : config.position) === 'left-bottom'; + if (isLeft) { + teaserEl.style.left = `${rect.left}px`; + } + else { + teaserEl.style.right = `${window.innerWidth - rect.right}px`; + } + teaserEl.style.bottom = `${window.innerHeight - rect.top + 8}px`; + } + function showTeaser() { + if (!teaserEl) + return; + positionTeaser(); + teaserEl.classList.remove('csk-teaser--hidden'); + // 点击气泡本身 → 打开弹窗 + teaserEl.addEventListener('click', onTeaserClick); + // 关闭按钮(阻止冒泡,不打开弹窗) + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) { + closeBtn.addEventListener('click', onTeaserClose); + } + } + function hideTeaser() { + if (!teaserEl) + return; + teaserEl.classList.add('csk-teaser--hidden'); + teaserEl.removeEventListener('click', onTeaserClick); + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) + closeBtn.removeEventListener('click', onTeaserClose); + } + function onTeaserClick(e) { + // 关闭按钮点击不打开弹窗 + if (e.target.closest('.csk-teaser__close')) + return; + hideTeaser(); + open(); + } + function onTeaserClose(e) { + e.stopPropagation(); + hideTeaser(); + } + function onResize() { + if (teaserEl && !teaserEl.classList.contains('csk-teaser--hidden')) { + positionTeaser(); + } + } + // ==================== 未读徽章 ==================== + function showBadge() { + if (badgeEl) + badgeEl.classList.remove('csk-launcher__badge--hidden'); + } + function hideBadge() { + if (badgeEl) + badgeEl.classList.add('csk-launcher__badge--hidden'); + } + /** 新消息到达时弹窗关闭,则显示徽章 */ + function notifyNewMessage() { + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showBadge(); + } + } + // ==================== a11y 焦点陷阱 ==================== + /** 弹窗内可聚焦元素选择器 */ + const FOCUSABLE = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; + function trapFocus(e) { + if (!windowEl || windowEl.classList.contains('csk-window--hidden')) + return; + if (e.key !== 'Tab') + return; + const focusables = Array.from(windowEl.querySelectorAll(FOCUSABLE)); + if (focusables.length === 0) + return; + const first = focusables[0]; + const last = focusables[focusables.length - 1]; + if (e.shiftKey) { + // Shift+Tab:在第一个元素上按 → 跳到最后一个 + if (document.activeElement === first) { + e.preventDefault(); + last.focus(); + } + } + else { + // Tab:在最后一个元素上按 → 跳到第一个 + if (document.activeElement === last) { + e.preventDefault(); + first.focus(); + } + } + } + // ==================== 全局键盘事件 ==================== + function onKeyDown(e) { + if (e.key === 'Escape' && windowEl && !windowEl.classList.contains('csk-window--hidden')) { + close(); + } + trapFocus(e); + } /** 销毁 SDK 实例 */ function destroy() { if (!isInitialized) return; + if (teaserTimer) { + clearTimeout(teaserTimer); + teaserTimer = null; + } + hideTeaser(); + if (teaserEl && teaserEl.parentNode) { + teaserEl.parentNode.removeChild(teaserEl); + teaserEl = null; + } if (launcherEl && launcherEl.parentNode) { launcherEl.parentNode.removeChild(launcherEl); launcherEl = null; @@ -2964,6 +3985,8 @@ var ChatbotSDK = (function () { dragCleanup = null; } removeStyles(); + document.removeEventListener('keydown', onKeyDown); + window.removeEventListener('resize', onResize); const oldIntegrateId = config === null || config === void 0 ? void 0 : config.integrateId; config = null; isInitialized = false; @@ -2975,12 +3998,17 @@ var ChatbotSDK = (function () { historyPanel = null; showLoadingFn = null; hideLoadingFn = null; + badgeEl = null; logger.lifecycleDestroy(oldIntegrateId || ''); } function open() { if (!windowEl) return; windowEl.classList.remove('csk-window--hidden'); + hideTeaser(); + hideBadge(); + setTimeout(() => { if (inputEl) + inputEl.focus(); }, 80); } function close() { if (!windowEl) @@ -2992,8 +4020,6 @@ var ChatbotSDK = (function () { return; if (windowEl.classList.contains('csk-window--hidden')) { open(); - setTimeout(() => { if (inputEl) - inputEl.focus(); }, 100); } else { close(); diff --git a/client/dist/chatbot-sdk.js.map b/client/dist/chatbot-sdk.js.map index 868598b..5634b9b 100644 --- a/client/dist/chatbot-sdk.js.map +++ b/client/dist/chatbot-sdk.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file diff --git a/client/dist/chatbot-sdk.min.js b/client/dist/chatbot-sdk.min.js index 18c79aa..cd9f976 100644 --- a/client/dist/chatbot-sdk.min.js +++ b/client/dist/chatbot-sdk.min.js @@ -1,2 +1,2 @@ -var ChatbotSDK=function(){"use strict";const n="[ChatbotSDK]";let e=!0;const t={},r={info(t,r){e&&console.log(n,t,void 0!==r?r:"")},warn(t,r){e&&console.warn(n,t,void 0!==r?r:"")},error(e,t){console.error(n,e,void 0!==t?t:"")},time(n){t[n]=Date.now()},timeEnd(r,s){const o=t[r];if(void 0!==o){const i=Date.now()-o;if(delete t[r],e){const e=s?`${s} ${i}ms`:`${r} ${i}ms`;console.log(n,e)}return i}return 0},lifecycleInit(n,e){this.info(`初始化完成 integrateId=${n} requestDomain=${e}`)},lifecycleDestroy(n){this.info(`销毁实例 integrateId=${n}`)},lifecycleSend(n,e){this.info(`发送消息 integrateId=${n} length=${e}`),this.time(`send_${n}`)},lifecycleReply(n,e){const t=this.timeEnd(`send_${n}`,"AI 回复");this.info(`AI 回复 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleError(n,e,t){this.timeEnd(`send_${n}`),this.error(`请求失败 integrateId=${n} status=${e} message=${t}`)},lifecycleClear(n){this.info(`清空会话 integrateId=${n}`)},lifecycleStreamDone(n,e){const t=this.timeEnd(`send_${n}`,"流式回复");this.info(`流式回复完成 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleCategoryChange(n){this.info(`切换知识库分类 categoryId=${n}`)}};const s={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let o="zh-CN";function i(n,e){let t=(s[o]||s["zh-CN"])[n]||s["zh-CN"][n]||n;if(e)for(const[n,r]of Object.entries(e))t=t.replace(`{${n}}`,String(r));return t}let a=null;function c(n){a&&(a.chatId=n)}function l(){return(null==a?void 0:a.chatId)||""}function d(n){if(!a)throw new Error("API 配置未初始化");return`${a.requestDomain.replace(/\/+$/,"")}${n.startsWith("/")?n:`/${n}`}`}function p(n,e,t){null!=t&&("string"==typeof t&&""===t.trim()||n.set(e,String(t)))}async function u(n,e={},t=3e4){const r=new AbortController,s=setTimeout(()=>r.abort(),t);try{return await fetch(n,Object.assign(Object.assign({},e),{signal:r.signal,mode:"cors",credentials:"include"}))}catch(n){if(n instanceof DOMException&&"AbortError"===n.name)throw new m(i("error_timeout"),"timeout");if(n instanceof TypeError&&n.message.includes("Failed to fetch"))throw new m(i("error_cors"),"cors");throw new m(i("error_network"),"network")}finally{clearTimeout(s)}}class m extends Error{constructor(n,e){super(n),this.name="CskError",this.type=e}}function h(n){switch(n){case 401:return i("error_auth");case 403:return i("error_forbidden");case 404:return i("error_not_found");case 429:return i("error_rate_limit");case 500:return i("error_server");case 502:case 503:return i("error_unavailable");default:return`${i("error_unknown")}(${n})`}}async function g(n){const e=function(n){const e=new URLSearchParams;return e.set("message",n),e.set("chatId",a.chatId),p(e,"roleId",a.integrateId),p(e,"accountId",a.userId),d(`/ai/assistant_app/chat/sync?${e.toString()}`)}(n);r.lifecycleSend(a.integrateId,n.length);try{const n=await u(e);if(!n.ok){const e=h(n.status);throw r.lifecycleError(a.integrateId,String(n.status),e),new m(e,`http_${n.status}`)}const t=await n.text();return r.lifecycleReply(a.integrateId,t.length),t}catch(n){if(n instanceof m)throw n;throw r.lifecycleError(a.integrateId,"unknown",String(n)),new m(i("error_unknown"),"unknown")}}async function k(n,e,t,s,o,c){var l;const g=c?function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(n,o):function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/chat/sse?${t.toString()}`)}(n,o);let k="";r.lifecycleSend(a.integrateId,n.length);try{const n=await u(g,{},6e4);if(!n.ok){const e=h(n.status);return r.lifecycleError(a.integrateId,String(n.status),e),void s(new m(e,`http_${n.status}`))}const o=null===(l=n.body)||void 0===l?void 0:l.getReader();if(!o)return void s(new m(i("error_stream_unsupported"),"stream_unsupported"));const c=new TextDecoder("utf-8",{stream:!0});let d="";try{for(;;){const{done:n,value:t}=await o.read();if(n)break;d+=c.decode(t,{stream:!0});const r=d.split("\n");d=r.pop()||"";for(const n of r){const t=n.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const n=t.substring(5).trim();n&&(k+=n,e(n))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(k+=t,e(t))}}}if(d.trim()){const n=d.trim();if(n.startsWith("data:")){const t=n.substring(5).trim();t&&(k+=t,e(t))}else"[DONE]"!==n&&(k+=n,e(n))}}catch(n){if(!(k.length>0))throw n;e("\n\n"+i("stream_unstable"))}finally{o.releaseLock()}r.lifecycleStreamDone(a.integrateId,k.length),t()}catch(n){n instanceof m?s(n):(r.lifecycleError(a.integrateId,"unknown",String(n)),s(new m(i("error_network"),"network")))}}async function f(n,e){const t=function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/rag/sources?${t.toString()}`)}(n,e);try{const n=await u(t);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const e=await n.json();return e.success&&Array.isArray(e.data)?(r.info(`获取引用来源 count=${e.data.length}`),e.data):[]}catch(n){return r.error("获取引用来源失败",n),[]}}async function b(n=1,e=20,t,s){let o=`/conversation/list?page=${n}&size=${e}`;t&&(o+=`&accountId=${encodeURIComponent(t)}`),s&&(o+=`&roleId=${encodeURIComponent(s)}`);const i=d(o);try{const n=await u(i);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const e=await n.json();return{list:e.success&&Array.isArray(e.data)?e.data:[],total:e.total||0,pages:e.pages||0}}catch(n){return r.error("加载会话列表失败",n),{list:[],total:0,pages:0}}}async function x(n){const e=d(`/conversation/${n}/messages`);try{const n=await u(e);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const t=await n.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(n){return r.error("加载会话消息失败",n),{messages:[],total:0}}}async function y(){if(!a)return"";const n=function(n,e){try{return localStorage.getItem(_(n,e))||""}catch(n){return""}}(a.integrateId,a.userId);if(n)return a.chatId=n,r.info(`从缓存恢复 chatId=${n}`),n;try{const n=await b(1,5,a.userId,a.integrateId);if(n.list.length>0){const e=n.list[0],t=e.conversationId||e.chatId||"";if(t)return a.chatId=t,w(a.integrateId,a.userId,t),r.info(`从后端恢复会话 chatId=${t} messageCount=${e.messageCount}`),t}}catch(n){r.warn("查询后端会话列表失败,将生成新 chatId",n)}const e=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();return a.chatId=e,w(a.integrateId,a.userId,e),r.info(`生成新 chatId=${e}`),e}function _(n,e){return`csk_chatId_${n}${e?"_"+e:""}`}function w(n,e,t){try{t?localStorage.setItem(_(n,e),t):localStorage.removeItem(_(n,e))}catch(n){}}let v=null;function C(n){const e=I(n.primaryColor,-15),t=I(n.primaryColor,18),r=function(n){const e=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return e?`${parseInt(e[1],16)}, ${parseInt(e[2],16)}, ${parseInt(e[3],16)}`:"79, 70, 229"}(n.primaryColor);return`\n --csk-primary: ${n.primaryColor};\n --csk-primary-hover: ${e};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${n.primaryColor}, ${e});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${n.width}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n `}function I(n,e){const t=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return n;const r=n=>Math.max(0,Math.min(255,n)),s=r(parseInt(t[1],16)+e),o=r(parseInt(t[2],16)+e),i=r(parseInt(t[3],16)+e);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`}function E(n){document.querySelector("style[data-csk-sdk]")||(v=document.createElement("style"),v.setAttribute("data-csk-sdk",""),v.textContent=function(n){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${C(n)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 58px;\n height: 58px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n box-shadow: 0 8px 24px rgba(var(--csk-primary-rgb), 0.42), 0 2px 6px rgba(15, 23, 42, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.22s ease;\n border: none;\n color: #fff;\n user-select: none;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(var(--csk-primary-rgb), 0.35);\n opacity: 0;\n animation: csk-ping 2.6s cubic-bezier(0, 0, 0.2, 1) infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 12px 32px rgba(var(--csk-primary-rgb), 0.5), 0 4px 10px rgba(15, 23, 42, 0.14);\n}\n.csk-launcher:active { transform: scale(0.94); }\n.csk-launcher svg { width: 28px; height: 28px; }\n\n@keyframes csk-ping {\n 0% { transform: scale(0.92); opacity: 0.7; }\n 70%, 100% { transform: scale(1.35); opacity: 0; }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: 600px;\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(n),document.head.appendChild(v))}function $(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const e=16*Math.random()|0;return("x"===n?e:3&e|8).toString(16)})}function S(n){const e={"&":"&","<":"<",">":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,n=>e[n]||n)}function N(){return Date.now()}const A='';function L(n,e){const t=document.createElement("div");t.id="csk-launcher",t.className="csk-launcher csk-launcher--"+("left-bottom"===n.position?"left":"right"),t.setAttribute("title",n.title),t.setAttribute("aria-label",n.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=n.launcherIcon;const r=function(n,e){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{n.apply(this,r),t=null},e)}}(e,300);return t.addEventListener("click",r),t.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),r())}),t}function F(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const i=document.createElement("div");i.className="csk-msg__bubble",i.textContent=e;const a=document.createElement("div");return a.className="csk-msg__time",a.textContent=T(t),o.appendChild(i),o.appendChild(a),r.appendChild(s),r.appendChild(o),n.appendChild(r),r}function M(n,e,t,r){const s=document.createElement("div");s.className="csk-msg csk-msg--ai";const o=document.createElement("div");o.className="csk-msg__avatar csk-msg__avatar--ai",o.innerHTML=A;const i=document.createElement("div");i.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",r?a.innerHTML=r(e):a.textContent=e;const c=document.createElement("div");return c.className="csk-msg__time",c.textContent=T(t),i.appendChild(a),i.appendChild(c),s.appendChild(o),s.appendChild(i),n.appendChild(s),s}function D(n,e){const t=n.querySelector(".csk-sources");if(t&&t.remove(),!e||0===e.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${i("source_count",{n:e.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const c=document.createElement("div");c.className="csk-sources__body";for(const n of e){const e=document.createElement("div");e.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=n.title||n.sourceName||"未知文档",n.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=n.snippet,e.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];n.sourceName&&s.push(n.sourceName),void 0!==n.chunkIndex&&s.push(`分块 #${n.chunkIndex}`),void 0!==n.score&&s.push(`相关度 ${(100*n.score).toFixed(0)}%`),r.textContent=s.join(" · "),e.appendChild(t),e.appendChild(r),c.appendChild(e)}r.appendChild(s),r.appendChild(c);const l=n.querySelector(".csk-msg__time");l&&l.parentNode?l.parentNode.insertBefore(r,l):n.appendChild(r)}function z(n){n.scrollTop=n.scrollHeight}function T(n){const e=new Date(n);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}function H(n){return`csk_history_${n}`}function B(n,e){try{let t=e;t.length>200&&(t=t.slice(50),r.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const s={messages:t,updatedAt:Date.now()};localStorage.setItem(H(n),JSON.stringify(s))}catch(n){n instanceof Error&&"QuotaExceededError"===n.name?r.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):r.error("保存会话历史失败",n)}}function q(n){try{localStorage.removeItem(H(n))}catch(n){r.warn("清空会话历史失败",n)}}const j="\0CODEBLOCK_",P="\0INLINECODE_";function R(n){if(!n||"string"!=typeof n)return"";const e=[];let t=n;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(n,t,r)=>{const s=e.length,o=S(r.trimEnd()),i=t?` class="language-${S(t)}"`:"";return e.push(`
${o}
`),`${j}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(n,e)=>{const t=r.length;return r.push(`${S(e)}`),`${P}${t}\0`}),t=S(t),t=U(t,j,e),t=U(t,P,r);const s=t.split("\n"),o=[];let i=!1,a="",c=!1,l=[];for(let n=0;n')){p(),u(),m(),o.push(e);continue}const t=e.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),m();const n=t[1].length;o.push(`${t[2]}`);continue}const r=e.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&m();const h=e.match(/^[\-\*]\s+(.+)/);if(h){p(),m(),i&&"ul"===a||(u(),i=!0,a="ul",o.push('
    ')),o.push(`
  • ${d(h[1])}
  • `);continue}const g=e.match(/^\d+\.\s+(.+)/);g?(p(),m(),i&&"ol"===a||(u(),i=!0,a="ol",o.push('
      ')),o.push(`
    1. ${d(g[1])}
    2. `)):""!==e.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(e.trim())?(p(),u(),m(),o.push('
      ')):(u(),m(),l.push(d(e))):(p(),u())}return p(),u(),m(),o.join("\n");function d(n){return n=(n=(n=(n=(n=(n=n.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(n,e,t)=>`${e}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){i&&(o.push("ul"===a?"
":""),i=!1,a="")}function m(){c&&(o.push("
"),c=!1)}}function U(n,e,t){return n.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(n,e)=>t[parseInt(e)]||"")}let O,W=null,Y=[],K=null,V=null,X=null,J=null,G=null,Q=null,Z=null,nn=null,en=null,tn=null,rn=!1,sn=!1;function on(n,e){W=n,K=e.messagesContainer,V=e.inputEl,X=e.inputEl.parentElement,J=e.sendBtn,G=e.clearBtn,Q=e.categorySelect,Z=e.historyPanel,nn=e.welcomeEl,en=e.showLoading,tn=e.hideLoading,O=n.categoryId,sn=!!n.categoryId||!!n.showCategorySwitch,function(){if(!V||!J)return;J.addEventListener("click",()=>dn()),V.addEventListener("keydown",n=>{"Enter"!==n.key||n.shiftKey||(n.preventDefault(),dn())}),V.addEventListener("input",()=>{ln(),function(){if(!V)return;V.style.height="auto",V.style.height=`${Math.min(V.scrollHeight,120)}px`}()}),V.addEventListener("focus",()=>{X&&X.classList.add("csk-input-wrap--focus")}),V.addEventListener("blur",()=>{X&&X.classList.remove("csk-input-wrap--focus")}),G&&G.addEventListener("click",()=>function(){if(!W)return;if(!confirm(i("clear_confirm")))return;if(Y=[],K){K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}G&&(G.style.display="none");cn(),q(W.integrateId);const n=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();c(n),w(W.integrateId,W.userId,n),r.lifecycleClear(W.integrateId),r.info(`新 chatId=${n}`)}())}(),n.showCategorySwitch&&Q&&async function(){if(!Q)return;try{const n=await async function(){const n=d("/category/tree");try{const e=await u(n);if(!e.ok)throw new m(h(e.status),`http_${e.status}`);const t=await e.json();return t.success&&Array.isArray(t.data)?(r.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(n){return n instanceof m?r.error(`加载分类树失败: ${n.message}`):r.error("加载分类树失败",n),[]}}();if(0===n.length)return;Q.innerHTML=``;const e=(n,t=0)=>{for(const r of n){const n=document.createElement("option");n.value=String(r.id),n.textContent=`${" ".repeat(t)}${r.name}`,void 0!==O&&String(r.id)===String(O)&&(n.selected=!0),Q.appendChild(n),r.children&&r.children.length>0&&e(r.children,t+1)}};e(n),r.info(`知识库分类加载成功 count=${n.length}`)}catch(n){r.error(i("category_load_error"),n)}}()}async function an(){if(W&&K&&(await y(),await async function(){if(!W||!K)return;const n=l();if(!n)return;try{const e=await x(n);e.messages.length>0&&(Y=e.messages.map((n,e)=>({id:$(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),pn(),r.info(`从后端加载 ${Y.length} 条历史消息`),B(W.integrateId,Y))}catch(n){r.warn("从后端加载历史消息失败",n)}}(),0===Y.length)){const n=function(n){try{const e=localStorage.getItem(H(n));if(!e)return[];const t=JSON.parse(e);return t&&Array.isArray(t.messages)?(r.info(`加载历史消息 integrateId=${n} count=${t.messages.length}`),t.messages):[]}catch(n){return r.warn("加载会话历史失败",n),[]}}(W.integrateId);n.length>0&&(Y=n,pn(),r.info(`从本地缓存恢复 ${n.length} 条消息`))}}function cn(){if(!nn)return;const n=Y.length>0||K&&K.querySelector(".csk-msg");nn.style.display=n?"none":""}function ln(){if(!J||!V)return;V.value.trim().length>0&&!rn?J.removeAttribute("disabled"):J.setAttribute("disabled","true")}async function dn(){if(!V||!W||rn)return;const n=V.value.trim();if(""===n)return;V.value="",ln(),V.style.height="auto",rn=!0,ln(),W.chatId||await y();const e=N();K&&F(K,n,e);const t={id:$(),role:"user",content:n,timestamp:e};Y.push(t),cn(),G&&Y.length>0&&(G.style.display="inline-flex"),K&&z(K),en&&en(),K&&z(K);try{let e;const t=N(),s=sn&&(void 0!==O||void 0!==W.categoryId);e=W.streaming?await async function(n,e,t){return new Promise((r,s)=>{let o=null,a="",c=!1;k(n,n=>{if(a+=n,!c&&K){tn&&tn();const{bubble:n}=function(n,e){const t=document.createElement("div");t.className="csk-msg csk-msg--ai";const r=document.createElement("div");r.className="csk-msg__avatar csk-msg__avatar--ai",r.innerHTML=A;const s=document.createElement("div");s.className="csk-msg__content";const o=document.createElement("div");o.className="csk-msg__bubble",o.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=T(e),s.appendChild(o),s.appendChild(i),t.appendChild(r),t.appendChild(s),n.appendChild(t),{wrapper:t,bubble:o}}(K,e);o=n,c=!0}o&&(o.textContent=a),K&&z(K)},()=>{c||""!==a?(o&&a&&(o.innerHTML=R(a)),r(a)):g(n).then(r).catch(s)},n=>{a.length>0?(o&&(o.innerHTML=R(a+"\n\n"+i("stream_interrupted"))),r(a)):s(n)},O,t)})}(n,t,s):await g(n),tn&&tn(),!W.streaming&&K&&M(K,e,t,R);const o={id:$(),role:"ai",content:e,timestamp:t};Y.push(o),B(W.integrateId,Y),K&&z(K),s&&async function(n,e){try{const t=await f(n,O);if(t.length>0){const n=t.map(n=>{var e,t;return{documentId:n.documentId||"",title:n.title||"",sourceName:n.sourceName||"",chunkIndex:null!==(e=n.chunkIndex)&&void 0!==e?e:0,score:null!==(t=n.score)&&void 0!==t?t:0,snippet:n.snippet||""}});if(e.sources=n,K){const e=K.querySelector(".csk-msg--ai:last-of-type");e&&D(e,n)}W&&B(W.integrateId,Y)}}catch(n){r.warn("获取引用来源失败",n)}}(n,o)}catch(n){tn&&tn();const e=n instanceof m?n.message:i("error_send");if(K){const n=document.createElement("div");n.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${e}`,n.appendChild(t),K.appendChild(n)}r.error(`发送失败 integrateId=${W.integrateId}`,n)}finally{rn=!1,ln()}}function pn(){if(!K)return;const n=K.querySelector(".csk-history-panel");K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());for(const n of Y)if("user"===n.role)F(K,n.content,n.timestamp);else{const e=M(K,n.content,n.timestamp,R);n.sources&&n.sources.length>0&&D(e,n.sources)}z(K),G&&Y.length>0&&(G.style.display="inline-flex"),cn(),n&&!K.contains(n)&&K.appendChild(n)}async function un(){if(!Z||!W)return;const n=Z.querySelector("#csk-history-list");if(n){n.innerHTML='
加载中...
';try{const e=await b(1,50,W.userId,W.integrateId);!function(n,e,t,r,s,o){if(n.innerHTML="",0===e.length){const e=document.createElement("div");return e.className="csk-history-panel__empty",e.innerHTML=`\n
💬
\n
${i("history_empty")}
\n `,void n.appendChild(e)}for(const a of e){const e=document.createElement("div");e.className="csk-history-item";const c=a.chatId||a.id;o&&c===o&&e.classList.add("csk-history-item--active");const l=document.createElement("div");l.className="csk-history-item__info";const d=document.createElement("div");d.className="csk-history-item__id",a.lastMessagePreview?d.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:d.textContent=c;const p=document.createElement("div");p.className="csk-history-item__meta";const u=[];void 0!==a.messageCount&&u.push(`${a.messageCount} 条消息`),a.lastMessageTime?u.push(a.lastMessageTime):a.createdAt&&u.push(a.createdAt),p.textContent=u.join(" · "),l.appendChild(d),l.appendChild(p);const m=document.createElement("div");m.className="csk-history-item__actions";const h=document.createElement("button");h.className="csk-history-action csk-history-action--export",h.setAttribute("title",i("history_export")),h.innerHTML='',h.addEventListener("click",n=>{n.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",i("history_delete")),g.innerHTML='',g.addEventListener("click",n=>{n.stopPropagation(),s(a.id)}),m.appendChild(h),m.appendChild(g),e.appendChild(l),e.appendChild(m),e.addEventListener("click",()=>{t(c)}),n.appendChild(e)}}(n,e.list.map(n=>({id:n.conversationId||"",chatId:n.conversationId||"",messageCount:n.messageCount,lastMessageTime:n.lastMessageTime,lastMessagePreview:n.lastMessagePreview,createdAt:n.firstMessageTime||n.createdAt})),n=>{!async function(n){if(!W||!K)return;r.info(`切换到会话 conversationId=${n}`),c(n),w(W.integrateId,W.userId,n),Z&&Z.classList.add("csk-history-panel--hidden");Y=[];K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());try{const e=await x(n);e.messages.length>0&&(Y=e.messages.map(n=>({id:$(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),pn(),r.info(`加载会话 ${n} 的 ${Y.length} 条消息`),B(W.integrateId,Y))}catch(e){r.warn(`加载会话消息失败 conversationId=${n}`,e)}G&&Y.length>0&&(G.style.display="inline-flex");cn()}(n)},n=>{window.open(d(`/conversation/${n}/export`),"_blank")},async n=>{if(!confirm(i("history_delete_confirm")))return;if(await async function(n){const e=d(`/conversation/${n}`);try{const t=await u(e,{method:"DELETE"});if(!t.ok)throw new m(h(t.status),`http_${t.status}`);const s=await t.json();return r.info(`删除会话 id=${n} success=${s.success}`),s.success||!1}catch(n){return r.error("删除会话失败",n),!1}}(n)){if(n===l()){if(Y=[],K){K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}G&&(G.style.display="none"),cn()}un()}},l())}catch(e){r.error(i("history_load_error"),e),n.innerHTML=`
${i("history_load_error")}
`}}}let mn=null,hn=!1,gn=null,kn=null,fn=null,bn=null,xn=null,yn=null,_n=null,wn=null,vn=null,Cn=null,In=null;function En(){kn&&kn.classList.remove("csk-window--hidden")}function $n(){kn&&kn.classList.add("csk-window--hidden")}function Sn(){kn&&(kn.classList.contains("csk-window--hidden")?(En(),setTimeout(()=>{bn&&bn.focus()},100)):$n())}const Nn={init:function(n){if(hn)return void r.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(n){var e,t,s,o,i,a;if(!n.integrateId||"string"!=typeof n.integrateId&&"number"!=typeof n.integrateId||"string"==typeof n.integrateId&&""===n.integrateId.trim())return r.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!n.requestDomain||"string"!=typeof n.requestDomain||""===n.requestDomain.trim())return r.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(n.requestDomain)}catch(e){return r.error(`requestDomain 不是合法的 URL 格式:${n.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const c={integrateId:String(n.integrateId).trim(),requestDomain:n.requestDomain.replace(/\/+$/,""),userId:n.userId,categoryId:n.categoryId,showCategorySwitch:null!==(e=n.showCategorySwitch)&&void 0!==e&&e,title:n.title||"AI 智能助手",width:null!==(t=n.width)&&void 0!==t?t:380,position:"left-bottom"===n.position?"left-bottom":"right-bottom",primaryColor:n.primaryColor||"#4F46E5",launcherIcon:n.launcherIcon||'\n \n \n',showClear:null===(s=n.showClear)||void 0===s||s,showAdminPanel:null!==(o=n.showAdminPanel)&&void 0!==o&&o,streaming:null===(i=n.streaming)||void 0===i||i,locale:n.locale||"zh-CN",debug:null===(a=n.debug)||void 0===a||a,chatId:""};return r.info(`配置解析完成 integrateId(=roleId)=${c.integrateId} userId(=accountId)=${c.userId||"(未设置)"} requestDomain=${c.requestDomain}`),c}(n);if(!t)return;var c;mn=t,function(n){if(s[n])o=n;else{const e=n.split("-")[0],t=Object.keys(s).find(n=>n.startsWith(e));t&&(o=t)}}(mn.locale),c=mn.debug,e=c,function(n){a=n}(mn),E(mn),gn=L(mn,Sn),document.body.appendChild(gn);const l=function(n){const e=document.createElement("div");e.id="csk-window",e.className=`csk-root csk-window csk-window--${"left-bottom"===n.position?"left":"right"} csk-window--hidden`;const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=A;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=n.title;const c=document.createElement("span");c.className="csk-header__status",c.innerHTML=`${i("status_online")}`,o.appendChild(a),o.appendChild(c),r.appendChild(s),r.appendChild(o);const l=document.createElement("div");l.className="csk-header__actions";const d=document.createElement("button");d.className="csk-history-btn",d.setAttribute("title",i("history_title")),d.innerHTML='';const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--minimize",p.setAttribute("title",i("minimize")),p.innerHTML='',p.addEventListener("click",()=>{e.classList.add("csk-window--hidden")});const u=document.createElement("button");u.className="csk-header__btn csk-header__btn--close",u.setAttribute("title",i("close")),u.innerHTML='',u.addEventListener("click",()=>{e.classList.add("csk-window--hidden")}),l.appendChild(d),l.appendChild(p),l.appendChild(u),t.appendChild(r),t.appendChild(l);const m=document.createElement("div");m.id="csk-messages",m.className="csk-messages";const h=document.createElement("div");h.className="csk-welcome",h.innerHTML=`\n
${A}
\n
${i("welcome_title")}
\n
${i("welcome_desc")}
\n `,m.appendChild(h);const g=document.createElement("div");g.className="csk-history-panel csk-history-panel--hidden",g.innerHTML=`\n
\n ${i("history_title")}\n \n
\n
\n `,m.appendChild(g);const k=g.querySelector("#csk-history-back");k&&k.addEventListener("click",()=>{g.classList.add("csk-history-panel--hidden")}),d.addEventListener("click",n=>{n.stopPropagation();const t=g.classList.contains("csk-history-panel--hidden");g.classList.toggle("csk-history-panel--hidden"),t&&e.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(n.showCategorySwitch){const n=document.createElement("div");n.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const n=f.value;e.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:n?Number(n):void 0}}))}),n.appendChild(r),n.appendChild(f),e.appendChild(t),e.appendChild(m),e.appendChild(n)}else e.appendChild(t),e.appendChild(m);const b=document.createElement("div");b.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const y=document.createElement("textarea");y.id="csk-input",y.className="csk-input",y.setAttribute("placeholder",i("placeholder")),y.setAttribute("rows","1"),y.setAttribute("autofocus","");const _=document.createElement("button");_.id="csk-send-btn",_.className="csk-send-btn",_.setAttribute("title",i("send")),_.setAttribute("disabled","true"),_.innerHTML='',x.appendChild(y),x.appendChild(_),b.appendChild(x),e.appendChild(b);let w=null;n.showClear&&(w=document.createElement("button"),w.className="csk-clear-btn",w.textContent=i("clear"),w.style.display="none",e.insertBefore(w,b));let v=null;return{window:e,messagesContainer:m,inputEl:y,sendBtn:_,clearBtn:w,categorySelect:f,historyPanel:g,welcomeEl:h,showLoading:function(){if(v)return v.style.display="flex",v;const n=document.createElement("div");return n.className="csk-loading",n.innerHTML=`\n
${A}
\n
\n
\n
\n
\n
\n `,m.appendChild(n),v=n,n},hideLoading:function(){v&&v.parentNode&&(v.parentNode.removeChild(v),v=null)}}}(mn);kn=l.window,fn=l.messagesContainer,bn=l.inputEl,xn=l.sendBtn,yn=l.clearBtn,_n=l.categorySelect,wn=l.historyPanel,vn=l.showLoading,Cn=l.hideLoading,document.body.appendChild(kn);const d=kn.querySelector(".csk-header");d&&(In=function(n,e){let t=!1,r=0,s=0,o=0,i=0;const a=n=>{if(n.target.closest("button"))return;t=!0,r=n.clientX,s=n.clientY;const a=e.getBoundingClientRect();o=r-a.left,i=s-a.top,document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)},c=n=>{if(!t)return;const r=n.clientX-o,s=n.clientY-i,a=window.innerWidth-e.offsetWidth,c=window.innerHeight-e.offsetHeight;e.style.right="auto",e.style.bottom="auto",e.style.left=`${Math.max(0,Math.min(r,a))}px`,e.style.top=`${Math.max(0,Math.min(s,c))}px`},l=()=>{t=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)};return n.addEventListener("mousedown",a),()=>{n.removeEventListener("mousedown",a),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)}}(d,kn)),on(mn,{messagesContainer:fn,inputEl:bn,sendBtn:xn,clearBtn:yn,categorySelect:_n,historyPanel:wn,welcomeEl:l.welcomeEl,showLoading:vn,hideLoading:Cn}),kn.addEventListener("csk:categoryChange",n=>{var e;e=n.detail.categoryId,O=e,sn=void 0!==e,r.lifecycleCategoryChange(null!=e?e:"全部")}),kn.addEventListener("csk:loadHistory",()=>{un()}),hn=!0,r.lifecycleInit(mn.integrateId,mn.requestDomain),an().catch(n=>{r.warn("chatId 初始化失败,将在发送消息时重试",n)})},destroy:function(){if(!hn)return;gn&&gn.parentNode&&(gn.parentNode.removeChild(gn),gn=null),kn&&kn.parentNode&&(kn.parentNode.removeChild(kn),kn=null),In&&(In(),In=null),v&&v.parentNode&&(v.parentNode.removeChild(v),v=null),document.querySelectorAll("style[data-csk-sdk]").forEach(n=>n.remove());const n=null==mn?void 0:mn.integrateId;mn=null,hn=!1,fn=null,bn=null,xn=null,yn=null,_n=null,wn=null,vn=null,Cn=null,r.lifecycleDestroy(n||"")},open:En,close:$n,toggle:Sn,clearHistory:function(){mn&&(yn?yn.click():confirm("确定清空所有对话记录?")&&q(mn.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=Nn),Nn}(); +var ChatbotSDK=function(){"use strict";const e="[ChatbotSDK]";let n=!0;const t={},r={info(t,r){n&&console.log(e,t,void 0!==r?r:"")},warn(t,r){n&&console.warn(e,t,void 0!==r?r:"")},error(n,t){console.error(e,n,void 0!==t?t:"")},time(e){t[e]=Date.now()},timeEnd(r,s){const o=t[r];if(void 0!==o){const a=Date.now()-o;if(delete t[r],n){const n=s?`${s} ${a}ms`:`${r} ${a}ms`;console.log(e,n)}return a}return 0},lifecycleInit(e,n){this.info(`初始化完成 integrateId=${e} requestDomain=${n}`)},lifecycleDestroy(e){this.info(`销毁实例 integrateId=${e}`)},lifecycleSend(e,n){this.info(`发送消息 integrateId=${e} length=${n}`),this.time(`send_${e}`)},lifecycleReply(e,n){const t=this.timeEnd(`send_${e}`,"AI 回复");this.info(`AI 回复 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleError(e,n,t){this.timeEnd(`send_${e}`),this.error(`请求失败 integrateId=${e} status=${n} message=${t}`)},lifecycleClear(e){this.info(`清空会话 integrateId=${e}`)},lifecycleStreamDone(e,n){const t=this.timeEnd(`send_${e}`,"流式回复");this.info(`流式回复完成 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleCategoryChange(e){this.info(`切换知识库分类 categoryId=${e}`)}};const s={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let o="zh-CN";function a(e,n){let t=(s[o]||s["zh-CN"])[e]||s["zh-CN"][e]||e;if(n)for(const[e,r]of Object.entries(n))t=t.replace(`{${e}}`,String(r));return t}let i=null;function c(e){i&&(i.chatId=e)}function l(){return(null==i?void 0:i.chatId)||""}function d(e){if(!i)throw new Error("API 配置未初始化");return`${i.requestDomain.replace(/\/+$/,"")}${e.startsWith("/")?e:`/${e}`}`}function p(e,n,t){null!=t&&("string"==typeof t&&""===t.trim()||e.set(n,String(t)))}async function u(e,n={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(e,Object.assign(Object.assign({},n),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(e){if(null==r?void 0:r.aborted)throw new k("aborted","aborted");if(e instanceof DOMException&&"AbortError"===e.name)throw new k(a("error_timeout"),"timeout");if(e instanceof TypeError&&e.message.includes("Failed to fetch"))throw new k(a("error_cors"),"cors");throw new k(a("error_network"),"network")}finally{clearTimeout(o)}}class k extends Error{constructor(e,n){super(e),this.name="CskError",this.type=n}}function m(e){switch(e){case 401:return a("error_auth");case 403:return a("error_forbidden");case 404:return a("error_not_found");case 429:return a("error_rate_limit");case 500:return a("error_server");case 502:case 503:return a("error_unavailable");default:return`${a("error_unknown")}(${e})`}}async function g(e){const n=function(e){const n=new URLSearchParams;return n.set("message",e),n.set("chatId",i.chatId),p(n,"roleId",i.integrateId),p(n,"accountId",i.userId),d(`/ai/assistant_app/chat/sync?${n.toString()}`)}(e);r.lifecycleSend(i.integrateId,e.length);try{const e=await u(n);if(!e.ok){const n=m(e.status);throw r.lifecycleError(i.integrateId,String(e.status),n),new k(n,`http_${e.status}`)}const t=await e.text();return r.lifecycleReply(i.integrateId,t.length),t}catch(e){if(e instanceof k)throw e;throw r.lifecycleError(i.integrateId,"unknown",String(e)),new k(a("error_unknown"),"unknown")}}async function h(e,n,t,s,o,c,l){var g;const h=c?function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(e,o):function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/chat/sse?${t.toString()}`)}(e,o);let b="";r.lifecycleSend(i.integrateId,e.length);try{const e=await u(h,{},6e4,l);if(!e.ok){const n=m(e.status);return r.lifecycleError(i.integrateId,String(e.status),n),void s(new k(n,`http_${e.status}`))}const o=null===(g=e.body)||void 0===g?void 0:g.getReader();if(!o)return void s(new k(a("error_stream_unsupported"),"stream_unsupported"));const c=new TextDecoder("utf-8",{stream:!0});let d="";try{for(;;){const{done:e,value:t}=await o.read();if(e)break;d+=c.decode(t,{stream:!0});const r=d.split("\n");d=r.pop()||"";for(const e of r){const t=e.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const e=t.substring(5).trim();e&&(b+=e,n(e))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(b+=t,n(t))}}}if(d.trim()){const e=d.trim();if(e.startsWith("data:")){const t=e.substring(5).trim();t&&(b+=t,n(t))}else"[DONE]"!==e&&(b+=e,n(e))}}catch(e){if(null==l?void 0:l.aborted)r.info(`流式被用户中断,保留已生成内容 length=${b.length}`);else{if(!(b.length>0))throw e;n("\n\n"+a("stream_unstable"))}}finally{o.releaseLock()}r.lifecycleStreamDone(i.integrateId,b.length),t()}catch(e){if((null==l?void 0:l.aborted)||e instanceof k&&"aborted"===e.type)return void t();e instanceof k?s(e):(r.lifecycleError(i.integrateId,"unknown",String(e)),s(new k(a("error_network"),"network")))}}async function b(e,n){const t=function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/rag/sources?${t.toString()}`)}(e,n);try{const e=await u(t);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const n=await e.json();return n.success&&Array.isArray(n.data)?(r.info(`获取引用来源 count=${n.data.length}`),n.data):[]}catch(e){return r.error("获取引用来源失败",e),[]}}async function f(e=1,n=20,t,s){let o=`/conversation/list?page=${e}&size=${n}`;t&&(o+=`&accountId=${encodeURIComponent(t)}`),s&&(o+=`&roleId=${encodeURIComponent(s)}`);const a=d(o);try{const e=await u(a);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const n=await e.json();return{list:n.success&&Array.isArray(n.data)?n.data:[],total:n.total||0,pages:n.pages||0}}catch(e){return r.error("加载会话列表失败",e),{list:[],total:0,pages:0}}}async function y(e){const n=d(`/conversation/${e}/messages`);try{const e=await u(n);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const t=await e.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(e){return r.error("加载会话消息失败",e),{messages:[],total:0}}}async function x(e){const n=d(`/conversation/${e}`);try{const t=await u(n,{method:"DELETE"});if(!t.ok)throw new k(m(t.status),`http_${t.status}`);const s=await t.json();return r.info(`删除会话 id=${e} success=${s.success}`),s.success||!1}catch(e){return r.error("删除会话失败",e),!1}}function v(e){return d(`/conversation/${e}/export`)}async function w(){if(!i)return"";const e=function(e,n){try{return localStorage.getItem(_(e,n))||""}catch(e){return""}}(i.integrateId,i.userId);if(e)return i.chatId=e,r.info(`从缓存恢复 chatId=${e}`),e;try{const e=await f(1,5,i.userId,i.integrateId);if(e.list.length>0){const n=e.list[0],t=n.conversationId||n.chatId||"";if(t)return i.chatId=t,E(i.integrateId,i.userId,t),r.info(`从后端恢复会话 chatId=${t} messageCount=${n.messageCount}`),t}}catch(e){r.warn("查询后端会话列表失败,将生成新 chatId",e)}const n=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();return i.chatId=n,E(i.integrateId,i.userId,n),r.info(`生成新 chatId=${n}`),n}function _(e,n){return`csk_chatId_${e}${n?"_"+n:""}`}function E(e,n,t){try{t?localStorage.setItem(_(e,n),t):localStorage.removeItem(_(e,n))}catch(e){}}let C=null;function I(e){const n=$(e.primaryColor,-15),t=$(e.primaryColor,18),r=function(e){const n=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return n?`${parseInt(n[1],16)}, ${parseInt(n[2],16)}, ${parseInt(n[3],16)}`:"79, 70, 229"}(e.primaryColor);return`\n --csk-primary: ${e.primaryColor};\n --csk-primary-hover: ${n};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${e.primaryColor}, ${n});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${e.width}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n `}function $(e,n){const t=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return e;const r=e=>Math.max(0,Math.min(255,e)),s=r(parseInt(t[1],16)+n),o=r(parseInt(t[2],16)+n),a=r(parseInt(t[3],16)+n);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function A(e){document.querySelector("style[data-csk-sdk]")||(C=document.createElement("style"),C.setAttribute("data-csk-sdk",""),C.textContent=function(e){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${I(e)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 58px;\n height: 58px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n box-shadow: 0 8px 24px rgba(var(--csk-primary-rgb), 0.42), 0 2px 6px rgba(15, 23, 42, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.22s ease;\n border: none;\n color: #fff;\n user-select: none;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(var(--csk-primary-rgb), 0.35);\n opacity: 0;\n animation: csk-ping 2.6s cubic-bezier(0, 0, 0.2, 1) infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 12px 32px rgba(var(--csk-primary-rgb), 0.5), 0 4px 10px rgba(15, 23, 42, 0.14);\n}\n.csk-launcher:active { transform: scale(0.94); }\n.csk-launcher svg { width: 28px; height: 28px; }\n\n@keyframes csk-ping {\n 0% { transform: scale(0.92); opacity: 0.7; }\n 70%, 100% { transform: scale(1.35); opacity: 0; }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: 600px;\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -3px;\n right: -3px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.4); }\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(e),document.head.appendChild(C))}function L(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}function S(e){const n={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,e=>n[e]||e)}function F(){return Date.now()}const N='';function M(e,n){const t=document.createElement("div");t.id="csk-launcher",t.className="csk-launcher csk-launcher--"+("left-bottom"===e.position?"left":"right"),t.setAttribute("title",e.title),t.setAttribute("aria-label",e.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=e.launcherIcon;const r=document.createElement("div");r.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(r);const s=function(e,n){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{e.apply(this,r),t=null},n)}}(n,300);return t.addEventListener("click",s),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),s())}),t}function D(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=n;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=W(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),r}function T(e,n,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=N;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(n):c.textContent=n;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=W(t),i.appendChild(c),i.appendChild(z(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),e.appendChild(o),P(c),o}const q='',B='';function z(e,n){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",a("copy")),r.setAttribute("aria-label",a("copy")),r.innerHTML=q,r.addEventListener("click",async n=>{n.stopPropagation();const t=e.textContent||"";await j(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",a("retry")),s.setAttribute("aria-label",a("retry")),s.innerHTML=B,s.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:n.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",a("feedback_up")),o.setAttribute("aria-label",a("feedback_up")),o.innerHTML='',o.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"up"}}))});const i=document.createElement("button");return i.type="button",i.className="csk-feedback-btn",i.setAttribute("title",a("feedback_down")),i.setAttribute("aria-label",a("feedback_down")),i.innerHTML='',i.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(i),t}function H(e,n){const t=e.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(e=>e.classList.remove("csk-feedback-btn--active","down")),"up"===n&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===n&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function j(e,n){const t=n.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)}n.innerHTML='',n.classList.add("csk-action-btn--done"),setTimeout(()=>{n.innerHTML=t,n.classList.remove("csk-action-btn--done")},1500)}catch(e){}}function P(e){e.querySelectorAll(".csk-md-code-block").forEach(e=>{if(e.querySelector(".csk-md-code-copy"))return;const n=e.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",a("copy")),t.setAttribute("aria-label",a("copy")),t.innerHTML=q,t.addEventListener("click",async e=>{e.stopPropagation(),await j((null==n?void 0:n.textContent)||"",t)}),e.appendChild(t)})}function R(e,n){e.classList.remove("csk-msg--streaming");const t=n.querySelector(".csk-caret");t&&t.remove(),P(n)}function U(e,n){const t=e.querySelector(".csk-sources");if(t&&t.remove(),!n||0===n.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${a("source_count",{n:n.length})}`;const i=document.createElement("span");i.className="csk-sources__arrow",i.textContent="▼",s.appendChild(o),s.appendChild(i),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const c=document.createElement("div");c.className="csk-sources__body";for(const e of n){const n=document.createElement("div");n.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=e.title||e.sourceName||"未知文档",e.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=e.snippet,n.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];e.sourceName&&s.push(e.sourceName),void 0!==e.chunkIndex&&s.push(`分块 #${e.chunkIndex}`),void 0!==e.score&&s.push(`相关度 ${(100*e.score).toFixed(0)}%`),r.textContent=s.join(" · "),n.appendChild(t),n.appendChild(r),c.appendChild(n)}r.appendChild(s),r.appendChild(c);const l=e.querySelector(".csk-msg__time");l&&l.parentNode?l.parentNode.insertBefore(r,l):e.appendChild(r)}function O(e,n,t,r,s,o,i){if(e.innerHTML="",0===n.length){const n=document.createElement("div");return n.className="csk-history-panel__empty",n.innerHTML=`\n
💬
\n
${a("history_empty")}
\n `,void e.appendChild(n)}for(const i of n){const n=document.createElement("div");n.className="csk-history-item";const c=i.chatId||i.id;o&&c===o&&n.classList.add("csk-history-item--active");const l=document.createElement("div");l.className="csk-history-item__info";const d=document.createElement("div");d.className="csk-history-item__id",i.lastMessagePreview?d.textContent=i.lastMessagePreview.length>60?i.lastMessagePreview.substring(0,60)+"...":i.lastMessagePreview:d.textContent=c;const p=document.createElement("div");p.className="csk-history-item__meta";const u=[];void 0!==i.messageCount&&u.push(`${i.messageCount} 条消息`),i.lastMessageTime?u.push(i.lastMessageTime):i.createdAt&&u.push(i.createdAt),p.textContent=u.join(" · "),l.appendChild(d),l.appendChild(p);const k=document.createElement("div");k.className="csk-history-item__actions";const m=document.createElement("button");m.className="csk-history-action csk-history-action--export",m.setAttribute("title",a("history_export")),m.innerHTML='',m.addEventListener("click",e=>{e.stopPropagation(),r(i.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",a("history_delete")),g.innerHTML='',g.addEventListener("click",e=>{e.stopPropagation(),s(i.id)}),k.appendChild(m),k.appendChild(g),n.appendChild(l),n.appendChild(k),n.addEventListener("click",()=>{t(c)}),e.appendChild(n)}}function Y(e){e.scrollTop=e.scrollHeight}function W(e){const n=new Date(e);return`${String(n.getHours()).padStart(2,"0")}:${String(n.getMinutes()).padStart(2,"0")}`}function K(e){return`csk_history_${e}`}function V(e,n){try{let t=n;t.length>200&&(t=t.slice(50),r.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const s={messages:t,updatedAt:Date.now()};localStorage.setItem(K(e),JSON.stringify(s))}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?r.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):r.error("保存会话历史失败",e)}}function X(e){try{localStorage.removeItem(K(e))}catch(e){r.warn("清空会话历史失败",e)}}const J="\0CODEBLOCK_",G="\0INLINECODE_";function Q(e){if(!e||"string"!=typeof e)return"";const n=[];let t=e;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(e,t,r)=>{const s=n.length,o=S(r.trimEnd()),a=t?` class="language-${S(t)}"`:"";return n.push(`
${o}
`),`${J}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(e,n)=>{const t=r.length;return r.push(`${S(n)}`),`${G}${t}\0`}),t=S(t),t=Z(t,J,n),t=Z(t,G,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let e=0;e')){p(),u(),k(),o.push(n);continue}const t=n.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const e=t[1].length;o.push(`${t[2]}`);continue}const r=n.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const m=n.match(/^[\-\*]\s+(.+)/);if(m){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('
    ')),o.push(`
  • ${d(m[1])}
  • `);continue}const g=n.match(/^\d+\.\s+(.+)/);g?(p(),k(),a&&"ol"===i||(u(),a=!0,i="ol",o.push('
      ')),o.push(`
    1. ${d(g[1])}
    2. `)):""!==n.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(n.trim())?(p(),u(),k(),o.push('
      ')):(u(),k(),l.push(d(n))):(p(),u())}return p(),u(),k(),o.join("\n");function d(e){return e=(e=(e=(e=(e=(e=e.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,n,t)=>`${n}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){a&&(o.push("ul"===i?"
":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function Z(e,n,t){return e.replace(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(e,n)=>t[parseInt(n)]||"")}let ee,ne=null,te=[],re=null,se=null,oe=null,ae=null,ie=null,ce=null,le=null,de=null,pe=null,ue=null,ke=null,me=null,ge=null,he=!1,be=null,fe=!0,ye=[],xe="",ve=!1;function we(e,n){ne=e,re=n.messagesContainer,se=n.inputEl,oe=n.inputEl.parentElement,ae=n.sendBtn,ie=n.clearBtn,ce=n.categorySelect,le=n.historyPanel,de=n.welcomeEl,pe=n.newMsgBtn,ue=n.searchInput,ke=n.ariaLiveEl,me=n.showLoading,ge=n.hideLoading,ee=e.categoryId,ve=!!e.categoryId||!!e.showCategorySwitch,function(){if(!se||!ae)return;ae.addEventListener("click",()=>{he&&be?be.abort():Se()}),se.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),Se())}),se.addEventListener("input",()=>{Le(),function(){if(!se)return;se.style.height="auto",se.style.height=`${Math.min(se.scrollHeight,120)}px`}()}),se.addEventListener("focus",()=>{oe&&oe.classList.add("csk-input-wrap--focus")}),se.addEventListener("blur",()=>{oe&&oe.classList.remove("csk-input-wrap--focus")}),ie&&ie.addEventListener("click",()=>function(){if(!ne)return;if(!confirm(a("clear_confirm")))return;if(te=[],re){re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove())}ie&&(ie.style.display="none");Ae(),X(ne.integrateId);const e=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();c(e),E(ne.integrateId,ne.userId,e),r.lifecycleClear(ne.integrateId),r.info(`新 chatId=${e}`)}())}(),function(){if(!re)return;re.addEventListener("scroll",()=>{if(!re)return;const{scrollTop:e,scrollHeight:n,clientHeight:t}=re;fe=n-e-t<80,fe&&Ee()}),pe&&pe.addEventListener("click",()=>{re&&Y(re),fe=!0,Ee()})}(),function(){if(!ue)return;ue.addEventListener("input",()=>{xe=ue.value.trim().toLowerCase(),$e()})}(),e.showCategorySwitch&&ce&&async function(){if(!ce)return;try{const e=await async function(){const e=d("/category/tree");try{const n=await u(e);if(!n.ok)throw new k(m(n.status),`http_${n.status}`);const t=await n.json();return t.success&&Array.isArray(t.data)?(r.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(e){return e instanceof k?r.error(`加载分类树失败: ${e.message}`):r.error("加载分类树失败",e),[]}}();if(0===e.length)return;ce.innerHTML=``;const n=(e,t=0)=>{for(const r of e){const e=document.createElement("option");e.value=String(r.id),e.textContent=`${" ".repeat(t)}${r.name}`,void 0!==ee&&String(r.id)===String(ee)&&(e.selected=!0),ce.appendChild(e),r.children&&r.children.length>0&&n(r.children,t+1)}};n(e),r.info(`知识库分类加载成功 count=${e.length}`)}catch(e){r.error(a("category_load_error"),e)}}()}async function _e(){if(ne&&re&&(await w(),await async function(){if(!ne||!re)return;const e=l();if(!e)return;try{const n=await y(e);n.messages.length>0&&(te=n.messages.map((e,n)=>({id:L(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Ne(),r.info(`从后端加载 ${te.length} 条历史消息`),V(ne.integrateId,te))}catch(e){r.warn("从后端加载历史消息失败",e)}}(),0===te.length)){const e=function(e){try{const n=localStorage.getItem(K(e));if(!n)return[];const t=JSON.parse(n);return t&&Array.isArray(t.messages)?(r.info(`加载历史消息 integrateId=${e} count=${t.messages.length}`),t.messages):[]}catch(e){return r.warn("加载会话历史失败",e),[]}}(ne.integrateId);e.length>0&&(te=e,Ne(),r.info(`从本地缓存恢复 ${e.length} 条消息`))}}function Ee(){pe&&pe.classList.add("csk-newmsg--hidden")}function Ce(){re&&(fe?Y(re):pe&&pe.classList.remove("csk-newmsg--hidden"))}function Ie(e){ae&&("stop"===e?(ae.classList.add("csk-send-btn--stop"),ae.removeAttribute("disabled"),ae.setAttribute("title",a("stop")),ae.setAttribute("aria-label",a("stop")),ae.innerHTML=''):(ae.classList.remove("csk-send-btn--stop"),ae.setAttribute("title",a("send")),ae.setAttribute("aria-label",a("send")),ae.innerHTML='',Le()))}function $e(){const e=null==le?void 0:le.querySelector("#csk-history-list");if(!e||!ne)return;O(e,xe?ye.filter(e=>(e.lastMessagePreview||e.chatId||e.id||"").toLowerCase().includes(xe)):ye,e=>{Me(e)},e=>{window.open(v(e),"_blank")},async e=>{if(!confirm(a("history_delete_confirm")))return;await x(e)&&(e===l()&&(te=[],re&&re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),ie&&(ie.style.display="none"),Ae()),ye=ye.filter(n=>(n.chatId||n.id)!==e),$e())},l())}function Ae(){if(!de)return;const e=te.length>0||re&&re.querySelector(".csk-msg");de.style.display=e?"none":""}function Le(){if(!ae||!se)return;se.value.trim().length>0&&!he?ae.removeAttribute("disabled"):ae.setAttribute("disabled","true")}async function Se(){if(!se||!ne||he)return;const e=se.value.trim();if(""===e)return;se.value="",Le(),se.style.height="auto";const n=F(),t={id:L(),role:"user",content:e,timestamp:n};re&&D(re,e,n),te.push(t),Ae(),ie&&te.length>0&&(ie.style.display="inline-flex"),re&&Ce(),await Fe(e)}async function Fe(e){if(!ne||!re)return;he=!0,Ie("stop"),ne.chatId||await w();const n=F(),t=ve&&(void 0!==ee||void 0!==ne.categoryId);me&&me(),re&&Ce();const s=L();let o="";try{ne.streaming?o=await async function(e,n,t,r){be=new AbortController;const s=be.signal;return new Promise((o,i)=>{let c=null,l=null,d="",p=!1;h(e,e=>{if(d+=e,!p&&re){ge&&ge();const{wrapper:e,bubble:t}=function(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=N;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=W(n),o.appendChild(a),o.appendChild(z(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),{wrapper:r,bubble:a}}(re,n,r);l=e,c=t,p=!0}c&&(c.textContent=d,function(e){if(e.querySelector(".csk-caret"))return;const n=document.createElement("span");n.className="csk-caret",n.setAttribute("aria-hidden","true"),e.appendChild(n)}(c)),re&&Ce()},()=>{if(l&&c){if(!p&&""===d)return void g(e).then(o).catch(i);d&&(c.innerHTML=Q(d)),R(l,c)}o(d)},e=>{d.length>0?(c&&(c.innerHTML=Q(d+"\n\n"+a("stream_interrupted")),l&&R(l,c)),o(d)):i(e)},ee,t,s)})}(e,n,t,s):(o=await g(e),ge&&ge(),re&&T(re,o,n,Q,s));const i={id:s,role:"ai",content:o,timestamp:n};te.push(i),V(ne.integrateId,te),re&&Ce(),function(e){if(!ke)return;const n=e.length>120?e.substring(0,120)+"...":e;ke.textContent=a("new_msg_announce")+":"+n}(o),re&&re.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0})),t&&async function(e,n){try{const t=await b(e,ee);if(t.length>0){const e=t.map(e=>{var n,t;return{documentId:e.documentId||"",title:e.title||"",sourceName:e.sourceName||"",chunkIndex:null!==(n=e.chunkIndex)&&void 0!==n?n:0,score:null!==(t=e.score)&&void 0!==t?t:0,snippet:e.snippet||""}});if(n.sources=e,re){const n=re.querySelector(".csk-msg--ai:last-of-type");n&&U(n,e)}ne&&V(ne.integrateId,te)}}catch(e){r.warn("获取引用来源失败",e)}}(e,i)}catch(e){ge&&ge();const n=e instanceof k?e.message:a("error_send");if(re){const e=document.createElement("div");e.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${n}`,e.appendChild(t),re.appendChild(e)}r.error(`发送失败 integrateId=${ne.integrateId}`,e)}finally{he=!1,be=null,Ie("send"),Le()}}function Ne(){if(!re)return;const e=re.querySelector(".csk-history-panel");re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());for(const e of te)if("user"===e.role)D(re,e.content,e.timestamp);else{const n=T(re,e.content,e.timestamp,Q,e.id);e.sources&&e.sources.length>0&&U(n,e.sources),e.feedback&&H(n,e.feedback)}fe=!0,Y(re),ie&&te.length>0&&(ie.style.display="inline-flex"),Ae(),e&&!re.contains(e)&&re.appendChild(e)}async function Me(e){if(!ne||!re)return;r.info(`切换到会话 conversationId=${e}`),c(e),E(ne.integrateId,ne.userId,e),le&&le.classList.add("csk-history-panel--hidden"),te=[];re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());try{const n=await y(e);n.messages.length>0&&(te=n.messages.map(e=>({id:L(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Ne(),r.info(`加载会话 ${e} 的 ${te.length} 条消息`),V(ne.integrateId,te))}catch(n){r.warn(`加载会话消息失败 conversationId=${e}`,n)}ie&&te.length>0&&(ie.style.display="inline-flex"),Ae()}let De=null,Te=!1,qe=null,Be=null,ze=null,He=null,je=null,Pe=null,Re=null,Ue=null,Oe=null,Ye=null,We=null,Ke=null,Ve=null,Xe=null;function Je(){if(!Ke||!qe)return;const e=qe.getBoundingClientRect();"left-bottom"===(null==De?void 0:De.position)?Ke.style.left=`${e.left}px`:Ke.style.right=window.innerWidth-e.right+"px",Ke.style.bottom=window.innerHeight-e.top+8+"px"}function Ge(){if(!Ke)return;Ke.classList.add("csk-teaser--hidden"),Ke.removeEventListener("click",Qe);const e=Ke.querySelector(".csk-teaser__close");e&&e.removeEventListener("click",Ze)}function Qe(e){e.target.closest(".csk-teaser__close")||(Ge(),rn())}function Ze(e){e.stopPropagation(),Ge()}function en(){Ke&&!Ke.classList.contains("csk-teaser--hidden")&&Je()}const nn='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function tn(e){"Escape"===e.key&&Be&&!Be.classList.contains("csk-window--hidden")&&sn(),function(e){if(!Be||Be.classList.contains("csk-window--hidden"))return;if("Tab"!==e.key)return;const n=Array.from(Be.querySelectorAll(nn));if(0===n.length)return;const t=n[0],r=n[n.length-1];e.shiftKey?document.activeElement===t&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),t.focus())}(e)}function rn(){Be&&(Be.classList.remove("csk-window--hidden"),Ge(),Xe&&Xe.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{He&&He.focus()},80))}function sn(){Be&&Be.classList.add("csk-window--hidden")}function on(){Be&&(Be.classList.contains("csk-window--hidden")?rn():sn())}const an={init:function(e){if(Te)return void r.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(e){var n,t,s,o,a,i,c;if(!e.integrateId||"string"!=typeof e.integrateId&&"number"!=typeof e.integrateId||"string"==typeof e.integrateId&&""===e.integrateId.trim())return r.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!e.requestDomain||"string"!=typeof e.requestDomain||""===e.requestDomain.trim())return r.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(e.requestDomain)}catch(n){return r.error(`requestDomain 不是合法的 URL 格式:${e.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const l={integrateId:String(e.integrateId).trim(),requestDomain:e.requestDomain.replace(/\/+$/,""),userId:e.userId,categoryId:e.categoryId,showCategorySwitch:null!==(n=e.showCategorySwitch)&&void 0!==n&&n,title:e.title||"AI 智能助手",width:null!==(t=e.width)&&void 0!==t?t:380,position:"left-bottom"===e.position?"left-bottom":"right-bottom",primaryColor:e.primaryColor||"#4F46E5",launcherIcon:e.launcherIcon||'\n \n \n',showClear:null===(s=e.showClear)||void 0===s||s,showAdminPanel:null!==(o=e.showAdminPanel)&&void 0!==o&&o,quickReplies:Array.isArray(e.quickReplies)?e.quickReplies.map(e=>String(e).trim()).filter(Boolean):[],theme:"dark"===e.theme?"dark":"light",showTeaser:null===(a=e.showTeaser)||void 0===a||a,teaserText:"string"==typeof e.teaserText&&e.teaserText.trim()||"",streaming:null===(i=e.streaming)||void 0===i||i,locale:e.locale||"zh-CN",debug:null===(c=e.debug)||void 0===c||c,chatId:""};return r.info(`配置解析完成 integrateId(=roleId)=${l.integrateId} userId(=accountId)=${l.userId||"(未设置)"} requestDomain=${l.requestDomain}`),l}(e);if(!t)return;var c;De=t,function(e){if(s[e])o=e;else{const n=e.split("-")[0],t=Object.keys(s).find(e=>e.startsWith(n));t&&(o=t)}}(De.locale),c=De.debug,n=c,function(e){i=e}(De),A(De),qe=M(De,on),document.body.appendChild(qe),Xe=qe.querySelector(".csk-launcher__badge");const d=function(e){const n=document.createElement("div");n.id="csk-window",n.className=`csk-root csk-window csk-window--${"left-bottom"===e.position?"left":"right"} csk-window--hidden${"dark"===e.theme?" csk-dark":""}`,n.setAttribute("role","dialog"),n.setAttribute("aria-label",e.title),n.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=N;const o=document.createElement("div");o.className="csk-header__info";const i=document.createElement("span");i.className="csk-header__title",i.textContent=e.title;const c=document.createElement("span");c.className="csk-header__status",c.innerHTML=`${a("status_online")}`,o.appendChild(i),o.appendChild(c),r.appendChild(s),r.appendChild(o);const l=document.createElement("div");l.className="csk-header__actions";const d=document.createElement("button");d.className="csk-history-btn",d.setAttribute("title",a("history_title")),d.innerHTML='';const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--minimize",p.setAttribute("title",a("minimize")),p.innerHTML='',p.addEventListener("click",()=>{n.classList.add("csk-window--hidden")});const u=document.createElement("button");u.className="csk-header__btn csk-header__btn--close",u.setAttribute("title",a("close")),u.innerHTML='',u.addEventListener("click",()=>{n.classList.add("csk-window--hidden")}),l.appendChild(d),l.appendChild(p),l.appendChild(u),t.appendChild(r),t.appendChild(l);const k=document.createElement("div");k.id="csk-messages",k.className="csk-messages";const m=document.createElement("div");if(m.className="csk-welcome",m.innerHTML=`\n
${N}
\n
${a("welcome_title")}
\n
${a("welcome_desc")}
\n `,e.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of e.quickReplies){const e=document.createElement("button");e.type="button",e.className="csk-quick-reply",e.textContent=r,e.addEventListener("click",()=>{n.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(e)}m.appendChild(t)}k.appendChild(m);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${a("new_message")}\n `,n.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${a("history_title")}\n \n
\n
\n \n
\n
\n `,k.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),d.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&n.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(e.showCategorySwitch){const e=document.createElement("div");e.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const e=f.value;n.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:e?Number(e):void 0}}))}),e.appendChild(r),e.appendChild(f),n.appendChild(t),n.appendChild(k),n.appendChild(e)}else n.appendChild(t),n.appendChild(k);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",a("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",a("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),n.appendChild(y);let _=null;e.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=a("clear"),_.style.display="none",n.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),n.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===e.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${e.teaserText||a("teaser_text")}\n `,{window:n,messagesContainer:k,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:m,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const e=document.createElement("div");return e.className="csk-loading",e.innerHTML=`\n
${N}
\n
\n
\n
\n
\n
\n `,k.appendChild(e),E=e,e},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(De);Be=d.window,ze=d.messagesContainer,He=d.inputEl,je=d.sendBtn,Pe=d.clearBtn,Re=d.categorySelect,Ue=d.historyPanel,Oe=d.showLoading,Ye=d.hideLoading,document.body.appendChild(Be),Ke=d.teaserEl,document.body.appendChild(Ke),Je();const p=Be.querySelector(".csk-header");p&&(We=function(e,n){let t=!1,r=0,s=0,o=0,a=0;const i=e=>{if(e.target.closest("button"))return;t=!0,r=e.clientX,s=e.clientY;const i=n.getBoundingClientRect();o=r-i.left,a=s-i.top,document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)},c=e=>{if(!t)return;const r=e.clientX-o,s=e.clientY-a,i=window.innerWidth-n.offsetWidth,c=window.innerHeight-n.offsetHeight;n.style.right="auto",n.style.bottom="auto",n.style.left=`${Math.max(0,Math.min(r,i))}px`,n.style.top=`${Math.max(0,Math.min(s,c))}px`},l=()=>{t=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)};return e.addEventListener("mousedown",i),()=>{e.removeEventListener("mousedown",i),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)}}(p,Be)),we(De,{messagesContainer:ze,inputEl:He,sendBtn:je,clearBtn:Pe,categorySelect:Re,historyPanel:Ue,welcomeEl:d.welcomeEl,newMsgBtn:d.newMsgBtn,searchInput:d.searchInput,ariaLiveEl:d.ariaLiveEl,showLoading:Oe,hideLoading:Ye}),Be.addEventListener("csk:categoryChange",e=>{var n;n=e.detail.categoryId,ee=n,ve=void 0!==n,r.lifecycleCategoryChange(null!=n?n:"全部")}),Be.addEventListener("csk:loadHistory",()=>{!async function(){if(!le||!ne)return;const e=le.querySelector("#csk-history-list");if(e){e.innerHTML='
加载中...
';try{const n=await f(1,50,ne.userId,ne.integrateId);ye=n.list.map(e=>({id:e.conversationId||"",chatId:e.conversationId||"",messageCount:e.messageCount,lastMessageTime:e.lastMessageTime,lastMessagePreview:e.lastMessagePreview,createdAt:e.firstMessageTime||e.createdAt})),xe="",ue&&(ue.value=""),O(e,ye,e=>{Me(e)},e=>{window.open(v(e),"_blank")},async e=>{confirm(a("history_delete_confirm"))&&await x(e)&&(e===l()&&(te=[],re&&re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),ie&&(ie.style.display="none"),Ae()),ye=ye.filter(n=>(n.chatId||n.id)!==e),$e())},l())}catch(n){r.error(a("history_load_error"),n),e.innerHTML=`
${a("history_load_error")}
`}}}()}),Be.addEventListener("csk:quickReply",e=>{var n;n=e.detail.text,!se||he?Promise.resolve():(se.value=n,Le(),Se())}),Be.addEventListener("csk:retry",e=>{!async function(e){if(!ne||!re||he)return;const n=te.findIndex(n=>n.id===e&&"ai"===n.role);if(n<0)return;let t="";for(let e=n-1;e>=0;e--)if("user"===te[e].role){t=te[e].content;break}if(!t)return;const r=te.splice(n),s=new Set(r.map(e=>e.id));re.querySelectorAll(".csk-msg").forEach(e=>{const n=e.dataset.cskMsgId;n&&s.has(n)&&e.remove()}),V(ne.integrateId,te),Ae(),await Fe(t)}(e.detail.msgId)}),Be.addEventListener("csk:feedback",e=>{!function(e,n){if(!re)return;const t=te.find(n=>n.id===e&&"ai"===n.role);if(!t)return;const s=t.feedback===n?void 0:n;t.feedback=s;const o=re.querySelector(`[data-csk-msg-id="${e}"]`);o&&H(o,s),ne&&V(ne.integrateId,te),r.info(`消息反馈 msgId=${e} value=${s||"cleared"}`)}(e.detail.msgId,e.detail.value)}),Be.addEventListener("csk:newMessage",()=>{Be&&Be.classList.contains("csk-window--hidden")&&Xe&&Xe.classList.remove("csk-launcher__badge--hidden")}),document.addEventListener("keydown",tn),window.addEventListener("resize",en),Te=!0,r.lifecycleInit(De.integrateId,De.requestDomain),De.showTeaser&&(Ve=setTimeout(()=>{Be&&Be.classList.contains("csk-window--hidden")&&function(){if(!Ke)return;Je(),Ke.classList.remove("csk-teaser--hidden"),Ke.addEventListener("click",Qe);const e=Ke.querySelector(".csk-teaser__close");e&&e.addEventListener("click",Ze)}()},1500)),_e().catch(e=>{r.warn("chatId 初始化失败,将在发送消息时重试",e)})},destroy:function(){if(!Te)return;Ve&&(clearTimeout(Ve),Ve=null),Ge(),Ke&&Ke.parentNode&&(Ke.parentNode.removeChild(Ke),Ke=null),qe&&qe.parentNode&&(qe.parentNode.removeChild(qe),qe=null),Be&&Be.parentNode&&(Be.parentNode.removeChild(Be),Be=null),We&&(We(),We=null),C&&C.parentNode&&(C.parentNode.removeChild(C),C=null),document.querySelectorAll("style[data-csk-sdk]").forEach(e=>e.remove()),document.removeEventListener("keydown",tn),window.removeEventListener("resize",en);const e=null==De?void 0:De.integrateId;De=null,Te=!1,ze=null,He=null,je=null,Pe=null,Re=null,Ue=null,Oe=null,Ye=null,Xe=null,r.lifecycleDestroy(e||"")},open:rn,close:sn,toggle:on,clearHistory:function(){De&&(Pe?Pe.click():confirm("确定清空所有对话记录?")&&X(De.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=an),an}(); //# sourceMappingURL=chatbot-sdk.min.js.map diff --git a/client/dist/chatbot-sdk.min.js.map b/client/dist/chatbot-sdk.min.js.map index 9ddd9fd..50ec5c3 100644 --- a/client/dist/chatbot-sdk.min.js.map +++ b/client/dist/chatbot-sdk.min.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts","../src/config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","timers","logger","info","msg","data","console","log","undefined","warn","error","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","message","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","String","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","Error","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","controller","AbortController","timer","setTimeout","abort","fetch","assign","signal","mode","credentials","err","DOMException","name","CskError","TypeError","includes","clearTimeout","constructor","type","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","_a","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","width","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","className","position","innerHTML","launcherIcon","debouncedClick","fn","delay","args","apply","debounce","addEventListener","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","renderSources","sources","existing","remove","sourcesEl","header","titleSpan","n","arrow","classList","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","code","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","showLoadingFn","hideLoadingFn","isSending","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","updateSendBtnState","style","height","autoResizeInput","add","confirm","querySelectorAll","forEach","el","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","getTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","hasMessages","removeAttribute","userTimestamp","userMsg","aiContent","aiTimestamp","shouldUseRag","streaming","Promise","resolve","reject","bubbleEl","accumulated","streamStarted","chunk","createEmptyAIBubble","then","catch","sendStreamMessage","aiMsg","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","contains","loadHistoryConversations","listEl","items","onSelect","onExport","onDelete","activeChatId","empty","convId","idEl","lastMessagePreview","metaEl","lastMessageTime","createdAt","actionsEl","exportBtn","stopPropagation","deleteBtn","renderHistoryList","firstMessageTime","switchToConversation","window","open","method","deleteConversation","isInitialized","launcherEl","windowEl","dragCleanup","focus","ChatbotSDK","init","rawConfig","parsed","URL","_g","showClear","_c","showAdminPanel","_d","_e","locale","debug","_f","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","closeBtn","backBtn","isHidden","dispatchEvent","CustomEvent","categoryBar","categoryLabel","selectedId","detail","Number","inputArea","loadingEl","removeChild","createChatWindow","headerEl","dragging","startX","startY","offsetX","offsetY","onMouseDown","target","closest","clientX","clientY","rect","getBoundingClientRect","left","top","onMouseMove","onMouseUp","x","y","maxX","innerWidth","offsetWidth","maxY","innerHeight","offsetHeight","right","bottom","removeEventListener","enableDrag","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts","../src/config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","timers","logger","info","msg","data","console","log","undefined","warn","error","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","message","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","String","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","Error","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","type","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","_a","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","width","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","detail","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","el","convId","idEl","lastMessagePreview","metaEl","lastMessageTime","createdAt","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","code","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","height","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","getTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","then","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","feedback","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","ChatbotSDK","init","rawConfig","parsed","URL","_h","showClear","_c","showAdminPanel","_d","quickReplies","Boolean","theme","showTeaser","_e","teaserText","_f","locale","debug","_g","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","m","removed","splice","removedIds","Set","has","retryFromMessage","newValue","handleFeedback","destroy","oldIntegrateId","clearHistory","click"],"mappings":"uCAMA,MAAMA,EAAS,eAEf,IAAIC,GAAe,EAQnB,MAAMC,EAAiC,CAAA,EAE1BC,EAAS,CAEpB,IAAAC,CAAKC,EAAaC,GACZL,GACFM,QAAQC,IAAIR,EAAQK,OAAcI,IAATH,EAAqBA,EAAO,GAEzD,EAGA,IAAAI,CAAKL,EAAaC,GACZL,GACFM,QAAQG,KAAKV,EAAQK,OAAcI,IAATH,EAAqBA,EAAO,GAE1D,EAGA,KAAAK,CAAMN,EAAaC,GACjBC,QAAQI,MAAMX,EAAQK,OAAcI,IAATH,EAAqBA,EAAO,GACzD,EAGA,IAAAM,CAAKC,GACHX,EAAOW,GAASC,KAAKC,KACvB,EAGA,OAAAC,CAAQH,EAAeI,GACrB,MAAMC,EAAQhB,EAAOW,GACrB,QAAcJ,IAAVS,EAAqB,CACvB,MAAMC,EAAWL,KAAKC,MAAQG,EAE9B,UADOhB,EAAOW,GACVZ,EAAc,CAChB,MAAMI,EAAMY,EAAS,GAAGA,KAAUE,MAAe,GAAGN,KAASM,MAC7DZ,QAAQC,IAAIR,EAAQK,EACtB,CACA,OAAOc,CACT,CACA,OAAO,CACT,EAGA,aAAAC,CAAcC,EAAqBC,GACjCC,KAAKnB,KAAK,qBAAqBiB,mBAA6BC,IAC9D,EAGA,gBAAAE,CAAiBH,GACfE,KAAKnB,KAAK,oBAAoBiB,IAChC,EAGA,aAAAI,CAAcJ,EAAqBK,GACjCH,KAAKnB,KAAK,oBAAoBiB,YAAsBK,KACpDH,KAAKX,KAAK,QAAQS,IACpB,EAGA,cAAAM,CAAeN,EAAqBK,GAClC,MAAMP,EAAWI,KAAKP,QAAQ,QAAQK,IAAe,SACrDE,KAAKnB,KAAK,qBAAqBiB,YAAsBK,cAAmBP,MAC1E,EAGA,cAAAS,CAAeP,EAAqBQ,EAAgBC,GAClDP,KAAKP,QAAQ,QAAQK,KACrBE,KAAKZ,MAAM,oBAAoBU,YAAsBQ,aAAkBC,IACzE,EAGA,cAAAC,CAAeV,GACbE,KAAKnB,KAAK,oBAAoBiB,IAChC,EAGA,mBAAAW,CAAoBX,EAAqBK,GACvC,MAAMP,EAAWI,KAAKP,QAAQ,QAAQK,IAAe,QACrDE,KAAKnB,KAAK,sBAAsBiB,YAAsBK,cAAmBP,MAC3E,EAGA,uBAAAc,CAAwBC,GACtBX,KAAKnB,KAAK,sBAAsB8B,IAClC,GC/FF,MAAMC,EAAuD,CAC3D,QAAS,CAEPC,MAAO,UACPC,SAAU,MACVC,MAAO,KACPC,cAAe,KAGfC,cAAe,gBACfC,aAAc,yBAGdC,YAAa,YACbC,KAAM,KACNC,KAAM,OACNC,YAAa,MAGbC,KAAM,KACNC,OAAQ,MACRC,MAAO,OACPC,SAAU,WAGVC,QAAS,UACTC,mBAAoB,QACpBC,gBAAiB,gBAGjBC,qBAAsB,UACtBC,aAAc,OACdC,oBAAqB,SACrBC,aAAc,OACdC,aAAc,YACdC,eAAgB,WAGhBC,MAAO,OACPC,cAAe,cAGfC,cAAe,OACfC,cAAe,SACfC,mBAAoB,WACpBC,uBAAwB,WACxBC,eAAgB,KAChBC,eAAgB,KAChBC,eAAgB,UAGhBC,YAAa,MACbC,cAAe,MAGfC,YAAa,aACbC,iBAAkB,QAGlBC,cAAe,eACfC,cAAe,aACfC,aAAc,cACdC,WAAY,gCACZC,WAAY,cACZC,gBAAiB,iBACjBC,gBAAiB,WACjBC,iBAAkB,eAClBC,kBAAmB,eACnBC,cAAe,WACfC,WAAY,aACZC,yBAA0B,cAG5BC,GAAM,CAEJhD,MAAO,eACPC,SAAU,WACVC,MAAO,QACPC,cAAe,SAGfC,cAAe,6BACfC,aAAc,+DAGdC,YAAa,wBACbC,KAAM,OACNC,KAAM,kBACNC,YAAa,cAGbC,KAAM,OACNC,OAAQ,SACRC,MAAO,aACPC,SAAU,kBAGVC,QAAS,cACTC,mBAAoB,uBACpBC,gBAAiB,8CAGjBC,qBAAsB,kBACtBC,aAAc,iBACdC,oBAAqB,4BACrBC,aAAc,UACdC,aAAc,gBACdC,eAAgB,qBAGhBC,MAAO,aACPC,cAAe,kCAGfC,cAAe,UACfC,cAAe,uBACfC,mBAAoB,+BACpBC,uBAAwB,4BACxBC,eAAgB,SAChBC,eAAgB,SAChBC,eAAgB,0BAGhBC,YAAa,UACbC,cAAe,cAGfC,YAAa,sBACbC,iBAAkB,uBAGlBC,cAAe,4BACfC,cAAe,sCACfC,aAAc,uCACdC,WAAY,sEACZC,WAAY,8CACZC,gBAAiB,sCACjBC,gBAAiB,qBACjBC,iBAAkB,4CAClBC,kBAAmB,kCACnBC,cAAe,wBACfC,WAAY,mCACZC,yBAA0B,uCAK9B,IAAIE,EAAgB,QAwBd,SAAUC,EAAEC,EAAaC,GAE7B,IAAIC,GADStD,EAAakD,IAAkBlD,EAAa,UACzCoD,IAAQpD,EAAa,SAASoD,IAAQA,EAGtD,GAAIC,EACF,IAAK,MAAOE,EAAGC,KAAMC,OAAOC,QAAQL,GAClCC,EAAOA,EAAKK,QAAQ,IAAIJ,KAAMK,OAAOJ,IAIzC,OAAOF,CACT,CC7KA,IAAIO,EAAuC,KAQrC,SAAUC,EAAaC,GACvBF,IACFA,EAAcE,OAASA,EAE3B,UAGgBC,IACd,OAAOH,eAAAA,EAAeE,SAAU,EAClC,CAGM,SAAUE,EAASC,GACvB,IAAKL,EACH,MAAM,IAAIM,MAAM,cAIlB,MAAO,GAFQN,EAAc1E,cAAcwE,QAAQ,OAAQ,MACzCO,EAAKE,WAAW,KAAOF,EAAO,IAAIA,KAEtD,CAKA,SAASG,EAAahB,EAAyBD,EAAakB,GACtDA,UACiB,iBAAVA,GAAuC,KAAjBA,EAAMC,QACvClB,EAAOmB,IAAIpB,EAAKQ,OAAOU,IACzB,CAyEAG,eAAeC,EACbC,EACAC,EAAuB,CAAA,EACvBC,EAlHsB,IAmHtBC,GAEA,MAAMC,EAAa,IAAIC,gBACjBC,EAAQC,WAAW,IAAMH,EAAWI,QAASN,GAG/CC,IACEA,EAAeM,QACjBL,EAAWI,QAEXL,EAAeO,iBAAiB,QAAS,IAAMN,EAAWI,QAAS,CAAEG,MAAM,KAI/E,IAOE,aANuBC,MAAMZ,EAAGlB,OAAA+B,OAAA/B,OAAA+B,OAAA,CAAA,EAC3BZ,GAAO,CACVa,OAAQV,EAAWU,OACnBC,KAAM,OACNC,YAAa,YAGjB,CAAE,MAAOC,GAEP,GAAId,aAAc,EAAdA,EAAgBM,QAClB,MAAM,IAAIS,EAAS,UAAW,WAEhC,GAAID,aAAeE,cAA6B,eAAbF,EAAIG,KACrC,MAAM,IAAIF,EAAS1C,EAAE,iBAAkB,WAEzC,GAAIyC,aAAeI,WAAaJ,EAAIjG,QAAQsG,SAAS,mBACnD,MAAM,IAAIJ,EAAS1C,EAAE,cAAe,QAEtC,MAAM,IAAI0C,EAAS1C,EAAE,iBAAkB,UACzC,SACE+C,aAAajB,EACf,CACF,CAGM,MAAOY,UAAiB1B,MAE5B,WAAAgC,CAAYxG,EAAiByG,GAC3BC,MAAM1G,GACNP,KAAK2G,KAAO,WACZ3G,KAAKgH,KAAOA,CACd,EAIF,SAASE,EAAoB5G,GAC3B,OAAQA,GACN,KAAK,IAAK,OAAOyD,EAAE,cACnB,KAAK,IAAK,OAAOA,EAAE,mBACnB,KAAK,IAAK,OAAOA,EAAE,mBACnB,KAAK,IAAK,OAAOA,EAAE,oBACnB,KAAK,IAAK,OAAOA,EAAE,gBACnB,KAAK,IACL,KAAK,IAAK,OAAOA,EAAE,qBACnB,QAAS,MAAO,GAAGA,EAAE,oBAAoBzD,KAE7C,CAOO+E,eAAe8B,EAAY5G,GAChC,MAAMgF,EAxIR,SAAsBhF,GACpB,MAAM0D,EAAS,IAAImD,gBASnB,OARAnD,EAAOmB,IAAI,UAAW7E,GACtB0D,EAAOmB,IAAI,SAAUX,EAAeE,QAGpCM,EAAahB,EAAQ,SAAUQ,EAAe3E,aAE9CmF,EAAahB,EAAQ,YAAaQ,EAAe4C,QAE1CxC,EAAS,+BAA+BZ,EAAOqD,aACxD,CA6HcC,CAAahH,GACzB3B,EAAOsB,cAAcuE,EAAe3E,YAAaS,EAAQJ,QAEzD,IACE,MAAMqH,QAAiBlC,EAAUC,GACjC,IAAKiC,EAASC,GAAI,CAChB,MAAMC,EAAWR,EAAoBM,EAASlH,QAE9C,MADA1B,EAAOyB,eAAeoE,EAAe3E,YAAa0E,OAAOgD,EAASlH,QAASoH,GACrE,IAAIjB,EAASiB,EAAU,QAAQF,EAASlH,SAChD,CAEA,MAAM4D,QAAasD,EAAStD,OAE5B,OADAtF,EAAOwB,eAAeqE,EAAe3E,YAAaoE,EAAK/D,QAChD+D,CACT,CAAE,MAAOsC,GACP,GAAIA,aAAeC,EAAU,MAAMD,EAEnC,MADA5H,EAAOyB,eAAeoE,EAAe3E,YAAa,UAAW0E,OAAOgC,IAC9D,IAAIC,EAAS1C,EAAE,iBAAkB,UACzC,CACF,CAOOsB,eAAesC,EACpBpH,EACAqH,EACAC,EACAC,EACAnH,EACAoH,EACA1B,SAEA,MAAMd,EAAMwC,EA5Id,SAA4BxH,EAAiBI,GAC3C,MAAMsD,EAAS,IAAImD,gBASnB,OARAnD,EAAOmB,IAAI,UAAW7E,GACtB0D,EAAOmB,IAAI,SAAUX,EAAeE,QACpCV,EAAOmB,IAAI,kBAAmB,WAE9BH,EAAahB,EAAQ,SAAUQ,EAAe3E,aAC9CmF,EAAahB,EAAQ,YAAaQ,EAAe4C,QACjDpC,EAAahB,EAAQ,aAActD,QAAAA,EAAc8D,EAAe9D,YAEzDkE,EAAS,kCAAkCZ,EAAOqD,aAC3D,CAkIMU,CAAmBzH,EAASI,GA5JlC,SAAyBJ,EAAiBI,GACxC,MAAMsD,EAAS,IAAImD,gBAQnB,OAPAnD,EAAOmB,IAAI,UAAW7E,GACtB0D,EAAOmB,IAAI,SAAUX,EAAeE,QAEpCM,EAAahB,EAAQ,SAAUQ,EAAe3E,aAC9CmF,EAAahB,EAAQ,YAAaQ,EAAe4C,QACjDpC,EAAahB,EAAQ,aAActD,QAAAA,EAAc8D,EAAe9D,YAEzDkE,EAAS,8BAA8BZ,EAAOqD,aACvD,CAmJMW,CAAgB1H,EAASI,GAC7B,IAAIuH,EAAY,GAEhBtJ,EAAOsB,cAAcuE,EAAe3E,YAAaS,EAAQJ,QAEzD,IACE,MAAMqH,QAAiBlC,EAAUC,EAAK,CAAA,EAAI4C,IAAqB9B,GAE/D,IAAKmB,EAASC,GAAI,CAChB,MAAMC,EAAWR,EAAoBM,EAASlH,QAG9C,OAFA1B,EAAOyB,eAAeoE,EAAe3E,YAAa0E,OAAOgD,EAASlH,QAASoH,QAC3EI,EAAQ,IAAIrB,EAASiB,EAAU,QAAQF,EAASlH,UAElD,CAEA,MAAM8H,EAAsB,QAAbC,EAAAb,EAASc,YAAI,IAAAD,OAAA,EAAAA,EAAEE,YAC9B,IAAKH,EAEH,YADAN,EAAQ,IAAIrB,EAAS1C,EAAE,4BAA6B,uBAItD,MAAMyE,EAAU,IAAIC,YAAY,QAAS,CAAEC,QAAQ,IACnD,IAAIC,EAAS,GAEb,IACE,OAAa,CACX,MAAMC,KAAEA,EAAI1D,MAAEA,SAAgBkD,EAAOS,OACrC,GAAID,EAAM,MAEVD,GAAUH,EAAQM,OAAO5D,EAAO,CAAEwD,QAAQ,IAC1C,MAAMK,EAAQJ,EAAOK,MAAM,MAC3BL,EAASI,EAAME,OAAS,GAExB,IAAK,MAAMC,KAAQH,EAAO,CACxB,MAAMI,EAAUD,EAAK/D,OACrB,GAAKgE,IAAWA,EAAQnE,WAAW,KAEnC,GAAImE,EAAQnE,WAAW,SAAU,CAC/B,MAAMjG,EAAOoK,EAAQC,UAAU,GAAGjE,OAC9BpG,IAAQmJ,GAAanJ,EAAM6I,EAAQ7I,GACzC,KAAO,IAAgB,WAAZoK,EACT,MACUA,EAAQnE,WAAW,WAAcmE,EAAQnE,WAAW,QAAWmE,EAAQnE,WAAW,YAC5FkD,GAAaiB,EACbvB,EAAQuB,GACV,CACF,CACF,CAEA,GAAIR,EAAOxD,OAAQ,CACjB,MAAMgE,EAAUR,EAAOxD,OACvB,GAAIgE,EAAQnE,WAAW,SAAU,CAC/B,MAAMjG,EAAOoK,EAAQC,UAAU,GAAGjE,OAC9BpG,IAAQmJ,GAAanJ,EAAM6I,EAAQ7I,GACzC,KAAuB,WAAZoK,IACTjB,GAAaiB,EACbvB,EAAQuB,GAEZ,CACF,CAAE,MAAOE,GAEP,GAAIhD,aAAM,EAANA,EAAQL,QACVpH,EAAOC,KAAK,0BAA0BqJ,EAAU/H,cAC3C,MAAI+H,EAAU/H,OAAS,GAG5B,MAAMkJ,EAFNzB,EAAQ,OAAS7D,EAAE,mBAGrB,CACF,SACEqE,EAAOkB,aACT,CAEA1K,EAAO6B,oBAAoBgE,EAAe3E,YAAaoI,EAAU/H,QACjE0H,GACF,CAAE,MAAOrB,GAEP,IAAIH,eAAAA,EAAQL,UAAYQ,aAAeC,GAAyB,YAAbD,EAAIQ,KAErD,YADAa,IAGErB,aAAeC,EACjBqB,EAAQtB,IAER5H,EAAOyB,eAAeoE,EAAe3E,YAAa,UAAW0E,OAAOgC,IACpEsB,EAAQ,IAAIrB,EAAS1C,EAAE,iBAAkB,YAE7C,CACF,CAwCOsB,eAAekE,EAAgBhJ,EAAiBI,GACrD,MAAM4E,EA9PR,SAA4BhF,EAAiBI,GAC3C,MAAMsD,EAAS,IAAImD,gBASnB,OARAnD,EAAOmB,IAAI,UAAW7E,GACtB0D,EAAOmB,IAAI,SAAUX,EAAeE,QACpCV,EAAOmB,IAAI,kBAAmB,WAE9BH,EAAahB,EAAQ,SAAUQ,EAAe3E,aAC9CmF,EAAahB,EAAQ,YAAaQ,EAAe4C,QACjDpC,EAAahB,EAAQ,aAActD,QAAAA,EAAc8D,EAAe9D,YAEzDkE,EAAS,iCAAiCZ,EAAOqD,aAC1D,CAmPckC,CAAmBjJ,EAASI,GACxC,IACE,MAAM6G,QAAiBlC,EAAUC,GACjC,IAAKiC,EAASC,GAAI,MAAM,IAAIhB,EAASS,EAAoBM,EAASlH,QAAS,QAAQkH,EAASlH,UAC5F,MAAMmJ,QAA2CjC,EAASiC,OAC1D,OAAIA,EAAKC,SAAWC,MAAMC,QAAQH,EAAK1K,OACrCH,EAAOC,KAAK,gBAAgB4K,EAAK1K,KAAKoB,UAC/BsJ,EAAK1K,MAEP,EACT,CAAE,MAAOyH,GAEP,OADA5H,EAAOQ,MAAM,WAAYoH,GAClB,EACT,CACF,CAoBOnB,eAAewE,EACpBC,EAAe,EACfC,EAAe,GACfC,EACAC,GAMA,IAAInF,EAAO,2BAA2BgF,UAAaC,IAC/CC,IAAWlF,GAAQ,cAAcoF,mBAAmBF,MACpDC,IAAQnF,GAAQ,WAAWoF,mBAAmBD,MAClD,MAAM1E,EAAMV,EAASC,GAErB,IACE,MAAM0C,QAAiBlC,EAAUC,GACjC,IAAKiC,EAASC,GAAI,MAAM,IAAIhB,EAASS,EAAoBM,EAASlH,QAAS,QAAQkH,EAASlH,UAC5F,MAAMmJ,QAA8CjC,EAASiC,OAC7D,MAAO,CACLU,KAAMV,EAAKC,SAAWC,MAAMC,QAAQH,EAAK1K,MAAQ0K,EAAK1K,KAAO,GAC7DqL,MAAOX,EAAKW,OAAS,EACrBC,MAAOZ,EAAKY,OAAS,EAEzB,CAAE,MAAO7D,GAEP,OADA5H,EAAOQ,MAAM,WAAYoH,GAClB,CAAE2D,KAAM,GAAIC,MAAO,EAAGC,MAAO,EACtC,CACF,CAKOhF,eAAeiF,EAA0BC,GAI9C,MAAMhF,EAAMV,EAAS,iBAAiB0F,cACtC,IACE,MAAM/C,QAAiBlC,EAAUC,GACjC,IAAKiC,EAASC,GAAI,MAAM,IAAIhB,EAASS,EAAoBM,EAASlH,QAAS,QAAQkH,EAASlH,UAC5F,MAAMmJ,QAAajC,EAASiC,OAC5B,MAAO,CACLe,SAAUf,EAAKC,SAAWC,MAAMC,QAAQH,EAAK1K,MAAQ0K,EAAK1K,KAAO,GACjEqL,MAAOX,EAAKW,OAAS,EAEzB,CAAE,MAAO5D,GAEP,OADA5H,EAAOQ,MAAM,WAAYoH,GAClB,CAAEgE,SAAU,GAAIJ,MAAO,EAChC,CACF,CAKO/E,eAAeoF,EAAmBF,GACvC,MAAMhF,EAAMV,EAAS,iBAAiB0F,KACtC,IACE,MAAM/C,QAAiBlC,EAAUC,EAAK,CAAEmF,OAAQ,WAChD,IAAKlD,EAASC,GAAI,MAAM,IAAIhB,EAASS,EAAoBM,EAASlH,QAAS,QAAQkH,EAASlH,UAC5F,MAAMmJ,QAA0BjC,EAASiC,OAEzC,OADA7K,EAAOC,KAAK,WAAW0L,aAA0Bd,EAAKC,WAC/CD,EAAKC,UAAW,CACzB,CAAE,MAAOlD,GAEP,OADA5H,EAAOQ,MAAM,SAAUoH,IAChB,CACT,CACF,CAKM,SAAUmE,EAAyBJ,GACvC,OAAO1F,EAAS,iBAAiB0F,WACnC,CAaOlF,eAAeuF,IACpB,IAAKnG,EAAe,MAAO,GAG3B,MAAMoG,EA+CR,SAA0B/K,EAAqBuH,GAC7C,IACE,OAAOyD,aAAaC,QAAQC,EAAiBlL,EAAauH,KAAY,EACxE,CAAE,MAAAgB,GACA,MAAO,EACT,CACF,CArDuB4C,CAAiBxG,EAAc3E,YAAa2E,EAAc4C,QAC/E,GAAIwD,EAGF,OAFApG,EAAcE,OAASkG,EACvBjM,EAAOC,KAAK,gBAAgBgM,KACrBA,EAIT,IACE,MAAMK,QAAerB,EAAsB,EAAG,EAAGpF,EAAc4C,OAAQ5C,EAAc3E,aACrF,GAAIoL,EAAOf,KAAKhK,OAAS,EAAG,CAE1B,MAAMgL,EAAaD,EAAOf,KAAK,GACzBxF,EAASwG,EAAWZ,gBAAkBY,EAAWxG,QAAU,GACjE,GAAIA,EAIF,OAHAF,EAAcE,OAASA,EACvByG,EAAiB3G,EAAc3E,YAAa2E,EAAc4C,OAAQ1C,GAClE/F,EAAOC,KAAK,kBAAkB8F,kBAAuBwG,EAAWE,gBACzD1G,CAEX,CACF,CAAE,MAAO6B,GACP5H,EAAOO,KAAK,yBAA0BqH,EACxC,CAGA,MAAM8E,EAQR,WACE,MAAMC,EAA2B,oBAAXC,QAA0BA,OAAOC,WACnDD,OAAOC,aAAarC,UAAU,EAAG,GACjCsC,KAAKH,SAASjE,SAAS,IAAI8B,UAAU,EAAG,IAC5C,MAAO,OAAO7J,KAAKC,SAAS+L,GAC9B,CAboBI,GAIlB,OAHAlH,EAAcE,OAAS2G,EACvBF,EAAiB3G,EAAc3E,YAAa2E,EAAc4C,OAAQiE,GAClE1M,EAAOC,KAAK,cAAcyM,KACnBA,CACT,CAWA,SAASN,EAAiBlL,EAAqBuH,GAC7C,MAAO,cAAcvH,IAAcuH,EAAS,IAAMA,EAAS,IAC7D,UAYgB+D,EAAiBtL,EAAqBuH,EAAiB1C,GACrE,IACMA,EACFmG,aAAac,QAAQZ,EAAiBlL,EAAauH,GAAS1C,GAE5DmG,aAAae,WAAWb,EAAiBlL,EAAauH,GAE1D,CAAE,MAAAgB,GAEF,CACF,CCjiBA,IAAIyD,EAAwC,KAU5C,SAASC,EAAQC,GACf,MAAMC,EAASC,EAAYF,EAAOG,cAAc,IAC1CC,EAAUF,EAAYF,EAAOG,aAAc,IAC3CE,EAVR,SAAkBC,GAChB,MAAMC,EAAQD,EAAIC,MAAM,uDACxB,OAAKA,EACE,GAAGC,SAASD,EAAM,GAAI,QAAQC,SAASD,EAAM,GAAI,QAAQC,SAASD,EAAM,GAAI,MADhE,aAErB,CAMcE,CAAST,EAAOG,cAC5B,MAAO,wBACYH,EAAOG,2CACDF,gCACAG,8BACFC,kDACoBL,EAAOG,iBAAiBF,uHAI3CD,EAAOU,2PAOjC,CAGA,SAASR,EAAYI,EAAaK,GAChC,MAAMJ,EAAQD,EAAIC,MAAM,uDACxB,IAAKA,EACH,OAAOD,EAET,MAAMM,EAASxI,GAAcsH,KAAKmB,IAAI,EAAGnB,KAAKoB,IAAI,IAAK1I,IACjD2I,EAAIH,EAAMJ,SAASD,EAAM,GAAI,IAAMI,GACnCK,EAAIJ,EAAMJ,SAASD,EAAM,GAAI,IAAMI,GACnCM,EAAIL,EAAMJ,SAASD,EAAM,GAAI,IAAMI,GACzC,MAAO,IAAII,EAAEzF,SAAS,IAAI4F,SAAS,EAAG,OAAOF,EAAE1F,SAAS,IAAI4F,SAAS,EAAG,OAAOD,EAAE3F,SAAS,IAAI4F,SAAS,EAAG,MAC5G,CA+nCM,SAAUC,EAAanB,GAEvBoB,SAASC,cAAc,yBAI3BvB,EAAesB,SAASE,cAAc,SACtCxB,EAAayB,aAAa,eAAgB,IAC1CzB,EAAa0B,YApoCf,SAAmBxB,GACjB,MAAO,qDAGLD,EAAQC,8l/BAmnCZ,CAa6ByB,CAAUzB,GACrCoB,SAASM,KAAKC,YAAY7B,GAC5B,UC9qCgB8B,IACd,MAAsB,oBAAXpC,QAA0BA,OAAOC,WACnCD,OAAOC,aAGT,uCAAuClH,QAAQ,QAAUsJ,IAC9D,MAAMd,EAAqB,GAAhBrB,KAAKH,SAAiB,EAEjC,OADgB,MAANsC,EAAYd,EAAS,EAAJA,EAAW,GAC7BzF,SAAS,KAEtB,CAGM,SAAUwG,EAAW5J,GACzB,MAAM6J,EAA8B,CAClC,IAAK,QACL,IAAK,OACL,IAAK,OACL,IAAK,SACL,IAAK,UAEP,OAAO7J,EAAKK,QAAQ,WAAayJ,GAAOD,EAAIC,IAAOA,EACrD,UA4BgBxO,IACd,OAAOD,KAAKC,KACd,CClDA,MAAMyO,EAAW,gXAQX,SAAUC,EAAelC,EAAwBmC,GACrD,MAAMC,EAAWhB,SAASE,cAAc,OACxCc,EAASC,GAAK,eACdD,EAASE,UAAY,+BAAkD,gBAApBtC,EAAOuC,SAA6B,OAAS,SAChGH,EAASb,aAAa,QAASvB,EAAOnL,OACtCuN,EAASb,aAAa,aAAcvB,EAAOnL,OAC3CuN,EAASb,aAAa,OAAQ,UAC9Ba,EAASb,aAAa,WAAY,KAGlCa,EAASI,UAAYxC,EAAOyC,aAG5B,MAAMC,EAAQtB,SAASE,cAAc,OACrCoB,EAAMJ,UAAY,kDAClBF,EAAST,YAAYe,GAGrB,MAAMC,EDHF,SACJC,EACAC,GAEA,IAAIhJ,EAA8C,KAClD,OAAO,YAA4BiJ,GACnB,OAAVjJ,GACFiB,aAAajB,GAEfA,EAAQC,WAAW,KACjB8I,EAAGG,MAAM/O,KAAM8O,GACfjJ,EAAQ,MACPgJ,EACL,CACF,CCXyBG,CAASb,EAAS,KAWzC,OAVAC,EAASnI,iBAAiB,QAAS0I,GAGnCP,EAASnI,iBAAiB,UAAYgJ,IACtB,UAAVA,EAAEjL,KAA6B,MAAViL,EAAEjL,MACzBiL,EAAEC,iBACFP,OAIGP,CACT,UA6WgBe,EAAiBC,EAAwBlL,EAAcmL,GACrE,MAAMC,EAAUlC,SAASE,cAAc,OACvCgC,EAAQhB,UAAY,wBAEpB,MAAMiB,EAASnC,SAASE,cAAc,OACtCiC,EAAOjB,UAAY,wCACnBiB,EAAOf,UAtZS,0PAwZhB,MAAMgB,EAAUpC,SAASE,cAAc,OACvCkC,EAAQlB,UAAY,mBAEpB,MAAMmB,EAASrC,SAASE,cAAc,OACtCmC,EAAOnB,UAAY,kBACnBmB,EAAOjC,YAActJ,EAErB,MAAM7E,EAAO+N,SAASE,cAAc,OAUpC,OATAjO,EAAKiP,UAAY,gBACjBjP,EAAKmO,YAAckC,EAAWL,GAE9BG,EAAQ7B,YAAY8B,GACpBD,EAAQ7B,YAAYtO,GACpBiQ,EAAQ3B,YAAY4B,GACpBD,EAAQ3B,YAAY6B,GACpBJ,EAAUzB,YAAY2B,GAEfA,CACT,CAGM,SAAUK,EAAeP,EAAwBlL,EAAcmL,EAAmBO,EAAqCC,GAC3H,MAAMP,EAAUlC,SAASE,cAAc,OACvCgC,EAAQhB,UAAY,sBAChBuB,IAAOP,EAAQQ,QAAQC,SAAWF,GAEtC,MAAMN,EAASnC,SAASE,cAAc,OACtCiC,EAAOjB,UAAY,sCACnBiB,EAAOf,UAAYP,EAEnB,MAAMuB,EAAUpC,SAASE,cAAc,OACvCkC,EAAQlB,UAAY,mBAEpB,MAAMmB,EAASrC,SAASE,cAAc,OACtCmC,EAAOnB,UAAY,kBAEfsB,EACFH,EAAOjB,UAAYoB,EAAS1L,GAE5BuL,EAAOjC,YAActJ,EAGvB,MAAM7E,EAAO+N,SAASE,cAAc,OAepC,OAdAjO,EAAKiP,UAAY,gBACjBjP,EAAKmO,YAAckC,EAAWL,GAE9BG,EAAQ7B,YAAY8B,GAEpBD,EAAQ7B,YAAYqC,EAAeP,EAAQH,IAC3CE,EAAQ7B,YAAYtO,GACpBiQ,EAAQ3B,YAAY4B,GACpBD,EAAQ3B,YAAY6B,GACpBJ,EAAUzB,YAAY2B,GAGtBW,EAAkBR,GAEXH,CACT,CAoCA,MAAMY,EAAY,yTAEZC,EAAa,kRAGnB,SAASH,EAAeP,EAAqBH,GAC3C,MAAMc,EAAMhD,SAASE,cAAc,OACnC8C,EAAI9B,UAAY,mBAGhB,MAAM+B,EAAUjD,SAASE,cAAc,UACvC+C,EAAQrJ,KAAO,SACfqJ,EAAQ/B,UAAY,iBACpB+B,EAAQ9C,aAAa,QAASxJ,EAAE,SAChCsM,EAAQ9C,aAAa,aAAcxJ,EAAE,SACrCsM,EAAQ7B,UAAY0B,EACpBG,EAAQpK,iBAAiB,QAASZ,MAAO4J,IACvCA,EAAEqB,kBACF,MAAMpM,EAAOuL,EAAOjC,aAAe,SAC7B+C,EAAgBrM,EAAMmM,KAI9B,MAAMG,EAAWpD,SAASE,cAAc,UACxCkD,EAASxJ,KAAO,SAChBwJ,EAASlC,UAAY,iBACrBkC,EAASjD,aAAa,QAASxJ,EAAE,UACjCyM,EAASjD,aAAa,aAAcxJ,EAAE,UACtCyM,EAAShC,UAAY2B,EACrBK,EAASvK,iBAAiB,QAAUgJ,IAClCA,EAAEqB,kBACF,MAAMG,EAAOnB,EAAQoB,QAAQ,eACzBD,GACFA,EAAKE,cAAc,IAAIC,YAAY,YAAa,CAC9CC,OAAQ,CAAEhB,MAAOP,EAAQQ,QAAQC,UAAY,SAMnD,MAGMe,EAAQ1D,SAASE,cAAc,UACrCwD,EAAM9J,KAAO,SACb8J,EAAMxC,UAAY,mBAClBwC,EAAMvD,aAAa,QAASxJ,EAAE,gBAC9B+M,EAAMvD,aAAa,aAAcxJ,EAAE,gBACnC+M,EAAMtC,UARW,6TASjBsC,EAAM7K,iBAAiB,QAAUgJ,IAC/BA,EAAEqB,kBACF,MAAMG,EAAOnB,EAAQoB,QAAQ,eACzBD,GACFA,EAAKE,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQ,CAAEhB,MAAOP,EAAQQ,QAAQC,UAAY,GAAI7K,MAAO,WAK9D,MAAM6L,EAAU3D,SAASE,cAAc,UAoBvC,OAnBAyD,EAAQ/J,KAAO,SACf+J,EAAQzC,UAAY,mBACpByC,EAAQxD,aAAa,QAASxJ,EAAE,kBAChCgN,EAAQxD,aAAa,aAAcxJ,EAAE,kBACrCgN,EAAQvC,UAvBW,+UAwBnBuC,EAAQ9K,iBAAiB,QAAUgJ,IACjCA,EAAEqB,kBACF,MAAMG,EAAOnB,EAAQoB,QAAQ,eACzBD,GACFA,EAAKE,cAAc,IAAIC,YAAY,eAAgB,CACjDC,OAAQ,CAAEhB,MAAOP,EAAQQ,QAAQC,UAAY,GAAI7K,MAAO,aAK9DkL,EAAIzC,YAAY0C,GAChBD,EAAIzC,YAAY6C,GAChBJ,EAAIzC,YAAYmD,GAChBV,EAAIzC,YAAYoD,GACTX,CACT,CAOM,SAAUY,EAAiB1B,EAAsBpK,GACrD,MAAM+L,EAAO3B,EAAQ4B,iBAAiB,qBAClCD,EAAK9Q,OAAS,IAClB8Q,EAAKE,QAASC,GAAQA,EAAIC,UAAUC,OAAO,2BAA4B,SACzD,OAAVpM,GAAkB+L,EAAK,IAAIA,EAAK,GAAGI,UAAUE,IAAI,4BACvC,SAAVrM,GAAoB+L,EAAK,IAAIA,EAAK,GAAGI,UAAUE,IAAI,2BAA4B,QACrF,CAGAlM,eAAekL,EAAgBrM,EAAckN,GAC3C,MAAMI,EAAWJ,EAAI5C,UACrB,IACE,GAAIiD,UAAUC,WAAaC,OAAOC,sBAC1BH,UAAUC,UAAUG,UAAU3N,OAC/B,CAEL,MAAM4N,EAAK1E,SAASE,cAAc,YAClCwE,EAAG5M,MAAQhB,EACX4N,EAAGC,MAAMxD,SAAW,QACpBuD,EAAGC,MAAMC,QAAU,IACnB5E,SAAS9E,KAAKqF,YAAYmE,GAC1BA,EAAGG,SACH7E,SAAS8E,YAAY,QACrB9E,SAAS9E,KAAK6J,YAAYL,EAC5B,CACAV,EAAI5C,UAAY,mOAChB4C,EAAIC,UAAUE,IAAI,wBAClBzL,WAAW,KACTsL,EAAI5C,UAAYgD,EAChBJ,EAAIC,UAAUC,OAAO,yBACpB,KACL,CAAE,MAAAjJ,GAEF,CACF,CAGM,SAAU4H,EAAkBR,GACjBA,EAAOyB,iBAAiB,sBAChCC,QAASiB,IACd,GAAIA,EAAI/E,cAAc,qBAAsB,OAC5C,MAAMgF,EAASD,EAAI/E,cAAc,QAC3B+D,EAAMhE,SAASE,cAAc,UACnC8D,EAAIpK,KAAO,SACXoK,EAAI9C,UAAY,mBAChB8C,EAAI7D,aAAa,QAASxJ,EAAE,SAC5BqN,EAAI7D,aAAa,aAAcxJ,EAAE,SACjCqN,EAAI5C,UAAY0B,EAChBkB,EAAInL,iBAAiB,QAASZ,MAAO4J,IACnCA,EAAEqB,wBACIC,GAAgB8B,aAAM,EAANA,EAAQ7E,cAAe,GAAI4D,KAElDgB,EAAoBzE,YAAYyD,IAErC,CAYM,SAAUkB,EAAiBhD,EAAsBG,GACrDH,EAAQ+B,UAAUC,OAAO,sBACzB,MAAMiB,EAAQ9C,EAAOpC,cAAc,cAC/BkF,GAAOA,EAAMjB,SACjBrB,EAAkBR,EACpB,CAKM,SAAU+C,EAAclD,EAAsBmD,GAElD,MAAMC,EAAWpD,EAAQjC,cAAc,gBAGvC,GAFIqF,GAAUA,EAASpB,UAElBmB,GAA8B,IAAnBA,EAAQtS,OAAc,OAEtC,MAAMwS,EAAYvF,SAASE,cAAc,OACzCqF,EAAUrE,UAAY,qCAGtB,MAAMsE,EAASxF,SAASE,cAAc,OACtCsF,EAAOtE,UAAY,sBAEnB,MAAMuE,EAAYzF,SAASE,cAAc,QACzCuF,EAAUvE,UAAY,qBACtBuE,EAAUrF,YAAc,MAAMzJ,EAAE,eAAgB,CAAE+O,EAAGL,EAAQtS,WAE7D,MAAM4S,EAAQ3F,SAASE,cAAc,QACrCyF,EAAMzE,UAAY,qBAClByE,EAAMvF,YAAc,IAEpBoF,EAAOjF,YAAYkF,GACnBD,EAAOjF,YAAYoF,GAGnBH,EAAO3M,iBAAiB,QAAS,KAC/B0M,EAAUtB,UAAU2B,OAAO,4BAI7B,MAAM1K,EAAO8E,SAASE,cAAc,OACpChF,EAAKgG,UAAY,oBAEjB,IAAK,MAAM2E,KAAOR,EAAS,CACzB,MAAMS,EAAO9F,SAASE,cAAc,OACpC4F,EAAK5E,UAAY,kBAEjB,MAAM3H,EAAOyG,SAASE,cAAc,OAIpC,GAHA3G,EAAK2H,UAAY,wBACjB3H,EAAK6G,YAAcyF,EAAIpS,OAASoS,EAAIE,YAAc,OAE9CF,EAAIG,QAAS,CACf,MAAMA,EAAUhG,SAASE,cAAc,OACvC8F,EAAQ9E,UAAY,2BACpB8E,EAAQ5F,YAAcyF,EAAIG,QAC1BF,EAAKvF,YAAYyF,EACnB,CAEA,MAAMC,EAAOjG,SAASE,cAAc,OACpC+F,EAAK/E,UAAY,wBACjB,MAAMgF,EAAsB,GACxBL,EAAIE,YAAYG,EAAUC,KAAKN,EAAIE,iBAChBjU,IAAnB+T,EAAIO,YAA0BF,EAAUC,KAAK,OAAON,EAAIO,mBAC1CtU,IAAd+T,EAAIQ,OAAqBH,EAAUC,KAAK,QAAoB,IAAZN,EAAIQ,OAAaC,QAAQ,OAC7EL,EAAK7F,YAAc8F,EAAUK,KAAK,OAElCT,EAAKvF,YAAYhH,GACjBuM,EAAKvF,YAAY0F,GACjB/K,EAAKqF,YAAYuF,EACnB,CAEAP,EAAUhF,YAAYiF,GACtBD,EAAUhF,YAAYrF,GAGtB,MAAMsL,EAAStE,EAAQjC,cAAc,kBACjCuG,GAAUA,EAAOC,WACnBD,EAAOC,WAAWC,aAAanB,EAAWiB,GAE1CtE,EAAQ3B,YAAYgF,EAExB,CAeM,SAAUoB,EACdC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,GAIA,GAFAN,EAAOxF,UAAY,GAEE,IAAjByF,EAAM9T,OAAc,CACtB,MAAMoU,EAAQnH,SAASE,cAAc,OAOrC,OANAiH,EAAMjG,UAAY,2BAClBiG,EAAM/F,UAAY,2EAEIzK,EAAE,oCAExBiQ,EAAOrG,YAAY4G,EAErB,CAEA,IAAK,MAAMrB,KAAQe,EAAO,CACxB,MAAMO,EAAKpH,SAASE,cAAc,OAClCkH,EAAGlG,UAAY,mBAEf,MAAMmG,EAASvB,EAAKvO,QAAUuO,EAAK7E,GAC/BgG,GAAgBI,IAAWJ,GAC7BG,EAAGnD,UAAUE,IAAI,4BAGnB,MAAM1S,EAAOuO,SAASE,cAAc,OACpCzO,EAAKyP,UAAY,yBAEjB,MAAMoG,EAAOtH,SAASE,cAAc,OACpCoH,EAAKpG,UAAY,uBAEb4E,EAAKyB,mBACPD,EAAKlH,YAAc0F,EAAKyB,mBAAmBxU,OAAS,GAChD+S,EAAKyB,mBAAmBvL,UAAU,EAAG,IAAM,MAC3C8J,EAAKyB,mBAETD,EAAKlH,YAAciH,EAGrB,MAAMG,EAASxH,SAASE,cAAc,OACtCsH,EAAOtG,UAAY,yBACnB,MAAMgF,EAAsB,QACFpU,IAAtBgU,EAAK7H,cAA4BiI,EAAUC,KAAK,GAAGL,EAAK7H,oBACxD6H,EAAK2B,gBAAiBvB,EAAUC,KAAKL,EAAK2B,iBACrC3B,EAAK4B,WAAWxB,EAAUC,KAAKL,EAAK4B,WAC7CF,EAAOpH,YAAc8F,EAAUK,KAAK,OAEpC9U,EAAK8O,YAAY+G,GACjB7V,EAAK8O,YAAYiH,GAEjB,MAAMG,EAAY3H,SAASE,cAAc,OACzCyH,EAAUzG,UAAY,4BAGtB,MAAM0G,EAAY5H,SAASE,cAAc,UACzC0H,EAAU1G,UAAY,gDACtB0G,EAAUzH,aAAa,QAASxJ,EAAE,mBAClCiR,EAAUxG,UAAY,8TACtBwG,EAAU/O,iBAAiB,QAAUgJ,IACnCA,EAAEqB,kBACF6D,EAASjB,EAAK7E,MAIhB,MAAM4G,EAAY7H,SAASE,cAAc,UACzC2H,EAAU3G,UAAY,gDACtB2G,EAAU1H,aAAa,QAASxJ,EAAE,mBAClCkR,EAAUzG,UAAY,yTACtByG,EAAUhP,iBAAiB,QAAUgJ,IACnCA,EAAEqB,kBACF8D,EAASlB,EAAK7E,MAGhB0G,EAAUpH,YAAYqH,GACtBD,EAAUpH,YAAYsH,GAEtBT,EAAG7G,YAAY9O,GACf2V,EAAG7G,YAAYoH,GAGfP,EAAGvO,iBAAiB,QAAS,KAC3BiO,EAASO,KAGXT,EAAOrG,YAAY6G,EACrB,CACF,CAGM,SAAUU,EAAe9F,GAC7BA,EAAU+F,UAAY/F,EAAUgG,YAClC,CAGA,SAAS1F,EAAWL,GAClB,MAAMgG,EAAI,IAAI9V,KAAK8P,GAGnB,MAAO,GAFI7K,OAAO6Q,EAAEC,YAAYpI,SAAS,EAAG,QACjC1I,OAAO6Q,EAAEE,cAAcrI,SAAS,EAAG,MAEhD,CCj2BA,SAASsI,EAAW1V,GAClB,MAAO,eAAoBA,GAC7B,CAKM,SAAU2V,EAAa3V,EAAqB0K,GAChD,IAEE,IAAIrB,EAAUqB,EACVrB,EAAQhJ,OAfK,MAgBfgJ,EAAUA,EAAQuM,MAfL,IAgBb9W,EAAOO,KAAK,0BAAqCgK,EAAQhJ,aAG3D,MAAMpB,EAAkB,CACtByL,SAAUrB,EACVwM,UAAWpW,KAAKC,OAElBsL,aAAac,QAAQ4J,EAAW1V,GAAc8V,KAAKC,UAAU9W,GAC/D,CAAE,MAAOkQ,GACHA,aAAalK,OAAoB,uBAAXkK,EAAEtI,KAC1B/H,EAAOQ,MAAM,wCAEbR,EAAOQ,MAAM,WAAY6P,EAE7B,CACF,CA0BM,SAAU6G,EAAchW,GAC5B,IACEgL,aAAae,WAAW2J,EAAW1V,GACrC,CAAE,MAAOmP,GACPrQ,EAAOO,KAAK,WAAY8P,EAC1B,CACF,CC9DA,MAAM8G,EAAoB,eAGpBC,EAAqB,gBAOrB,SAAUC,EAAe/R,GAC7B,IAAKA,GAAwB,iBAATA,EAAmB,MAAO,GAG9C,MAAMgS,EAAuB,GAC7B,IAAIC,EAAYjS,EAGhBiS,EAAYA,EAAU5R,QAAQ,2BAA4B,CAAC6R,EAAQC,EAAMC,KACvE,MAAMC,EAAML,EAAW/V,OACjBqW,EAAc1I,EAAWwI,EAAKG,WAC9BC,EAAYL,EAAO,oBAAoBvI,EAAWuI,MAAW,GAEnE,OADAH,EAAW3C,KAAK,uCAAuCmD,KAAaF,kBAC7D,GAAGT,IAAoBQ,QAIhC,MAAMI,EAAwB,GAC9BR,EAAYA,EAAU5R,QAAQ,eAAgB,CAAC6R,EAAQE,KACrD,MAAMC,EAAMI,EAAYxW,OAExB,OADAwW,EAAYpD,KAAK,oCAAoCzF,EAAWwI,aACzD,GAAGN,IAAqBO,QAIjCJ,EAAYrI,EAAWqI,GAGvBA,EAAYS,EAAoBT,EAAWJ,EAAmBG,GAC9DC,EAAYS,EAAoBT,EAAWH,EAAoBW,GAG/D,MAAM5N,EAAQoN,EAAUnN,MAAM,MACxBkC,EAAmB,GACzB,IAAI2L,GAAS,EACTC,EAAW,GACXC,GAAe,EACfC,EAA4B,GAEhC,IAAK,IAAIC,EAAI,EAAGA,EAAIlO,EAAM5I,OAAQ8W,IAAK,CACrC,MAAM/N,EAAOH,EAAMkO,GAGnB,GAAI/N,EAAKrC,SAASkP,IAAsB7M,EAAKrC,SAAS,mCAAoC,CACxFqQ,IACAC,IACAC,IACAlM,EAAOqI,KAAKrK,GACZ,QACF,CAGA,MAAMmO,EAAenO,EAAKqD,MAAM,oBAChC,GAAI8K,EAAc,CAChBH,IACAC,IACAC,IACA,MAAME,EAAQD,EAAa,GAAGlX,OAC9B+K,EAAOqI,KAAK,KAAK+D,oBAAwBA,MAAUD,EAAa,QAAQC,MACxE,QACF,CAGA,MAAMC,EAAarO,EAAKqD,MAAM,gBAC9B,GAAIgL,EAAY,CACdL,IACAC,IACKJ,IACHA,GAAe,EACf7L,EAAOqI,KAAK,2CAEdrI,EAAOqI,KAAK,MAAMiE,EAAaD,EAAW,WAC1C,QACF,CAAWR,GACTK,IAIF,MAAMK,EAAUvO,EAAKqD,MAAM,kBAC3B,GAAIkL,EAAS,CACXP,IACAE,IACKP,GAAuB,OAAbC,IACbK,IACAN,GAAS,EACTC,EAAW,KACX5L,EAAOqI,KAAK,2BAEdrI,EAAOqI,KAAK,OAAOiE,EAAaC,EAAQ,YACxC,QACF,CAGA,MAAMC,EAAUxO,EAAKqD,MAAM,iBACvBmL,GACFR,IACAE,IACKP,GAAuB,OAAbC,IACbK,IACAN,GAAS,EACTC,EAAW,KACX5L,EAAOqI,KAAK,2BAEdrI,EAAOqI,KAAK,OAAOiE,EAAaE,EAAQ,aAKtB,KAAhBxO,EAAK/D,OAOL,yBAAyBwS,KAAKzO,EAAK/D,SACrC+R,IACAC,IACAC,IACAlM,EAAOqI,KAAK,4BAKd4D,IACAC,IACAJ,EAAgBzD,KAAKiE,EAAatO,MAjBhCgO,IACAC,IAiBJ,CAMA,OAJAD,IACAC,IACAC,IAEOlM,EAAOyI,KAAK,MAKnB,SAAS6D,EAAatT,GAepB,OALAA,GAFAA,GAFAA,GADAA,GAFAA,GADAA,EAAOA,EAAKK,QAAQ,iBAAkB,wBAC1BA,QAAQ,aAAc,wBAEtBA,QAAQ,aAAc,gBACtBA,QAAQ,wBAAyB,gBAEjCA,QAAQ,aAAc,kBAEtBA,QAAQ,2BAA4B,CAACqT,EAAIC,EAAUtS,IAGtD,gCADS,gBAAgBoS,KAAKpS,GAAOA,EAAM,kDAC2CsS,QAGjG,CAGA,SAASX,IACHF,EAAgB7W,OAAS,IAC3B+K,EAAOqI,KAAK,uBAAuByD,EAAgBrD,KAAK,eACxDqD,EAAkB,GAEtB,CAGA,SAASG,IACHN,IACF3L,EAAOqI,KAAkB,OAAbuD,EAAoB,QAAU,SAC1CD,GAAS,EACTC,EAAW,GAEf,CAGA,SAASM,IACHL,IACF7L,EAAOqI,KAAK,iBACZwD,GAAe,EAEnB,CACF,CAGA,SAASH,EAAoB1S,EAAcxE,EAAgBoY,GACzD,OAAO5T,EAAKK,QAAQ,IAAIwT,OAAmBrY,EAOhC6E,QAAQ,sBAAuB,QAPW,WAAc,KAAM,CAACqT,EAAIrB,IACrEuB,EAAatL,SAAS+J,KAAS,GAE1C,CCpKA,IA4BIyB,GA5BAhM,GAAgC,KAChCxB,GAA0B,GAC1ByN,GAAwC,KACxCC,GAAsC,KACtCC,GAAgC,KAChCC,GAA8B,KAC9BC,GAA+B,KAC/BC,GAA2C,KAC3CC,GAAmC,KACnCC,GAAgC,KAChCC,GAAgC,KAChCC,GAAuC,KACvCC,GAAiC,KACjCC,GAA4C,KAC5CC,GAAqC,KACrCC,IAAY,EAGZC,GAA0C,KAE1CC,IAAe,EAGfC,GAAkC,GAElCC,GAAoB,GAMpBnR,IAAS,EAKP,SAAUoR,GACdC,EACAC,GAeArN,GAASoN,EACTnB,GAAoBoB,EAAIpB,kBACxBC,GAAUmB,EAAInB,QACdC,GAAYkB,EAAInB,QAAQoB,cACxBlB,GAAUiB,EAAIjB,QACdC,GAAWgB,EAAIhB,SACfC,GAAiBe,EAAIf,eACrBC,GAAec,EAAId,aACnBC,GAAYa,EAAIb,UAChBC,GAAYY,EAAIZ,UAChBC,GAAcW,EAAIX,YAClBC,GAAaU,EAAIV,WACjBC,GAAgBS,EAAIE,YACpBV,GAAgBQ,EAAIG,YAGpBxB,GAAoBoB,EAAIzY,WACxBoH,KAAWqR,EAAIzY,cAAgByY,EAAIK,mBAyErC,WACE,IAAKvB,KAAYE,GAAS,OAG1BA,GAAQnS,iBAAiB,QAAS,KAC5B6S,IAAaC,GACfA,GAAgBhT,QAGlB2T,OAGFxB,GAAQjS,iBAAiB,UAAYgJ,IAErB,UAAVA,EAAEjL,KAAoBiL,EAAE0K,UAAa1K,EAAE2K,cACzC3K,EAAEC,iBACFwK,QAIJxB,GAAQjS,iBAAiB,QAAS,KAChC4T,KAgKJ,WACE,IAAK3B,GAAS,OACdA,GAAQnG,MAAM+H,OAAS,OACvB5B,GAAQnG,MAAM+H,OAAS,GAAGpO,KAAKoB,IAAIoL,GAAQ9C,aAAc,QAC3D,CAnKI2E,KAIF7B,GAAQjS,iBAAiB,QAAS,KAC5BkS,IAAWA,GAAU9G,UAAUE,IAAI,2BAEzC2G,GAAQjS,iBAAiB,OAAQ,KAC3BkS,IAAWA,GAAU9G,UAAUC,OAAO,2BAGxC+G,IACFA,GAASpS,iBAAiB,QAAS,IAscvC,WACE,IAAK+F,GAAQ,OACb,IAAKgO,QAAQjW,EAAE,kBAAmB,OAGlC,GADAyG,GAAW,GACPyN,GAAmB,CACRA,GAAkB/G,iBAAiB,0BAC3CC,QAAQqD,GAAMA,EAAGlD,SACxB,CACI+G,KAAUA,GAAStG,MAAMkI,QAAU,QACvCC,KACApE,EAAc9J,GAAOlM,aAGrB,MAAMqa,EASR,WACE,MAAM5O,EAA2B,oBAAXC,QAA0BA,OAAOC,WACnDD,OAAOC,aAAarC,UAAU,EAAG,GACjCsC,KAAKH,SAASjE,SAAS,IAAI8B,UAAU,EAAG,IAC5C,MAAO,OAAO7J,KAAKC,SAAS+L,GAC9B,CAdgB6O,GACd1V,EAAayV,GACb/O,EAAiBY,GAAOlM,YAAakM,GAAO3E,OAAQ8S,GAEpDvb,EAAO4B,eAAewL,GAAOlM,aAC7BlB,EAAOC,KAAK,YAAYsb,IAC1B,CA1d6CE,GAE7C,CA1GEC,GA6GF,WACE,IAAKrC,GAAmB,OACxBA,GAAkBhS,iBAAiB,SAAU,KAC3C,IAAKgS,GAAmB,OACxB,MAAM9C,UAAEA,EAASC,aAAEA,EAAYmF,aAAEA,GAAiBtC,GAElDe,GAAe5D,EAAeD,EAAYoF,EAAe,GACrDvB,IAAcwB,OAGhB/B,IACFA,GAAUxS,iBAAiB,QAAS,KAC9BgS,IAAmB/C,EAAe+C,IACtCe,IAAe,EACfwB,MAGN,CA3HEC,GAsKF,WACE,IAAK/B,GAAa,OAClBA,GAAYzS,iBAAiB,QAAS,KACpCiT,GAAoBR,GAAaxT,MAAMC,OAAOuV,cAC9CC,MAEJ,CAzKEC,GAGIxB,EAAIK,oBAAsBnB,IAgfhCjT,iBACE,IAAKiT,GAAgB,OACrB,IACE,MAAMuC,QNvSHxV,iBACL,MAAME,EAAMV,EAAS,kBACrB,IACE,MAAM2C,QAAiBlC,EAAUC,GACjC,IAAKiC,EAASC,GAAI,MAAM,IAAIhB,EAASS,EAAoBM,EAASlH,QAAS,QAAQkH,EAASlH,UAC5F,MAAMmJ,QAA0CjC,EAASiC,OACzD,OAAIA,EAAKC,SAAWC,MAAMC,QAAQH,EAAK1K,OACrCH,EAAOC,KAAK,iBAAiB4K,EAAK1K,KAAKoB,UAChCsJ,EAAK1K,MAEP,EACT,CAAE,MAAOyH,GAGP,OAFIA,aAAeC,EAAU7H,EAAOQ,MAAM,YAAYoH,EAAIjG,WACrD3B,EAAOQ,MAAM,UAAWoH,GACtB,EACT,CACF,CMuRuBsU,GACnB,GAAoB,IAAhBD,EAAK1a,OAAc,OACvBmY,GAAe9J,UAAY,oBAAoBzK,EAAE,2BAEjD,MAAMgX,EAAa,CAACC,EAAoBC,EAAiB,KACvD,IAAK,MAAMC,KAAQF,EAAO,CACxB,MAAMG,EAAS/N,SAASE,cAAc,UACtC6N,EAAOjW,MAAQV,OAAO0W,EAAK7M,IAC3B8M,EAAO3N,YAAc,GAAG,IAAI4N,OAAOH,KAAUC,EAAKvU,YACxBzH,IAAtB8Y,IAAmCxT,OAAO0W,EAAK7M,MAAQ7J,OAAOwT,MAAoBmD,EAAOE,UAAW,GACxG/C,GAAgB3K,YAAYwN,GACxBD,EAAKI,UAAYJ,EAAKI,SAASnb,OAAS,GAAG4a,EAAWG,EAAKI,SAAUL,EAAS,EACpF,GAEFF,EAAWF,GACXjc,EAAOC,KAAK,mBAAmBgc,EAAK1a,SACtC,CAAE,MAAOqG,GACP5H,EAAOQ,MAAM2E,EAAE,uBAAwByC,EACzC,CACF,CArgBI+U,EAEJ,CAMOlW,eAAemW,KACpB,GAAKxP,IAAWiM,WAGVrN,UAmBRvF,iBACE,IAAK2G,KAAWiM,GAAmB,OAEnC,MAAMtT,EAASC,IACf,IAAKD,EAAQ,OAEb,IACE,MAAMuG,QAAeZ,EAA0B3F,GAC3CuG,EAAOV,SAASrK,OAAS,IAE3BqK,GAAWU,EAAOV,SAASuD,IAAI,CAACjP,EAAKyX,KAAG,CACtClI,GAAIT,IACJ6N,KAA0B,SAApB3c,EAAI4c,YAAyB,OAAS,KAC5ClM,QAAS1Q,EAAI0Q,QACbH,UAAW,IAAI9P,KAAKT,EAAI6c,YAAYC,aAGtCC,KACAjd,EAAOC,KAAK,SAAS2L,GAASrK,gBAG9BsV,EAAazJ,GAAOlM,YAAa0K,IAErC,CAAE,MAAOhE,GACP5H,EAAOO,KAAK,cAAeqH,EAC7B,CACF,CA1CQsV,GAGkB,IAApBtR,GAASrK,QAAc,CACzB,MAAM4b,EFpGJ,SAAuBjc,GAC3B,IACE,MAAMkc,EAAMlR,aAAaC,QAAQyK,EAAW1V,IAC5C,IAAKkc,EACH,MAAO,GAET,MAAMjd,EAAkB6W,KAAKqG,MAAMD,GACnC,OAAKjd,GAAS4K,MAAMC,QAAQ7K,EAAKyL,WAGjC5L,EAAOC,KAAK,sBAAsBiB,WAAqBf,EAAKyL,SAASrK,UAC9DpB,EAAKyL,UAHH,EAIX,CAAE,MAAOyE,GAEP,OADArQ,EAAOO,KAAK,WAAY8P,GACjB,EACT,CACF,CEoFmBiN,CAAalQ,GAAOlM,aAC/Bic,EAAO5b,OAAS,IAClBqK,GAAWuR,EACXF,KACAjd,EAAOC,KAAK,WAAWkd,EAAO5b,cAElC,CACF,CAkGA,SAASqa,KACH/B,IAAWA,GAAUpH,UAAUE,IAAI,qBACzC,CAGA,SAAS4K,KACFlE,KACDe,GACF9D,EAAe+C,IAZbQ,IAAWA,GAAUpH,UAAUC,OAAO,sBAgB5C,CAGA,SAAS8K,GAAkB9V,GACpB8R,KACQ,SAAT9R,GACF8R,GAAQ/G,UAAUE,IAAI,sBACtB6G,GAAQiE,gBAAgB,YACxBjE,GAAQ7K,aAAa,QAASxJ,EAAE,SAChCqU,GAAQ7K,aAAa,aAAcxJ,EAAE,SACrCqU,GAAQ5J,UAAY,iPAEpB4J,GAAQ/G,UAAUC,OAAO,sBACzB8G,GAAQ7K,aAAa,QAASxJ,EAAE,SAChCqU,GAAQ7K,aAAa,aAAcxJ,EAAE,SACrCqU,GAAQ5J,UAAY,iRACpBqL,MAEJ,CAcA,SAASc,KACP,MAAM3G,EAASuE,gBAAAA,GAAclL,cAAc,qBAC3C,IAAK2G,IAAWhI,GAAQ,OASxB+H,EACEC,EARekF,GACbD,GAAaqD,OAAOpJ,IACDA,EAAKyB,oBAAsBzB,EAAKvO,QAAUuO,EAAK7E,IAAM,IAAIqM,cAC3D7T,SAASqS,KAE1BD,GAKD1O,IAA6BgS,GAAqBhS,IAClD8D,IAAiBsD,OAAO6K,KAAK7R,EAAyB0D,GAAK,WAC5DhJ,MAAOgJ,IACL,IAAK2L,QAAQjW,EAAE,2BAA4B,aAC1B0G,EAAmB4D,KAE9BA,IAAOzJ,MACT4F,GAAW,GACPyN,IACFA,GAAkB/G,iBAAiB,0BAA0BC,QAAQqD,GAAMA,EAAGlD,UAE5E+G,KAAUA,GAAStG,MAAMkI,QAAU,QACvCC,MAGFjB,GAAeA,GAAaqD,OAAOG,IAAOA,EAAG9X,QAAU8X,EAAGpO,MAAQA,GAClEsM,OAGJ/V,IAEJ,CA6CA,SAASsV,KACP,IAAK1B,GAAW,OAChB,MAAMkE,EAAclS,GAASrK,OAAS,GACnC8X,IAAqBA,GAAkB5K,cAAc,YACxDmL,GAAUzG,MAAMkI,QAAUyC,EAAc,OAAS,EACnD,CAGA,SAAS7C,KACP,IAAKzB,KAAYF,GAAS,OACVA,GAAQhT,MAAMC,OAAOhF,OAAS,IAC9B2Y,GACdV,GAAQiE,gBAAgB,YAExBjE,GAAQ7K,aAAa,WAAY,OAErC,CAGAlI,eAAeqU,KACb,IAAKxB,KAAYlM,IAAU8M,GAAW,OAEtC,MAAM5U,EAAOgU,GAAQhT,MAAMC,OAC3B,GAAa,KAATjB,EAAa,OAEjBgU,GAAQhT,MAAQ,GAChB2U,KACA3B,GAAQnG,MAAM+H,OAAS,OAGvB,MAAM6C,EAAgBnd,IAChBod,EAAuB,CAAEvO,GAAIT,IAAQ6N,KAAM,OAAQjM,QAAStL,EAAMmL,UAAWsN,GAC/E1E,IAAmB9I,EAAiB8I,GAAmB/T,EAAMyY,GACjEnS,GAAS+I,KAAKqJ,GAEd1C,KACI7B,IAAY7N,GAASrK,OAAS,IAAGkY,GAAStG,MAAMkI,QAAU,eAC1DhC,IAAmBkE,WAGjBU,GAAe3Y,EACvB,CAMAmB,eAAewX,GAAeC,GAC5B,IAAK9Q,KAAWiM,GAAmB,OAEnCa,IAAY,EACZsD,GAAkB,QAGbpQ,GAAOrH,cACJiG,IAGR,MAAMmS,EAAcvd,IACdwd,EAAejV,UAAiC7I,IAAtB8Y,SAAyD9Y,IAAtB8M,GAAOrL,YAGtEiY,IAAeA,KACfX,IAAmBkE,KAEvB,MAAMc,EAAUrP,IAChB,IAAIsP,EAAY,GAEhB,IACMlR,GAAOmR,UACTD,QAgDN7X,eAAiCnB,EAAc6Y,EAAqBC,EAAuBC,GAEzFlE,GAAkB,IAAInT,gBACtB,MAAMS,EAAS0S,GAAgB1S,OAE/B,OAAO,IAAI+W,QAAQ,CAACC,EAASC,KAC3B,IAAIC,EAA+B,KAC/BC,EAAgC,KAChCC,EAAc,GACdC,GAAgB,EAEpB/V,EACEzD,EACCyZ,IAEC,GADAF,GAAeE,GACVD,GAAiBzF,GAAmB,CACnCY,IAAeA,KACnB,MAAMvJ,QAAEA,EAAOG,OAAEA,YHpBSL,EAAwBC,EAAmBQ,GAC7E,MAAMP,EAAUlC,SAASE,cAAc,OACvCgC,EAAQhB,UAAY,yCAChBuB,IAAOP,EAAQQ,QAAQC,SAAWF,GAEtC,MAAMN,EAASnC,SAASE,cAAc,OACtCiC,EAAOjB,UAAY,sCACnBiB,EAAOf,UAAYP,EAEnB,MAAMuB,EAAUpC,SAASE,cAAc,OACvCkC,EAAQlB,UAAY,mBAEpB,MAAMmB,EAASrC,SAASE,cAAc,OACtCmC,EAAOnB,UAAY,kBACnBmB,EAAOjB,UAAY,GAEnB,MAAMnP,EAAO+N,SAASE,cAAc,OAWpC,OAVAjO,EAAKiP,UAAY,gBACjBjP,EAAKmO,YAAckC,EAAWL,GAE9BG,EAAQ7B,YAAY8B,GACpBD,EAAQ7B,YAAYqC,EAAeP,EAAQH,IAC3CE,EAAQ7B,YAAYtO,GACpBiQ,EAAQ3B,YAAY4B,GACpBD,EAAQ3B,YAAY6B,GACpBJ,EAAUzB,YAAY2B,GAEf,CAAEA,UAASG,SACpB,CGRsCmO,CAAoB3F,GAAmB8E,EAAaE,GAChFO,EAAYlO,EACZiO,EAAW9N,EACXiO,GAAgB,CAClB,CACIH,IACFA,EAAS/P,YAAciQ,EHuJ3B,SAA+BhO,GACnC,GAAIA,EAAOpC,cAAc,cAAe,OACxC,MAAMkF,EAAQnF,SAASE,cAAc,QACrCiF,EAAMjE,UAAY,YAClBiE,EAAMhF,aAAa,cAAe,QAClCkC,EAAO9B,YAAY4E,EACrB,CG5JUsL,CAAqBN,IAEnBtF,IAAmBkE,MAEzB,KAEE,GAAIqB,GAAaD,EAAU,CAEzB,IAAKG,GAAiC,KAAhBD,EAEpB,YADAtW,EAAYjD,GAAM4Z,KAAKT,GAASU,MAAMT,GAGpCG,IAAaF,EAAS/O,UAAYyH,EAAewH,IACrDnL,EAAiBkL,EAAWD,EAC9B,CACAF,EAAQI,IAETre,IACKqe,EAAYtd,OAAS,GACnBod,IACFA,EAAS/O,UAAYyH,EAAewH,EAAc,OAAS1Z,EAAE,uBACzDyZ,GAAWlL,EAAiBkL,EAAWD,IAE7CF,EAAQI,IAERH,EAAOle,IAGX4Y,GACAgF,EACA3W,IAGN,CAzGwB2X,CAAkBlB,EAAUC,EAAaC,EAAcC,IAEzEC,QAAkB/V,EAAY2V,GAC1BjE,IAAeA,KACfZ,IACFtI,EAAesI,GAAmBiF,EAAWH,EAAa9G,EAAgBgH,IAG9E,MAAMgB,EAAqB,CAAE5P,GAAI4O,EAASxB,KAAM,KAAMjM,QAAS0N,EAAW7N,UAAW0N,GACrFvS,GAAS+I,KAAK0K,GAEdxI,EAAazJ,GAAOlM,YAAa0K,IAC7ByN,IAAmBkE,KA1H3B,SAAyBjY,GACvB,IAAKyU,GAAY,OAEjB,MAAMvF,EAAUlP,EAAK/D,OAAS,IAAM+D,EAAKkF,UAAU,EAAG,KAAO,MAAQlF,EACrEyU,GAAWnL,YAAczJ,EAAE,oBAAsB,IAAMqP,CACzD,CAwHI8K,CAAgBhB,GAGZjF,IACFA,GAAkBtH,cAAc,IAAIC,YAAY,iBAAkB,CAAEuN,SAAS,KAI3EnB,GAiIR3X,eAAqC9E,EAAiB0d,GACpD,IACE,MAAMxL,QAAgBlJ,EAAgBhJ,EAASyX,IAC/C,GAAIvF,EAAQtS,OAAS,EAAG,CACtB,MAAMie,EAA0B3L,EAAQ1E,IAAIsQ,YAAK,MAAA,CAC/CC,WAAYD,EAAEC,YAAc,GAC5Bzd,MAAOwd,EAAExd,OAAS,GAClBsS,WAAYkL,EAAElL,YAAc,GAC5BK,mBAAYnL,EAAAgW,EAAE7K,0BAAc,EAC5BC,cAAO8K,EAAAF,EAAE5K,qBAAS,EAClBL,QAASiL,EAAEjL,SAAW,MAGxB,GADA6K,EAAMxL,QAAU2L,EACZnG,GAAmB,CACrB,MAAMuG,EAAYvG,GAAkB5K,cAAc,6BAC9CmR,GAAWhM,EAAcgM,EAA0BJ,EACzD,CACIpS,IAAQyJ,EAAazJ,GAAOlM,YAAa0K,GAC/C,CACF,CAAE,MAAOhE,GACP5H,EAAOO,KAAK,WAAYqH,EAC1B,CACF,CAvJsBiY,CAAsB3B,EAAUmB,EACpD,CAAE,MAAOzX,GACHqS,IAAeA,KAEnB,MAAM6F,EAASlY,aAAeC,EAAWD,EAAIjG,QAAUwD,EAAE,cACzD,GAAIkU,GAAmB,CACrB,MAAM0G,EAAcvR,SAASE,cAAc,OAC3CqR,EAAYrQ,UAAY,sBACxB,MAAMmB,EAASrC,SAASE,cAAc,OACtCmC,EAAOnB,UAAY,kBACnBmB,EAAOsC,MAAM6M,MAAQ,UACrBnP,EAAOjC,YAAc,KAAKkR,IAC1BC,EAAYhR,YAAY8B,GACxBwI,GAAkBtK,YAAYgR,EAChC,CACA/f,EAAOQ,MAAM,oBAAoB4M,GAAOlM,cAAe0G,EACzD,SACEsS,IAAY,EACZC,GAAkB,KAClBqD,GAAkB,QAClBvC,IACF,CACF,CA6JA,SAASgC,KACP,IAAK5D,GAAmB,OAExB,MAAM4G,EAAiB5G,GAAkB5K,cAAc,sBAC1C4K,GAAkB/G,iBAAiB,0BAC3CC,QAAQqD,GAAMA,EAAGlD,UAEtB,IAAK,MAAMxS,KAAO0L,GAChB,GAAiB,SAAb1L,EAAI2c,KACNtM,EAAiB8I,GAAmBnZ,EAAI0Q,QAAS1Q,EAAIuQ,eAChD,CACL,MAAMC,EAAUK,EAAesI,GAAmBnZ,EAAI0Q,QAAS1Q,EAAIuQ,UAAW4G,EAAgBnX,EAAIuP,IAC9FvP,EAAI2T,SAAW3T,EAAI2T,QAAQtS,OAAS,GAAGqS,EAAclD,EAASxQ,EAAI2T,SAClE3T,EAAIggB,UAAU9N,EAAiB1B,EAASxQ,EAAIggB,SAClD,CAGF9F,IAAe,EACf9D,EAAe+C,IACXI,IAAY7N,GAASrK,OAAS,IAAGkY,GAAStG,MAAMkI,QAAU,eAC9DC,KAEI2E,IAAmB5G,GAAkB8G,SAASF,IAChD5G,GAAkBtK,YAAYkR,EAElC,CAoGOxZ,eAAekX,GAAqBhS,GACzC,IAAKyB,KAAWiM,GAAmB,OAEnCrZ,EAAOC,KAAK,wBAAwB0L,KAGpC7F,EAAa6F,GACba,EAAiBY,GAAOlM,YAAakM,GAAO3E,OAAQkD,GAGhDgO,IACFA,GAAalH,UAAUE,IAAI,6BAI7B/G,GAAW,GACEyN,GAAkB/G,iBAAiB,0BAC3CC,QAAQqD,GAAMA,EAAGlD,UAGtB,IACE,MAAMpG,QAAeZ,EAA0BC,GAC3CW,EAAOV,SAASrK,OAAS,IAC3BqK,GAAWU,EAAOV,SAASuD,IAAKjP,IAAG,CACjCuP,GAAIT,IACJ6N,KAA0B,SAApB3c,EAAI4c,YAAyB,OAAS,KAC5ClM,QAAS1Q,EAAI0Q,QACbH,UAAW,IAAI9P,KAAKT,EAAI6c,YAAYC,aAGtCC,KACAjd,EAAOC,KAAK,QAAQ0L,OAAoBC,GAASrK,cAGjDsV,EAAazJ,GAAOlM,YAAa0K,IAErC,CAAE,MAAOhE,GACP5H,EAAOO,KAAK,2BAA2BoL,IAAkB/D,EAC3D,CAGI6R,IAAY7N,GAASrK,OAAS,IAChCkY,GAAStG,MAAMkI,QAAU,eAE3BC,IACF,CC1xBA,IAAIlO,GAAgC,KAChCgT,IAAgB,EAChBC,GAAiC,KACjCC,GAA+B,KAC/BjH,GAAwC,KACxCC,GAAsC,KACtCE,GAA8B,KAC9BC,GAA+B,KAC/BC,GAA2C,KAC3CC,GAAmC,KACnCK,GAA4C,KAC5CC,GAAqC,KACrCsG,GAAmC,KAGnCC,GAA+B,KAE/BC,GAAoD,KAEpDC,GAA8B,KAqIlC,SAASC,KACP,IAAKH,KAAaH,GAAY,OAC9B,MAAMO,EAAOP,GAAWQ,wBACY,iBAArBzT,cAAM,EAANA,GAAQuC,UAErB6Q,GAASrN,MAAM2N,KAAO,GAAGF,EAAKE,SAE9BN,GAASrN,MAAM4N,MAAWhO,OAAOiO,WAAaJ,EAAKG,MAA5B,KAEzBP,GAASrN,MAAM8N,OAAYlO,OAAOmO,YAAcN,EAAKO,IAAM,EAAnC,IAC1B,CAeA,SAASC,KACP,IAAKZ,GAAU,OACfA,GAAS/N,UAAUE,IAAI,sBACvB6N,GAASa,oBAAoB,QAASC,IACtC,MAAMC,EAAWf,GAAS/R,cAAc,sBACpC8S,GAAUA,EAASF,oBAAoB,QAASG,GACtD,CAEA,SAASF,GAAcjR,GAEhBA,EAAEoR,OAAuB3P,QAAQ,wBACtCsP,KACAxD,KACF,CAEA,SAAS4D,GAAcnR,GACrBA,EAAEqB,kBACF0P,IACF,CAEA,SAASM,KACHlB,KAAaA,GAAS/N,UAAU0N,SAAS,uBAC3CQ,IAEJ,CAsBA,MAAMgB,GAAY,2EA6BlB,SAASC,GAAUvR,GACH,WAAVA,EAAEjL,KAAoBkb,KAAaA,GAAS7N,UAAU0N,SAAS,uBACjEhe,KA7BJ,SAAmBkO,GACjB,IAAKiQ,IAAYA,GAAS7N,UAAU0N,SAAS,sBAAuB,OACpE,GAAc,QAAV9P,EAAEjL,IAAe,OAErB,MAAMyc,EAAa9W,MAAM+W,KAAKxB,GAAShO,iBAAiBqP,KACxD,GAA0B,IAAtBE,EAAWtgB,OAAc,OAE7B,MAAMwgB,EAAQF,EAAW,GACnBG,EAAOH,EAAWA,EAAWtgB,OAAS,GAExC8O,EAAE0K,SAEAvM,SAASyT,gBAAkBF,IAC7B1R,EAAEC,iBACF0R,EAAKE,SAIH1T,SAASyT,gBAAkBD,IAC7B3R,EAAEC,iBACFyR,EAAMG,QAGZ,CAQEC,CAAU9R,EACZ,CAkCA,SAASuN,KACF0C,KACLA,GAAS7N,UAAUC,OAAO,sBAC1B0O,KApFIV,IAASA,GAAQjO,UAAUE,IAAI,+BAsFnCzL,WAAW,KAAYoS,IAASA,GAAQ4I,SAAY,IACtD,CAEA,SAAS/f,KACFme,IACLA,GAAS7N,UAAUE,IAAI,qBACzB,CAEA,SAASyB,KACFkM,KACDA,GAAS7N,UAAU0N,SAAS,sBAC9BvC,KAEAzb,KAEJ,CAUA,MAAMigB,GAAiC,CACrCC,KA1SF,SAAcC,GACZ,GAAIlC,GAEF,YADApgB,EAAOO,KAAK,kCAKd,MAAMgiB,EChCF,SAAsBnF,qBAE1B,IAAKA,EAAIlc,aAA2C,iBAApBkc,EAAIlc,aAAuD,iBAApBkc,EAAIlc,aAC1C,iBAApBkc,EAAIlc,aAAuD,KAA3Bkc,EAAIlc,YAAYqF,OAE3D,OADAvG,EAAOQ,MAAM,yIACN,KAIT,IAAK4c,EAAIjc,eAA8C,iBAAtBic,EAAIjc,eAA2D,KAA7Bic,EAAIjc,cAAcoF,OAEnF,OADAvG,EAAOQ,MAAM,sHACN,KAIT,IACE,IAAIgiB,IAAIpF,EAAIjc,cACd,CAAE,MAAAshB,GAEA,OADAziB,EAAOQ,MAAM,8BAA8B4c,EAAIjc,oDACxC,IACT,CAGA,MAGMiM,EAAyB,CAC7BlM,YAJqB0E,OAAOwX,EAAIlc,aAAaqF,OAK7CpF,cAAeic,EAAIjc,cAAcwE,QAAQ,OAAQ,IACjD8C,OAAQ2U,EAAI3U,OACZ1G,WAAYqb,EAAIrb,WAChB8Y,2BAAoBpR,EAAA2T,EAAIvC,mCACxB5Y,MAAOmb,EAAInb,OAAS,UACpB6L,cAAO6R,EAAAvC,EAAItP,qBAAS,IACpB6B,SAA2B,gBAAjByN,EAAIzN,SAA6B,cAAgB,eAC3DpC,aAAc6P,EAAI7P,cAAgB,UAClCsC,aAAcuN,EAAIvN,cA5CQ,sTA6C1B6S,kBAAWC,EAAAvF,EAAIsF,0BACfE,uBAAgBC,EAAAzF,EAAIwF,+BACpBE,aAAc/X,MAAMC,QAAQoS,EAAI0F,cAC5B1F,EAAI0F,aAAa3T,IAAIsQ,GAAK7Z,OAAO6Z,GAAGlZ,QAAQmX,OAAOqF,SACnD,GACJC,MAAqB,SAAd5F,EAAI4F,MAAmB,OAAS,QACvCC,mBAAYC,EAAA9F,EAAI6F,2BAChBE,WAAuC,iBAAnB/F,EAAI+F,YAA2B/F,EAAI+F,WAAW5c,QAAW,GAC7EgY,kBAAW6E,EAAAhG,EAAImB,0BACf8E,OAAQjG,EAAIiG,QAAU,QACtBC,cAAOC,EAAAnG,EAAIkG,sBACXvd,OAAQ,IAIV,OADA/F,EAAOC,KAAK,+BAA+BmN,EAAOlM,kCAAkCkM,EAAO3E,QAAU,yBAAyB2E,EAAOjM,iBAC9HiM,CACT,CDrBiBoW,CAAYlB,GAC3B,IAAKC,EAAQ,OT1CT,IAAmBkB,ES2CvBrW,GAASmV,ERuGL,SAAoBc,GACxB,GAAIrhB,EAAaqhB,GACfne,EAAgBme,MACX,CAEL,MAAMviB,EAASuiB,EAAOjZ,MAAM,KAAK,GAC3BsZ,EAAUje,OAAOke,KAAK3hB,GAAc4hB,KAAKre,GAAKA,EAAEa,WAAWtF,IAC7D4iB,IACFxe,EAAgBwe,EAGpB,CACF,CQhHEG,CAAUzW,GAAOiW,QT9CMI,ESiDdrW,GAAOkW,MThDhBxjB,EAAe2jB,EEMX,SAAuBrW,GAC3BvH,EAAgBuH,CAClB,CO2CE0W,CAAa1W,IAGbmB,EAAanB,IAGbiT,GAAa/Q,EAAelC,GAAQgH,IACpC5F,SAAS9E,KAAKqF,YAAYsR,IAG1BK,GAAUL,GAAW5R,cAAc,wBAGnC,MAAMgM,EJjBF,SAA2BrN,GAiB/B,MAAMkT,EAAW9R,SAASE,cAAc,OACxC4R,EAAS7Q,GAAK,aACd6Q,EAAS5Q,UAAY,mCAAuD,gBAApBtC,EAAOuC,SAA6B,OAAS,6BAA8C,SAAjBvC,EAAO4V,MAAmB,YAAc,KAC1K1C,EAAS3R,aAAa,OAAQ,UAC9B2R,EAAS3R,aAAa,aAAcvB,EAAOnL,OAC3Cqe,EAAS3R,aAAa,aAAc,SAGpC,MAAMqF,EAASxF,SAASE,cAAc,OACtCsF,EAAOtE,UAAY,aAEnB,MAAMqU,EAAavV,SAASE,cAAc,OAC1CqV,EAAWrU,UAAY,mBAEvB,MAAMsU,EAAexV,SAASE,cAAc,OAC5CsV,EAAatU,UAAY,qBACzBsU,EAAapU,UAAYP,EAEzB,MAAM4U,EAAazV,SAASE,cAAc,OAC1CuV,EAAWvU,UAAY,mBAEvB,MAAMwU,EAAU1V,SAASE,cAAc,QACvCwV,EAAQxU,UAAY,oBACpBwU,EAAQtV,YAAcxB,EAAOnL,MAE7B,MAAMkiB,EAAW3V,SAASE,cAAc,QACxCyV,EAASzU,UAAY,qBACrByU,EAASvU,UAAY,iCAAiCzK,EAAE,mBAExD8e,EAAWlV,YAAYmV,GACvBD,EAAWlV,YAAYoV,GACvBJ,EAAWhV,YAAYiV,GACvBD,EAAWhV,YAAYkV,GAEvB,MAAMG,EAAU5V,SAASE,cAAc,OACvC0V,EAAQ1U,UAAY,sBAGpB,MAAM2U,EAAa7V,SAASE,cAAc,UAC1C2V,EAAW3U,UAAY,kBACvB2U,EAAW1V,aAAa,QAASxJ,EAAE,kBACnCkf,EAAWzU,UAAY,mQAGvB,MAAM0U,EAAc9V,SAASE,cAAc,UAC3C4V,EAAY5U,UAAY,4CACxB4U,EAAY3V,aAAa,QAASxJ,EAAE,aACpCmf,EAAY1U,UAAY,oOACxB0U,EAAYjd,iBAAiB,QAAS,KACpCiZ,EAAS7N,UAAUE,IAAI,wBAIzB,MAAM4O,EAAW/S,SAASE,cAAc,UACxC6S,EAAS7R,UAAY,yCACrB6R,EAAS5S,aAAa,QAASxJ,EAAE,UACjCoc,EAAS3R,UAAY,wQACrB2R,EAASla,iBAAiB,QAAS,KACjCiZ,EAAS7N,UAAUE,IAAI,wBAGzByR,EAAQrV,YAAYsV,GACpBD,EAAQrV,YAAYuV,GACpBF,EAAQrV,YAAYwS,GACpBvN,EAAOjF,YAAYgV,GACnB/P,EAAOjF,YAAYqV,GAGnB,MAAM/K,EAAoB7K,SAASE,cAAc,OACjD2K,EAAkB5J,GAAK,eACvB4J,EAAkB3J,UAAY,eAG9B,MAAMkK,EAAYpL,SAASE,cAAc,OASzC,GARAkL,EAAUlK,UAAY,cACtBkK,EAAUhK,UAAY,0CACeP,gDACDlK,EAAE,8DACHA,EAAE,4BAIjCiI,EAAO0V,aAAavhB,OAAS,EAAG,CAClC,MAAMgjB,EAAQ/V,SAASE,cAAc,OACrC6V,EAAM7U,UAAY,oBAClB,IAAK,MAAM8U,KAASpX,EAAO0V,aAAc,CACvC,MAAM2B,EAAOjW,SAASE,cAAc,UACpC+V,EAAKrc,KAAO,SACZqc,EAAK/U,UAAY,kBACjB+U,EAAK7V,YAAc4V,EACnBC,EAAKpd,iBAAiB,QAAS,KAC7BiZ,EAASvO,cAAc,IAAIC,YAAY,iBAAkB,CAAEC,OAAQ,CAAE3M,KAAMkf,QAE7ED,EAAMxV,YAAY0V,EACpB,CACA7K,EAAU7K,YAAYwV,EACxB,CAEAlL,EAAkBtK,YAAY6K,GAI9B,MAAMC,EAAYrL,SAASE,cAAc,UACzCmL,EAAUzR,KAAO,SACjByR,EAAUnK,UAAY,gCACtBmK,EAAUjK,UAAY,6RAEZzK,EAAE,4BAEZmb,EAASvR,YAAY8K,GAGrB,MAAMF,EAAenL,SAASE,cAAc,OAC5CiL,EAAajK,UAAY,8CACzBiK,EAAa/J,UAAY,+FAEoBzK,EAAE,yXAGvCA,EAAE,4LAIsFA,EAAE,+GAIlGkU,EAAkBtK,YAAY4K,GAG9B,MAAM+K,EAAU/K,EAAalL,cAAc,qBACvCiW,GACFA,EAAQrd,iBAAiB,QAAS,KAChCsS,EAAalH,UAAUE,IAAI,+BAK/B0R,EAAWhd,iBAAiB,QAAUgJ,IACpCA,EAAEqB,kBACF,MAAMiT,EAAWhL,EAAalH,UAAU0N,SAAS,6BACjDxG,EAAalH,UAAU2B,OAAO,6BAC1BuQ,GAEFrE,EAASvO,cAAc,IAAIC,YAAY,sBAK3C,IAAI0H,EAA2C,KAC/C,GAAItM,EAAOyN,mBAAoB,CAC7B,MAAM+J,EAAcpW,SAASE,cAAc,OAC3CkW,EAAYlV,UAAY,mBAExB,MAAMmV,EAAgBrW,SAASE,cAAc,QAC7CmW,EAAcnV,UAAY,0BAC1BmV,EAAcjW,YAAc,KAE5B8K,EAAiBlL,SAASE,cAAc,UACxCgL,EAAejK,GAAK,sBACpBiK,EAAehK,UAAY,sBAC3BgK,EAAe9J,UAAY,oBAAoBzK,EAAE,2BAGjDuU,EAAerS,iBAAiB,SAAU,KACxC,MAAMyd,EAAapL,EAAgBpT,MACnCga,EAASvO,cAAc,IAAIC,YAAY,qBAAsB,CAC3DC,OAAQ,CAAElQ,WAAY+iB,EAAaC,OAAOD,QAAcxkB,QAI5DskB,EAAY7V,YAAY8V,GACxBD,EAAY7V,YAAY2K,GAGxB4G,EAASvR,YAAYiF,GACrBsM,EAASvR,YAAYsK,GACrBiH,EAASvR,YAAY6V,EACvB,MACEtE,EAASvR,YAAYiF,GACrBsM,EAASvR,YAAYsK,GAIvB,MAAM2L,EAAYxW,SAASE,cAAc,OACzCsW,EAAUtV,UAAY,iBAEtB,MAAM6J,EAAY/K,SAASE,cAAc,OACzC6K,EAAU7J,UAAY,iBAEtB,MAAM4J,EAAU9K,SAASE,cAAc,YACvC4K,EAAQ7J,GAAK,YACb6J,EAAQ5J,UAAY,YACpB4J,EAAQ3K,aAAa,cAAexJ,EAAE,gBACtCmU,EAAQ3K,aAAa,OAAQ,KAC7B2K,EAAQ3K,aAAa,YAAa,IAElC,MAAM6K,EAAUhL,SAASE,cAAc,UACvC8K,EAAQ/J,GAAK,eACb+J,EAAQ9J,UAAY,eACpB8J,EAAQ7K,aAAa,QAASxJ,EAAE,SAChCqU,EAAQ7K,aAAa,WAAY,QACjC6K,EAAQ5J,UAAY,iRAEpB2J,EAAUxK,YAAYuK,GACtBC,EAAUxK,YAAYyK,GACtBwL,EAAUjW,YAAYwK,GACtB+G,EAASvR,YAAYiW,GAGrB,IAAIvL,EAA+B,KAC/BrM,EAAOsV,YACTjJ,EAAWjL,SAASE,cAAc,UAClC+K,EAAS/J,UAAY,gBACrB+J,EAAS7K,YAAczJ,EAAE,SACzBsU,EAAStG,MAAMkI,QAAU,OAEzBiF,EAASpL,aAAauE,EAAUuL,IAIlC,IAAIC,EAAgC,KA8BpC,MAAMlL,EAAavL,SAASE,cAAc,OAC1CqL,EAAWrK,UAAY,cACvBqK,EAAWpL,aAAa,YAAa,UACrCoL,EAAWpL,aAAa,cAAe,QACvC2R,EAASvR,YAAYgL,GAGrB,MAAMD,EAAcH,EAAalL,cAAc,uBAGzC+R,EAAWhS,SAASE,cAAc,OAQxC,OAPA8R,EAAS9Q,UAAY,0BAA8C,gBAApBtC,EAAOuC,SAA6B,OAAS,6BAC5F6Q,EAAS7R,aAAa,OAAQ,UAC9B6R,EAAS5Q,UAAY,uDAC6BzK,EAAE,uDAC1CiI,EAAO+V,YAAche,EAAE,4BAG1B,CACL4N,OAAQuN,EACRjH,oBACAC,UACAE,UACAC,WACAC,iBACAC,eACAC,YACAC,YACA2G,WACA1G,cACAC,aACAY,YA3DF,WACE,GAAIsK,EAEF,OADAA,EAAU9R,MAAMkI,QAAU,OACnB4J,EAET,MAAMrP,EAAKpH,SAASE,cAAc,OAYlC,OAXAkH,EAAGlG,UAAY,cACfkG,EAAGhG,UAAY,4CACsBP,iNAOrCgK,EAAkBtK,YAAY6G,GAC9BqP,EAAYrP,EACLA,CACT,EA0CEgF,YAxCF,WACMqK,GAAaA,EAAUhQ,aACzBgQ,EAAUhQ,WAAW1B,YAAY0R,GACjCA,EAAY,KAEhB,EAqCF,CI7RcC,CAAiB9X,IAC7BkT,GAAW7F,EAAI1H,OACfsG,GAAoBoB,EAAIpB,kBACxBC,GAAUmB,EAAInB,QACdE,GAAUiB,EAAIjB,QACdC,GAAWgB,EAAIhB,SACfC,GAAiBe,EAAIf,eACrBC,GAAec,EAAId,aACnBK,GAAgBS,EAAIE,YACpBV,GAAgBQ,EAAIG,YACpBpM,SAAS9E,KAAKqF,YAAYuR,IAG1BE,GAAW/F,EAAI+F,SACfhS,SAAS9E,KAAKqF,YAAYyR,IAC1BG,KAGA,MAAMwE,EAAW7E,GAAS7R,cAAc,eACpC0W,IACF5E,GJ8QE,SAAqB4E,EAAuB7E,GAChD,IAAI8E,GAAW,EACXC,EAAS,EACTC,EAAS,EACTC,EAAU,EACVC,EAAU,EAEd,MAAMC,EAAepV,IAGnB,GADeA,EAAEoR,OACN3P,QAAQ,UAAW,OAC9BsT,GAAW,EACXC,EAAShV,EAAEqV,QACXJ,EAASjV,EAAEsV,QACX,MAAM/E,EAAON,EAASO,wBACtB0E,EAAUF,EAASzE,EAAKE,KACxB0E,EAAUF,EAAS1E,EAAKO,IACxB3S,SAASnH,iBAAiB,YAAaue,GACvCpX,SAASnH,iBAAiB,UAAWwe,IAGjCD,EAAevV,IACnB,IAAK+U,EAAU,OACf,MAAMU,EAAIzV,EAAEqV,QAAUH,EAChBQ,EAAI1V,EAAEsV,QAAUH,EAEhBQ,EAAOjT,OAAOiO,WAAaV,EAAS2F,YACpCC,EAAOnT,OAAOmO,YAAcZ,EAAS6F,aAC3C7F,EAASnN,MAAM4N,MAAQ,OACvBT,EAASnN,MAAM8N,OAAS,OACxBX,EAASnN,MAAM2N,KAAO,GAAGhU,KAAKmB,IAAI,EAAGnB,KAAKoB,IAAI4X,EAAGE,QACjD1F,EAASnN,MAAMgO,IAAM,GAAGrU,KAAKmB,IAAI,EAAGnB,KAAKoB,IAAI6X,EAAGG,SAG5CL,EAAY,KAChBT,GAAW,EACX5W,SAAS6S,oBAAoB,YAAauE,GAC1CpX,SAAS6S,oBAAoB,UAAWwE,IAM1C,OAHAV,EAAS9d,iBAAiB,YAAaoe,GAGhC,KACLN,EAAS9D,oBAAoB,YAAaoE,GAC1CjX,SAAS6S,oBAAoB,YAAauE,GAC1CpX,SAAS6S,oBAAoB,UAAWwE,GAE5C,CI9TkBO,CAAWjB,EAAU7E,KAIrC/F,GAASnN,GAAQ,CACfiM,qBACAC,WACAE,WACAC,YACAC,kBACAC,gBACAC,UAAWa,EAAIb,UACfC,UAAWY,EAAIZ,UACfC,YAAaW,EAAIX,YACjBC,WAAYU,EAAIV,WAChBY,YAAaX,GACbY,YAAaX,KAIfqG,GAASjZ,iBAAiB,qBAAwBgJ,ID4kB9C,IAAsBtO,IC3kBZsO,EAAE4B,OAAOlQ,WD4kBvBqX,GAAoBrX,EACpBoH,QAAwB7I,IAAfyB,EACT/B,EAAO8B,wBAAwBC,QAAAA,EAAc,KC7kB5C,GAGDue,GAASjZ,iBAAiB,kBAAmB,MDglBxCZ,iBACL,IAAKkT,KAAiBvM,GAAQ,OAE9B,MAAMgI,EAASuE,GAAalL,cAAc,qBAC1C,GAAK2G,EAAL,CAEAA,EAAOxF,UAAY,uDAEnB,IACE,MAAMtD,QAAerB,EAAsB,EAAG,GAAImC,GAAO3E,OAAQ2E,GAAOlM,aACxEmZ,GAAe/N,EAAOf,KAAK4D,IAAIF,IAAC,CAC9BQ,GAAIR,EAAEtD,gBAAkB,GACxB5F,OAAQkJ,EAAEtD,gBAAkB,GAC5Bc,aAAcwC,EAAExC,aAChBwJ,gBAAiBhH,EAAEgH,gBACnBF,mBAAoB9G,EAAE8G,mBACtBG,UAAWjH,EAAEoX,kBAAoBpX,EAAEiH,aAIrCoE,GAAoB,GAChBR,KAAaA,GAAYxT,MAAQ,IAErC6O,EACEC,EACAiF,GACC1O,IAA6BgS,GAAqBhS,IAClD8D,IAAiBsD,OAAO6K,KAAK7R,EAAyB0D,GAAK,WAC5DhJ,MAAOgJ,IACA2L,QAAQjW,EAAE,kCACE0G,EAAmB4D,KAE9BA,IAAOzJ,MACT4F,GAAW,GACPyN,IACFA,GAAkB/G,iBAAiB,0BAA0BC,QAAQqD,GAAMA,EAAGlD,UAE5E+G,KAAUA,GAAStG,MAAMkI,QAAU,QACvCC,MAGFjB,GAAeA,GAAaqD,OAAOG,IAAOA,EAAG9X,QAAU8X,EAAGpO,MAAQA,GAClEsM,OAGJ/V,IAEJ,CAAE,MAAO4B,GACP5H,EAAOQ,MAAM2E,EAAE,sBAAuByC,GACtCwN,EAAOxF,UAAY,gGAAgGzK,EAAE,mCACvH,CA9Ca,CA+Cf,CCloBImhB,KAIFhG,GAASjZ,iBAAiB,iBAAoBgJ,ID2a1C,IAAyB/K,IC1aZ+K,EAAE4B,OAAO3M,MD2arBgU,IAAWY,GAAkBsE,QAAQC,WAC1CnF,GAAQhT,MAAQhB,EAChB2V,KACOH,KC7aN,GAGDwF,GAASjZ,iBAAiB,YAAegJ,KDibpC5J,eAAgCwK,GACrC,IAAK7D,KAAWiM,IAAqBa,GAAW,OAEhD,MAAMqM,EAAU3a,GAAS4a,UAAUC,GAAKA,EAAEhX,KAAOwB,GAAoB,OAAXwV,EAAE5J,MAC5D,GAAI0J,EAAU,EAAG,OAGjB,IAAIrI,EAAW,GACf,IAAK,IAAI7F,EAAIkO,EAAU,EAAGlO,GAAK,EAAGA,IAChC,GAAyB,SAArBzM,GAASyM,GAAGwE,KAAiB,CAAEqB,EAAWtS,GAASyM,GAAGzH,QAAS,KAAO,CAE5E,IAAKsN,EAAU,OAGf,MAAMwI,EAAU9a,GAAS+a,OAAOJ,GAC1BK,EAAa,IAAIC,IAAIH,EAAQvX,IAAIsX,GAAKA,EAAEhX,KAChC4J,GAAkB/G,iBAAiB,YAC3CC,QAAQ+J,IACZ,MAAM7M,EAAM6M,EAAqBpL,QAAQC,SAErC1B,GAAMmX,EAAWE,IAAIrX,IAAK6M,EAAK5J,WAGrCmE,EAAazJ,GAAOlM,YAAa0K,IACjC0P,WAGM2C,GAAeC,EACvB,CC5cI6I,CAAiB1W,EAAE4B,OAAOhB,MAC3B,GAGDqP,GAASjZ,iBAAiB,eAAkBgJ,KDmNxC,SAAyBY,EAAe3K,GAC5C,IAAK+S,GAAmB,OAExB,MAAMnZ,EAAM0L,GAASgY,KAAK6C,GAAKA,EAAEhX,KAAOwB,GAAoB,OAAXwV,EAAE5J,MACnD,IAAK3c,EAAK,OAGV,MAAM8mB,EAAW9mB,EAAIggB,WAAa5Z,OAAQhG,EAAYgG,EACtDpG,EAAIggB,SAAW8G,EAGf,MAAMtW,EAAU2I,GAAkB5K,cAAc,qBAAqBwC,OACjEP,GAAS0B,EAAiB1B,EAASsW,GAGnC5Z,IAAQyJ,EAAazJ,GAAOlM,YAAa0K,IAE7C5L,EAAOC,KAAK,cAAcgR,WAAe+V,GAAY,YACvD,CCpOIC,CAAe5W,EAAE4B,OAAOhB,MAAOZ,EAAE4B,OAAO3L,MACzC,GAGDga,GAASjZ,iBAAiB,iBAAkB,KA+FxCiZ,IAAYA,GAAS7N,UAAU0N,SAAS,uBATxCO,IAASA,GAAQjO,UAAUC,OAAO,iCAjFtClE,SAASnH,iBAAiB,UAAWua,IAGrC7O,OAAO1L,iBAAiB,SAAUqa,IAElCtB,IAAgB,EAChBpgB,EAAOiB,cAAcmM,GAAOlM,YAAakM,GAAOjM,eAG5CiM,GAAO6V,aACTxC,GAAcvZ,WAAW,KAEnBoZ,IAAYA,GAAS7N,UAAU0N,SAAS,uBA2BlD,WACE,IAAKK,GAAU,OACfG,KACAH,GAAS/N,UAAUC,OAAO,sBAE1B8N,GAASnZ,iBAAiB,QAASia,IAEnC,MAAMC,EAAWf,GAAS/R,cAAc,sBACpC8S,GACFA,EAASla,iBAAiB,QAASma,GAEvC,CArCQyB,IAED,OAILrG,KAAkBuC,MAAMvX,IACtB5H,EAAOO,KAAK,yBAA0BqH,IAE1C,EAgLEsf,QA/DF,WACE,IAAK9G,GAAe,OAEhBK,KAAevY,aAAauY,IAAcA,GAAc,MAC5DW,KACIZ,IAAYA,GAASvL,aAAcuL,GAASvL,WAAW1B,YAAYiN,IAAWA,GAAW,MAEzFH,IAAcA,GAAWpL,aAAcoL,GAAWpL,WAAW1B,YAAY8M,IAAaA,GAAa,MACnGC,IAAYA,GAASrL,aAAcqL,GAASrL,WAAW1B,YAAY+M,IAAWA,GAAW,MACzFC,KAAeA,KAAeA,GAAc,MNo7B5CrT,GAAgBA,EAAa+H,aAC/B/H,EAAa+H,WAAW1B,YAAYrG,GACpCA,EAAe,MAEjBsB,SAAS8D,iBAAiB,uBAAuBC,QAASqD,GAAOA,EAAGlD,UMr7BpElE,SAAS6S,oBAAoB,UAAWO,IACxC7O,OAAOsO,oBAAoB,SAAUK,IAErC,MAAMyF,EAAiB/Z,cAAM,EAANA,GAAQlM,YAC/BkM,GAAS,KACTgT,IAAgB,EAChB/G,GAAoB,KACpBC,GAAU,KACVE,GAAU,KACVC,GAAW,KACXC,GAAiB,KACjBC,GAAe,KACfK,GAAgB,KAChBC,GAAgB,KAChByG,GAAU,KAEV1gB,EAAOqB,iBAAiB8lB,GAAkB,GAC5C,EAmCEvJ,QACAzb,SACAiS,UACAgT,aAdF,WACOha,KACDqM,GAAYA,GAAS4N,QAChBjM,QAAQ,gBAAkBlE,EAAc9J,GAAOlM,aAC1D,SAasB,oBAAX6R,SACRA,OAA8CqP,WAAaA"} \ No newline at end of file diff --git a/client/src/api.ts b/client/src/api.ts index 1136913..d4538e4 100644 --- a/client/src/api.ts +++ b/client/src/api.ts @@ -121,15 +121,25 @@ function buildRagSourcesUrl(message: string, categoryId?: number): string { // ==================== HTTP 基础封装 ==================== -/** 带超时的 fetch 封装 */ +/** 带超时的 fetch 封装,支持外部 AbortSignal(用于流式主动中断) */ async function safeFetch( url: string, options: RequestInit = {}, - timeout: number = REQUEST_TIMEOUT + timeout: number = REQUEST_TIMEOUT, + externalSignal?: AbortSignal ): Promise { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), timeout); + // 外部信号触发时同步中断内部请求 + if (externalSignal) { + if (externalSignal.aborted) { + controller.abort(); + } else { + externalSignal.addEventListener('abort', () => controller.abort(), { once: true }); + } + } + try { const response = await fetch(url, { ...options, @@ -139,6 +149,10 @@ async function safeFetch( }); return response; } catch (err: unknown) { + // 用户主动中断(停止生成),不算错误 + if (externalSignal?.aborted) { + throw new CskError('aborted', 'aborted'); + } if (err instanceof DOMException && err.name === 'AbortError') { throw new CskError(t('error_timeout'), 'timeout'); } @@ -213,7 +227,8 @@ export async function chatSSERequest( onDone: () => void, onError: (error: CskError) => void, categoryId?: number, - useRag?: boolean + useRag?: boolean, + signal?: AbortSignal ): Promise { const url = useRag ? buildChatRAGSSEUrl(message, categoryId) @@ -223,7 +238,7 @@ export async function chatSSERequest( logger.lifecycleSend(currentConfig!.integrateId, message.length); try { - const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2); + const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2, signal); if (!response.ok) { const errorMsg = getHttpErrorMessage(response.status); @@ -277,7 +292,10 @@ export async function chatSSERequest( } } } catch (readErr: unknown) { - if (totalText.length > 0) { + // 用户主动中断:视为正常结束,保留已生成内容 + if (signal?.aborted) { + logger.info(`流式被用户中断,保留已生成内容 length=${totalText.length}`); + } else if (totalText.length > 0) { onChunk('\n\n' + t('stream_unstable')); } else { throw readErr; @@ -289,6 +307,11 @@ export async function chatSSERequest( logger.lifecycleStreamDone(currentConfig!.integrateId, totalText.length); onDone(); } catch (err) { + // 用户主动中断不触发 onError,走 onDone + if (signal?.aborted || (err instanceof CskError && err.type === 'aborted')) { + onDone(); + return; + } if (err instanceof CskError) { onError(err); } else { diff --git a/client/src/chat.ts b/client/src/chat.ts index a8fdcda..a2e17c2 100644 --- a/client/src/chat.ts +++ b/client/src/chat.ts @@ -29,6 +29,9 @@ import { scrollToBottom, renderSources, renderHistoryList, + appendStreamingCaret, + finalizeAIBubble, + updateFeedbackUI, HistoryItemData, } from './dom'; import { saveMessages, loadMessages, clearMessages } from './storage'; @@ -47,10 +50,23 @@ let clearBtn: HTMLElement | null = null; let categorySelect: HTMLSelectElement | null = null; let historyPanel: HTMLElement | null = null; let welcomeEl: HTMLElement | null = null; +let newMsgBtn: HTMLElement | null = null; +let searchInput: HTMLInputElement | null = null; +let ariaLiveEl: HTMLElement | null = null; let showLoadingFn: (() => HTMLElement) | null = null; let hideLoadingFn: (() => void) | null = null; let isSending = false; +/** 当前流式请求的中断控制器(用于"停止生成") */ +let abortController: AbortController | null = null; +/** 用户是否停留在底部附近(用于智能滚动 + 新消息提示) */ +let isNearBottom = true; + +/** 缓存的历史会话列表(供搜索过滤用) */ +let historyItems: HistoryItemData[] = []; +/** 当前历史搜索关键字 */ +let historySearchText = ''; + /** 当前选中的知识库分类 ID */ let currentCategoryId: number | undefined; @@ -70,6 +86,9 @@ export function initChat( categorySelect: HTMLSelectElement | null; historyPanel: HTMLElement; welcomeEl: HTMLElement; + newMsgBtn: HTMLElement; + searchInput: HTMLInputElement | null; + ariaLiveEl: HTMLElement; showLoading: () => HTMLElement; hideLoading: () => void; } @@ -83,6 +102,9 @@ export function initChat( categorySelect = dom.categorySelect; historyPanel = dom.historyPanel; welcomeEl = dom.welcomeEl; + newMsgBtn = dom.newMsgBtn; + searchInput = dom.searchInput; + ariaLiveEl = dom.ariaLiveEl; showLoadingFn = dom.showLoading; hideLoadingFn = dom.hideLoading; @@ -93,6 +115,12 @@ export function initChat( // 绑定发送事件 bindSendEvents(); + // 绑定滚动监听(智能滚动 + 新消息提示) + bindScrollEvents(); + + // 绑定历史搜索过滤 + bindHistorySearch(); + // 加载知识库分类下拉框 if (cfg.showCategorySwitch && categorySelect) { loadCategories(); @@ -158,10 +186,18 @@ async function loadHistoryFromBackend(): Promise { function bindSendEvents(): void { if (!inputEl || !sendBtn) return; - sendBtn.addEventListener('click', () => handleSend()); + // 发送按钮:发送态点击发送,停止态点击中断流式 + sendBtn.addEventListener('click', () => { + if (isSending && abortController) { + abortController.abort(); + return; + } + handleSend(); + }); inputEl.addEventListener('keydown', (e: KeyboardEvent) => { - if (e.key === 'Enter' && !e.shiftKey) { + // IME 组合输入期间(中文/日文输入法选词回车)不触发发送 + if (e.key === 'Enter' && !e.shiftKey && !e.isComposing) { e.preventDefault(); handleSend(); } @@ -185,7 +221,149 @@ function bindSendEvents(): void { } } -/** 文本框自动撑高 */ +/** 绑定滚动监听:判断是否在底部,控制新消息提示按钮 */ +function bindScrollEvents(): void { + if (!messagesContainer) return; + messagesContainer.addEventListener('scroll', () => { + if (!messagesContainer) return; + const { scrollTop, scrollHeight, clientHeight } = messagesContainer; + // 距底部 80px 内视为"在底部" + isNearBottom = scrollHeight - scrollTop - clientHeight < 80; + if (isNearBottom) hideNewMsgBtn(); + }); + // 新消息提示按钮点击 → 回到底部 + if (newMsgBtn) { + newMsgBtn.addEventListener('click', () => { + if (messagesContainer) scrollToBottom(messagesContainer); + isNearBottom = true; + hideNewMsgBtn(); + }); + } +} + +/** 显示新消息提示按钮 */ +function showNewMsgBtn(): void { + if (newMsgBtn) newMsgBtn.classList.remove('csk-newmsg--hidden'); +} + +/** 隐藏新消息提示按钮 */ +function hideNewMsgBtn(): void { + if (newMsgBtn) newMsgBtn.classList.add('csk-newmsg--hidden'); +} + +/** 智能滚动到底部:用户在底部时自动滚,上滑时显示新消息提示 */ +function smartScrollToBottom(): void { + if (!messagesContainer) return; + if (isNearBottom) { + scrollToBottom(messagesContainer); + } else { + showNewMsgBtn(); + } +} + +/** 切换发送按钮模式:发送 / 停止生成 */ +function setSendButtonMode(mode: 'send' | 'stop'): void { + if (!sendBtn) return; + if (mode === 'stop') { + sendBtn.classList.add('csk-send-btn--stop'); + sendBtn.removeAttribute('disabled'); + sendBtn.setAttribute('title', t('stop')); + sendBtn.setAttribute('aria-label', t('stop')); + sendBtn.innerHTML = ``; + } else { + sendBtn.classList.remove('csk-send-btn--stop'); + sendBtn.setAttribute('title', t('send')); + sendBtn.setAttribute('aria-label', t('send')); + sendBtn.innerHTML = ``; + updateSendBtnState(); + } +} + +// ==================== 历史会话搜索过滤 ==================== + +/** 绑定历史搜索输入事件 */ +function bindHistorySearch(): void { + if (!searchInput) return; + searchInput.addEventListener('input', () => { + historySearchText = searchInput!.value.trim().toLowerCase(); + renderFilteredHistory(); + }); +} + +/** 按搜索关键字过滤并重新渲染历史列表 */ +function renderFilteredHistory(): void { + const listEl = historyPanel?.querySelector('#csk-history-list') as HTMLElement | null; + if (!listEl || !config) return; + + const filtered = historySearchText + ? historyItems.filter(item => { + const preview = (item.lastMessagePreview || item.chatId || item.id || '').toLowerCase(); + return preview.includes(historySearchText); + }) + : historyItems; + + renderHistoryList( + listEl, + filtered, + (conversationId: string) => { switchToConversation(conversationId); }, + (id: string) => { window.open(getConversationExportUrl(id), '_blank'); }, + async (id: string) => { + if (!confirm(t('history_delete_confirm'))) return; + const ok = await deleteConversation(id); + if (ok) { + if (id === getChatId()) { + messages = []; + if (messagesContainer) { + messagesContainer.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); + } + if (clearBtn) clearBtn.style.display = 'none'; + updateEmptyState(); + } + // 从缓存中移除并重新渲染 + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); + } + }, + getChatId() + ); +} + +// ==================== a11y 消息播报 ==================== + +/** 通过 aria-live 区域播报新消息(供屏幕阅读器使用) */ +function announceMessage(text: string): void { + if (!ariaLiveEl) return; + // 截取前 120 字符,避免过长播报 + const snippet = text.length > 120 ? text.substring(0, 120) + '...' : text; + ariaLiveEl.textContent = t('new_msg_announce') + ':' + snippet; +} + +// ==================== 消息反馈(👍 / 👎) ==================== + +/** + * 处理消息反馈:切换 AI 消息的点赞/点踩状态 + * 当前仅前端状态持久化(存入 messages 数组 + localStorage), + * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + */ +export function handleFeedback(msgId: string, value: 'up' | 'down'): void { + if (!messagesContainer) return; + + const msg = messages.find(m => m.id === msgId && m.role === 'ai'); + if (!msg) return; + + // 切换逻辑:同值取消,异值切换 + const newValue = msg.feedback === value ? undefined : value; + msg.feedback = newValue; + + // 更新 DOM 状态 + const wrapper = messagesContainer.querySelector(`[data-csk-msg-id="${msgId}"]`) as HTMLElement; + if (wrapper) updateFeedbackUI(wrapper, newValue); + + // 持久化(localStorage) + if (config) saveMessages(config.integrateId, messages); + + logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); +} function autoResizeInput(): void { if (!inputEl) return; inputEl.style.height = 'auto'; @@ -222,53 +400,71 @@ async function handleSend(): Promise { updateSendBtnState(); inputEl.style.height = 'auto'; - isSending = true; - updateSendBtnState(); - - // 确保 chatId 已初始化 - if (!config.chatId) { - await initChatId(); - } - // 1. 渲染用户气泡 const userTimestamp = now(); - if (messagesContainer) renderUserBubble(messagesContainer, text, userTimestamp); const userMsg: ChatMessage = { id: uuid(), role: 'user', content: text, timestamp: userTimestamp }; + if (messagesContainer) renderUserBubble(messagesContainer, text, userTimestamp); messages.push(userMsg); updateEmptyState(); if (clearBtn && messages.length > 0) clearBtn.style.display = 'inline-flex'; - if (messagesContainer) scrollToBottom(messagesContainer); + if (messagesContainer) smartScrollToBottom(); + + // 2. 生成 AI 回复 + await produceAIReply(text); +} - // 2. 显示 loading +/** + * 生成 AI 回复(发送请求 + 渲染气泡 + 持久化) + * 复用于:正常发送、重试。调用方负责先渲染用户气泡。 + */ +async function produceAIReply(userText: string): Promise { + if (!config || !messagesContainer) return; + + isSending = true; + setSendButtonMode('stop'); + + // 确保 chatId 已初始化 + if (!config.chatId) { + await initChatId(); + } + + const aiTimestamp = now(); + const shouldUseRag = useRag && (currentCategoryId !== undefined || config.categoryId !== undefined); + + // 显示 loading if (showLoadingFn) showLoadingFn(); - if (messagesContainer) scrollToBottom(messagesContainer); + if (messagesContainer) smartScrollToBottom(); - // 3. 发送请求 - try { - let aiContent: string; - const aiTimestamp = now(); - const shouldUseRag = useRag && (currentCategoryId !== undefined || config.categoryId !== undefined); + const aiMsgId = uuid(); + let aiContent = ''; + try { if (config.streaming) { - aiContent = await sendStreamMessage(text, aiTimestamp, shouldUseRag); + aiContent = await sendStreamMessage(userText, aiTimestamp, shouldUseRag, aiMsgId); } else { - aiContent = await chatRequest(text); - } - - if (hideLoadingFn) hideLoadingFn(); - - if (!config.streaming && messagesContainer) { - renderAIBubble(messagesContainer, aiContent, aiTimestamp, renderMarkdown); + aiContent = await chatRequest(userText); + if (hideLoadingFn) hideLoadingFn(); + if (messagesContainer) { + renderAIBubble(messagesContainer, aiContent, aiTimestamp, renderMarkdown, aiMsgId); + } } - const aiMsg: ChatMessage = { id: uuid(), role: 'ai', content: aiContent, timestamp: aiTimestamp }; + const aiMsg: ChatMessage = { id: aiMsgId, role: 'ai', content: aiContent, timestamp: aiTimestamp }; messages.push(aiMsg); saveMessages(config.integrateId, messages); - if (messagesContainer) scrollToBottom(messagesContainer); + if (messagesContainer) smartScrollToBottom(); + + // a11y 播报新 AI 消息 + announceMessage(aiContent); + + // 通知 launcher 显示未读徽章(弹窗关闭时生效,由 index.ts 监听) + if (messagesContainer) { + messagesContainer.dispatchEvent(new CustomEvent('csk:newMessage', { bubbles: true })); + } // RAG 引用来源 - if (shouldUseRag) fetchAndRenderSources(text, aiMsg); + if (shouldUseRag) fetchAndRenderSources(userText, aiMsg); } catch (err) { if (hideLoadingFn) hideLoadingFn(); @@ -286,14 +482,21 @@ async function handleSend(): Promise { logger.error(`发送失败 integrateId=${config.integrateId}`, err); } finally { isSending = false; + abortController = null; + setSendButtonMode('send'); updateSendBtnState(); } } /** 流式发送消息 */ -async function sendStreamMessage(text: string, aiTimestamp: number, shouldUseRag: boolean): Promise { +async function sendStreamMessage(text: string, aiTimestamp: number, shouldUseRag: boolean, aiMsgId: string): Promise { + // 创建中断控制器,供"停止生成"使用 + abortController = new AbortController(); + const signal = abortController.signal; + return new Promise((resolve, reject) => { let bubbleEl: HTMLElement | null = null; + let wrapperEl: HTMLElement | null = null; let accumulated = ''; let streamStarted = false; @@ -303,35 +506,92 @@ async function sendStreamMessage(text: string, aiTimestamp: number, shouldUseRag accumulated += chunk; if (!streamStarted && messagesContainer) { if (hideLoadingFn) hideLoadingFn(); - const { bubble } = createEmptyAIBubble(messagesContainer, aiTimestamp); + const { wrapper, bubble } = createEmptyAIBubble(messagesContainer, aiTimestamp, aiMsgId); + wrapperEl = wrapper; bubbleEl = bubble; streamStarted = true; } - if (bubbleEl) bubbleEl.textContent = accumulated; - if (messagesContainer) scrollToBottom(messagesContainer); + if (bubbleEl) { + bubbleEl.textContent = accumulated; + appendStreamingCaret(bubbleEl); + } + if (messagesContainer) smartScrollToBottom(); }, () => { - if (!streamStarted && accumulated === '') { - chatRequest(text).then(resolve).catch(reject); - return; + // 流结束 + if (wrapperEl && bubbleEl) { + // 无流内容降级为同步请求 + if (!streamStarted && accumulated === '') { + chatRequest(text).then(resolve).catch(reject); + return; + } + if (accumulated) bubbleEl.innerHTML = renderMarkdown(accumulated); + finalizeAIBubble(wrapperEl, bubbleEl); } - if (bubbleEl && accumulated) bubbleEl.innerHTML = renderMarkdown(accumulated); resolve(accumulated); }, (error: CskError) => { if (accumulated.length > 0) { - if (bubbleEl) bubbleEl.innerHTML = renderMarkdown(accumulated + '\n\n' + t('stream_interrupted')); + if (bubbleEl) { + bubbleEl.innerHTML = renderMarkdown(accumulated + '\n\n' + t('stream_interrupted')); + if (wrapperEl) finalizeAIBubble(wrapperEl, bubbleEl); + } resolve(accumulated); } else { reject(error); } }, currentCategoryId, - shouldUseRag + shouldUseRag, + signal ); }); } +/** + * 快捷问题发送:欢迎态点击芯片,直接以该文本发送 + */ +export function sendQuickReply(text: string): Promise { + if (!inputEl || isSending) return Promise.resolve(); + inputEl.value = text; + updateSendBtnState(); + return handleSend(); +} + +/** + * 重试:根据 AI 消息 ID 重新生成该回复 + * 找到该 AI 消息及其上一条用户消息,移除该 AI 消息(及之后的所有消息)后重新请求 + */ +export async function retryFromMessage(msgId: string): Promise { + if (!config || !messagesContainer || isSending) return; + + const aiIndex = messages.findIndex(m => m.id === msgId && m.role === 'ai'); + if (aiIndex < 0) return; + + // 找到上一条用户消息文本 + let userText = ''; + for (let i = aiIndex - 1; i >= 0; i--) { + if (messages[i].role === 'user') { userText = messages[i].content; break; } + } + if (!userText) return; + + // 移除该 AI 消息及其后所有消息(本地 + DOM) + const removed = messages.splice(aiIndex); + const removedIds = new Set(removed.map(m => m.id)); + const nodes = messagesContainer.querySelectorAll('.csk-msg'); + nodes.forEach(node => { + const id = (node as HTMLElement).dataset.cskMsgId; + // 无 id 的(如错误气泡、被中断的)按顺序兜底:此处仅按 id 精确移除 + if (id && removedIds.has(id)) node.remove(); + }); + + saveMessages(config.integrateId, messages); + updateEmptyState(); + + // 重新生成(不重复渲染用户气泡) + await produceAIReply(userText); +} + /** 获取并渲染 RAG 引用来源 */ async function fetchAndRenderSources(message: string, aiMsg: ChatMessage): Promise { try { @@ -394,11 +654,13 @@ function renderHistory(): void { if (msg.role === 'user') { renderUserBubble(messagesContainer, msg.content, msg.timestamp); } else { - const wrapper = renderAIBubble(messagesContainer, msg.content, msg.timestamp, renderMarkdown); + const wrapper = renderAIBubble(messagesContainer, msg.content, msg.timestamp, renderMarkdown, msg.id); if (msg.sources && msg.sources.length > 0) renderSources(wrapper, msg.sources); + if (msg.feedback) updateFeedbackUI(wrapper, msg.feedback); } } + isNearBottom = true; scrollToBottom(messagesContainer); if (clearBtn && messages.length > 0) clearBtn.style.display = 'inline-flex'; updateEmptyState(); @@ -459,43 +721,41 @@ export async function loadHistoryConversations(): Promise { try { const result = await fetchConversationList(1, 50, config.userId, config.integrateId); - const items: HistoryItemData[] = result.list.map(c => ({ + historyItems = result.list.map(c => ({ id: c.conversationId || '', - chatId: c.conversationId || '', // conversationId 就是 chatId + chatId: c.conversationId || '', messageCount: c.messageCount, lastMessageTime: c.lastMessageTime, lastMessagePreview: c.lastMessagePreview, createdAt: c.firstMessageTime || c.createdAt, })); + // 重置搜索(新数据到达时清空过滤) + historySearchText = ''; + if (searchInput) searchInput.value = ''; + renderHistoryList( listEl, - items, - // onSelect: 切换到选中的会话 - (conversationId: string) => { - switchToConversation(conversationId); - }, - // onExport + historyItems, + (conversationId: string) => { switchToConversation(conversationId); }, (id: string) => { window.open(getConversationExportUrl(id), '_blank'); }, - // onDelete async (id: string) => { if (!confirm(t('history_delete_confirm'))) return; const ok = await deleteConversation(id); if (ok) { - // 如果删的是当前会话,清空聊天窗口 if (id === getChatId()) { messages = []; if (messagesContainer) { - const msgs = messagesContainer.querySelectorAll('.csk-msg, .csk-loading'); - msgs.forEach(el => el.remove()); + messagesContainer.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); } if (clearBtn) clearBtn.style.display = 'none'; updateEmptyState(); } - loadHistoryConversations(); + // 从缓存中移除并重新渲染(不再重新请求后端) + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); } }, - // 当前活跃 chatId,用于高亮 getChatId() ); } catch (err) { diff --git a/client/src/config.ts b/client/src/config.ts index 332b472..5755a27 100644 --- a/client/src/config.ts +++ b/client/src/config.ts @@ -57,6 +57,12 @@ export function parseConfig(raw: SDKConfig): ResolvedConfig | null { launcherIcon: raw.launcherIcon || DEFAULT_LAUNCHER_ICON, showClear: raw.showClear ?? true, showAdminPanel: raw.showAdminPanel ?? false, + quickReplies: Array.isArray(raw.quickReplies) + ? raw.quickReplies.map(s => String(s).trim()).filter(Boolean) + : [], + theme: raw.theme === 'dark' ? 'dark' : 'light', + showTeaser: raw.showTeaser ?? true, + teaserText: (typeof raw.teaserText === 'string' && raw.teaserText.trim()) || '', streaming: raw.streaming ?? true, locale: raw.locale || 'zh-CN', debug: raw.debug ?? true, diff --git a/client/src/dom.ts b/client/src/dom.ts index a119875..b273375 100644 --- a/client/src/dom.ts +++ b/client/src/dom.ts @@ -34,6 +34,11 @@ export function createLauncher(config: ResolvedConfig, onClick: () => void): HTM // 图标内容 launcher.innerHTML = config.launcherIcon; + // 未读徽章(初始隐藏,有未读消息时由 index.ts 显示) + const badge = document.createElement('div'); + badge.className = 'csk-launcher__badge csk-launcher__badge--hidden'; + launcher.appendChild(badge); + // 点击事件(300ms 防抖) const debouncedClick = debounce(onClick, 300); launcher.addEventListener('click', debouncedClick); @@ -61,13 +66,20 @@ export function createChatWindow(config: ResolvedConfig): { categorySelect: HTMLSelectElement | null; historyPanel: HTMLElement; welcomeEl: HTMLElement; + newMsgBtn: HTMLElement; + teaserEl: HTMLElement; + searchInput: HTMLInputElement | null; + ariaLiveEl: HTMLElement; showLoading: () => HTMLElement; hideLoading: () => void; } { // 最外层容器 const windowEl = document.createElement('div'); windowEl.id = 'csk-window'; - windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden`; + windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden${config.theme === 'dark' ? ' csk-dark' : ''}`; + windowEl.setAttribute('role', 'dialog'); + windowEl.setAttribute('aria-label', config.title); + windowEl.setAttribute('aria-modal', 'false'); // === 头部 === const header = document.createElement('div'); @@ -142,8 +154,37 @@ export function createChatWindow(config: ResolvedConfig): {
${t('welcome_title')}
${t('welcome_desc')}
`; + + // 快捷问题芯片(点击即自动发送) + if (config.quickReplies.length > 0) { + const chips = document.createElement('div'); + chips.className = 'csk-quick-replies'; + for (const reply of config.quickReplies) { + const chip = document.createElement('button'); + chip.type = 'button'; + chip.className = 'csk-quick-reply'; + chip.textContent = reply; + chip.addEventListener('click', () => { + windowEl.dispatchEvent(new CustomEvent('csk:quickReply', { detail: { text: reply } })); + }); + chips.appendChild(chip); + } + welcomeEl.appendChild(chips); + } + messagesContainer.appendChild(welcomeEl); + // === 新消息提示按钮(用户上滑时新消息到达显示) === + // 挂到 windowEl 而非 messagesContainer,绝对定位悬浮于输入区上方,避免随内容滚动 + const newMsgBtn = document.createElement('button'); + newMsgBtn.type = 'button'; + newMsgBtn.className = 'csk-newmsg csk-newmsg--hidden'; + newMsgBtn.innerHTML = ` + + ${t('new_message')} + `; + windowEl.appendChild(newMsgBtn); + // === 会话管理面板(P2,默认隐藏) === const historyPanel = document.createElement('div'); historyPanel.className = 'csk-history-panel csk-history-panel--hidden'; @@ -155,6 +196,9 @@ export function createChatWindow(config: ResolvedConfig): { ${t('close')} +
+ +
`; messagesContainer.appendChild(historyPanel); @@ -280,6 +324,25 @@ export function createChatWindow(config: ResolvedConfig): { } } + // === a11y: aria-live 播报区域(视觉隐藏,供屏幕阅读器监听新消息) === + const ariaLiveEl = document.createElement('div'); + ariaLiveEl.className = 'csk-sr-only'; + ariaLiveEl.setAttribute('aria-live', 'polite'); + ariaLiveEl.setAttribute('aria-atomic', 'true'); + windowEl.appendChild(ariaLiveEl); + + // === 历史搜索输入框引用 === + const searchInput = historyPanel.querySelector('#csk-history-search') as HTMLInputElement | null; + + // === Launcher 提示气泡(首访引导,初始隐藏,由 index.ts 定时控制) === + const teaserEl = document.createElement('div'); + teaserEl.className = `csk-teaser csk-teaser--${config.position === 'left-bottom' ? 'left' : 'right'} csk-teaser--hidden`; + teaserEl.setAttribute('role', 'status'); + teaserEl.innerHTML = ` + + ${config.teaserText || t('teaser_text')} + `; + return { window: windowEl, messagesContainer, @@ -289,6 +352,10 @@ export function createChatWindow(config: ResolvedConfig): { categorySelect, historyPanel, welcomeEl, + newMsgBtn, + teaserEl, + searchInput, + ariaLiveEl, showLoading, hideLoading, }; @@ -379,9 +446,10 @@ export function renderUserBubble(container: HTMLElement, text: string, timestamp } /** 渲染 AI 消息气泡(支持 Markdown) */ -export function renderAIBubble(container: HTMLElement, text: string, timestamp: number, renderMd?: (text: string) => string): HTMLElement { +export function renderAIBubble(container: HTMLElement, text: string, timestamp: number, renderMd?: (text: string) => string, msgId?: string): HTMLElement { const wrapper = document.createElement('div'); wrapper.className = 'csk-msg csk-msg--ai'; + if (msgId) wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; @@ -404,18 +472,24 @@ export function renderAIBubble(container: HTMLElement, text: string, timestamp: time.textContent = formatTime(timestamp); content.appendChild(bubble); + // AI 操作条(复制 / 重试),插入到气泡与时间戳之间 + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); container.appendChild(wrapper); + // 代码块复制按钮 + enhanceCodeBlocks(bubble); + return wrapper; } /** 创建空的 AI 气泡(流式追加用) */ -export function createEmptyAIBubble(container: HTMLElement, timestamp: number): { wrapper: HTMLElement; bubble: HTMLElement } { +export function createEmptyAIBubble(container: HTMLElement, timestamp: number, msgId?: string): { wrapper: HTMLElement; bubble: HTMLElement } { const wrapper = document.createElement('div'); - wrapper.className = 'csk-msg csk-msg--ai'; + wrapper.className = 'csk-msg csk-msg--ai csk-msg--streaming'; + if (msgId) wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; @@ -433,6 +507,7 @@ export function createEmptyAIBubble(container: HTMLElement, timestamp: number): time.textContent = formatTime(timestamp); content.appendChild(bubble); + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); @@ -441,6 +516,169 @@ export function createEmptyAIBubble(container: HTMLElement, timestamp: number): return { wrapper, bubble }; } +// ==================== AI 消息操作条 + 代码块复制 ==================== + +/** 复制图标 */ +const COPY_ICON = ``; +/** 重试图标 */ +const RETRY_ICON = ``; + +/** 构建 AI 消息操作条(复制 / 重试 / 反馈) */ +function buildAIActions(bubble: HTMLElement, wrapper: HTMLElement): HTMLElement { + const bar = document.createElement('div'); + bar.className = 'csk-msg__actions'; + + // 复制按钮 + const copyBtn = document.createElement('button'); + copyBtn.type = 'button'; + copyBtn.className = 'csk-action-btn'; + copyBtn.setAttribute('title', t('copy')); + copyBtn.setAttribute('aria-label', t('copy')); + copyBtn.innerHTML = COPY_ICON; + copyBtn.addEventListener('click', async (e) => { + e.stopPropagation(); + const text = bubble.textContent || ''; + await copyToClipboard(text, copyBtn); + }); + + // 重试按钮 + const retryBtn = document.createElement('button'); + retryBtn.type = 'button'; + retryBtn.className = 'csk-action-btn'; + retryBtn.setAttribute('title', t('retry')); + retryBtn.setAttribute('aria-label', t('retry')); + retryBtn.innerHTML = RETRY_ICON; + retryBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:retry', { + detail: { msgId: wrapper.dataset.cskMsgId || '' } + })); + } + }); + + // 反馈按钮(👍 / 👎) + const THUMB_UP = ``; + const THUMB_DOWN = ``; + + const upBtn = document.createElement('button'); + upBtn.type = 'button'; + upBtn.className = 'csk-feedback-btn'; + upBtn.setAttribute('title', t('feedback_up')); + upBtn.setAttribute('aria-label', t('feedback_up')); + upBtn.innerHTML = THUMB_UP; + upBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'up' } + })); + } + }); + + const downBtn = document.createElement('button'); + downBtn.type = 'button'; + downBtn.className = 'csk-feedback-btn'; + downBtn.setAttribute('title', t('feedback_down')); + downBtn.setAttribute('aria-label', t('feedback_down')); + downBtn.innerHTML = THUMB_DOWN; + downBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'down' } + })); + } + }); + + bar.appendChild(copyBtn); + bar.appendChild(retryBtn); + bar.appendChild(upBtn); + bar.appendChild(downBtn); + return bar; +} + +/** + * 更新反馈按钮的视觉状态(由 chat.ts 调用) + * @param wrapper 消息 wrapper 元素 + * @param value 当前反馈值:'up' | 'down' | undefined + */ +export function updateFeedbackUI(wrapper: HTMLElement, value: 'up' | 'down' | undefined): void { + const btns = wrapper.querySelectorAll('.csk-feedback-btn'); + if (btns.length < 2) return; + btns.forEach((btn) => btn.classList.remove('csk-feedback-btn--active', 'down')); + if (value === 'up' && btns[0]) btns[0].classList.add('csk-feedback-btn--active'); + if (value === 'down' && btns[1]) btns[1].classList.add('csk-feedback-btn--active', 'down'); +} + +/** 复制文本到剪贴板,带"已复制"反馈 */ +async function copyToClipboard(text: string, btn: HTMLElement): Promise { + const original = btn.innerHTML; + try { + if (navigator.clipboard && window.isSecureContext) { + await navigator.clipboard.writeText(text); + } else { + // 降级方案:execCommand + const ta = document.createElement('textarea'); + ta.value = text; + ta.style.position = 'fixed'; + ta.style.opacity = '0'; + document.body.appendChild(ta); + ta.select(); + document.execCommand('copy'); + document.body.removeChild(ta); + } + btn.innerHTML = ``; + btn.classList.add('csk-action-btn--done'); + setTimeout(() => { + btn.innerHTML = original; + btn.classList.remove('csk-action-btn--done'); + }, 1500); + } catch { + // 复制失败静默处理 + } +} + +/** 为气泡内所有代码块添加复制按钮 */ +export function enhanceCodeBlocks(bubble: HTMLElement): void { + const blocks = bubble.querySelectorAll('.csk-md-code-block'); + blocks.forEach((pre) => { + if (pre.querySelector('.csk-md-code-copy')) return; + const codeEl = pre.querySelector('code'); + const btn = document.createElement('button'); + btn.type = 'button'; + btn.className = 'csk-md-code-copy'; + btn.setAttribute('title', t('copy')); + btn.setAttribute('aria-label', t('copy')); + btn.innerHTML = COPY_ICON; + btn.addEventListener('click', async (e) => { + e.stopPropagation(); + await copyToClipboard(codeEl?.textContent || '', btn); + }); + (pre as HTMLElement).appendChild(btn); + }); +} + +/** 流式打字光标:追加到气泡末尾(每次 chunk 后调用) */ +export function appendStreamingCaret(bubble: HTMLElement): void { + if (bubble.querySelector('.csk-caret')) return; + const caret = document.createElement('span'); + caret.className = 'csk-caret'; + caret.setAttribute('aria-hidden', 'true'); + bubble.appendChild(caret); +} + +/** 标记 AI 气泡流式结束:移除流式态、补代码块复制按钮 */ +export function finalizeAIBubble(wrapper: HTMLElement, bubble: HTMLElement): void { + wrapper.classList.remove('csk-msg--streaming'); + const caret = bubble.querySelector('.csk-caret'); + if (caret) caret.remove(); + enhanceCodeBlocks(bubble); +} + // ==================== P1: RAG 引用来源渲染 ==================== /** 渲染 RAG 引用来源卡片 */ diff --git a/client/src/i18n.ts b/client/src/i18n.ts index 1e3a15f..98aca7a 100644 --- a/client/src/i18n.ts +++ b/client/src/i18n.ts @@ -18,6 +18,14 @@ const dictionaries: Record> = { // 输入区 placeholder: '输入您的问题...', send: '发送', + stop: '停止生成', + new_message: '新消息', + + // 消息操作 + copy: '复制', + copied: '已复制', + retry: '重新生成', + retrying: '重新生成中...', // 消息 loading: '正在思考...', @@ -43,6 +51,15 @@ const dictionaries: Record> = { history_delete_confirm: '确定删除该会话?', history_export: '导出', history_delete: '删除', + history_search: '搜索会话...', + + // 消息反馈 + feedback_up: '有帮助', + feedback_down: '没帮助', + + // 提示气泡 + teaser_text: '有什么可以帮你的吗?', + new_msg_announce: '收到新消息', // 错误提示 error_network: '网络连接失败,请检查网络', @@ -73,6 +90,14 @@ const dictionaries: Record> = { // Input placeholder: 'Type your question...', send: 'Send', + stop: 'Stop generating', + new_message: 'New message', + + // Message actions + copy: 'Copy', + copied: 'Copied', + retry: 'Regenerate', + retrying: 'Regenerating...', // Messages loading: 'Thinking...', @@ -98,6 +123,15 @@ const dictionaries: Record> = { history_delete_confirm: 'Delete this conversation?', history_export: 'Export', history_delete: 'Delete', + history_search: 'Search conversations...', + + // Feedback + feedback_up: 'Helpful', + feedback_down: 'Not helpful', + + // Teaser + teaser_text: 'How can I help you?', + new_msg_announce: 'New message received', // Errors error_network: 'Network connection failed', diff --git a/client/src/index.ts b/client/src/index.ts index 4bec3be..17a9069 100644 --- a/client/src/index.ts +++ b/client/src/index.ts @@ -13,7 +13,7 @@ import { setDebug, logger } from './logger'; import { setApiConfig } from './api'; import { injectStyles, removeStyles } from './styles'; import { createLauncher, createChatWindow, enableDrag } from './dom'; -import { initChat, initChatHistory, getMessages, setCategory, loadHistoryConversations } from './chat'; +import { initChat, initChatHistory, getMessages, setCategory, loadHistoryConversations, sendQuickReply, retryFromMessage, handleFeedback } from './chat'; import { clearMessages } from './storage'; import { setLocale } from './i18n'; @@ -33,6 +33,13 @@ let showLoadingFn: (() => HTMLElement) | null = null; let hideLoadingFn: (() => void) | null = null; let dragCleanup: (() => void) | null = null; +/** 提示气泡元素 */ +let teaserEl: HTMLElement | null = null; +/** 提示气泡定时器 */ +let teaserTimer: ReturnType | null = null; +/** 未读徽章元素(挂在 launcher 内部) */ +let badgeEl: HTMLElement | null = null; + // ==================== 公开 API ==================== /** 初始化 SDK */ @@ -63,6 +70,9 @@ function init(rawConfig: SDKConfig): void { launcherEl = createLauncher(config, toggle); document.body.appendChild(launcherEl); + // 获取未读徽章引用(由 createLauncher 创建) + badgeEl = launcherEl.querySelector('.csk-launcher__badge'); + // 7. 创建聊天弹窗 const dom = createChatWindow(config); windowEl = dom.window; @@ -76,13 +86,18 @@ function init(rawConfig: SDKConfig): void { hideLoadingFn = dom.hideLoading; document.body.appendChild(windowEl); - // 8. 启用拖拽 + // 8. 安置提示气泡(挂在 launcher 同层,由配置控制显示) + teaserEl = dom.teaserEl; + document.body.appendChild(teaserEl); + positionTeaser(); + + // 9. 启用拖拽 const headerEl = windowEl.querySelector('.csk-header') as HTMLElement; if (headerEl) { dragCleanup = enableDrag(headerEl, windowEl); } - // 9. 初始化对话模块 + // 10. 初始化对话模块 initChat(config, { messagesContainer, inputEl, @@ -91,38 +106,193 @@ function init(rawConfig: SDKConfig): void { categorySelect, historyPanel, welcomeEl: dom.welcomeEl, + newMsgBtn: dom.newMsgBtn, + searchInput: dom.searchInput, + ariaLiveEl: dom.ariaLiveEl, showLoading: showLoadingFn, hideLoading: hideLoadingFn, }); - // 10. 监听知识库分类切换事件 + // 11. 监听知识库分类切换事件 windowEl.addEventListener('csk:categoryChange', ((e: CustomEvent) => { setCategory(e.detail.categoryId); }) as EventListener); - // 11. 监听会话管理面板加载事件 + // 12. 监听会话管理面板加载事件 windowEl.addEventListener('csk:loadHistory', () => { loadHistoryConversations(); }); + // 13. 监听快捷问题芯片点击 + windowEl.addEventListener('csk:quickReply', ((e: CustomEvent) => { + sendQuickReply(e.detail.text); + }) as EventListener); + + // 14. 监听 AI 消息重试事件 + windowEl.addEventListener('csk:retry', ((e: CustomEvent) => { + retryFromMessage(e.detail.msgId); + }) as EventListener); + + // 15. 监听消息反馈事件(👍 / 👎) + windowEl.addEventListener('csk:feedback', ((e: CustomEvent) => { + handleFeedback(e.detail.msgId, e.detail.value); + }) as EventListener); + + // 16. 新消息到达通知(用于未读徽章) + windowEl.addEventListener('csk:newMessage', () => { + notifyNewMessage(); + }); + + // 17. ESC 键关闭弹窗 + document.addEventListener('keydown', onKeyDown); + + // 17. 窗口 resize 时重新定位 teaser + window.addEventListener('resize', onResize); + isInitialized = true; logger.lifecycleInit(config.integrateId, config.requestDomain); - // 12. 异步初始化 chatId 和对话历史(不阻塞 UI) + // 18. 首访提示气泡(延迟显示,弹窗未打开时生效) + if (config.showTeaser) { + teaserTimer = setTimeout(() => { + // 弹窗关闭时才显示 + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showTeaser(); + } + }, 1500); + } + + // 19. 异步初始化 chatId 和对话历史(不阻塞 UI) initChatHistory().catch(err => { logger.warn('chatId 初始化失败,将在发送消息时重试', err); }); } +// ==================== 提示气泡控制 ==================== + +/** 根据 launcher 位置定位 teaser 气泡 */ +function positionTeaser(): void { + if (!teaserEl || !launcherEl) return; + const rect = launcherEl.getBoundingClientRect(); + const isLeft = config?.position === 'left-bottom'; + if (isLeft) { + teaserEl.style.left = `${rect.left}px`; + } else { + teaserEl.style.right = `${window.innerWidth - rect.right}px`; + } + teaserEl.style.bottom = `${window.innerHeight - rect.top + 8}px`; +} + +function showTeaser(): void { + if (!teaserEl) return; + positionTeaser(); + teaserEl.classList.remove('csk-teaser--hidden'); + // 点击气泡本身 → 打开弹窗 + teaserEl.addEventListener('click', onTeaserClick); + // 关闭按钮(阻止冒泡,不打开弹窗) + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) { + closeBtn.addEventListener('click', onTeaserClose); + } +} + +function hideTeaser(): void { + if (!teaserEl) return; + teaserEl.classList.add('csk-teaser--hidden'); + teaserEl.removeEventListener('click', onTeaserClick); + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) closeBtn.removeEventListener('click', onTeaserClose); +} + +function onTeaserClick(e: Event): void { + // 关闭按钮点击不打开弹窗 + if ((e.target as HTMLElement).closest('.csk-teaser__close')) return; + hideTeaser(); + open(); +} + +function onTeaserClose(e: Event): void { + e.stopPropagation(); + hideTeaser(); +} + +function onResize(): void { + if (teaserEl && !teaserEl.classList.contains('csk-teaser--hidden')) { + positionTeaser(); + } +} + +// ==================== 未读徽章 ==================== + +function showBadge(): void { + if (badgeEl) badgeEl.classList.remove('csk-launcher__badge--hidden'); +} + +function hideBadge(): void { + if (badgeEl) badgeEl.classList.add('csk-launcher__badge--hidden'); +} + +/** 新消息到达时弹窗关闭,则显示徽章 */ +function notifyNewMessage(): void { + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showBadge(); + } +} + +// ==================== a11y 焦点陷阱 ==================== + +/** 弹窗内可聚焦元素选择器 */ +const FOCUSABLE = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; + +function trapFocus(e: KeyboardEvent): void { + if (!windowEl || windowEl.classList.contains('csk-window--hidden')) return; + if (e.key !== 'Tab') return; + + const focusables = Array.from(windowEl.querySelectorAll(FOCUSABLE)) as HTMLElement[]; + if (focusables.length === 0) return; + + const first = focusables[0]; + const last = focusables[focusables.length - 1]; + + if (e.shiftKey) { + // Shift+Tab:在第一个元素上按 → 跳到最后一个 + if (document.activeElement === first) { + e.preventDefault(); + last.focus(); + } + } else { + // Tab:在最后一个元素上按 → 跳到第一个 + if (document.activeElement === last) { + e.preventDefault(); + first.focus(); + } + } +} + +// ==================== 全局键盘事件 ==================== + +function onKeyDown(e: KeyboardEvent): void { + if (e.key === 'Escape' && windowEl && !windowEl.classList.contains('csk-window--hidden')) { + close(); + } + trapFocus(e); +} + /** 销毁 SDK 实例 */ function destroy(): void { if (!isInitialized) return; + if (teaserTimer) { clearTimeout(teaserTimer); teaserTimer = null; } + hideTeaser(); + if (teaserEl && teaserEl.parentNode) { teaserEl.parentNode.removeChild(teaserEl); teaserEl = null; } + if (launcherEl && launcherEl.parentNode) { launcherEl.parentNode.removeChild(launcherEl); launcherEl = null; } if (windowEl && windowEl.parentNode) { windowEl.parentNode.removeChild(windowEl); windowEl = null; } if (dragCleanup) { dragCleanup(); dragCleanup = null; } removeStyles(); + document.removeEventListener('keydown', onKeyDown); + window.removeEventListener('resize', onResize); const oldIntegrateId = config?.integrateId; config = null; @@ -135,6 +305,7 @@ function destroy(): void { historyPanel = null; showLoadingFn = null; hideLoadingFn = null; + badgeEl = null; logger.lifecycleDestroy(oldIntegrateId || ''); } @@ -142,6 +313,9 @@ function destroy(): void { function open(): void { if (!windowEl) return; windowEl.classList.remove('csk-window--hidden'); + hideTeaser(); + hideBadge(); + setTimeout(() => { if (inputEl) inputEl.focus(); }, 80); } function close(): void { @@ -153,7 +327,6 @@ function toggle(): void { if (!windowEl) return; if (windowEl.classList.contains('csk-window--hidden')) { open(); - setTimeout(() => { if (inputEl) inputEl.focus(); }, 100); } else { close(); } diff --git a/client/src/styles.ts b/client/src/styles.ts index f81b3e1..a0bb82c 100644 --- a/client/src/styles.ts +++ b/client/src/styles.ts @@ -457,6 +457,7 @@ function getStyles(config: ResolvedConfig): string { color: #1F2937; } .csk-input::placeholder { color: #9CA3AF; } +.csk-root .csk-input:focus-visible { outline: none; } .csk-send-btn { display: flex; align-items: center; @@ -828,6 +829,355 @@ function getStyles(config: ResolvedConfig): string { } .csk-history-panel__loadmore:hover { background: #F3F4F6; } +/* ========== 快捷问题芯片 ========== */ +.csk-quick-replies { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: center; + margin-top: 18px; + max-width: 320px; +} +.csk-quick-reply { + border: 1px solid var(--csk-border); + background: #fff; + color: #374151; + font-size: 12.5px; + padding: 7px 13px; + border-radius: 999px; + cursor: pointer; + font-family: inherit; + line-height: 1.3; + transition: all 0.18s ease; + max-width: 100%; +} +.csk-quick-reply:hover { + border-color: var(--csk-primary); + color: var(--csk-primary); + background: rgba(var(--csk-primary-rgb), 0.06); + transform: translateY(-1px); +} +.csk-quick-reply:active { transform: scale(0.96); } + +/* ========== AI 消息操作条 ========== */ +.csk-msg__actions { + display: flex; + gap: 2px; + margin-top: 5px; + padding: 0 2px; + opacity: 0; + transition: opacity 0.15s ease; +} +.csk-msg--ai:hover .csk-msg__actions { opacity: 1; } +.csk-msg--streaming .csk-msg__actions { display: none; } +.csk-action-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: transparent; + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; +} +.csk-action-btn:hover { + background: #F3F4F6; + color: #374151; +} +.csk-action-btn--done { color: #10B981; } +.csk-action-btn:active { transform: scale(0.9); } + +/* ========== 流式打字光标 ========== */ +.csk-caret { + display: inline-block; + width: 7px; + height: 15px; + margin-left: 2px; + vertical-align: text-bottom; + background: var(--csk-primary); + border-radius: 1px; + animation: csk-caret-blink 1s step-end infinite; +} +@keyframes csk-caret-blink { + 0%, 50% { opacity: 1; } + 51%, 100% { opacity: 0; } +} + +/* ========== 代码块复制按钮 ========== */ +.csk-md-code-block { position: relative; } +.csk-md-code-copy { + position: absolute; + top: 8px; + right: 8px; + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(255, 255, 255, 0.12); + color: #CBD5E1; + border-radius: 6px; + cursor: pointer; + opacity: 0; + transition: all 0.15s ease; +} +.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; } +.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; } +.csk-md-code-copy:active { transform: scale(0.9); } + +/* ========== 新消息提示按钮 ========== */ +.csk-newmsg { + position: absolute; + bottom: 82px; + left: 50%; + transform: translateX(-50%); + z-index: 5; + display: inline-flex; + align-items: center; + gap: 5px; + padding: 7px 14px; + border: none; + background: var(--csk-primary); + color: #fff; + font-size: 12px; + font-family: inherit; + border-radius: 999px; + cursor: pointer; + box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38); + transition: transform 0.2s ease, box-shadow 0.2s ease; + animation: csk-msg-in 0.25s ease; + white-space: nowrap; +} +.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); } +.csk-newmsg:active { transform: translateX(-50%) scale(0.95); } +.csk-newmsg--hidden { display: none; } + +/* ========== 发送按钮停止态 ========== */ +.csk-send-btn--stop { + background: #EF4444 !important; + box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important; +} +.csk-send-btn--stop:hover:not(:disabled) { + box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important; +} + +/* ========== 暗色模式 ========== */ +.csk-root.csk-dark { + --csk-bg-ai: #1E1E2E; + --csk-text-ai: #E2E8F0; + --csk-border: #3B3B52; + --csk-bg-app: #141421; + color: #E2E8F0; +} +.csk-dark .csk-window { + background: #1A1A2E; + box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); +} +.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); } +.csk-dark .csk-msg__avatar--ai { + background: var(--csk-bg-ai); + color: var(--csk-primary); + border-color: var(--csk-border); +} +.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); } +.csk-dark .csk-input { color: #E2E8F0; } +.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__dot { background: #6B7280; } +.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); } +.csk-dark .csk-sources__header { background: #25253A; } +.csk-dark .csk-sources__header:hover { background: #2D2D48; } +.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); } +.csk-dark .csk-source-item__name { color: #E2E8F0; } +.csk-dark .csk-source-item__meta { color: #6B7280; } +.csk-dark .csk-history-panel { background: #1A1A2E; } +.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); } +.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-history-panel__back:hover { background: #2D2D48; } +.csk-dark .csk-history-item:hover { background: #25253A; } +.csk-dark .csk-history-item__id { color: #E2E8F0; } +.csk-dark .csk-history-item__meta { color: #6B7280; } +.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); } +.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); } +.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; } +.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; } +.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; } +.csk-dark .csk-md-code-block { background: #0F0F1A; } +.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); } +.csk-dark .csk-md-link { color: var(--csk-primary-light); } +.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); } +.csk-dark .csk-welcome__title { color: #E2E8F0; } +.csk-dark .csk-welcome__desc { color: #6B7280; } +.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; } +.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); } +.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); } +.csk-dark .csk-teaser::after { border-top-color: #2D2D48; } +.csk-dark .csk-teaser__close { color: #6B7280; } +.csk-dark .csk-teaser__close:hover { color: #9CA3AF; } +.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; } +.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); } +.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); } +.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); } +.csk-dark .csk-history-panel__search { color: #E2E8F0; } +.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; } +.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); } +.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); } + +/* ========== Launcher 未读徽章 ========== */ +.csk-launcher__badge { + position: absolute; + top: -3px; + right: -3px; + width: 16px; + height: 16px; + border-radius: 50%; + background: #EF4444; + border: 2px solid #fff; + box-shadow: 0 0 0 2px #fff; + animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1); + pointer-events: none; +} +.csk-launcher__badge--hidden { display: none; } +@keyframes csk-badge-in { + from { transform: scale(0); } + to { transform: scale(1); } +} + +/* ========== Launcher 提示气泡 ========== */ +.csk-teaser { + position: fixed; + bottom: 90px; + z-index: 9997; + max-width: 240px; + padding: 10px 14px; + background: #fff; + color: #1F2937; + font-size: 13px; + line-height: 1.5; + border-radius: 12px; + box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15); + animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1); + cursor: pointer; + user-select: none; +} +.csk-teaser--right { right: 24px; } +.csk-teaser--left { left: 24px; } +.csk-teaser::after { + content: ''; + position: absolute; + bottom: -6px; + right: 28px; + width: 12px; + height: 12px; + background: inherit; + border-radius: 2px; + transform: rotate(45deg); + box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08); +} +.csk-teaser--left::after { right: auto; left: 28px; } +.csk-teaser__close { + position: absolute; + top: 4px; + right: 6px; + background: none; + border: none; + font-size: 16px; + color: #9CA3AF; + cursor: pointer; + padding: 2px 4px; + line-height: 1; + border-radius: 4px; +} +.csk-teaser__close:hover { color: #374151; } +.csk-teaser--hidden { display: none; } +@keyframes csk-teaser-in { + from { opacity: 0; transform: translateY(8px) scale(0.95); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +/* ========== 消息反馈按钮(👍 / 👎) ========== */ +.csk-feedback-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(var(--csk-primary-rgb), 0.08); + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; + padding: 0; +} +.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); } +.csk-feedback-btn--active { + background: rgba(var(--csk-primary-rgb), 0.28); + color: var(--csk-primary); +} +.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; } +.csk-feedback-btn:active { transform: scale(0.9); } +.csk-msg--streaming .csk-feedback-btn { display: none; } + +/* ========== 历史会话搜索框 ========== */ +.csk-history-panel__search-wrap { + padding: 8px 10px; + border-bottom: 1px solid var(--csk-border); + flex-shrink: 0; +} +.csk-history-panel__search-wrap:focus-within { + border-bottom-color: var(--csk-primary); +} +.csk-history-panel__search { + width: 100%; + padding: 7px 10px; + border: 1px solid var(--csk-border); + border-radius: 8px; + font-size: 12.5px; + font-family: inherit; + color: #1F2937; + background: var(--csk-bg-app); + outline: none; + transition: border-color 0.2s; +} +.csk-history-panel__search:focus { border-color: var(--csk-primary); } +.csk-history-panel__search::placeholder { color: #9CA3AF; } + +/* ========== a11y 焦点指示 ========== */ +.csk-root :focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; +} +.csk-root button:focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; + border-radius: inherit; +} +/* 弹窗打开时隐藏 launcher 上的焦点环 */ +.csk-launcher:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.4); } + +/* ========== a11y aria-live 播报区(视觉隐藏) ========== */ +.csk-sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0,0,0,0) !important; + white-space: nowrap !important; + border: 0 !important; +} + /* ========== 移动端适配 ========== */ @media (max-width: 480px) { .csk-window { diff --git a/client/src/types.ts b/client/src/types.ts index 27cf73b..6036b50 100644 --- a/client/src/types.ts +++ b/client/src/types.ts @@ -40,6 +40,14 @@ export interface SDKConfig { showClear?: boolean; /** 是否显示管理面板,默认 false */ showAdminPanel?: boolean; + /** 欢迎态快捷问题列表,点击即自动发送,默认空数组 */ + quickReplies?: string[]; + /** 主题模式,默认 'light' */ + theme?: 'light' | 'dark'; + /** 是否显示首访提示气泡(延迟 1.5s 弹出),默认 true */ + showTeaser?: boolean; + /** 提示气泡文字,留空则使用 i18n 默认值 */ + teaserText?: string; // === 行为配置 === /** 是否启用流式输出,默认 true */ @@ -76,6 +84,14 @@ export interface ResolvedConfig { showClear: boolean; /** 显示管理面板 */ showAdminPanel: boolean; + /** 欢迎态快捷问题列表 */ + quickReplies: string[]; + /** 主题模式 */ + theme: 'light' | 'dark'; + /** 是否显示首访提示气泡 */ + showTeaser: boolean; + /** 提示气泡文字 */ + teaserText: string; /** 流式输出 */ streaming: boolean; /** 界面语言 */ @@ -98,6 +114,8 @@ export interface ChatMessage { timestamp: number; /** 可选:RAG 引用来源 */ sources?: RagSource[]; + /** 可选:用户反馈 'up' | 'down',预留后端对接位 */ + feedback?: 'up' | 'down'; } /** RAG 引用来源 */ diff --git a/pom.xml b/pom.xml index c7ec8f8..0de81f7 100644 --- a/pom.xml +++ b/pom.xml @@ -17,6 +17,42 @@ 17 1.0.0.4 + + + + + + + + dev + + dev + + + true + + + + + prod + + prod + + + + + native + + skipNativeProfile + + + + nativeTest + + skipNativeTestProfile + + + @@ -126,6 +162,16 @@ + + supportbot-${profiles.active} + + + + + src/main/resources + true + + org.apache.maven.plugins diff --git a/src/main/java/com/wok/supportbot/config/ChatModelFactory.java b/src/main/java/com/wok/supportbot/config/ChatModelFactory.java index b7aa5c8..e1a8041 100644 --- a/src/main/java/com/wok/supportbot/config/ChatModelFactory.java +++ b/src/main/java/com/wok/supportbot/config/ChatModelFactory.java @@ -51,6 +51,18 @@ public class ChatModelFactory { "openai", "https://api.openai.com" ); + /** + * 各提供商的 Chat 完成路径(默认 /v1/chat/completions) + * baseUrl 已含版本路径段的厂商(moonshot/volcengine/zhipu)需设为 /chat/completions, + * 否则与默认 /v1/chat/completions 拼接后会多出一层路径(如 /api/v3/v1/chat/completions)。 + * 此映射与 EmbeddingModelFactory.DEFAULT_EMBEDDINGS_PATHS 一一对应。 + */ + private static final Map DEFAULT_COMPLETIONS_PATHS = Map.of( + "moonshot", "/chat/completions", + "volcengine", "/chat/completions", + "zhipu", "/chat/completions" + ); + /** * 按应用类型获取活跃的 ChatModel * 如果该类型无活跃配置,抛出异常(不应在缺少配置时静默回退) @@ -108,13 +120,18 @@ public class ChatModelFactory { // OpenAI 兼容提供商 String baseUrl = resolveBaseUrl(config); - log.info("创建 OpenAI 兼容 ChatModel: provider={}, baseUrl={}, model={}", - config.getProvider(), baseUrl, config.getModelName()); + String completionsPath = resolveCompletionsPath(config); + log.info("创建 OpenAI 兼容 ChatModel: provider={}, baseUrl={}, completionsPath={}, model={}", + config.getProvider(), baseUrl, completionsPath, config.getModelName()); - var api = OpenAiApi.builder() + var apiBuilder = OpenAiApi.builder() .apiKey(config.getApiKey()) - .baseUrl(baseUrl) - .build(); + .baseUrl(baseUrl); + // 按提供商设置 Chat 完成路径(默认 /v1/chat/completions,baseUrl 已含版本段的厂商用 /chat/completions) + if (completionsPath != null) { + apiBuilder.completionsPath(completionsPath); + } + var api = apiBuilder.build(); var optionsBuilder = OpenAiChatOptions.builder() .model(config.getModelName()); @@ -146,6 +163,15 @@ public class ChatModelFactory { "未知提供商 [" + config.getProvider() + "],请在配置中填写 API 基础地址 (baseUrl)"); } + /** + * 解析 Chat 完成路径:baseUrl 已含版本路径段的厂商(moonshot/volcengine/zhipu) + * 需要设为 /chat/completions,其余使用 OpenAI 默认路径 /v1/chat/completions。 + * 返回 null 表示使用默认值,不额外设置。 + */ + private String resolveCompletionsPath(AiModelConfig config) { + return DEFAULT_COMPLETIONS_PATHS.get(config.getProvider()); + } + /** * 清除 ChatModel 缓存(配置变更时调用) */ diff --git a/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java b/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java index e547b92..fd0ea75 100644 --- a/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java +++ b/src/main/java/com/wok/supportbot/config/DatabaseInitConfig.java @@ -391,6 +391,12 @@ public class DatabaseInitConfig { return; } + // yml 未配置 api-key 时种子值留空:不影响启动,用户需在前端「AI 大模型配置管理」页面填入 api_key 后才能调用 AI 功能 + if (dashscopeApiKey == null || dashscopeApiKey.isBlank()) { + log.warn("未检测到 spring.ai.dashscope.api-key,已写入空 api_key 的默认配置;" + + "请在前端「AI 大模型配置管理」页面为各应用类型填入 API Key 后再使用 AI 功能"); + } + insertDefaultModelConfig("Chat Default", "CHAT", "dashscope", dashscopeApiKey, "qwen-turbo", 0.7, 2000, true, 100, "Default chat model config"); diff --git a/src/main/java/com/wok/supportbot/service/AiModelConfigService.java b/src/main/java/com/wok/supportbot/service/AiModelConfigService.java index 87b4467..2a2e072 100644 --- a/src/main/java/com/wok/supportbot/service/AiModelConfigService.java +++ b/src/main/java/com/wok/supportbot/service/AiModelConfigService.java @@ -189,7 +189,12 @@ public class AiModelConfigService { // JSONB 字段 MyBatis Plus typeHandler 可能不触发,用 JdbcTemplate 显式写入保证可靠 persistExtraConfig(id, config.getExtraConfig()); log.info("更新 AI 模型配置: id={}", id); - return aiModelConfigMapper.selectById(id); + AiModelConfig updated = aiModelConfigMapper.selectById(id); + // 返回前脱敏,避免明文 api_key 暴露给前端(与列表/详情接口保持一致) + if (updated != null) { + updated.setApiKey(maskApiKey(updated.getApiKey())); + } + return updated; } // ==================== 激活配置 ==================== diff --git a/src/main/resources/application-dev.yml b/src/main/resources/application-dev.yml new file mode 100644 index 0000000..e5f0aaf --- /dev/null +++ b/src/main/resources/application-dev.yml @@ -0,0 +1,31 @@ +# ================================================================ +# 本地开发环境配置(默认激活) +# ================================================================ +# 本地 IDE 运行时自动加载此文件,无需额外参数。 +# Maven 打包:mvn clean package(不传 -P,默认 dev) +# ================================================================ + +server: + port: 9090 + +spring: + datasource: + url: jdbc:postgresql://192.168.1.18:5432/support_bot + username: postgres + password: supportbot123 + sql: + init: + mode: never + schema-locations: classpath:support-bot.sql + continue-on-error: true + +# ==================== Knife4j 开关 ==================== +knife4j: + enable: true + +# ==================== 日志级别 ==================== +logging: + level: + root: INFO + com.wok.supportbot: DEBUG + org.springframework.ai: INFO diff --git a/src/main/resources/application-prod.yml b/src/main/resources/application-prod.yml new file mode 100644 index 0000000..e4787ac --- /dev/null +++ b/src/main/resources/application-prod.yml @@ -0,0 +1,41 @@ +# ================================================================ +# 生产环境配置 +# ================================================================ +# Maven 打包:mvn clean package -P prod +# 生成产物:target/supportbot-prod.jar +# +# ⚠️ 请将下方「PROD_HOST / PROD_PORT / PROD_DB / PROD_USER / PROD_PASSWORD」 +# 替换为真实的生产环境数据库连接信息后再打包。 +# 建议通过 JVM 启动参数或环境变量覆盖敏感信息,例如: +# java -jar supportbot-prod.jar \ +# --spring.datasource.url=jdbc:postgresql://实际地址:5432/support_bot \ +# --spring.datasource.username=实际账号 \ +# --spring.datasource.password=实际密码 +# ================================================================ + +server: + port: 9090 + +spring: + datasource: + url: jdbc:postgresql://192.168.1.220:5432/support_bot + username: admin + password: cdw147258369 + sql: + init: + mode: never + schema-locations: classpath:support-bot.sql + continue-on-error: true + +# ==================== Knife4j 开关 ==================== +# 生产环境建议关闭 API 文档入口 +knife4j: + enable: false + +# ==================== 日志级别 ==================== +# 生产环境收敛日志,仅保留 WARN 及以上,业务代码保留 INFO +logging: + level: + root: WARN + com.wok.supportbot: INFO + org.springframework.ai: WARN diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 77d74aa..c4f302e 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -1,38 +1,38 @@ # ================================================================ -# Support Bot - AI智能客服系统 配置文件 +# Support Bot - AI智能客服系统 通用配置 +# ================================================================ +# 本文件仅保留所有环境共享的通用配置。 +# 环境差异化的配置(端口、数据库连接、日志级别、API 文档开关等) +# 已拆分到 application-dev.yml / application-test.yml / application-prod.yml。 +# 打包时通过 Maven Profile 选择目标环境:mvn clean package -P test / -P prod # ================================================================ -# ==================== 服务端口 ==================== -server: - port: 9090 - -# ==================== Spring AI Alibaba DashScope 配置 ==================== -# 注意: 需要替换为你的阿里云 DashScope API Key -# 获取地址: https://dashscope.console.aliyun.com/ -# 模型名称、温度等参数已迁移到前端「AI 大模型配置管理」页面,在 ai_model_config 表中管理 spring: + # ==================== Profile 激活(由 Maven 替换) ==================== + # 打包时 Maven 会将 @profiles.active@ 替换为 dev/test/prod + # 本地 IDE 直接运行时可在此处手动指定,或通过 --spring.profiles.active=dev 传入 + profiles: + active: @profiles.active@ + + # ==================== Spring AI Alibaba DashScope 配置 ==================== + # 模型名称、温度、API Key 等参数已迁移到前端「AI 大模型配置管理」页面管理 ai: dashscope: - api-key: sk-ws-H.RPMIMYH.G2gK.MEQCIFQ2aUocl1x5Q8sod1UgcBy0DzC5aJda5J-14thyXERBAiBYwX1k-7lWbEWYPnnDmJ9UV11uxLa13czU4hMMWJzi3A + # 关闭 DashScope 自动配置:所有 ChatModel/EmbeddingModel 由 + # ChatModelFactory / EmbeddingModelFactory 按 DB(ai_model_config 表) 手动构建 + enabled: false - # ==================== 数据源配置(PostgreSQL + PGVector) ==================== + # ==================== 连接池通用配置 ==================== + # 具体的数据源 url/username/password 在各环境 yml 中配置 datasource: driver-class-name: org.postgresql.Driver - url: jdbc:postgresql://192.168.1.18:5432/support_bot - username: postgres - password: supportbot123 hikari: maximum-pool-size: 10 minimum-idle: 5 idle-timeout: 300000 connection-timeout: 20000 - # ==================== SQL 初始化(首次启动可开启,后续建议关闭) ==================== - sql: - init: - mode: never - schema-locations: classpath:support-bot.sql - continue-on-error: true + # ==================== 文件上传大小限制 ==================== servlet: multipart: max-file-size: 50MB @@ -40,22 +40,16 @@ spring: # ==================== MyBatis Plus 配置 ==================== mybatis-plus: - # 实体类扫描包路径 type-aliases-package: com.wok.supportbot.entity - # Mapper XML 文件位置 mapper-locations: classpath*:mapper/**/*.xml configuration: - # 日志输出 log-impl: org.apache.ibatis.logging.stdout.StdOutImpl - # 下划线转驼峰 map-underscore-to-camel-case: true global-config: db-config: - # 逻辑删除字段 logic-delete-field: isDelete logic-delete-value: true logic-not-delete-value: false - # 主键类型 id-type: assign_id # ==================== 知识库文档处理配置 ==================== @@ -67,15 +61,15 @@ knowledge: max-num-chunks: 5000 keep-separator: true vector: - # 向量维度,需与 Embedding 模型输出维度一致。 + # 向量维度,需与 Embedding 模型输出维度一致 # 千问 text-embedding-v2: 1536 | 豆包 doubao-embedding-text-240515: 2048 | OpenAI text-embedding-3-small: 1536 - # 修改此值后需重建 vector_store 表(PG 不支持直接修改 vector 列维度) dimension: 1536 role: - # 严格隔离:true=角色未绑定知识库分类时禁止检索任何内容;false(默认)=可检索全部知识库 + # 严格隔离:true=角色未绑定知识库分类时禁止检索任何内容;false=可检索全部知识库 strict-isolation: false -# ==================== Knife4j API 文档配置 ==================== +# ==================== Knife4j API 文档通用配置 ==================== +# knife4j.enable 开关在各环境 yml 中配置(生产环境建议关闭) springdoc: swagger-ui: path: /swagger-ui.html @@ -89,15 +83,12 @@ springdoc: packages-to-scan: com.wok.supportbot.controller knife4j: - enable: true setting: language: zh_cn swagger-model-name: 实体类列表 +# ==================== 日志输出格式(通用) ==================== +# 具体的 logging.level 在各环境 yml 中配置 logging: - level: - root: INFO - com.wok.supportbot: DEBUG - org.springframework.ai: INFO pattern: console: "%d{yyyy-MM-dd HH:mm:ss} [%thread] %-5level %logger{36} - %msg%n" diff --git a/src/main/resources/static/components/ModelConfigManager.js b/src/main/resources/static/components/ModelConfigManager.js index 88a77b2..265b254 100644 --- a/src/main/resources/static/components/ModelConfigManager.js +++ b/src/main/resources/static/components/ModelConfigManager.js @@ -27,47 +27,62 @@ const PROVIDER_OPTIONS = [ ] // 提供商默认配置(切换时自动填充) +// chatModels / embeddingModels 按 app_type 分别展示,models 作为向后兼容兜底 const PROVIDER_DEFAULTS = { dashscope: { baseUrl: '', - models: ['qwen-turbo', 'qwen-plus', 'qwen-max', 'qwen-long', 'text-embedding-v2'], - defaultModel: 'qwen-turbo', + chatModels: ['qwen-turbo', 'qwen-plus', 'qwen-max', 'qwen-long'], + embeddingModels: ['text-embedding-v2'], + defaultChatModel: 'qwen-turbo', + defaultEmbeddingModel: 'text-embedding-v2', tip: '通义千问使用 DashScope 自动配置,Base URL 留空即可' }, deepseek: { baseUrl: 'https://api.deepseek.com', - models: ['deepseek-chat', 'deepseek-reasoner'], - defaultModel: 'deepseek-chat', + chatModels: ['deepseek-chat', 'deepseek-reasoner'], + embeddingModels: [], + defaultChatModel: 'deepseek-chat', + defaultEmbeddingModel: '', tip: '' }, volcengine: { baseUrl: 'https://ark.cn-beijing.volces.com/api/v3', - models: ['doubao-embedding-text-240515', 'doubao-embedding-large', 'doubao-embedding-vision-251215'], - defaultModel: 'doubao-embedding-text-240515', - tip: '豆包文本向量化推荐 doubao-embedding-text-240515(2048维)或 doubao-embedding-large(4096维);多模态推荐 doubao-embedding-vision-251215。注意维度需与前端配置的向量维度一致' + chatModels: ['doubao-1-5-pro-32k', 'doubao-1-5-lite-32k', 'doubao-pro-32k', 'doubao-1-5-thinking-pro', 'doubao-seed-1.6'], + embeddingModels: ['doubao-embedding-text-240515', 'doubao-embedding-large', 'doubao-embedding-vision-251215'], + defaultChatModel: 'doubao-1-5-pro-32k', + defaultEmbeddingModel: 'doubao-embedding-text-240515', + tip: '豆包对话推荐 doubao-1-5-pro-32k;向量化推荐 doubao-embedding-text-240515(2048维)。模型名称可在火山引擎 ARK 控制台获取' }, moonshot: { baseUrl: 'https://api.moonshot.cn/v1', - models: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k'], - defaultModel: 'moonshot-v1-8k', + chatModels: ['moonshot-v1-8k', 'moonshot-v1-32k', 'moonshot-v1-128k'], + embeddingModels: [], + defaultChatModel: 'moonshot-v1-8k', + defaultEmbeddingModel: '', tip: '' }, zhipu: { baseUrl: 'https://open.bigmodel.cn/api/paas/v4', - models: ['glm-4-plus', 'glm-4-flash', 'glm-4-long', 'glm-4'], - defaultModel: 'glm-4-flash', + chatModels: ['glm-4-plus', 'glm-4-flash', 'glm-4-long', 'glm-4'], + embeddingModels: [], + defaultChatModel: 'glm-4-flash', + defaultEmbeddingModel: '', tip: '' }, openai: { baseUrl: 'https://api.openai.com', - models: ['gpt-4o', 'gpt-4o-mini', 'gpt-3.5-turbo'], - defaultModel: 'gpt-4o-mini', + chatModels: ['gpt-4o', 'gpt-4o-mini', 'gpt-3.5-turbo'], + embeddingModels: ['text-embedding-3-small', 'text-embedding-3-large', 'text-embedding-ada-002'], + defaultChatModel: 'gpt-4o-mini', + defaultEmbeddingModel: 'text-embedding-3-small', tip: '' }, other: { baseUrl: '', - models: [], - defaultModel: '', + chatModels: [], + embeddingModels: [], + defaultChatModel: '', + defaultEmbeddingModel: '', tip: '使用 OpenAI 兼容 API 的其他提供商,请填写 Base URL 和模型名称' } } @@ -301,27 +316,38 @@ export default { } } - // 提供商切换时自动填充 + // 提供商切换时自动填充(按 app_type 区分对话/向量模型) function onProviderChange() { const provider = editModal.value.form.provider const defaults = PROVIDER_DEFAULTS[provider] || PROVIDER_DEFAULTS.other + const isEmbedding = editModal.value.form.app_type === 'EMBEDDING' // 自动填充 Base URL editModal.value.form.base_url = defaults.baseUrl - // 自动填充模型名称(仅新建模式且模型名为空时) + // 按 app_type 选择模型列表和默认模型 + const models = isEmbedding ? (defaults.embeddingModels || []) : (defaults.chatModels || []) + const defaultModel = isEmbedding ? (defaults.defaultEmbeddingModel || '') : (defaults.defaultChatModel || '') + + // 仅新建模式且模型名为空时自动填充默认模型 if (editModal.value.mode === 'add' && !editModal.value.form.model_name) { - editModal.value.form.model_name = defaults.defaultModel + editModal.value.form.model_name = defaultModel } - // 更新模型列表和提示 - currentProviderModels.value = defaults.models || [] - currentProviderDefaultModel.value = defaults.defaultModel || '' + currentProviderModels.value = models + currentProviderDefaultModel.value = defaultModel providerTip.value = defaults.tip || '' providerBaseUrlPlaceholder.value = defaults.baseUrl || '私有化部署时可填写自定义地址' customModelName.value = '' } + // 监听 app_type 变化,刷新模型列表 + watch(() => editModal.value.form.app_type, () => { + if (editModal.value.visible) { + onProviderChange() + } + }) + // 监听自定义模型名输入 watch(customModelName, (val) => { if (editModal.value.form.model_name === '__custom__' && val) { diff --git a/src/main/resources/static/sdk/chatbot-sdk.js b/src/main/resources/static/sdk/chatbot-sdk.js index 3128017..5869ef4 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.js +++ b/src/main/resources/static/sdk/chatbot-sdk.js @@ -91,7 +91,7 @@ var ChatbotSDK = (function () { * 解析并校验用户传入的配置,填充默认值 */ function parseConfig(raw) { - var _a, _b, _c, _d, _e, _f; + var _a, _b, _c, _d, _e, _f, _g; // 校验必传参数:integrateId(对应后端 roleId) if (!raw.integrateId || (typeof raw.integrateId !== 'string' && typeof raw.integrateId !== 'number') || (typeof raw.integrateId === 'string' && raw.integrateId.trim() === '')) { @@ -107,7 +107,7 @@ var ChatbotSDK = (function () { try { new URL(raw.requestDomain); } - catch (_g) { + catch (_h) { logger.error(`requestDomain 不是合法的 URL 格式:${raw.requestDomain}。请提供完整的域名,如 https://api.example.com`); return null; } @@ -127,9 +127,15 @@ var ChatbotSDK = (function () { launcherIcon: raw.launcherIcon || DEFAULT_LAUNCHER_ICON, showClear: (_c = raw.showClear) !== null && _c !== void 0 ? _c : true, showAdminPanel: (_d = raw.showAdminPanel) !== null && _d !== void 0 ? _d : false, - streaming: (_e = raw.streaming) !== null && _e !== void 0 ? _e : true, + quickReplies: Array.isArray(raw.quickReplies) + ? raw.quickReplies.map(s => String(s).trim()).filter(Boolean) + : [], + theme: raw.theme === 'dark' ? 'dark' : 'light', + showTeaser: (_e = raw.showTeaser) !== null && _e !== void 0 ? _e : true, + teaserText: (typeof raw.teaserText === 'string' && raw.teaserText.trim()) || '', + streaming: (_f = raw.streaming) !== null && _f !== void 0 ? _f : true, locale: raw.locale || 'zh-CN', - debug: (_f = raw.debug) !== null && _f !== void 0 ? _f : true, + debug: (_g = raw.debug) !== null && _g !== void 0 ? _g : true, chatId: '', // 初始为空,由 chatId 初始化流程填充 }; logger.info(`配置解析完成 integrateId(=roleId)=${config.integrateId} userId(=accountId)=${config.userId || '(未设置)'} requestDomain=${config.requestDomain}`); @@ -153,6 +159,13 @@ var ChatbotSDK = (function () { // 输入区 placeholder: '输入您的问题...', send: '发送', + stop: '停止生成', + new_message: '新消息', + // 消息操作 + copy: '复制', + copied: '已复制', + retry: '重新生成', + retrying: '重新生成中...', // 消息 loading: '正在思考...', stream_interrupted: '回复被中断', @@ -174,6 +187,13 @@ var ChatbotSDK = (function () { history_delete_confirm: '确定删除该会话?', history_export: '导出', history_delete: '删除', + history_search: '搜索会话...', + // 消息反馈 + feedback_up: '有帮助', + feedback_down: '没帮助', + // 提示气泡 + teaser_text: '有什么可以帮你的吗?', + new_msg_announce: '收到新消息', // 错误提示 error_network: '网络连接失败,请检查网络', error_timeout: '请求超时,请稍后重试', @@ -200,6 +220,13 @@ var ChatbotSDK = (function () { // Input placeholder: 'Type your question...', send: 'Send', + stop: 'Stop generating', + new_message: 'New message', + // Message actions + copy: 'Copy', + copied: 'Copied', + retry: 'Regenerate', + retrying: 'Regenerating...', // Messages loading: 'Thinking...', stream_interrupted: 'Response interrupted', @@ -221,6 +248,13 @@ var ChatbotSDK = (function () { history_delete_confirm: 'Delete this conversation?', history_export: 'Export', history_delete: 'Delete', + history_search: 'Search conversations...', + // Feedback + feedback_up: 'Helpful', + feedback_down: 'Not helpful', + // Teaser + teaser_text: 'How can I help you?', + new_msg_announce: 'New message received', // Errors error_network: 'Network connection failed', error_timeout: 'Request timed out, please try again', @@ -364,15 +398,28 @@ var ChatbotSDK = (function () { return buildUrl(`/ai/assistant_app/rag/sources?${params.toString()}`); } // ==================== HTTP 基础封装 ==================== - /** 带超时的 fetch 封装 */ - async function safeFetch(url, options = {}, timeout = REQUEST_TIMEOUT) { + /** 带超时的 fetch 封装,支持外部 AbortSignal(用于流式主动中断) */ + async function safeFetch(url, options = {}, timeout = REQUEST_TIMEOUT, externalSignal) { const controller = new AbortController(); const timer = setTimeout(() => controller.abort(), timeout); + // 外部信号触发时同步中断内部请求 + if (externalSignal) { + if (externalSignal.aborted) { + controller.abort(); + } + else { + externalSignal.addEventListener('abort', () => controller.abort(), { once: true }); + } + } try { const response = await fetch(url, Object.assign(Object.assign({}, options), { signal: controller.signal, mode: 'cors', credentials: 'include' })); return response; } catch (err) { + // 用户主动中断(停止生成),不算错误 + if (externalSignal === null || externalSignal === void 0 ? void 0 : externalSignal.aborted) { + throw new CskError('aborted', 'aborted'); + } if (err instanceof DOMException && err.name === 'AbortError') { throw new CskError(t('error_timeout'), 'timeout'); } @@ -436,7 +483,7 @@ var ChatbotSDK = (function () { * @param useRag 是否使用 RAG 增强对话 * @param categoryId 知识库分类 ID */ - async function chatSSERequest(message, onChunk, onDone, onError, categoryId, useRag) { + async function chatSSERequest(message, onChunk, onDone, onError, categoryId, useRag, signal) { var _a; const url = useRag ? buildChatRAGSSEUrl(message, categoryId) @@ -444,7 +491,7 @@ var ChatbotSDK = (function () { let totalText = ''; logger.lifecycleSend(currentConfig.integrateId, message.length); try { - const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2); + const response = await safeFetch(url, {}, REQUEST_TIMEOUT * 2, signal); if (!response.ok) { const errorMsg = getHttpErrorMessage(response.status); logger.lifecycleError(currentConfig.integrateId, String(response.status), errorMsg); @@ -502,7 +549,11 @@ var ChatbotSDK = (function () { } } catch (readErr) { - if (totalText.length > 0) { + // 用户主动中断:视为正常结束,保留已生成内容 + if (signal === null || signal === void 0 ? void 0 : signal.aborted) { + logger.info(`流式被用户中断,保留已生成内容 length=${totalText.length}`); + } + else if (totalText.length > 0) { onChunk('\n\n' + t('stream_unstable')); } else { @@ -516,6 +567,11 @@ var ChatbotSDK = (function () { onDone(); } catch (err) { + // 用户主动中断不触发 onError,走 onDone + if ((signal === null || signal === void 0 ? void 0 : signal.aborted) || (err instanceof CskError && err.type === 'aborted')) { + onDone(); + return; + } if (err instanceof CskError) { onError(err); } @@ -1169,6 +1225,7 @@ var ChatbotSDK = (function () { color: #1F2937; } .csk-input::placeholder { color: #9CA3AF; } +.csk-root .csk-input:focus-visible { outline: none; } .csk-send-btn { display: flex; align-items: center; @@ -1540,6 +1597,355 @@ var ChatbotSDK = (function () { } .csk-history-panel__loadmore:hover { background: #F3F4F6; } +/* ========== 快捷问题芯片 ========== */ +.csk-quick-replies { + display: flex; + flex-wrap: wrap; + gap: 8px; + justify-content: center; + margin-top: 18px; + max-width: 320px; +} +.csk-quick-reply { + border: 1px solid var(--csk-border); + background: #fff; + color: #374151; + font-size: 12.5px; + padding: 7px 13px; + border-radius: 999px; + cursor: pointer; + font-family: inherit; + line-height: 1.3; + transition: all 0.18s ease; + max-width: 100%; +} +.csk-quick-reply:hover { + border-color: var(--csk-primary); + color: var(--csk-primary); + background: rgba(var(--csk-primary-rgb), 0.06); + transform: translateY(-1px); +} +.csk-quick-reply:active { transform: scale(0.96); } + +/* ========== AI 消息操作条 ========== */ +.csk-msg__actions { + display: flex; + gap: 2px; + margin-top: 5px; + padding: 0 2px; + opacity: 0; + transition: opacity 0.15s ease; +} +.csk-msg--ai:hover .csk-msg__actions { opacity: 1; } +.csk-msg--streaming .csk-msg__actions { display: none; } +.csk-action-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: transparent; + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; +} +.csk-action-btn:hover { + background: #F3F4F6; + color: #374151; +} +.csk-action-btn--done { color: #10B981; } +.csk-action-btn:active { transform: scale(0.9); } + +/* ========== 流式打字光标 ========== */ +.csk-caret { + display: inline-block; + width: 7px; + height: 15px; + margin-left: 2px; + vertical-align: text-bottom; + background: var(--csk-primary); + border-radius: 1px; + animation: csk-caret-blink 1s step-end infinite; +} +@keyframes csk-caret-blink { + 0%, 50% { opacity: 1; } + 51%, 100% { opacity: 0; } +} + +/* ========== 代码块复制按钮 ========== */ +.csk-md-code-block { position: relative; } +.csk-md-code-copy { + position: absolute; + top: 8px; + right: 8px; + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(255, 255, 255, 0.12); + color: #CBD5E1; + border-radius: 6px; + cursor: pointer; + opacity: 0; + transition: all 0.15s ease; +} +.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; } +.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; } +.csk-md-code-copy:active { transform: scale(0.9); } + +/* ========== 新消息提示按钮 ========== */ +.csk-newmsg { + position: absolute; + bottom: 82px; + left: 50%; + transform: translateX(-50%); + z-index: 5; + display: inline-flex; + align-items: center; + gap: 5px; + padding: 7px 14px; + border: none; + background: var(--csk-primary); + color: #fff; + font-size: 12px; + font-family: inherit; + border-radius: 999px; + cursor: pointer; + box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38); + transition: transform 0.2s ease, box-shadow 0.2s ease; + animation: csk-msg-in 0.25s ease; + white-space: nowrap; +} +.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); } +.csk-newmsg:active { transform: translateX(-50%) scale(0.95); } +.csk-newmsg--hidden { display: none; } + +/* ========== 发送按钮停止态 ========== */ +.csk-send-btn--stop { + background: #EF4444 !important; + box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important; +} +.csk-send-btn--stop:hover:not(:disabled) { + box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important; +} + +/* ========== 暗色模式 ========== */ +.csk-root.csk-dark { + --csk-bg-ai: #1E1E2E; + --csk-text-ai: #E2E8F0; + --csk-border: #3B3B52; + --csk-bg-app: #141421; + color: #E2E8F0; +} +.csk-dark .csk-window { + background: #1A1A2E; + box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2); +} +.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); } +.csk-dark .csk-msg__avatar--ai { + background: var(--csk-bg-ai); + color: var(--csk-primary); + border-color: var(--csk-border); +} +.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); } +.csk-dark .csk-input { color: #E2E8F0; } +.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); } +.csk-dark .csk-loading__dot { background: #6B7280; } +.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); } +.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); } +.csk-dark .csk-sources__header { background: #25253A; } +.csk-dark .csk-sources__header:hover { background: #2D2D48; } +.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); } +.csk-dark .csk-source-item__name { color: #E2E8F0; } +.csk-dark .csk-source-item__meta { color: #6B7280; } +.csk-dark .csk-history-panel { background: #1A1A2E; } +.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); } +.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; } +.csk-dark .csk-history-panel__back:hover { background: #2D2D48; } +.csk-dark .csk-history-item:hover { background: #25253A; } +.csk-dark .csk-history-item__id { color: #E2E8F0; } +.csk-dark .csk-history-item__meta { color: #6B7280; } +.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); } +.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); } +.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; } +.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; } +.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; } +.csk-dark .csk-md-code-block { background: #0F0F1A; } +.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); } +.csk-dark .csk-md-link { color: var(--csk-primary-light); } +.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); } +.csk-dark .csk-welcome__title { color: #E2E8F0; } +.csk-dark .csk-welcome__desc { color: #6B7280; } +.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; } +.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); } +.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); } +.csk-dark .csk-teaser::after { border-top-color: #2D2D48; } +.csk-dark .csk-teaser__close { color: #6B7280; } +.csk-dark .csk-teaser__close:hover { color: #9CA3AF; } +.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; } +.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); } +.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); } +.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); } +.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); } +.csk-dark .csk-history-panel__search { color: #E2E8F0; } +.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; } +.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); } +.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); } + +/* ========== Launcher 未读徽章 ========== */ +.csk-launcher__badge { + position: absolute; + top: -3px; + right: -3px; + width: 16px; + height: 16px; + border-radius: 50%; + background: #EF4444; + border: 2px solid #fff; + box-shadow: 0 0 0 2px #fff; + animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1); + pointer-events: none; +} +.csk-launcher__badge--hidden { display: none; } +@keyframes csk-badge-in { + from { transform: scale(0); } + to { transform: scale(1); } +} + +/* ========== Launcher 提示气泡 ========== */ +.csk-teaser { + position: fixed; + bottom: 90px; + z-index: 9997; + max-width: 240px; + padding: 10px 14px; + background: #fff; + color: #1F2937; + font-size: 13px; + line-height: 1.5; + border-radius: 12px; + box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15); + animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1); + cursor: pointer; + user-select: none; +} +.csk-teaser--right { right: 24px; } +.csk-teaser--left { left: 24px; } +.csk-teaser::after { + content: ''; + position: absolute; + bottom: -6px; + right: 28px; + width: 12px; + height: 12px; + background: inherit; + border-radius: 2px; + transform: rotate(45deg); + box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08); +} +.csk-teaser--left::after { right: auto; left: 28px; } +.csk-teaser__close { + position: absolute; + top: 4px; + right: 6px; + background: none; + border: none; + font-size: 16px; + color: #9CA3AF; + cursor: pointer; + padding: 2px 4px; + line-height: 1; + border-radius: 4px; +} +.csk-teaser__close:hover { color: #374151; } +.csk-teaser--hidden { display: none; } +@keyframes csk-teaser-in { + from { opacity: 0; transform: translateY(8px) scale(0.95); } + to { opacity: 1; transform: translateY(0) scale(1); } +} + +/* ========== 消息反馈按钮(👍 / 👎) ========== */ +.csk-feedback-btn { + display: flex; + align-items: center; + justify-content: center; + width: 26px; + height: 26px; + border: none; + background: rgba(var(--csk-primary-rgb), 0.08); + color: #9CA3AF; + border-radius: 6px; + cursor: pointer; + transition: all 0.15s ease; + padding: 0; +} +.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); } +.csk-feedback-btn--active { + background: rgba(var(--csk-primary-rgb), 0.28); + color: var(--csk-primary); +} +.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; } +.csk-feedback-btn:active { transform: scale(0.9); } +.csk-msg--streaming .csk-feedback-btn { display: none; } + +/* ========== 历史会话搜索框 ========== */ +.csk-history-panel__search-wrap { + padding: 8px 10px; + border-bottom: 1px solid var(--csk-border); + flex-shrink: 0; +} +.csk-history-panel__search-wrap:focus-within { + border-bottom-color: var(--csk-primary); +} +.csk-history-panel__search { + width: 100%; + padding: 7px 10px; + border: 1px solid var(--csk-border); + border-radius: 8px; + font-size: 12.5px; + font-family: inherit; + color: #1F2937; + background: var(--csk-bg-app); + outline: none; + transition: border-color 0.2s; +} +.csk-history-panel__search:focus { border-color: var(--csk-primary); } +.csk-history-panel__search::placeholder { color: #9CA3AF; } + +/* ========== a11y 焦点指示 ========== */ +.csk-root :focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; +} +.csk-root button:focus-visible { + outline: 2px solid var(--csk-primary); + outline-offset: 2px; + border-radius: inherit; +} +/* 弹窗打开时隐藏 launcher 上的焦点环 */ +.csk-launcher:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.4); } + +/* ========== a11y aria-live 播报区(视觉隐藏) ========== */ +.csk-sr-only { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0,0,0,0) !important; + white-space: nowrap !important; + border: 0 !important; +} + /* ========== 移动端适配 ========== */ @media (max-width: 480px) { .csk-window { @@ -1644,6 +2050,10 @@ var ChatbotSDK = (function () { launcher.setAttribute('tabindex', '0'); // 图标内容 launcher.innerHTML = config.launcherIcon; + // 未读徽章(初始隐藏,有未读消息时由 index.ts 显示) + const badge = document.createElement('div'); + badge.className = 'csk-launcher__badge csk-launcher__badge--hidden'; + launcher.appendChild(badge); // 点击事件(300ms 防抖) const debouncedClick = debounce(onClick, 300); launcher.addEventListener('click', debouncedClick); @@ -1662,7 +2072,10 @@ var ChatbotSDK = (function () { // 最外层容器 const windowEl = document.createElement('div'); windowEl.id = 'csk-window'; - windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden`; + windowEl.className = `csk-root csk-window csk-window--${config.position === 'left-bottom' ? 'left' : 'right'} csk-window--hidden${config.theme === 'dark' ? ' csk-dark' : ''}`; + windowEl.setAttribute('role', 'dialog'); + windowEl.setAttribute('aria-label', config.title); + windowEl.setAttribute('aria-modal', 'false'); // === 头部 === const header = document.createElement('div'); header.className = 'csk-header'; @@ -1723,7 +2136,33 @@ var ChatbotSDK = (function () {
${t('welcome_title')}
${t('welcome_desc')}
`; + // 快捷问题芯片(点击即自动发送) + if (config.quickReplies.length > 0) { + const chips = document.createElement('div'); + chips.className = 'csk-quick-replies'; + for (const reply of config.quickReplies) { + const chip = document.createElement('button'); + chip.type = 'button'; + chip.className = 'csk-quick-reply'; + chip.textContent = reply; + chip.addEventListener('click', () => { + windowEl.dispatchEvent(new CustomEvent('csk:quickReply', { detail: { text: reply } })); + }); + chips.appendChild(chip); + } + welcomeEl.appendChild(chips); + } messagesContainer.appendChild(welcomeEl); + // === 新消息提示按钮(用户上滑时新消息到达显示) === + // 挂到 windowEl 而非 messagesContainer,绝对定位悬浮于输入区上方,避免随内容滚动 + const newMsgBtn = document.createElement('button'); + newMsgBtn.type = 'button'; + newMsgBtn.className = 'csk-newmsg csk-newmsg--hidden'; + newMsgBtn.innerHTML = ` + + ${t('new_message')} + `; + windowEl.appendChild(newMsgBtn); // === 会话管理面板(P2,默认隐藏) === const historyPanel = document.createElement('div'); historyPanel.className = 'csk-history-panel csk-history-panel--hidden'; @@ -1735,6 +2174,9 @@ var ChatbotSDK = (function () { ${t('close')} +
+ +
`; messagesContainer.appendChild(historyPanel); @@ -1843,6 +2285,22 @@ var ChatbotSDK = (function () { loadingEl = null; } } + // === a11y: aria-live 播报区域(视觉隐藏,供屏幕阅读器监听新消息) === + const ariaLiveEl = document.createElement('div'); + ariaLiveEl.className = 'csk-sr-only'; + ariaLiveEl.setAttribute('aria-live', 'polite'); + ariaLiveEl.setAttribute('aria-atomic', 'true'); + windowEl.appendChild(ariaLiveEl); + // === 历史搜索输入框引用 === + const searchInput = historyPanel.querySelector('#csk-history-search'); + // === Launcher 提示气泡(首访引导,初始隐藏,由 index.ts 定时控制) === + const teaserEl = document.createElement('div'); + teaserEl.className = `csk-teaser csk-teaser--${config.position === 'left-bottom' ? 'left' : 'right'} csk-teaser--hidden`; + teaserEl.setAttribute('role', 'status'); + teaserEl.innerHTML = ` + + ${config.teaserText || t('teaser_text')} + `; return { window: windowEl, messagesContainer, @@ -1852,6 +2310,10 @@ var ChatbotSDK = (function () { categorySelect, historyPanel, welcomeEl, + newMsgBtn, + teaserEl, + searchInput, + ariaLiveEl, showLoading, hideLoading, }; @@ -1928,9 +2390,11 @@ var ChatbotSDK = (function () { return wrapper; } /** 渲染 AI 消息气泡(支持 Markdown) */ - function renderAIBubble(container, text, timestamp, renderMd) { + function renderAIBubble(container, text, timestamp, renderMd, msgId) { const wrapper = document.createElement('div'); wrapper.className = 'csk-msg csk-msg--ai'; + if (msgId) + wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; avatar.innerHTML = BOT_ICON; @@ -1949,16 +2413,22 @@ var ChatbotSDK = (function () { time.className = 'csk-msg__time'; time.textContent = formatTime(timestamp); content.appendChild(bubble); + // AI 操作条(复制 / 重试),插入到气泡与时间戳之间 + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); container.appendChild(wrapper); + // 代码块复制按钮 + enhanceCodeBlocks(bubble); return wrapper; } /** 创建空的 AI 气泡(流式追加用) */ - function createEmptyAIBubble(container, timestamp) { + function createEmptyAIBubble(container, timestamp, msgId) { const wrapper = document.createElement('div'); - wrapper.className = 'csk-msg csk-msg--ai'; + wrapper.className = 'csk-msg csk-msg--ai csk-msg--streaming'; + if (msgId) + wrapper.dataset.cskMsgId = msgId; const avatar = document.createElement('div'); avatar.className = 'csk-msg__avatar csk-msg__avatar--ai'; avatar.innerHTML = BOT_ICON; @@ -1971,12 +2441,170 @@ var ChatbotSDK = (function () { time.className = 'csk-msg__time'; time.textContent = formatTime(timestamp); content.appendChild(bubble); + content.appendChild(buildAIActions(bubble, wrapper)); content.appendChild(time); wrapper.appendChild(avatar); wrapper.appendChild(content); container.appendChild(wrapper); return { wrapper, bubble }; } + // ==================== AI 消息操作条 + 代码块复制 ==================== + /** 复制图标 */ + const COPY_ICON = ``; + /** 重试图标 */ + const RETRY_ICON = ``; + /** 构建 AI 消息操作条(复制 / 重试 / 反馈) */ + function buildAIActions(bubble, wrapper) { + const bar = document.createElement('div'); + bar.className = 'csk-msg__actions'; + // 复制按钮 + const copyBtn = document.createElement('button'); + copyBtn.type = 'button'; + copyBtn.className = 'csk-action-btn'; + copyBtn.setAttribute('title', t('copy')); + copyBtn.setAttribute('aria-label', t('copy')); + copyBtn.innerHTML = COPY_ICON; + copyBtn.addEventListener('click', async (e) => { + e.stopPropagation(); + const text = bubble.textContent || ''; + await copyToClipboard(text, copyBtn); + }); + // 重试按钮 + const retryBtn = document.createElement('button'); + retryBtn.type = 'button'; + retryBtn.className = 'csk-action-btn'; + retryBtn.setAttribute('title', t('retry')); + retryBtn.setAttribute('aria-label', t('retry')); + retryBtn.innerHTML = RETRY_ICON; + retryBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:retry', { + detail: { msgId: wrapper.dataset.cskMsgId || '' } + })); + } + }); + // 反馈按钮(👍 / 👎) + const THUMB_UP = ``; + const THUMB_DOWN = ``; + const upBtn = document.createElement('button'); + upBtn.type = 'button'; + upBtn.className = 'csk-feedback-btn'; + upBtn.setAttribute('title', t('feedback_up')); + upBtn.setAttribute('aria-label', t('feedback_up')); + upBtn.innerHTML = THUMB_UP; + upBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'up' } + })); + } + }); + const downBtn = document.createElement('button'); + downBtn.type = 'button'; + downBtn.className = 'csk-feedback-btn'; + downBtn.setAttribute('title', t('feedback_down')); + downBtn.setAttribute('aria-label', t('feedback_down')); + downBtn.innerHTML = THUMB_DOWN; + downBtn.addEventListener('click', (e) => { + e.stopPropagation(); + const root = wrapper.closest('.csk-window'); + if (root) { + root.dispatchEvent(new CustomEvent('csk:feedback', { + detail: { msgId: wrapper.dataset.cskMsgId || '', value: 'down' } + })); + } + }); + bar.appendChild(copyBtn); + bar.appendChild(retryBtn); + bar.appendChild(upBtn); + bar.appendChild(downBtn); + return bar; + } + /** + * 更新反馈按钮的视觉状态(由 chat.ts 调用) + * @param wrapper 消息 wrapper 元素 + * @param value 当前反馈值:'up' | 'down' | undefined + */ + function updateFeedbackUI(wrapper, value) { + const btns = wrapper.querySelectorAll('.csk-feedback-btn'); + if (btns.length < 2) + return; + btns.forEach((btn) => btn.classList.remove('csk-feedback-btn--active', 'down')); + if (value === 'up' && btns[0]) + btns[0].classList.add('csk-feedback-btn--active'); + if (value === 'down' && btns[1]) + btns[1].classList.add('csk-feedback-btn--active', 'down'); + } + /** 复制文本到剪贴板,带"已复制"反馈 */ + async function copyToClipboard(text, btn) { + const original = btn.innerHTML; + try { + if (navigator.clipboard && window.isSecureContext) { + await navigator.clipboard.writeText(text); + } + else { + // 降级方案:execCommand + const ta = document.createElement('textarea'); + ta.value = text; + ta.style.position = 'fixed'; + ta.style.opacity = '0'; + document.body.appendChild(ta); + ta.select(); + document.execCommand('copy'); + document.body.removeChild(ta); + } + btn.innerHTML = ``; + btn.classList.add('csk-action-btn--done'); + setTimeout(() => { + btn.innerHTML = original; + btn.classList.remove('csk-action-btn--done'); + }, 1500); + } + catch (_a) { + // 复制失败静默处理 + } + } + /** 为气泡内所有代码块添加复制按钮 */ + function enhanceCodeBlocks(bubble) { + const blocks = bubble.querySelectorAll('.csk-md-code-block'); + blocks.forEach((pre) => { + if (pre.querySelector('.csk-md-code-copy')) + return; + const codeEl = pre.querySelector('code'); + const btn = document.createElement('button'); + btn.type = 'button'; + btn.className = 'csk-md-code-copy'; + btn.setAttribute('title', t('copy')); + btn.setAttribute('aria-label', t('copy')); + btn.innerHTML = COPY_ICON; + btn.addEventListener('click', async (e) => { + e.stopPropagation(); + await copyToClipboard((codeEl === null || codeEl === void 0 ? void 0 : codeEl.textContent) || '', btn); + }); + pre.appendChild(btn); + }); + } + /** 流式打字光标:追加到气泡末尾(每次 chunk 后调用) */ + function appendStreamingCaret(bubble) { + if (bubble.querySelector('.csk-caret')) + return; + const caret = document.createElement('span'); + caret.className = 'csk-caret'; + caret.setAttribute('aria-hidden', 'true'); + bubble.appendChild(caret); + } + /** 标记 AI 气泡流式结束:移除流式态、补代码块复制按钮 */ + function finalizeAIBubble(wrapper, bubble) { + wrapper.classList.remove('csk-msg--streaming'); + const caret = bubble.querySelector('.csk-caret'); + if (caret) + caret.remove(); + enhanceCodeBlocks(bubble); + } // ==================== P1: RAG 引用来源渲染 ==================== /** 渲染 RAG 引用来源卡片 */ function renderSources(wrapper, sources) { @@ -2395,9 +3023,20 @@ var ChatbotSDK = (function () { let categorySelect$1 = null; let historyPanel$1 = null; let welcomeEl = null; + let newMsgBtn = null; + let searchInput = null; + let ariaLiveEl = null; let showLoadingFn$1 = null; let hideLoadingFn$1 = null; let isSending = false; + /** 当前流式请求的中断控制器(用于"停止生成") */ + let abortController = null; + /** 用户是否停留在底部附近(用于智能滚动 + 新消息提示) */ + let isNearBottom = true; + /** 缓存的历史会话列表(供搜索过滤用) */ + let historyItems = []; + /** 当前历史搜索关键字 */ + let historySearchText = ''; /** 当前选中的知识库分类 ID */ let currentCategoryId; /** 当前是否使用 RAG 对话 */ @@ -2415,6 +3054,9 @@ var ChatbotSDK = (function () { categorySelect$1 = dom.categorySelect; historyPanel$1 = dom.historyPanel; welcomeEl = dom.welcomeEl; + newMsgBtn = dom.newMsgBtn; + searchInput = dom.searchInput; + ariaLiveEl = dom.ariaLiveEl; showLoadingFn$1 = dom.showLoading; hideLoadingFn$1 = dom.hideLoading; // 初始化知识库分类 @@ -2422,6 +3064,10 @@ var ChatbotSDK = (function () { useRag = !!cfg.categoryId || !!cfg.showCategorySwitch; // 绑定发送事件 bindSendEvents(); + // 绑定滚动监听(智能滚动 + 新消息提示) + bindScrollEvents(); + // 绑定历史搜索过滤 + bindHistorySearch(); // 加载知识库分类下拉框 if (cfg.showCategorySwitch && categorySelect$1) { loadCategories(); @@ -2481,9 +3127,17 @@ var ChatbotSDK = (function () { function bindSendEvents() { if (!inputEl$1 || !sendBtn$1) return; - sendBtn$1.addEventListener('click', () => handleSend()); + // 发送按钮:发送态点击发送,停止态点击中断流式 + sendBtn$1.addEventListener('click', () => { + if (isSending && abortController) { + abortController.abort(); + return; + } + handleSend(); + }); inputEl$1.addEventListener('keydown', (e) => { - if (e.key === 'Enter' && !e.shiftKey) { + // IME 组合输入期间(中文/日文输入法选词回车)不触发发送 + if (e.key === 'Enter' && !e.shiftKey && !e.isComposing) { e.preventDefault(); handleSend(); } @@ -2505,7 +3159,143 @@ var ChatbotSDK = (function () { clearBtn$1.addEventListener('click', () => handleClear()); } } - /** 文本框自动撑高 */ + /** 绑定滚动监听:判断是否在底部,控制新消息提示按钮 */ + function bindScrollEvents() { + if (!messagesContainer$1) + return; + messagesContainer$1.addEventListener('scroll', () => { + if (!messagesContainer$1) + return; + const { scrollTop, scrollHeight, clientHeight } = messagesContainer$1; + // 距底部 80px 内视为"在底部" + isNearBottom = scrollHeight - scrollTop - clientHeight < 80; + if (isNearBottom) + hideNewMsgBtn(); + }); + // 新消息提示按钮点击 → 回到底部 + if (newMsgBtn) { + newMsgBtn.addEventListener('click', () => { + if (messagesContainer$1) + scrollToBottom(messagesContainer$1); + isNearBottom = true; + hideNewMsgBtn(); + }); + } + } + /** 显示新消息提示按钮 */ + function showNewMsgBtn() { + if (newMsgBtn) + newMsgBtn.classList.remove('csk-newmsg--hidden'); + } + /** 隐藏新消息提示按钮 */ + function hideNewMsgBtn() { + if (newMsgBtn) + newMsgBtn.classList.add('csk-newmsg--hidden'); + } + /** 智能滚动到底部:用户在底部时自动滚,上滑时显示新消息提示 */ + function smartScrollToBottom() { + if (!messagesContainer$1) + return; + if (isNearBottom) { + scrollToBottom(messagesContainer$1); + } + else { + showNewMsgBtn(); + } + } + /** 切换发送按钮模式:发送 / 停止生成 */ + function setSendButtonMode(mode) { + if (!sendBtn$1) + return; + if (mode === 'stop') { + sendBtn$1.classList.add('csk-send-btn--stop'); + sendBtn$1.removeAttribute('disabled'); + sendBtn$1.setAttribute('title', t('stop')); + sendBtn$1.setAttribute('aria-label', t('stop')); + sendBtn$1.innerHTML = ``; + } + else { + sendBtn$1.classList.remove('csk-send-btn--stop'); + sendBtn$1.setAttribute('title', t('send')); + sendBtn$1.setAttribute('aria-label', t('send')); + sendBtn$1.innerHTML = ``; + updateSendBtnState(); + } + } + // ==================== 历史会话搜索过滤 ==================== + /** 绑定历史搜索输入事件 */ + function bindHistorySearch() { + if (!searchInput) + return; + searchInput.addEventListener('input', () => { + historySearchText = searchInput.value.trim().toLowerCase(); + renderFilteredHistory(); + }); + } + /** 按搜索关键字过滤并重新渲染历史列表 */ + function renderFilteredHistory() { + const listEl = historyPanel$1 === null || historyPanel$1 === void 0 ? void 0 : historyPanel$1.querySelector('#csk-history-list'); + if (!listEl || !config$1) + return; + const filtered = historySearchText + ? historyItems.filter(item => { + const preview = (item.lastMessagePreview || item.chatId || item.id || '').toLowerCase(); + return preview.includes(historySearchText); + }) + : historyItems; + renderHistoryList(listEl, filtered, (conversationId) => { switchToConversation(conversationId); }, (id) => { window.open(getConversationExportUrl(id), '_blank'); }, async (id) => { + if (!confirm(t('history_delete_confirm'))) + return; + const ok = await deleteConversation(id); + if (ok) { + if (id === getChatId()) { + messages = []; + if (messagesContainer$1) { + messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); + } + if (clearBtn$1) + clearBtn$1.style.display = 'none'; + updateEmptyState(); + } + // 从缓存中移除并重新渲染 + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); + } + }, getChatId()); + } + // ==================== a11y 消息播报 ==================== + /** 通过 aria-live 区域播报新消息(供屏幕阅读器使用) */ + function announceMessage(text) { + if (!ariaLiveEl) + return; + // 截取前 120 字符,避免过长播报 + const snippet = text.length > 120 ? text.substring(0, 120) + '...' : text; + ariaLiveEl.textContent = t('new_msg_announce') + ':' + snippet; + } + // ==================== 消息反馈(👍 / 👎) ==================== + /** + * 处理消息反馈:切换 AI 消息的点赞/点踩状态 + * 当前仅前端状态持久化(存入 messages 数组 + localStorage), + * 预留后端对接位:TODO 接口 POST /conversation/message/feedback + */ + function handleFeedback(msgId, value) { + if (!messagesContainer$1) + return; + const msg = messages.find(m => m.id === msgId && m.role === 'ai'); + if (!msg) + return; + // 切换逻辑:同值取消,异值切换 + const newValue = msg.feedback === value ? undefined : value; + msg.feedback = newValue; + // 更新 DOM 状态 + const wrapper = messagesContainer$1.querySelector(`[data-csk-msg-id="${msgId}"]`); + if (wrapper) + updateFeedbackUI(wrapper, newValue); + // 持久化(localStorage) + if (config$1) + saveMessages(config$1.integrateId, messages); + logger.info(`消息反馈 msgId=${msgId} value=${newValue || 'cleared'}`); + } function autoResizeInput() { if (!inputEl$1) return; @@ -2542,52 +3332,68 @@ var ChatbotSDK = (function () { inputEl$1.value = ''; updateSendBtnState(); inputEl$1.style.height = 'auto'; - isSending = true; - updateSendBtnState(); - // 确保 chatId 已初始化 - if (!config$1.chatId) { - await initChatId(); - } // 1. 渲染用户气泡 const userTimestamp = now(); + const userMsg = { id: uuid(), role: 'user', content: text, timestamp: userTimestamp }; if (messagesContainer$1) renderUserBubble(messagesContainer$1, text, userTimestamp); - const userMsg = { id: uuid(), role: 'user', content: text, timestamp: userTimestamp }; messages.push(userMsg); updateEmptyState(); if (clearBtn$1 && messages.length > 0) clearBtn$1.style.display = 'inline-flex'; if (messagesContainer$1) - scrollToBottom(messagesContainer$1); - // 2. 显示 loading + smartScrollToBottom(); + // 2. 生成 AI 回复 + await produceAIReply(text); + } + /** + * 生成 AI 回复(发送请求 + 渲染气泡 + 持久化) + * 复用于:正常发送、重试。调用方负责先渲染用户气泡。 + */ + async function produceAIReply(userText) { + if (!config$1 || !messagesContainer$1) + return; + isSending = true; + setSendButtonMode('stop'); + // 确保 chatId 已初始化 + if (!config$1.chatId) { + await initChatId(); + } + const aiTimestamp = now(); + const shouldUseRag = useRag && (currentCategoryId !== undefined || config$1.categoryId !== undefined); + // 显示 loading if (showLoadingFn$1) showLoadingFn$1(); if (messagesContainer$1) - scrollToBottom(messagesContainer$1); - // 3. 发送请求 + smartScrollToBottom(); + const aiMsgId = uuid(); + let aiContent = ''; try { - let aiContent; - const aiTimestamp = now(); - const shouldUseRag = useRag && (currentCategoryId !== undefined || config$1.categoryId !== undefined); if (config$1.streaming) { - aiContent = await sendStreamMessage(text, aiTimestamp, shouldUseRag); + aiContent = await sendStreamMessage(userText, aiTimestamp, shouldUseRag, aiMsgId); } else { - aiContent = await chatRequest(text); - } - if (hideLoadingFn$1) - hideLoadingFn$1(); - if (!config$1.streaming && messagesContainer$1) { - renderAIBubble(messagesContainer$1, aiContent, aiTimestamp, renderMarkdown); + aiContent = await chatRequest(userText); + if (hideLoadingFn$1) + hideLoadingFn$1(); + if (messagesContainer$1) { + renderAIBubble(messagesContainer$1, aiContent, aiTimestamp, renderMarkdown, aiMsgId); + } } - const aiMsg = { id: uuid(), role: 'ai', content: aiContent, timestamp: aiTimestamp }; + const aiMsg = { id: aiMsgId, role: 'ai', content: aiContent, timestamp: aiTimestamp }; messages.push(aiMsg); saveMessages(config$1.integrateId, messages); if (messagesContainer$1) - scrollToBottom(messagesContainer$1); + smartScrollToBottom(); + // a11y 播报新 AI 消息 + announceMessage(aiContent); + // 通知 launcher 显示未读徽章(弹窗关闭时生效,由 index.ts 监听) + if (messagesContainer$1) { + messagesContainer$1.dispatchEvent(new CustomEvent('csk:newMessage', { bubbles: true })); + } // RAG 引用来源 if (shouldUseRag) - fetchAndRenderSources(text, aiMsg); + fetchAndRenderSources(userText, aiMsg); } catch (err) { if (hideLoadingFn$1) @@ -2607,13 +3413,19 @@ var ChatbotSDK = (function () { } finally { isSending = false; + abortController = null; + setSendButtonMode('send'); updateSendBtnState(); } } /** 流式发送消息 */ - async function sendStreamMessage(text, aiTimestamp, shouldUseRag) { + async function sendStreamMessage(text, aiTimestamp, shouldUseRag, aiMsgId) { + // 创建中断控制器,供"停止生成"使用 + abortController = new AbortController(); + const signal = abortController.signal; return new Promise((resolve, reject) => { let bubbleEl = null; + let wrapperEl = null; let accumulated = ''; let streamStarted = false; chatSSERequest(text, (chunk) => { @@ -2621,34 +3433,90 @@ var ChatbotSDK = (function () { if (!streamStarted && messagesContainer$1) { if (hideLoadingFn$1) hideLoadingFn$1(); - const { bubble } = createEmptyAIBubble(messagesContainer$1, aiTimestamp); + const { wrapper, bubble } = createEmptyAIBubble(messagesContainer$1, aiTimestamp, aiMsgId); + wrapperEl = wrapper; bubbleEl = bubble; streamStarted = true; } - if (bubbleEl) + if (bubbleEl) { bubbleEl.textContent = accumulated; + appendStreamingCaret(bubbleEl); + } if (messagesContainer$1) - scrollToBottom(messagesContainer$1); + smartScrollToBottom(); }, () => { - if (!streamStarted && accumulated === '') { - chatRequest(text).then(resolve).catch(reject); - return; + // 流结束 + if (wrapperEl && bubbleEl) { + // 无流内容降级为同步请求 + if (!streamStarted && accumulated === '') { + chatRequest(text).then(resolve).catch(reject); + return; + } + if (accumulated) + bubbleEl.innerHTML = renderMarkdown(accumulated); + finalizeAIBubble(wrapperEl, bubbleEl); } - if (bubbleEl && accumulated) - bubbleEl.innerHTML = renderMarkdown(accumulated); resolve(accumulated); }, (error) => { if (accumulated.length > 0) { - if (bubbleEl) + if (bubbleEl) { bubbleEl.innerHTML = renderMarkdown(accumulated + '\n\n' + t('stream_interrupted')); + if (wrapperEl) + finalizeAIBubble(wrapperEl, bubbleEl); + } resolve(accumulated); } else { reject(error); } - }, currentCategoryId, shouldUseRag); + }, currentCategoryId, shouldUseRag, signal); }); } + /** + * 快捷问题发送:欢迎态点击芯片,直接以该文本发送 + */ + function sendQuickReply(text) { + if (!inputEl$1 || isSending) + return Promise.resolve(); + inputEl$1.value = text; + updateSendBtnState(); + return handleSend(); + } + /** + * 重试:根据 AI 消息 ID 重新生成该回复 + * 找到该 AI 消息及其上一条用户消息,移除该 AI 消息(及之后的所有消息)后重新请求 + */ + async function retryFromMessage(msgId) { + if (!config$1 || !messagesContainer$1 || isSending) + return; + const aiIndex = messages.findIndex(m => m.id === msgId && m.role === 'ai'); + if (aiIndex < 0) + return; + // 找到上一条用户消息文本 + let userText = ''; + for (let i = aiIndex - 1; i >= 0; i--) { + if (messages[i].role === 'user') { + userText = messages[i].content; + break; + } + } + if (!userText) + return; + // 移除该 AI 消息及其后所有消息(本地 + DOM) + const removed = messages.splice(aiIndex); + const removedIds = new Set(removed.map(m => m.id)); + const nodes = messagesContainer$1.querySelectorAll('.csk-msg'); + nodes.forEach(node => { + const id = node.dataset.cskMsgId; + // 无 id 的(如错误气泡、被中断的)按顺序兜底:此处仅按 id 精确移除 + if (id && removedIds.has(id)) + node.remove(); + }); + saveMessages(config$1.integrateId, messages); + updateEmptyState(); + // 重新生成(不重复渲染用户气泡) + await produceAIReply(userText); + } /** 获取并渲染 RAG 引用来源 */ async function fetchAndRenderSources(message, aiMsg) { try { @@ -2719,11 +3587,14 @@ var ChatbotSDK = (function () { renderUserBubble(messagesContainer$1, msg.content, msg.timestamp); } else { - const wrapper = renderAIBubble(messagesContainer$1, msg.content, msg.timestamp, renderMarkdown); + const wrapper = renderAIBubble(messagesContainer$1, msg.content, msg.timestamp, renderMarkdown, msg.id); if (msg.sources && msg.sources.length > 0) renderSources(wrapper, msg.sources); + if (msg.feedback) + updateFeedbackUI(wrapper, msg.feedback); } } + isNearBottom = true; scrollToBottom(messagesContainer$1); if (clearBtn$1 && messages.length > 0) clearBtn$1.style.display = 'inline-flex'; @@ -2778,43 +3649,37 @@ var ChatbotSDK = (function () { listEl.innerHTML = `
加载中...
`; try { const result = await fetchConversationList(1, 50, config$1.userId, config$1.integrateId); - const items = result.list.map(c => ({ + historyItems = result.list.map(c => ({ id: c.conversationId || '', - chatId: c.conversationId || '', // conversationId 就是 chatId + chatId: c.conversationId || '', messageCount: c.messageCount, lastMessageTime: c.lastMessageTime, lastMessagePreview: c.lastMessagePreview, createdAt: c.firstMessageTime || c.createdAt, })); - renderHistoryList(listEl, items, - // onSelect: 切换到选中的会话 - (conversationId) => { - switchToConversation(conversationId); - }, - // onExport - (id) => { window.open(getConversationExportUrl(id), '_blank'); }, - // onDelete - async (id) => { + // 重置搜索(新数据到达时清空过滤) + historySearchText = ''; + if (searchInput) + searchInput.value = ''; + renderHistoryList(listEl, historyItems, (conversationId) => { switchToConversation(conversationId); }, (id) => { window.open(getConversationExportUrl(id), '_blank'); }, async (id) => { if (!confirm(t('history_delete_confirm'))) return; const ok = await deleteConversation(id); if (ok) { - // 如果删的是当前会话,清空聊天窗口 if (id === getChatId()) { messages = []; if (messagesContainer$1) { - const msgs = messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading'); - msgs.forEach(el => el.remove()); + messagesContainer$1.querySelectorAll('.csk-msg, .csk-loading').forEach(el => el.remove()); } if (clearBtn$1) clearBtn$1.style.display = 'none'; updateEmptyState(); } - loadHistoryConversations(); + // 从缓存中移除并重新渲染(不再重新请求后端) + historyItems = historyItems.filter(it => (it.chatId || it.id) !== id); + renderFilteredHistory(); } - }, - // 当前活跃 chatId,用于高亮 - getChatId()); + }, getChatId()); } catch (err) { logger.error(t('history_load_error'), err); @@ -2880,6 +3745,12 @@ var ChatbotSDK = (function () { let showLoadingFn = null; let hideLoadingFn = null; let dragCleanup = null; + /** 提示气泡元素 */ + let teaserEl = null; + /** 提示气泡定时器 */ + let teaserTimer = null; + /** 未读徽章元素(挂在 launcher 内部) */ + let badgeEl = null; // ==================== 公开 API ==================== /** 初始化 SDK */ function init(rawConfig) { @@ -2903,6 +3774,8 @@ var ChatbotSDK = (function () { // 6. 创建悬浮按钮 launcherEl = createLauncher(config, toggle); document.body.appendChild(launcherEl); + // 获取未读徽章引用(由 createLauncher 创建) + badgeEl = launcherEl.querySelector('.csk-launcher__badge'); // 7. 创建聊天弹窗 const dom = createChatWindow(config); windowEl = dom.window; @@ -2915,12 +3788,16 @@ var ChatbotSDK = (function () { showLoadingFn = dom.showLoading; hideLoadingFn = dom.hideLoading; document.body.appendChild(windowEl); - // 8. 启用拖拽 + // 8. 安置提示气泡(挂在 launcher 同层,由配置控制显示) + teaserEl = dom.teaserEl; + document.body.appendChild(teaserEl); + positionTeaser(); + // 9. 启用拖拽 const headerEl = windowEl.querySelector('.csk-header'); if (headerEl) { dragCleanup = enableDrag(headerEl, windowEl); } - // 9. 初始化对话模块 + // 10. 初始化对话模块 initChat(config, { messagesContainer, inputEl, @@ -2929,28 +3806,172 @@ var ChatbotSDK = (function () { categorySelect, historyPanel, welcomeEl: dom.welcomeEl, + newMsgBtn: dom.newMsgBtn, + searchInput: dom.searchInput, + ariaLiveEl: dom.ariaLiveEl, showLoading: showLoadingFn, hideLoading: hideLoadingFn, }); - // 10. 监听知识库分类切换事件 + // 11. 监听知识库分类切换事件 windowEl.addEventListener('csk:categoryChange', ((e) => { setCategory(e.detail.categoryId); })); - // 11. 监听会话管理面板加载事件 + // 12. 监听会话管理面板加载事件 windowEl.addEventListener('csk:loadHistory', () => { loadHistoryConversations(); }); + // 13. 监听快捷问题芯片点击 + windowEl.addEventListener('csk:quickReply', ((e) => { + sendQuickReply(e.detail.text); + })); + // 14. 监听 AI 消息重试事件 + windowEl.addEventListener('csk:retry', ((e) => { + retryFromMessage(e.detail.msgId); + })); + // 15. 监听消息反馈事件(👍 / 👎) + windowEl.addEventListener('csk:feedback', ((e) => { + handleFeedback(e.detail.msgId, e.detail.value); + })); + // 16. 新消息到达通知(用于未读徽章) + windowEl.addEventListener('csk:newMessage', () => { + notifyNewMessage(); + }); + // 17. ESC 键关闭弹窗 + document.addEventListener('keydown', onKeyDown); + // 17. 窗口 resize 时重新定位 teaser + window.addEventListener('resize', onResize); isInitialized = true; logger.lifecycleInit(config.integrateId, config.requestDomain); - // 12. 异步初始化 chatId 和对话历史(不阻塞 UI) + // 18. 首访提示气泡(延迟显示,弹窗未打开时生效) + if (config.showTeaser) { + teaserTimer = setTimeout(() => { + // 弹窗关闭时才显示 + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showTeaser(); + } + }, 1500); + } + // 19. 异步初始化 chatId 和对话历史(不阻塞 UI) initChatHistory().catch(err => { logger.warn('chatId 初始化失败,将在发送消息时重试', err); }); } + // ==================== 提示气泡控制 ==================== + /** 根据 launcher 位置定位 teaser 气泡 */ + function positionTeaser() { + if (!teaserEl || !launcherEl) + return; + const rect = launcherEl.getBoundingClientRect(); + const isLeft = (config === null || config === void 0 ? void 0 : config.position) === 'left-bottom'; + if (isLeft) { + teaserEl.style.left = `${rect.left}px`; + } + else { + teaserEl.style.right = `${window.innerWidth - rect.right}px`; + } + teaserEl.style.bottom = `${window.innerHeight - rect.top + 8}px`; + } + function showTeaser() { + if (!teaserEl) + return; + positionTeaser(); + teaserEl.classList.remove('csk-teaser--hidden'); + // 点击气泡本身 → 打开弹窗 + teaserEl.addEventListener('click', onTeaserClick); + // 关闭按钮(阻止冒泡,不打开弹窗) + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) { + closeBtn.addEventListener('click', onTeaserClose); + } + } + function hideTeaser() { + if (!teaserEl) + return; + teaserEl.classList.add('csk-teaser--hidden'); + teaserEl.removeEventListener('click', onTeaserClick); + const closeBtn = teaserEl.querySelector('.csk-teaser__close'); + if (closeBtn) + closeBtn.removeEventListener('click', onTeaserClose); + } + function onTeaserClick(e) { + // 关闭按钮点击不打开弹窗 + if (e.target.closest('.csk-teaser__close')) + return; + hideTeaser(); + open(); + } + function onTeaserClose(e) { + e.stopPropagation(); + hideTeaser(); + } + function onResize() { + if (teaserEl && !teaserEl.classList.contains('csk-teaser--hidden')) { + positionTeaser(); + } + } + // ==================== 未读徽章 ==================== + function showBadge() { + if (badgeEl) + badgeEl.classList.remove('csk-launcher__badge--hidden'); + } + function hideBadge() { + if (badgeEl) + badgeEl.classList.add('csk-launcher__badge--hidden'); + } + /** 新消息到达时弹窗关闭,则显示徽章 */ + function notifyNewMessage() { + if (windowEl && windowEl.classList.contains('csk-window--hidden')) { + showBadge(); + } + } + // ==================== a11y 焦点陷阱 ==================== + /** 弹窗内可聚焦元素选择器 */ + const FOCUSABLE = 'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'; + function trapFocus(e) { + if (!windowEl || windowEl.classList.contains('csk-window--hidden')) + return; + if (e.key !== 'Tab') + return; + const focusables = Array.from(windowEl.querySelectorAll(FOCUSABLE)); + if (focusables.length === 0) + return; + const first = focusables[0]; + const last = focusables[focusables.length - 1]; + if (e.shiftKey) { + // Shift+Tab:在第一个元素上按 → 跳到最后一个 + if (document.activeElement === first) { + e.preventDefault(); + last.focus(); + } + } + else { + // Tab:在最后一个元素上按 → 跳到第一个 + if (document.activeElement === last) { + e.preventDefault(); + first.focus(); + } + } + } + // ==================== 全局键盘事件 ==================== + function onKeyDown(e) { + if (e.key === 'Escape' && windowEl && !windowEl.classList.contains('csk-window--hidden')) { + close(); + } + trapFocus(e); + } /** 销毁 SDK 实例 */ function destroy() { if (!isInitialized) return; + if (teaserTimer) { + clearTimeout(teaserTimer); + teaserTimer = null; + } + hideTeaser(); + if (teaserEl && teaserEl.parentNode) { + teaserEl.parentNode.removeChild(teaserEl); + teaserEl = null; + } if (launcherEl && launcherEl.parentNode) { launcherEl.parentNode.removeChild(launcherEl); launcherEl = null; @@ -2964,6 +3985,8 @@ var ChatbotSDK = (function () { dragCleanup = null; } removeStyles(); + document.removeEventListener('keydown', onKeyDown); + window.removeEventListener('resize', onResize); const oldIntegrateId = config === null || config === void 0 ? void 0 : config.integrateId; config = null; isInitialized = false; @@ -2975,12 +3998,17 @@ var ChatbotSDK = (function () { historyPanel = null; showLoadingFn = null; hideLoadingFn = null; + badgeEl = null; logger.lifecycleDestroy(oldIntegrateId || ''); } function open() { if (!windowEl) return; windowEl.classList.remove('csk-window--hidden'); + hideTeaser(); + hideBadge(); + setTimeout(() => { if (inputEl) + inputEl.focus(); }, 80); } function close() { if (!windowEl) @@ -2992,8 +4020,6 @@ var ChatbotSDK = (function () { return; if (windowEl.classList.contains('csk-window--hidden')) { open(); - setTimeout(() => { if (inputEl) - inputEl.focus(); }, 100); } else { close(); diff --git a/src/main/resources/static/sdk/chatbot-sdk.js.map b/src/main/resources/static/sdk/chatbot-sdk.js.map index 868598b..5634b9b 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.js.map +++ b/src/main/resources/static/sdk/chatbot-sdk.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.js","sources":["../src/logger.ts","../src/config.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["config","messagesContainer","inputEl","sendBtn","clearBtn","categorySelect","historyPanel","showLoadingFn","hideLoadingFn"],"mappings":"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"} \ No newline at end of file diff --git a/src/main/resources/static/sdk/chatbot-sdk.min.js b/src/main/resources/static/sdk/chatbot-sdk.min.js index 18c79aa..cd9f976 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.min.js +++ b/src/main/resources/static/sdk/chatbot-sdk.min.js @@ -1,2 +1,2 @@ -var ChatbotSDK=function(){"use strict";const n="[ChatbotSDK]";let e=!0;const t={},r={info(t,r){e&&console.log(n,t,void 0!==r?r:"")},warn(t,r){e&&console.warn(n,t,void 0!==r?r:"")},error(e,t){console.error(n,e,void 0!==t?t:"")},time(n){t[n]=Date.now()},timeEnd(r,s){const o=t[r];if(void 0!==o){const i=Date.now()-o;if(delete t[r],e){const e=s?`${s} ${i}ms`:`${r} ${i}ms`;console.log(n,e)}return i}return 0},lifecycleInit(n,e){this.info(`初始化完成 integrateId=${n} requestDomain=${e}`)},lifecycleDestroy(n){this.info(`销毁实例 integrateId=${n}`)},lifecycleSend(n,e){this.info(`发送消息 integrateId=${n} length=${e}`),this.time(`send_${n}`)},lifecycleReply(n,e){const t=this.timeEnd(`send_${n}`,"AI 回复");this.info(`AI 回复 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleError(n,e,t){this.timeEnd(`send_${n}`),this.error(`请求失败 integrateId=${n} status=${e} message=${t}`)},lifecycleClear(n){this.info(`清空会话 integrateId=${n}`)},lifecycleStreamDone(n,e){const t=this.timeEnd(`send_${n}`,"流式回复");this.info(`流式回复完成 integrateId=${n} length=${e} duration=${t}ms`)},lifecycleCategoryChange(n){this.info(`切换知识库分类 categoryId=${n}`)}};const s={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let o="zh-CN";function i(n,e){let t=(s[o]||s["zh-CN"])[n]||s["zh-CN"][n]||n;if(e)for(const[n,r]of Object.entries(e))t=t.replace(`{${n}}`,String(r));return t}let a=null;function c(n){a&&(a.chatId=n)}function l(){return(null==a?void 0:a.chatId)||""}function d(n){if(!a)throw new Error("API 配置未初始化");return`${a.requestDomain.replace(/\/+$/,"")}${n.startsWith("/")?n:`/${n}`}`}function p(n,e,t){null!=t&&("string"==typeof t&&""===t.trim()||n.set(e,String(t)))}async function u(n,e={},t=3e4){const r=new AbortController,s=setTimeout(()=>r.abort(),t);try{return await fetch(n,Object.assign(Object.assign({},e),{signal:r.signal,mode:"cors",credentials:"include"}))}catch(n){if(n instanceof DOMException&&"AbortError"===n.name)throw new m(i("error_timeout"),"timeout");if(n instanceof TypeError&&n.message.includes("Failed to fetch"))throw new m(i("error_cors"),"cors");throw new m(i("error_network"),"network")}finally{clearTimeout(s)}}class m extends Error{constructor(n,e){super(n),this.name="CskError",this.type=e}}function h(n){switch(n){case 401:return i("error_auth");case 403:return i("error_forbidden");case 404:return i("error_not_found");case 429:return i("error_rate_limit");case 500:return i("error_server");case 502:case 503:return i("error_unavailable");default:return`${i("error_unknown")}(${n})`}}async function g(n){const e=function(n){const e=new URLSearchParams;return e.set("message",n),e.set("chatId",a.chatId),p(e,"roleId",a.integrateId),p(e,"accountId",a.userId),d(`/ai/assistant_app/chat/sync?${e.toString()}`)}(n);r.lifecycleSend(a.integrateId,n.length);try{const n=await u(e);if(!n.ok){const e=h(n.status);throw r.lifecycleError(a.integrateId,String(n.status),e),new m(e,`http_${n.status}`)}const t=await n.text();return r.lifecycleReply(a.integrateId,t.length),t}catch(n){if(n instanceof m)throw n;throw r.lifecycleError(a.integrateId,"unknown",String(n)),new m(i("error_unknown"),"unknown")}}async function k(n,e,t,s,o,c){var l;const g=c?function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(n,o):function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/chat/sse?${t.toString()}`)}(n,o);let k="";r.lifecycleSend(a.integrateId,n.length);try{const n=await u(g,{},6e4);if(!n.ok){const e=h(n.status);return r.lifecycleError(a.integrateId,String(n.status),e),void s(new m(e,`http_${n.status}`))}const o=null===(l=n.body)||void 0===l?void 0:l.getReader();if(!o)return void s(new m(i("error_stream_unsupported"),"stream_unsupported"));const c=new TextDecoder("utf-8",{stream:!0});let d="";try{for(;;){const{done:n,value:t}=await o.read();if(n)break;d+=c.decode(t,{stream:!0});const r=d.split("\n");d=r.pop()||"";for(const n of r){const t=n.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const n=t.substring(5).trim();n&&(k+=n,e(n))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(k+=t,e(t))}}}if(d.trim()){const n=d.trim();if(n.startsWith("data:")){const t=n.substring(5).trim();t&&(k+=t,e(t))}else"[DONE]"!==n&&(k+=n,e(n))}}catch(n){if(!(k.length>0))throw n;e("\n\n"+i("stream_unstable"))}finally{o.releaseLock()}r.lifecycleStreamDone(a.integrateId,k.length),t()}catch(n){n instanceof m?s(n):(r.lifecycleError(a.integrateId,"unknown",String(n)),s(new m(i("error_network"),"network")))}}async function f(n,e){const t=function(n,e){const t=new URLSearchParams;return t.set("message",n),t.set("chatId",a.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",a.integrateId),p(t,"accountId",a.userId),p(t,"categoryId",null!=e?e:a.categoryId),d(`/ai/assistant_app/rag/sources?${t.toString()}`)}(n,e);try{const n=await u(t);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const e=await n.json();return e.success&&Array.isArray(e.data)?(r.info(`获取引用来源 count=${e.data.length}`),e.data):[]}catch(n){return r.error("获取引用来源失败",n),[]}}async function b(n=1,e=20,t,s){let o=`/conversation/list?page=${n}&size=${e}`;t&&(o+=`&accountId=${encodeURIComponent(t)}`),s&&(o+=`&roleId=${encodeURIComponent(s)}`);const i=d(o);try{const n=await u(i);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const e=await n.json();return{list:e.success&&Array.isArray(e.data)?e.data:[],total:e.total||0,pages:e.pages||0}}catch(n){return r.error("加载会话列表失败",n),{list:[],total:0,pages:0}}}async function x(n){const e=d(`/conversation/${n}/messages`);try{const n=await u(e);if(!n.ok)throw new m(h(n.status),`http_${n.status}`);const t=await n.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(n){return r.error("加载会话消息失败",n),{messages:[],total:0}}}async function y(){if(!a)return"";const n=function(n,e){try{return localStorage.getItem(_(n,e))||""}catch(n){return""}}(a.integrateId,a.userId);if(n)return a.chatId=n,r.info(`从缓存恢复 chatId=${n}`),n;try{const n=await b(1,5,a.userId,a.integrateId);if(n.list.length>0){const e=n.list[0],t=e.conversationId||e.chatId||"";if(t)return a.chatId=t,w(a.integrateId,a.userId,t),r.info(`从后端恢复会话 chatId=${t} messageCount=${e.messageCount}`),t}}catch(n){r.warn("查询后端会话列表失败,将生成新 chatId",n)}const e=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();return a.chatId=e,w(a.integrateId,a.userId,e),r.info(`生成新 chatId=${e}`),e}function _(n,e){return`csk_chatId_${n}${e?"_"+e:""}`}function w(n,e,t){try{t?localStorage.setItem(_(n,e),t):localStorage.removeItem(_(n,e))}catch(n){}}let v=null;function C(n){const e=I(n.primaryColor,-15),t=I(n.primaryColor,18),r=function(n){const e=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return e?`${parseInt(e[1],16)}, ${parseInt(e[2],16)}, ${parseInt(e[3],16)}`:"79, 70, 229"}(n.primaryColor);return`\n --csk-primary: ${n.primaryColor};\n --csk-primary-hover: ${e};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${n.primaryColor}, ${e});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${n.width}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n `}function I(n,e){const t=n.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return n;const r=n=>Math.max(0,Math.min(255,n)),s=r(parseInt(t[1],16)+e),o=r(parseInt(t[2],16)+e),i=r(parseInt(t[3],16)+e);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${i.toString(16).padStart(2,"0")}`}function E(n){document.querySelector("style[data-csk-sdk]")||(v=document.createElement("style"),v.setAttribute("data-csk-sdk",""),v.textContent=function(n){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${C(n)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 58px;\n height: 58px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n box-shadow: 0 8px 24px rgba(var(--csk-primary-rgb), 0.42), 0 2px 6px rgba(15, 23, 42, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.22s ease;\n border: none;\n color: #fff;\n user-select: none;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(var(--csk-primary-rgb), 0.35);\n opacity: 0;\n animation: csk-ping 2.6s cubic-bezier(0, 0, 0.2, 1) infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 12px 32px rgba(var(--csk-primary-rgb), 0.5), 0 4px 10px rgba(15, 23, 42, 0.14);\n}\n.csk-launcher:active { transform: scale(0.94); }\n.csk-launcher svg { width: 28px; height: 28px; }\n\n@keyframes csk-ping {\n 0% { transform: scale(0.92); opacity: 0.7; }\n 70%, 100% { transform: scale(1.35); opacity: 0; }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: 600px;\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(n),document.head.appendChild(v))}function $(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,n=>{const e=16*Math.random()|0;return("x"===n?e:3&e|8).toString(16)})}function S(n){const e={"&":"&","<":"<",">":">",'"':""","'":"'"};return n.replace(/[&<>"']/g,n=>e[n]||n)}function N(){return Date.now()}const A='';function L(n,e){const t=document.createElement("div");t.id="csk-launcher",t.className="csk-launcher csk-launcher--"+("left-bottom"===n.position?"left":"right"),t.setAttribute("title",n.title),t.setAttribute("aria-label",n.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=n.launcherIcon;const r=function(n,e){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{n.apply(this,r),t=null},e)}}(e,300);return t.addEventListener("click",r),t.addEventListener("keydown",n=>{"Enter"!==n.key&&" "!==n.key||(n.preventDefault(),r())}),t}function F(n,e,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const i=document.createElement("div");i.className="csk-msg__bubble",i.textContent=e;const a=document.createElement("div");return a.className="csk-msg__time",a.textContent=T(t),o.appendChild(i),o.appendChild(a),r.appendChild(s),r.appendChild(o),n.appendChild(r),r}function M(n,e,t,r){const s=document.createElement("div");s.className="csk-msg csk-msg--ai";const o=document.createElement("div");o.className="csk-msg__avatar csk-msg__avatar--ai",o.innerHTML=A;const i=document.createElement("div");i.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",r?a.innerHTML=r(e):a.textContent=e;const c=document.createElement("div");return c.className="csk-msg__time",c.textContent=T(t),i.appendChild(a),i.appendChild(c),s.appendChild(o),s.appendChild(i),n.appendChild(s),s}function D(n,e){const t=n.querySelector(".csk-sources");if(t&&t.remove(),!e||0===e.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${i("source_count",{n:e.length})}`;const a=document.createElement("span");a.className="csk-sources__arrow",a.textContent="▼",s.appendChild(o),s.appendChild(a),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const c=document.createElement("div");c.className="csk-sources__body";for(const n of e){const e=document.createElement("div");e.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=n.title||n.sourceName||"未知文档",n.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=n.snippet,e.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];n.sourceName&&s.push(n.sourceName),void 0!==n.chunkIndex&&s.push(`分块 #${n.chunkIndex}`),void 0!==n.score&&s.push(`相关度 ${(100*n.score).toFixed(0)}%`),r.textContent=s.join(" · "),e.appendChild(t),e.appendChild(r),c.appendChild(e)}r.appendChild(s),r.appendChild(c);const l=n.querySelector(".csk-msg__time");l&&l.parentNode?l.parentNode.insertBefore(r,l):n.appendChild(r)}function z(n){n.scrollTop=n.scrollHeight}function T(n){const e=new Date(n);return`${String(e.getHours()).padStart(2,"0")}:${String(e.getMinutes()).padStart(2,"0")}`}function H(n){return`csk_history_${n}`}function B(n,e){try{let t=e;t.length>200&&(t=t.slice(50),r.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const s={messages:t,updatedAt:Date.now()};localStorage.setItem(H(n),JSON.stringify(s))}catch(n){n instanceof Error&&"QuotaExceededError"===n.name?r.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):r.error("保存会话历史失败",n)}}function q(n){try{localStorage.removeItem(H(n))}catch(n){r.warn("清空会话历史失败",n)}}const j="\0CODEBLOCK_",P="\0INLINECODE_";function R(n){if(!n||"string"!=typeof n)return"";const e=[];let t=n;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(n,t,r)=>{const s=e.length,o=S(r.trimEnd()),i=t?` class="language-${S(t)}"`:"";return e.push(`
${o}
`),`${j}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(n,e)=>{const t=r.length;return r.push(`${S(e)}`),`${P}${t}\0`}),t=S(t),t=U(t,j,e),t=U(t,P,r);const s=t.split("\n"),o=[];let i=!1,a="",c=!1,l=[];for(let n=0;n')){p(),u(),m(),o.push(e);continue}const t=e.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),m();const n=t[1].length;o.push(`${t[2]}`);continue}const r=e.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&m();const h=e.match(/^[\-\*]\s+(.+)/);if(h){p(),m(),i&&"ul"===a||(u(),i=!0,a="ul",o.push('
    ')),o.push(`
  • ${d(h[1])}
  • `);continue}const g=e.match(/^\d+\.\s+(.+)/);g?(p(),m(),i&&"ol"===a||(u(),i=!0,a="ol",o.push('
      ')),o.push(`
    1. ${d(g[1])}
    2. `)):""!==e.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(e.trim())?(p(),u(),m(),o.push('
      ')):(u(),m(),l.push(d(e))):(p(),u())}return p(),u(),m(),o.join("\n");function d(n){return n=(n=(n=(n=(n=(n=n.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(n,e,t)=>`${e}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){i&&(o.push("ul"===a?"
":""),i=!1,a="")}function m(){c&&(o.push("
"),c=!1)}}function U(n,e,t){return n.replace(new RegExp(e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(n,e)=>t[parseInt(e)]||"")}let O,W=null,Y=[],K=null,V=null,X=null,J=null,G=null,Q=null,Z=null,nn=null,en=null,tn=null,rn=!1,sn=!1;function on(n,e){W=n,K=e.messagesContainer,V=e.inputEl,X=e.inputEl.parentElement,J=e.sendBtn,G=e.clearBtn,Q=e.categorySelect,Z=e.historyPanel,nn=e.welcomeEl,en=e.showLoading,tn=e.hideLoading,O=n.categoryId,sn=!!n.categoryId||!!n.showCategorySwitch,function(){if(!V||!J)return;J.addEventListener("click",()=>dn()),V.addEventListener("keydown",n=>{"Enter"!==n.key||n.shiftKey||(n.preventDefault(),dn())}),V.addEventListener("input",()=>{ln(),function(){if(!V)return;V.style.height="auto",V.style.height=`${Math.min(V.scrollHeight,120)}px`}()}),V.addEventListener("focus",()=>{X&&X.classList.add("csk-input-wrap--focus")}),V.addEventListener("blur",()=>{X&&X.classList.remove("csk-input-wrap--focus")}),G&&G.addEventListener("click",()=>function(){if(!W)return;if(!confirm(i("clear_confirm")))return;if(Y=[],K){K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}G&&(G.style.display="none");cn(),q(W.integrateId);const n=function(){const n="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${n}`}();c(n),w(W.integrateId,W.userId,n),r.lifecycleClear(W.integrateId),r.info(`新 chatId=${n}`)}())}(),n.showCategorySwitch&&Q&&async function(){if(!Q)return;try{const n=await async function(){const n=d("/category/tree");try{const e=await u(n);if(!e.ok)throw new m(h(e.status),`http_${e.status}`);const t=await e.json();return t.success&&Array.isArray(t.data)?(r.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(n){return n instanceof m?r.error(`加载分类树失败: ${n.message}`):r.error("加载分类树失败",n),[]}}();if(0===n.length)return;Q.innerHTML=``;const e=(n,t=0)=>{for(const r of n){const n=document.createElement("option");n.value=String(r.id),n.textContent=`${" ".repeat(t)}${r.name}`,void 0!==O&&String(r.id)===String(O)&&(n.selected=!0),Q.appendChild(n),r.children&&r.children.length>0&&e(r.children,t+1)}};e(n),r.info(`知识库分类加载成功 count=${n.length}`)}catch(n){r.error(i("category_load_error"),n)}}()}async function an(){if(W&&K&&(await y(),await async function(){if(!W||!K)return;const n=l();if(!n)return;try{const e=await x(n);e.messages.length>0&&(Y=e.messages.map((n,e)=>({id:$(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),pn(),r.info(`从后端加载 ${Y.length} 条历史消息`),B(W.integrateId,Y))}catch(n){r.warn("从后端加载历史消息失败",n)}}(),0===Y.length)){const n=function(n){try{const e=localStorage.getItem(H(n));if(!e)return[];const t=JSON.parse(e);return t&&Array.isArray(t.messages)?(r.info(`加载历史消息 integrateId=${n} count=${t.messages.length}`),t.messages):[]}catch(n){return r.warn("加载会话历史失败",n),[]}}(W.integrateId);n.length>0&&(Y=n,pn(),r.info(`从本地缓存恢复 ${n.length} 条消息`))}}function cn(){if(!nn)return;const n=Y.length>0||K&&K.querySelector(".csk-msg");nn.style.display=n?"none":""}function ln(){if(!J||!V)return;V.value.trim().length>0&&!rn?J.removeAttribute("disabled"):J.setAttribute("disabled","true")}async function dn(){if(!V||!W||rn)return;const n=V.value.trim();if(""===n)return;V.value="",ln(),V.style.height="auto",rn=!0,ln(),W.chatId||await y();const e=N();K&&F(K,n,e);const t={id:$(),role:"user",content:n,timestamp:e};Y.push(t),cn(),G&&Y.length>0&&(G.style.display="inline-flex"),K&&z(K),en&&en(),K&&z(K);try{let e;const t=N(),s=sn&&(void 0!==O||void 0!==W.categoryId);e=W.streaming?await async function(n,e,t){return new Promise((r,s)=>{let o=null,a="",c=!1;k(n,n=>{if(a+=n,!c&&K){tn&&tn();const{bubble:n}=function(n,e){const t=document.createElement("div");t.className="csk-msg csk-msg--ai";const r=document.createElement("div");r.className="csk-msg__avatar csk-msg__avatar--ai",r.innerHTML=A;const s=document.createElement("div");s.className="csk-msg__content";const o=document.createElement("div");o.className="csk-msg__bubble",o.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=T(e),s.appendChild(o),s.appendChild(i),t.appendChild(r),t.appendChild(s),n.appendChild(t),{wrapper:t,bubble:o}}(K,e);o=n,c=!0}o&&(o.textContent=a),K&&z(K)},()=>{c||""!==a?(o&&a&&(o.innerHTML=R(a)),r(a)):g(n).then(r).catch(s)},n=>{a.length>0?(o&&(o.innerHTML=R(a+"\n\n"+i("stream_interrupted"))),r(a)):s(n)},O,t)})}(n,t,s):await g(n),tn&&tn(),!W.streaming&&K&&M(K,e,t,R);const o={id:$(),role:"ai",content:e,timestamp:t};Y.push(o),B(W.integrateId,Y),K&&z(K),s&&async function(n,e){try{const t=await f(n,O);if(t.length>0){const n=t.map(n=>{var e,t;return{documentId:n.documentId||"",title:n.title||"",sourceName:n.sourceName||"",chunkIndex:null!==(e=n.chunkIndex)&&void 0!==e?e:0,score:null!==(t=n.score)&&void 0!==t?t:0,snippet:n.snippet||""}});if(e.sources=n,K){const e=K.querySelector(".csk-msg--ai:last-of-type");e&&D(e,n)}W&&B(W.integrateId,Y)}}catch(n){r.warn("获取引用来源失败",n)}}(n,o)}catch(n){tn&&tn();const e=n instanceof m?n.message:i("error_send");if(K){const n=document.createElement("div");n.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${e}`,n.appendChild(t),K.appendChild(n)}r.error(`发送失败 integrateId=${W.integrateId}`,n)}finally{rn=!1,ln()}}function pn(){if(!K)return;const n=K.querySelector(".csk-history-panel");K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());for(const n of Y)if("user"===n.role)F(K,n.content,n.timestamp);else{const e=M(K,n.content,n.timestamp,R);n.sources&&n.sources.length>0&&D(e,n.sources)}z(K),G&&Y.length>0&&(G.style.display="inline-flex"),cn(),n&&!K.contains(n)&&K.appendChild(n)}async function un(){if(!Z||!W)return;const n=Z.querySelector("#csk-history-list");if(n){n.innerHTML='
加载中...
';try{const e=await b(1,50,W.userId,W.integrateId);!function(n,e,t,r,s,o){if(n.innerHTML="",0===e.length){const e=document.createElement("div");return e.className="csk-history-panel__empty",e.innerHTML=`\n
💬
\n
${i("history_empty")}
\n `,void n.appendChild(e)}for(const a of e){const e=document.createElement("div");e.className="csk-history-item";const c=a.chatId||a.id;o&&c===o&&e.classList.add("csk-history-item--active");const l=document.createElement("div");l.className="csk-history-item__info";const d=document.createElement("div");d.className="csk-history-item__id",a.lastMessagePreview?d.textContent=a.lastMessagePreview.length>60?a.lastMessagePreview.substring(0,60)+"...":a.lastMessagePreview:d.textContent=c;const p=document.createElement("div");p.className="csk-history-item__meta";const u=[];void 0!==a.messageCount&&u.push(`${a.messageCount} 条消息`),a.lastMessageTime?u.push(a.lastMessageTime):a.createdAt&&u.push(a.createdAt),p.textContent=u.join(" · "),l.appendChild(d),l.appendChild(p);const m=document.createElement("div");m.className="csk-history-item__actions";const h=document.createElement("button");h.className="csk-history-action csk-history-action--export",h.setAttribute("title",i("history_export")),h.innerHTML='',h.addEventListener("click",n=>{n.stopPropagation(),r(a.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",i("history_delete")),g.innerHTML='',g.addEventListener("click",n=>{n.stopPropagation(),s(a.id)}),m.appendChild(h),m.appendChild(g),e.appendChild(l),e.appendChild(m),e.addEventListener("click",()=>{t(c)}),n.appendChild(e)}}(n,e.list.map(n=>({id:n.conversationId||"",chatId:n.conversationId||"",messageCount:n.messageCount,lastMessageTime:n.lastMessageTime,lastMessagePreview:n.lastMessagePreview,createdAt:n.firstMessageTime||n.createdAt})),n=>{!async function(n){if(!W||!K)return;r.info(`切换到会话 conversationId=${n}`),c(n),w(W.integrateId,W.userId,n),Z&&Z.classList.add("csk-history-panel--hidden");Y=[];K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove());try{const e=await x(n);e.messages.length>0&&(Y=e.messages.map(n=>({id:$(),role:"USER"===n.messageType?"user":"ai",content:n.content,timestamp:new Date(n.createTime).getTime()})),pn(),r.info(`加载会话 ${n} 的 ${Y.length} 条消息`),B(W.integrateId,Y))}catch(e){r.warn(`加载会话消息失败 conversationId=${n}`,e)}G&&Y.length>0&&(G.style.display="inline-flex");cn()}(n)},n=>{window.open(d(`/conversation/${n}/export`),"_blank")},async n=>{if(!confirm(i("history_delete_confirm")))return;if(await async function(n){const e=d(`/conversation/${n}`);try{const t=await u(e,{method:"DELETE"});if(!t.ok)throw new m(h(t.status),`http_${t.status}`);const s=await t.json();return r.info(`删除会话 id=${n} success=${s.success}`),s.success||!1}catch(n){return r.error("删除会话失败",n),!1}}(n)){if(n===l()){if(Y=[],K){K.querySelectorAll(".csk-msg, .csk-loading").forEach(n=>n.remove())}G&&(G.style.display="none"),cn()}un()}},l())}catch(e){r.error(i("history_load_error"),e),n.innerHTML=`
${i("history_load_error")}
`}}}let mn=null,hn=!1,gn=null,kn=null,fn=null,bn=null,xn=null,yn=null,_n=null,wn=null,vn=null,Cn=null,In=null;function En(){kn&&kn.classList.remove("csk-window--hidden")}function $n(){kn&&kn.classList.add("csk-window--hidden")}function Sn(){kn&&(kn.classList.contains("csk-window--hidden")?(En(),setTimeout(()=>{bn&&bn.focus()},100)):$n())}const Nn={init:function(n){if(hn)return void r.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(n){var e,t,s,o,i,a;if(!n.integrateId||"string"!=typeof n.integrateId&&"number"!=typeof n.integrateId||"string"==typeof n.integrateId&&""===n.integrateId.trim())return r.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!n.requestDomain||"string"!=typeof n.requestDomain||""===n.requestDomain.trim())return r.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(n.requestDomain)}catch(e){return r.error(`requestDomain 不是合法的 URL 格式:${n.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const c={integrateId:String(n.integrateId).trim(),requestDomain:n.requestDomain.replace(/\/+$/,""),userId:n.userId,categoryId:n.categoryId,showCategorySwitch:null!==(e=n.showCategorySwitch)&&void 0!==e&&e,title:n.title||"AI 智能助手",width:null!==(t=n.width)&&void 0!==t?t:380,position:"left-bottom"===n.position?"left-bottom":"right-bottom",primaryColor:n.primaryColor||"#4F46E5",launcherIcon:n.launcherIcon||'\n \n \n',showClear:null===(s=n.showClear)||void 0===s||s,showAdminPanel:null!==(o=n.showAdminPanel)&&void 0!==o&&o,streaming:null===(i=n.streaming)||void 0===i||i,locale:n.locale||"zh-CN",debug:null===(a=n.debug)||void 0===a||a,chatId:""};return r.info(`配置解析完成 integrateId(=roleId)=${c.integrateId} userId(=accountId)=${c.userId||"(未设置)"} requestDomain=${c.requestDomain}`),c}(n);if(!t)return;var c;mn=t,function(n){if(s[n])o=n;else{const e=n.split("-")[0],t=Object.keys(s).find(n=>n.startsWith(e));t&&(o=t)}}(mn.locale),c=mn.debug,e=c,function(n){a=n}(mn),E(mn),gn=L(mn,Sn),document.body.appendChild(gn);const l=function(n){const e=document.createElement("div");e.id="csk-window",e.className=`csk-root csk-window csk-window--${"left-bottom"===n.position?"left":"right"} csk-window--hidden`;const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=A;const o=document.createElement("div");o.className="csk-header__info";const a=document.createElement("span");a.className="csk-header__title",a.textContent=n.title;const c=document.createElement("span");c.className="csk-header__status",c.innerHTML=`${i("status_online")}`,o.appendChild(a),o.appendChild(c),r.appendChild(s),r.appendChild(o);const l=document.createElement("div");l.className="csk-header__actions";const d=document.createElement("button");d.className="csk-history-btn",d.setAttribute("title",i("history_title")),d.innerHTML='';const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--minimize",p.setAttribute("title",i("minimize")),p.innerHTML='',p.addEventListener("click",()=>{e.classList.add("csk-window--hidden")});const u=document.createElement("button");u.className="csk-header__btn csk-header__btn--close",u.setAttribute("title",i("close")),u.innerHTML='',u.addEventListener("click",()=>{e.classList.add("csk-window--hidden")}),l.appendChild(d),l.appendChild(p),l.appendChild(u),t.appendChild(r),t.appendChild(l);const m=document.createElement("div");m.id="csk-messages",m.className="csk-messages";const h=document.createElement("div");h.className="csk-welcome",h.innerHTML=`\n
${A}
\n
${i("welcome_title")}
\n
${i("welcome_desc")}
\n `,m.appendChild(h);const g=document.createElement("div");g.className="csk-history-panel csk-history-panel--hidden",g.innerHTML=`\n
\n ${i("history_title")}\n \n
\n
\n `,m.appendChild(g);const k=g.querySelector("#csk-history-back");k&&k.addEventListener("click",()=>{g.classList.add("csk-history-panel--hidden")}),d.addEventListener("click",n=>{n.stopPropagation();const t=g.classList.contains("csk-history-panel--hidden");g.classList.toggle("csk-history-panel--hidden"),t&&e.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(n.showCategorySwitch){const n=document.createElement("div");n.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const n=f.value;e.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:n?Number(n):void 0}}))}),n.appendChild(r),n.appendChild(f),e.appendChild(t),e.appendChild(m),e.appendChild(n)}else e.appendChild(t),e.appendChild(m);const b=document.createElement("div");b.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const y=document.createElement("textarea");y.id="csk-input",y.className="csk-input",y.setAttribute("placeholder",i("placeholder")),y.setAttribute("rows","1"),y.setAttribute("autofocus","");const _=document.createElement("button");_.id="csk-send-btn",_.className="csk-send-btn",_.setAttribute("title",i("send")),_.setAttribute("disabled","true"),_.innerHTML='',x.appendChild(y),x.appendChild(_),b.appendChild(x),e.appendChild(b);let w=null;n.showClear&&(w=document.createElement("button"),w.className="csk-clear-btn",w.textContent=i("clear"),w.style.display="none",e.insertBefore(w,b));let v=null;return{window:e,messagesContainer:m,inputEl:y,sendBtn:_,clearBtn:w,categorySelect:f,historyPanel:g,welcomeEl:h,showLoading:function(){if(v)return v.style.display="flex",v;const n=document.createElement("div");return n.className="csk-loading",n.innerHTML=`\n
${A}
\n
\n
\n
\n
\n
\n `,m.appendChild(n),v=n,n},hideLoading:function(){v&&v.parentNode&&(v.parentNode.removeChild(v),v=null)}}}(mn);kn=l.window,fn=l.messagesContainer,bn=l.inputEl,xn=l.sendBtn,yn=l.clearBtn,_n=l.categorySelect,wn=l.historyPanel,vn=l.showLoading,Cn=l.hideLoading,document.body.appendChild(kn);const d=kn.querySelector(".csk-header");d&&(In=function(n,e){let t=!1,r=0,s=0,o=0,i=0;const a=n=>{if(n.target.closest("button"))return;t=!0,r=n.clientX,s=n.clientY;const a=e.getBoundingClientRect();o=r-a.left,i=s-a.top,document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)},c=n=>{if(!t)return;const r=n.clientX-o,s=n.clientY-i,a=window.innerWidth-e.offsetWidth,c=window.innerHeight-e.offsetHeight;e.style.right="auto",e.style.bottom="auto",e.style.left=`${Math.max(0,Math.min(r,a))}px`,e.style.top=`${Math.max(0,Math.min(s,c))}px`},l=()=>{t=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)};return n.addEventListener("mousedown",a),()=>{n.removeEventListener("mousedown",a),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)}}(d,kn)),on(mn,{messagesContainer:fn,inputEl:bn,sendBtn:xn,clearBtn:yn,categorySelect:_n,historyPanel:wn,welcomeEl:l.welcomeEl,showLoading:vn,hideLoading:Cn}),kn.addEventListener("csk:categoryChange",n=>{var e;e=n.detail.categoryId,O=e,sn=void 0!==e,r.lifecycleCategoryChange(null!=e?e:"全部")}),kn.addEventListener("csk:loadHistory",()=>{un()}),hn=!0,r.lifecycleInit(mn.integrateId,mn.requestDomain),an().catch(n=>{r.warn("chatId 初始化失败,将在发送消息时重试",n)})},destroy:function(){if(!hn)return;gn&&gn.parentNode&&(gn.parentNode.removeChild(gn),gn=null),kn&&kn.parentNode&&(kn.parentNode.removeChild(kn),kn=null),In&&(In(),In=null),v&&v.parentNode&&(v.parentNode.removeChild(v),v=null),document.querySelectorAll("style[data-csk-sdk]").forEach(n=>n.remove());const n=null==mn?void 0:mn.integrateId;mn=null,hn=!1,fn=null,bn=null,xn=null,yn=null,_n=null,wn=null,vn=null,Cn=null,r.lifecycleDestroy(n||"")},open:En,close:$n,toggle:Sn,clearHistory:function(){mn&&(yn?yn.click():confirm("确定清空所有对话记录?")&&q(mn.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=Nn),Nn}(); +var ChatbotSDK=function(){"use strict";const e="[ChatbotSDK]";let n=!0;const t={},r={info(t,r){n&&console.log(e,t,void 0!==r?r:"")},warn(t,r){n&&console.warn(e,t,void 0!==r?r:"")},error(n,t){console.error(e,n,void 0!==t?t:"")},time(e){t[e]=Date.now()},timeEnd(r,s){const o=t[r];if(void 0!==o){const a=Date.now()-o;if(delete t[r],n){const n=s?`${s} ${a}ms`:`${r} ${a}ms`;console.log(e,n)}return a}return 0},lifecycleInit(e,n){this.info(`初始化完成 integrateId=${e} requestDomain=${n}`)},lifecycleDestroy(e){this.info(`销毁实例 integrateId=${e}`)},lifecycleSend(e,n){this.info(`发送消息 integrateId=${e} length=${n}`),this.time(`send_${e}`)},lifecycleReply(e,n){const t=this.timeEnd(`send_${e}`,"AI 回复");this.info(`AI 回复 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleError(e,n,t){this.timeEnd(`send_${e}`),this.error(`请求失败 integrateId=${e} status=${n} message=${t}`)},lifecycleClear(e){this.info(`清空会话 integrateId=${e}`)},lifecycleStreamDone(e,n){const t=this.timeEnd(`send_${e}`,"流式回复");this.info(`流式回复完成 integrateId=${e} length=${n} duration=${t}ms`)},lifecycleCategoryChange(e){this.info(`切换知识库分类 categoryId=${e}`)}};const s={"zh-CN":{title:"AI 智能助手",minimize:"最小化",close:"关闭",status_online:"在线",welcome_title:"你好,我是 AI 智能助手",welcome_desc:"有什么可以帮你的吗?在下方输入框开始提问吧~",placeholder:"输入您的问题...",send:"发送",stop:"停止生成",new_message:"新消息",copy:"复制",copied:"已复制",retry:"重新生成",retrying:"重新生成中...",loading:"正在思考...",stream_interrupted:"回复被中断",stream_unstable:"网络不稳定,内容可能不完整",category_placeholder:"选择知识库分类",category_all:"全部分类",category_load_error:"加载分类失败",source_title:"参考来源",source_count:"{n} 条参考来源",source_loading:"加载来源中...",clear:"清空对话",clear_confirm:"确定清空所有对话记录?",history_title:"历史会话",history_empty:"暂无历史会话",history_load_error:"加载会话列表失败",history_delete_confirm:"确定删除该会话?",history_export:"导出",history_delete:"删除",history_search:"搜索会话...",feedback_up:"有帮助",feedback_down:"没帮助",teaser_text:"有什么可以帮你的吗?",new_msg_announce:"收到新消息",error_network:"网络连接失败,请检查网络",error_timeout:"请求超时,请稍后重试",error_server:"服务器异常,请稍后重试",error_cors:"跨域请求被拦截,请联系管理员将当前域名加入 API 白名单",error_auth:"鉴权失败,请联系管理员",error_forbidden:"无访问权限,请联系管理员配置",error_not_found:"请求的资源不存在",error_rate_limit:"请求过于频繁,请稍后重试",error_unavailable:"服务暂不可用,请稍后重试",error_unknown:"请求发生未知错误",error_send:"发送失败,请稍后重试",error_stream_unsupported:"浏览器不支持流式读取"},en:{title:"AI Assistant",minimize:"Minimize",close:"Close",status_online:"Online",welcome_title:"Hi, I am your AI assistant",welcome_desc:"How can I help you? Type your question below to get started.",placeholder:"Type your question...",send:"Send",stop:"Stop generating",new_message:"New message",copy:"Copy",copied:"Copied",retry:"Regenerate",retrying:"Regenerating...",loading:"Thinking...",stream_interrupted:"Response interrupted",stream_unstable:"Network unstable, content may be incomplete",category_placeholder:"Select category",category_all:"All categories",category_load_error:"Failed to load categories",source_title:"Sources",source_count:"{n} source(s)",source_loading:"Loading sources...",clear:"Clear chat",clear_confirm:"Clear all conversation history?",history_title:"History",history_empty:"No conversations yet",history_load_error:"Failed to load conversations",history_delete_confirm:"Delete this conversation?",history_export:"Export",history_delete:"Delete",history_search:"Search conversations...",feedback_up:"Helpful",feedback_down:"Not helpful",teaser_text:"How can I help you?",new_msg_announce:"New message received",error_network:"Network connection failed",error_timeout:"Request timed out, please try again",error_server:"Server error, please try again later",error_cors:"CORS request blocked. Please contact admin to whitelist your domain",error_auth:"Authentication failed, please contact admin",error_forbidden:"Access denied, please contact admin",error_not_found:"Resource not found",error_rate_limit:"Too many requests, please try again later",error_unavailable:"Service temporarily unavailable",error_unknown:"Unknown request error",error_send:"Failed to send, please try again",error_stream_unsupported:"Browser does not support streaming"}};let o="zh-CN";function a(e,n){let t=(s[o]||s["zh-CN"])[e]||s["zh-CN"][e]||e;if(n)for(const[e,r]of Object.entries(n))t=t.replace(`{${e}}`,String(r));return t}let i=null;function c(e){i&&(i.chatId=e)}function l(){return(null==i?void 0:i.chatId)||""}function d(e){if(!i)throw new Error("API 配置未初始化");return`${i.requestDomain.replace(/\/+$/,"")}${e.startsWith("/")?e:`/${e}`}`}function p(e,n,t){null!=t&&("string"==typeof t&&""===t.trim()||e.set(n,String(t)))}async function u(e,n={},t=3e4,r){const s=new AbortController,o=setTimeout(()=>s.abort(),t);r&&(r.aborted?s.abort():r.addEventListener("abort",()=>s.abort(),{once:!0}));try{return await fetch(e,Object.assign(Object.assign({},n),{signal:s.signal,mode:"cors",credentials:"include"}))}catch(e){if(null==r?void 0:r.aborted)throw new k("aborted","aborted");if(e instanceof DOMException&&"AbortError"===e.name)throw new k(a("error_timeout"),"timeout");if(e instanceof TypeError&&e.message.includes("Failed to fetch"))throw new k(a("error_cors"),"cors");throw new k(a("error_network"),"network")}finally{clearTimeout(o)}}class k extends Error{constructor(e,n){super(e),this.name="CskError",this.type=n}}function m(e){switch(e){case 401:return a("error_auth");case 403:return a("error_forbidden");case 404:return a("error_not_found");case 429:return a("error_rate_limit");case 500:return a("error_server");case 502:case 503:return a("error_unavailable");default:return`${a("error_unknown")}(${e})`}}async function g(e){const n=function(e){const n=new URLSearchParams;return n.set("message",e),n.set("chatId",i.chatId),p(n,"roleId",i.integrateId),p(n,"accountId",i.userId),d(`/ai/assistant_app/chat/sync?${n.toString()}`)}(e);r.lifecycleSend(i.integrateId,e.length);try{const e=await u(n);if(!e.ok){const n=m(e.status);throw r.lifecycleError(i.integrateId,String(e.status),n),new k(n,`http_${e.status}`)}const t=await e.text();return r.lifecycleReply(i.integrateId,t.length),t}catch(e){if(e instanceof k)throw e;throw r.lifecycleError(i.integrateId,"unknown",String(e)),new k(a("error_unknown"),"unknown")}}async function h(e,n,t,s,o,c,l){var g;const h=c?function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/chat/rag/sse?${t.toString()}`)}(e,o):function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/chat/sse?${t.toString()}`)}(e,o);let b="";r.lifecycleSend(i.integrateId,e.length);try{const e=await u(h,{},6e4,l);if(!e.ok){const n=m(e.status);return r.lifecycleError(i.integrateId,String(e.status),n),void s(new k(n,`http_${e.status}`))}const o=null===(g=e.body)||void 0===g?void 0:g.getReader();if(!o)return void s(new k(a("error_stream_unsupported"),"stream_unsupported"));const c=new TextDecoder("utf-8",{stream:!0});let d="";try{for(;;){const{done:e,value:t}=await o.read();if(e)break;d+=c.decode(t,{stream:!0});const r=d.split("\n");d=r.pop()||"";for(const e of r){const t=e.trim();if(t&&!t.startsWith(":"))if(t.startsWith("data:")){const e=t.substring(5).trim();e&&(b+=e,n(e))}else{if("[DONE]"===t)break;t.startsWith("event:")||t.startsWith("id:")||t.startsWith("retry:")||(b+=t,n(t))}}}if(d.trim()){const e=d.trim();if(e.startsWith("data:")){const t=e.substring(5).trim();t&&(b+=t,n(t))}else"[DONE]"!==e&&(b+=e,n(e))}}catch(e){if(null==l?void 0:l.aborted)r.info(`流式被用户中断,保留已生成内容 length=${b.length}`);else{if(!(b.length>0))throw e;n("\n\n"+a("stream_unstable"))}}finally{o.releaseLock()}r.lifecycleStreamDone(i.integrateId,b.length),t()}catch(e){if((null==l?void 0:l.aborted)||e instanceof k&&"aborted"===e.type)return void t();e instanceof k?s(e):(r.lifecycleError(i.integrateId,"unknown",String(e)),s(new k(a("error_network"),"network")))}}async function b(e,n){const t=function(e,n){const t=new URLSearchParams;return t.set("message",e),t.set("chatId",i.chatId),t.set("rewriteStrategy","REWRITE"),p(t,"roleId",i.integrateId),p(t,"accountId",i.userId),p(t,"categoryId",null!=n?n:i.categoryId),d(`/ai/assistant_app/rag/sources?${t.toString()}`)}(e,n);try{const e=await u(t);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const n=await e.json();return n.success&&Array.isArray(n.data)?(r.info(`获取引用来源 count=${n.data.length}`),n.data):[]}catch(e){return r.error("获取引用来源失败",e),[]}}async function f(e=1,n=20,t,s){let o=`/conversation/list?page=${e}&size=${n}`;t&&(o+=`&accountId=${encodeURIComponent(t)}`),s&&(o+=`&roleId=${encodeURIComponent(s)}`);const a=d(o);try{const e=await u(a);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const n=await e.json();return{list:n.success&&Array.isArray(n.data)?n.data:[],total:n.total||0,pages:n.pages||0}}catch(e){return r.error("加载会话列表失败",e),{list:[],total:0,pages:0}}}async function y(e){const n=d(`/conversation/${e}/messages`);try{const e=await u(n);if(!e.ok)throw new k(m(e.status),`http_${e.status}`);const t=await e.json();return{messages:t.success&&Array.isArray(t.data)?t.data:[],total:t.total||0}}catch(e){return r.error("加载会话消息失败",e),{messages:[],total:0}}}async function x(e){const n=d(`/conversation/${e}`);try{const t=await u(n,{method:"DELETE"});if(!t.ok)throw new k(m(t.status),`http_${t.status}`);const s=await t.json();return r.info(`删除会话 id=${e} success=${s.success}`),s.success||!1}catch(e){return r.error("删除会话失败",e),!1}}function v(e){return d(`/conversation/${e}/export`)}async function w(){if(!i)return"";const e=function(e,n){try{return localStorage.getItem(_(e,n))||""}catch(e){return""}}(i.integrateId,i.userId);if(e)return i.chatId=e,r.info(`从缓存恢复 chatId=${e}`),e;try{const e=await f(1,5,i.userId,i.integrateId);if(e.list.length>0){const n=e.list[0],t=n.conversationId||n.chatId||"";if(t)return i.chatId=t,E(i.integrateId,i.userId,t),r.info(`从后端恢复会话 chatId=${t} messageCount=${n.messageCount}`),t}}catch(e){r.warn("查询后端会话列表失败,将生成新 chatId",e)}const n=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();return i.chatId=n,E(i.integrateId,i.userId,n),r.info(`生成新 chatId=${n}`),n}function _(e,n){return`csk_chatId_${e}${n?"_"+n:""}`}function E(e,n,t){try{t?localStorage.setItem(_(e,n),t):localStorage.removeItem(_(e,n))}catch(e){}}let C=null;function I(e){const n=$(e.primaryColor,-15),t=$(e.primaryColor,18),r=function(e){const n=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);return n?`${parseInt(n[1],16)}, ${parseInt(n[2],16)}, ${parseInt(n[3],16)}`:"79, 70, 229"}(e.primaryColor);return`\n --csk-primary: ${e.primaryColor};\n --csk-primary-hover: ${n};\n --csk-primary-light: ${t};\n --csk-primary-rgb: ${r};\n --csk-bg-user: linear-gradient(135deg, ${e.primaryColor}, ${n});\n --csk-bg-ai: #ffffff;\n --csk-text-user: #ffffff;\n --csk-text-ai: #1F2937;\n --csk-window-width: ${e.width}px;\n --csk-radius: 16px;\n --csk-shadow-window: 0 12px 48px rgba(15, 23, 42, 0.18), 0 2px 8px rgba(15, 23, 42, 0.06);\n --csk-shadow-bubble: 0 1px 2px rgba(15, 23, 42, 0.06);\n --csk-border: #ECEEF2;\n --csk-bg-app: #F6F7F9;\n `}function $(e,n){const t=e.match(/^#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/);if(!t)return e;const r=e=>Math.max(0,Math.min(255,e)),s=r(parseInt(t[1],16)+n),o=r(parseInt(t[2],16)+n),a=r(parseInt(t[3],16)+n);return`#${s.toString(16).padStart(2,"0")}${o.toString(16).padStart(2,"0")}${a.toString(16).padStart(2,"0")}`}function A(e){document.querySelector("style[data-csk-sdk]")||(C=document.createElement("style"),C.setAttribute("data-csk-sdk",""),C.textContent=function(e){return`\n/* ChatbotSDK 样式 - csk- 命名空间 */\n.csk-root {\n ${I(e)}\n font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif;\n font-size: 14px;\n line-height: 1.55;\n color: #1F2937;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n box-sizing: border-box;\n}\n.csk-root *, .csk-root *::before, .csk-root *::after { box-sizing: border-box; }\n\n/* ========== 悬浮按钮 ========== */\n.csk-launcher {\n position: fixed;\n bottom: 24px;\n z-index: 9998;\n width: 58px;\n height: 58px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n box-shadow: 0 8px 24px rgba(var(--csk-primary-rgb), 0.42), 0 2px 6px rgba(15, 23, 42, 0.12);\n display: flex;\n align-items: center;\n justify-content: center;\n cursor: pointer;\n transition: transform 0.22s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.22s ease;\n border: none;\n color: #fff;\n user-select: none;\n}\n.csk-launcher--right { right: 24px; }\n.csk-launcher--left { left: 24px; }\n.csk-launcher::after {\n content: '';\n position: absolute;\n inset: -4px;\n border-radius: 50%;\n border: 2px solid rgba(var(--csk-primary-rgb), 0.35);\n opacity: 0;\n animation: csk-ping 2.6s cubic-bezier(0, 0, 0.2, 1) infinite;\n pointer-events: none;\n}\n.csk-launcher:hover {\n transform: translateY(-2px) scale(1.05);\n box-shadow: 0 12px 32px rgba(var(--csk-primary-rgb), 0.5), 0 4px 10px rgba(15, 23, 42, 0.14);\n}\n.csk-launcher:active { transform: scale(0.94); }\n.csk-launcher svg { width: 28px; height: 28px; }\n\n@keyframes csk-ping {\n 0% { transform: scale(0.92); opacity: 0.7; }\n 70%, 100% { transform: scale(1.35); opacity: 0; }\n}\n\n/* ========== 聊天弹窗 ========== */\n.csk-window {\n position: fixed;\n bottom: 24px;\n z-index: 9999;\n width: var(--csk-window-width);\n height: 600px;\n max-height: calc(100vh - 48px);\n background: #fff;\n border-radius: var(--csk-radius);\n box-shadow: var(--csk-shadow-window);\n display: flex;\n flex-direction: column;\n overflow: hidden;\n transform-origin: bottom right;\n transition: opacity 0.24s ease, transform 0.24s cubic-bezier(0.34, 1.2, 0.64, 1), visibility 0.24s;\n opacity: 1;\n transform: translateY(0) scale(1);\n visibility: visible;\n pointer-events: auto;\n}\n.csk-window--right { right: 24px; transform-origin: bottom right; }\n.csk-window--left { left: 24px; transform-origin: bottom left; }\n.csk-window--hidden {\n opacity: 0;\n transform: translateY(12px) scale(0.96);\n visibility: hidden;\n pointer-events: none;\n}\n\n/* ========== 头部 ========== */\n.csk-header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 12px 16px;\n min-height: 60px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: move;\n user-select: none;\n position: relative;\n flex-shrink: 0;\n}\n.csk-header::after {\n content: '';\n position: absolute;\n left: 0; right: 0; bottom: 0;\n height: 24px;\n background: linear-gradient(to bottom, rgba(0,0,0,0.04), transparent);\n pointer-events: none;\n}\n.csk-header__left {\n display: flex;\n align-items: center;\n gap: 12px;\n min-width: 0;\n}\n.csk-header__avatar {\n width: 38px;\n height: 38px;\n border-radius: 50%;\n background: rgba(255, 255, 255, 0.22);\n backdrop-filter: blur(4px);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.25);\n}\n.csk-header__avatar svg { width: 22px; height: 22px; }\n.csk-header__info {\n display: flex;\n flex-direction: column;\n min-width: 0;\n}\n.csk-header__title {\n font-size: 15px;\n font-weight: 600;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n letter-spacing: 0.2px;\n}\n.csk-header__status {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n font-size: 11.5px;\n opacity: 0.9;\n margin-top: 2px;\n}\n.csk-status-dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #6EE7B7;\n box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7);\n animation: csk-status-pulse 2s infinite;\n}\n@keyframes csk-status-pulse {\n 0% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0.7); }\n 70% { box-shadow: 0 0 0 6px rgba(110, 231, 183, 0); }\n 100% { box-shadow: 0 0 0 0 rgba(110, 231, 183, 0); }\n}\n.csk-header__actions {\n display: flex;\n align-items: center;\n gap: 2px;\n flex-shrink: 0;\n}\n.csk-header__btn,\n.csk-history-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 32px;\n height: 32px;\n border: none;\n background: transparent;\n color: #fff;\n cursor: pointer;\n border-radius: 8px;\n transition: background 0.15s, transform 0.15s;\n}\n.csk-header__btn:hover,\n.csk-history-btn:hover {\n background: rgba(255, 255, 255, 0.2);\n}\n.csk-header__btn:active,\n.csk-history-btn:active { transform: scale(0.92); }\n\n/* ========== 消息区 ========== */\n.csk-messages {\n flex: 1;\n overflow-y: auto;\n padding: 20px 16px 12px;\n background: var(--csk-bg-app);\n scroll-behavior: smooth;\n}\n.csk-messages::-webkit-scrollbar { width: 6px; }\n.csk-messages::-webkit-scrollbar-track { background: transparent; }\n.csk-messages::-webkit-scrollbar-thumb {\n background: #D8DCE3;\n border-radius: 3px;\n}\n.csk-messages::-webkit-scrollbar-thumb:hover { background: #C2C7D0; }\n\n/* 欢迎空状态 */\n.csk-welcome {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n text-align: center;\n padding: 48px 24px 32px;\n color: #6B7280;\n animation: csk-fade-in 0.3s ease;\n}\n.csk-welcome__avatar {\n width: 56px;\n height: 56px;\n border-radius: 50%;\n background: var(--csk-bg-user);\n color: #fff;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-bottom: 14px;\n box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-welcome__avatar svg { width: 30px; height: 30px; }\n.csk-welcome__title {\n font-size: 15px;\n font-weight: 600;\n color: #1F2937;\n margin-bottom: 4px;\n}\n.csk-welcome__desc {\n font-size: 13px;\n color: #9CA3AF;\n line-height: 1.6;\n}\n\n/* 消息气泡 */\n.csk-msg {\n display: flex;\n margin-bottom: 18px;\n max-width: 100%;\n word-break: break-word;\n animation: csk-msg-in 0.28s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.csk-msg--user {\n flex-direction: row-reverse;\n align-items: flex-end;\n}\n.csk-msg--ai {\n flex-direction: row;\n align-items: flex-start;\n}\n.csk-msg__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg__avatar svg { width: 18px; height: 18px; }\n.csk-msg__avatar--ai {\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n}\n.csk-msg__avatar--user {\n background: var(--csk-bg-user);\n color: #fff;\n}\n.csk-msg__content {\n display: flex;\n flex-direction: column;\n min-width: 0;\n max-width: calc(100% - 46px);\n}\n.csk-msg--user .csk-msg__content { align-items: flex-end; }\n.csk-msg--ai .csk-msg__content { align-items: flex-start; }\n.csk-msg__bubble {\n padding: 10px 14px;\n border-radius: 16px;\n font-size: 14px;\n line-height: 1.6;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-msg--user .csk-msg__bubble {\n background: var(--csk-bg-user);\n color: var(--csk-text-user);\n border-radius: 16px 16px 4px 16px;\n}\n.csk-msg--ai .csk-msg__bubble {\n background: var(--csk-bg-ai);\n color: var(--csk-text-ai);\n border-radius: 16px 16px 16px 4px;\n border: 1px solid var(--csk-border);\n}\n.csk-msg__time {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 5px;\n padding: 0 4px;\n}\n\n@keyframes csk-msg-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: translateY(0); }\n}\n@keyframes csk-fade-in {\n from { opacity: 0; }\n to { opacity: 1; }\n}\n\n/* ========== Loading 动画 ========== */\n.csk-loading {\n display: flex;\n align-items: center;\n margin-bottom: 18px;\n animation: csk-msg-in 0.28s ease;\n}\n.csk-loading__avatar {\n width: 30px;\n height: 30px;\n border-radius: 50%;\n background: #fff;\n color: var(--csk-primary);\n border: 1px solid var(--csk-border);\n display: flex;\n align-items: center;\n justify-content: center;\n flex-shrink: 0;\n margin: 0 8px;\n box-shadow: var(--csk-shadow-bubble);\n}\n.csk-loading__avatar svg { width: 18px; height: 18px; }\n.csk-loading__bubble {\n background: #fff;\n border: 1px solid var(--csk-border);\n border-radius: 16px 16px 16px 4px;\n padding: 12px 16px;\n display: flex;\n align-items: center;\n gap: 5px;\n}\n.csk-loading__dot {\n width: 7px;\n height: 7px;\n border-radius: 50%;\n background: #B4B9C2;\n animation: csk-bounce 1.4s ease-in-out infinite both;\n}\n.csk-loading__dot:nth-child(1) { animation-delay: 0s; }\n.csk-loading__dot:nth-child(2) { animation-delay: 0.16s; }\n.csk-loading__dot:nth-child(3) { animation-delay: 0.32s; }\n\n@keyframes csk-bounce {\n 0%, 80%, 100% { transform: scale(0.6); opacity: 0.6; }\n 40% { transform: scale(1); opacity: 1; }\n}\n\n/* ========== 输入区 ========== */\n.csk-input-area {\n padding: 10px 12px 14px;\n background: #fff;\n border-top: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-input-wrap {\n display: flex;\n align-items: flex-end;\n gap: 8px;\n background: var(--csk-bg-app);\n border: 1px solid var(--csk-border);\n border-radius: 14px;\n padding: 6px 6px 6px 14px;\n transition: border-color 0.2s, box-shadow 0.2s, background 0.2s;\n}\n.csk-input-wrap--focus {\n border-color: var(--csk-primary);\n background: #fff;\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n.csk-input {\n flex: 1;\n border: none;\n background: transparent;\n padding: 8px 0;\n font-size: 14px;\n outline: none;\n font-family: inherit;\n resize: none;\n min-height: 22px;\n max-height: 120px;\n line-height: 1.5;\n color: #1F2937;\n}\n.csk-input::placeholder { color: #9CA3AF; }\n.csk-root .csk-input:focus-visible { outline: none; }\n.csk-send-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 36px;\n height: 36px;\n min-width: 36px;\n border: none;\n border-radius: 10px;\n background: var(--csk-bg-user);\n color: #fff;\n cursor: pointer;\n transition: transform 0.18s, box-shadow 0.18s, opacity 0.18s;\n box-shadow: 0 3px 10px rgba(var(--csk-primary-rgb), 0.3);\n}\n.csk-send-btn:hover:not(:disabled) {\n transform: translateY(-1px);\n box-shadow: 0 5px 14px rgba(var(--csk-primary-rgb), 0.4);\n}\n.csk-send-btn:active:not(:disabled) { transform: scale(0.92); }\n.csk-send-btn:disabled {\n background: #D1D5DB;\n box-shadow: none;\n cursor: not-allowed;\n opacity: 0.7;\n}\n.csk-send-btn svg { width: 18px; height: 18px; }\n\n/* ========== 清空按钮 ========== */\n.csk-clear-btn {\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 999px;\n background: #fff;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n margin: 0 auto 8px;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-clear-btn:hover {\n background: #FEF2F2;\n border-color: #FCA5A5;\n color: #DC2626;\n}\n\n/* ========== P1: 知识库分类下拉 ========== */\n.csk-category-bar {\n display: flex;\n align-items: center;\n padding: 8px 12px;\n border-top: 1px solid var(--csk-border);\n background: #FBFBFC;\n gap: 8px;\n flex-shrink: 0;\n}\n.csk-category-bar__label {\n font-size: 13px;\n white-space: nowrap;\n}\n.csk-category-select {\n flex: 1;\n padding: 6px 28px 6px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n color: #374151;\n background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239CA3AF' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E") no-repeat right 9px center;\n appearance: none;\n -webkit-appearance: none;\n outline: none;\n cursor: pointer;\n font-family: inherit;\n transition: border-color 0.2s, box-shadow 0.2s;\n max-width: 220px;\n}\n.csk-category-select:focus {\n border-color: var(--csk-primary);\n box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.12);\n}\n\n/* ========== P1: RAG 引用来源卡片 ========== */\n.csk-sources {\n margin-top: 8px;\n border: 1px solid var(--csk-border);\n border-radius: 12px;\n overflow: hidden;\n font-size: 12px;\n max-width: 100%;\n background: #FAFBFC;\n}\n.csk-sources__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 8px 12px;\n background: #F3F4F7;\n cursor: pointer;\n user-select: none;\n transition: background 0.15s;\n}\n.csk-sources__header:hover { background: #ECEEF2; }\n.csk-sources__title {\n display: flex;\n align-items: center;\n gap: 5px;\n font-weight: 500;\n color: #374151;\n}\n.csk-sources__arrow {\n transition: transform 0.2s;\n color: #9CA3AF;\n font-size: 10px;\n}\n.csk-sources--collapsed .csk-sources__arrow { transform: rotate(-90deg); }\n.csk-sources__body {\n border-top: 1px solid var(--csk-border);\n padding: 0;\n}\n.csk-sources--collapsed .csk-sources__body { display: none; }\n.csk-source-item {\n padding: 9px 12px;\n border-bottom: 1px solid #F0F1F4;\n transition: background 0.15s;\n}\n.csk-source-item:last-child { border-bottom: none; }\n.csk-source-item:hover { background: #fff; }\n.csk-source-item__name {\n font-weight: 500;\n color: #1F2937;\n margin-bottom: 3px;\n}\n.csk-source-item__snippet {\n color: #6B7280;\n line-height: 1.5;\n overflow: hidden;\n text-overflow: ellipsis;\n display: -webkit-box;\n -webkit-line-clamp: 2;\n -webkit-box-orient: vertical;\n}\n.csk-source-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 4px;\n}\n\n/* ========== P1: Markdown 渲染样式 ========== */\n.csk-msg--ai .csk-msg__bubble .csk-md-p { margin: 0 0 8px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-p:last-child { margin-bottom: 0; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h1,\n.csk-msg--ai .csk-msg__bubble .csk-md-h2,\n.csk-msg--ai .csk-msg__bubble .csk-md-h3,\n.csk-msg--ai .csk-msg__bubble .csk-md-h4,\n.csk-msg--ai .csk-msg__bubble .csk-md-h5,\n.csk-msg--ai .csk-msg__bubble .csk-md-h6 {\n margin: 14px 0 6px;\n font-weight: 600;\n line-height: 1.3;\n color: #111827;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-h1 { font-size: 20px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h2 { font-size: 17px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h3 { font-size: 15px; }\n.csk-msg--ai .csk-msg__bubble .csk-md-h4 { font-size: 14px; }\n\n.csk-md-code-block {\n background: #1E293B;\n color: #E2E8F0;\n padding: 12px 14px;\n border-radius: 10px;\n overflow-x: auto;\n margin: 8px 0;\n font-size: 13px;\n line-height: 1.55;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-md-code-block code {\n background: none;\n padding: 0;\n border-radius: 0;\n font-size: inherit;\n color: inherit;\n}\n.csk-md-inline-code {\n background: rgba(var(--csk-primary-rgb), 0.1);\n color: var(--csk-primary);\n padding: 1px 6px;\n border-radius: 5px;\n font-size: 13px;\n font-family: 'SF Mono', 'Consolas', 'Menlo', 'Monaco', monospace;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol {\n padding-left: 22px;\n margin: 6px 0;\n}\n.csk-msg--ai .csk-msg__bubble .csk-md-ul li,\n.csk-msg--ai .csk-msg__bubble .csk-md-ol li { margin-bottom: 4px; }\n.csk-md-blockquote {\n border-left: 3px solid var(--csk-primary);\n padding: 2px 12px;\n margin: 8px 0;\n color: #6B7280;\n background: rgba(var(--csk-primary-rgb), 0.05);\n border-radius: 0 6px 6px 0;\n}\n.csk-md-link {\n color: var(--csk-primary);\n text-decoration: none;\n border-bottom: 1px solid rgba(var(--csk-primary-rgb), 0.3);\n transition: border-color 0.15s;\n}\n.csk-md-link:hover { border-bottom-color: var(--csk-primary); }\n.csk-md-hr {\n border: none;\n border-top: 1px solid var(--csk-border);\n margin: 12px 0;\n}\n\n/* ========== P2: 会话管理面板 ========== */\n.csk-history-panel {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: #fff;\n z-index: 10;\n display: flex;\n flex-direction: column;\n overflow: hidden;\n animation: csk-slide-in 0.24s ease;\n}\n.csk-history-panel--hidden { display: none; }\n@keyframes csk-slide-in {\n from { transform: translateX(100%); opacity: 0.4; }\n to { transform: translateX(0); opacity: 1; }\n}\n.csk-history-panel__header {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 14px 16px;\n border-bottom: 1px solid var(--csk-border);\n background: var(--csk-bg-app);\n flex-shrink: 0;\n}\n.csk-history-panel__title {\n font-size: 14px;\n font-weight: 600;\n color: #1F2937;\n}\n.csk-history-panel__back {\n display: flex;\n align-items: center;\n gap: 4px;\n padding: 5px 12px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n background: #fff;\n color: #374151;\n font-size: 12px;\n cursor: pointer;\n transition: all 0.15s;\n font-family: inherit;\n}\n.csk-history-panel__back:hover { background: #F3F4F6; }\n.csk-history-panel__list {\n flex: 1;\n overflow-y: auto;\n padding: 10px;\n}\n.csk-history-panel__list::-webkit-scrollbar { width: 5px; }\n.csk-history-panel__list::-webkit-scrollbar-thumb { background: #E5E7EB; border-radius: 2px; }\n.csk-history-item {\n display: flex;\n align-items: center;\n justify-content: space-between;\n padding: 11px 12px;\n border-radius: 10px;\n cursor: pointer;\n transition: background 0.15s;\n margin-bottom: 5px;\n border: 1px solid transparent;\n}\n.csk-history-item:hover { background: #F3F4F6; }\n.csk-history-item--active {\n background: rgba(var(--csk-primary-rgb), 0.08);\n border-color: rgba(var(--csk-primary-rgb), 0.2);\n}\n.csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.12); }\n.csk-history-item__info { flex: 1; min-width: 0; }\n.csk-history-item__id {\n font-size: 13px;\n font-weight: 500;\n color: #1F2937;\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n}\n.csk-history-item__meta {\n font-size: 11px;\n color: #9CA3AF;\n margin-top: 3px;\n}\n.csk-history-item__actions {\n display: flex;\n gap: 4px;\n margin-left: 8px;\n opacity: 0;\n transition: opacity 0.15s;\n}\n.csk-history-item:hover .csk-history-item__actions { opacity: 1; }\n.csk-history-action {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 28px;\n height: 28px;\n border: none;\n border-radius: 7px;\n cursor: pointer;\n font-size: 12px;\n transition: all 0.15s;\n}\n.csk-history-action--export { background: #EFF6FF; color: #2563EB; }\n.csk-history-action--export:hover { background: #DBEAFE; }\n.csk-history-action--delete { background: #FEF2F2; color: #DC2626; }\n.csk-history-action--delete:hover { background: #FEE2E2; }\n.csk-history-panel__empty {\n display: flex;\n flex-direction: column;\n align-items: center;\n justify-content: center;\n padding: 48px 20px;\n color: #9CA3AF;\n font-size: 13px;\n text-align: center;\n}\n.csk-history-panel__empty-icon {\n font-size: 34px;\n margin-bottom: 10px;\n opacity: 0.5;\n}\n.csk-history-panel__loading {\n display: flex;\n align-items: center;\n justify-content: center;\n padding: 24px;\n color: #9CA3AF;\n font-size: 13px;\n}\n.csk-history-panel__loadmore {\n display: block;\n width: 100%;\n padding: 10px;\n border: none;\n background: #F9FAFB;\n color: #6B7280;\n font-size: 12px;\n cursor: pointer;\n text-align: center;\n transition: background 0.15s;\n}\n.csk-history-panel__loadmore:hover { background: #F3F4F6; }\n\n/* ========== 快捷问题芯片 ========== */\n.csk-quick-replies {\n display: flex;\n flex-wrap: wrap;\n gap: 8px;\n justify-content: center;\n margin-top: 18px;\n max-width: 320px;\n}\n.csk-quick-reply {\n border: 1px solid var(--csk-border);\n background: #fff;\n color: #374151;\n font-size: 12.5px;\n padding: 7px 13px;\n border-radius: 999px;\n cursor: pointer;\n font-family: inherit;\n line-height: 1.3;\n transition: all 0.18s ease;\n max-width: 100%;\n}\n.csk-quick-reply:hover {\n border-color: var(--csk-primary);\n color: var(--csk-primary);\n background: rgba(var(--csk-primary-rgb), 0.06);\n transform: translateY(-1px);\n}\n.csk-quick-reply:active { transform: scale(0.96); }\n\n/* ========== AI 消息操作条 ========== */\n.csk-msg__actions {\n display: flex;\n gap: 2px;\n margin-top: 5px;\n padding: 0 2px;\n opacity: 0;\n transition: opacity 0.15s ease;\n}\n.csk-msg--ai:hover .csk-msg__actions { opacity: 1; }\n.csk-msg--streaming .csk-msg__actions { display: none; }\n.csk-action-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: transparent;\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n}\n.csk-action-btn:hover {\n background: #F3F4F6;\n color: #374151;\n}\n.csk-action-btn--done { color: #10B981; }\n.csk-action-btn:active { transform: scale(0.9); }\n\n/* ========== 流式打字光标 ========== */\n.csk-caret {\n display: inline-block;\n width: 7px;\n height: 15px;\n margin-left: 2px;\n vertical-align: text-bottom;\n background: var(--csk-primary);\n border-radius: 1px;\n animation: csk-caret-blink 1s step-end infinite;\n}\n@keyframes csk-caret-blink {\n 0%, 50% { opacity: 1; }\n 51%, 100% { opacity: 0; }\n}\n\n/* ========== 代码块复制按钮 ========== */\n.csk-md-code-block { position: relative; }\n.csk-md-code-copy {\n position: absolute;\n top: 8px;\n right: 8px;\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(255, 255, 255, 0.12);\n color: #CBD5E1;\n border-radius: 6px;\n cursor: pointer;\n opacity: 0;\n transition: all 0.15s ease;\n}\n.csk-md-code-block:hover .csk-md-code-copy { opacity: 1; }\n.csk-md-code-copy:hover { background: rgba(255, 255, 255, 0.22); color: #fff; }\n.csk-md-code-copy:active { transform: scale(0.9); }\n\n/* ========== 新消息提示按钮 ========== */\n.csk-newmsg {\n position: absolute;\n bottom: 82px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 5;\n display: inline-flex;\n align-items: center;\n gap: 5px;\n padding: 7px 14px;\n border: none;\n background: var(--csk-primary);\n color: #fff;\n font-size: 12px;\n font-family: inherit;\n border-radius: 999px;\n cursor: pointer;\n box-shadow: 0 4px 14px rgba(var(--csk-primary-rgb), 0.38);\n transition: transform 0.2s ease, box-shadow 0.2s ease;\n animation: csk-msg-in 0.25s ease;\n white-space: nowrap;\n}\n.csk-newmsg:hover { transform: translateX(-50%) translateY(-1px); box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.48); }\n.csk-newmsg:active { transform: translateX(-50%) scale(0.95); }\n.csk-newmsg--hidden { display: none; }\n\n/* ========== 发送按钮停止态 ========== */\n.csk-send-btn--stop {\n background: #EF4444 !important;\n box-shadow: 0 3px 10px rgba(239, 68, 68, 0.35) !important;\n}\n.csk-send-btn--stop:hover:not(:disabled) {\n box-shadow: 0 5px 14px rgba(239, 68, 68, 0.45) !important;\n}\n\n/* ========== 暗色模式 ========== */\n.csk-root.csk-dark {\n --csk-bg-ai: #1E1E2E;\n --csk-text-ai: #E2E8F0;\n --csk-border: #3B3B52;\n --csk-bg-app: #141421;\n color: #E2E8F0;\n}\n.csk-dark .csk-window {\n background: #1A1A2E;\n box-shadow: 0 12px 48px rgba(0, 0, 0, 0.4), 0 2px 8px rgba(0, 0, 0, 0.2);\n}\n.csk-dark .csk-header::after { background: linear-gradient(to bottom, rgba(0,0,0,0.12), transparent); }\n.csk-dark .csk-msg__avatar--ai {\n background: var(--csk-bg-ai);\n color: var(--csk-primary);\n border-color: var(--csk-border);\n}\n.csk-dark .csk-input-area { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-input-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-input-wrap--focus { background: #1A1A2E; border-color: var(--csk-primary); }\n.csk-dark .csk-input { color: #E2E8F0; }\n.csk-dark .csk-loading__avatar { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__bubble { background: var(--csk-bg-ai); border-color: var(--csk-border); }\n.csk-dark .csk-loading__dot { background: #6B7280; }\n.csk-dark .csk-category-bar { background: #1A1A2E; border-top-color: var(--csk-border); }\n.csk-dark .csk-category-select { background-color: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-sources { background: #1E1E2E; border-color: var(--csk-border); }\n.csk-dark .csk-sources__header { background: #25253A; }\n.csk-dark .csk-sources__header:hover { background: #2D2D48; }\n.csk-dark .csk-source-item:hover { background: var(--csk-bg-ai); }\n.csk-dark .csk-source-item__name { color: #E2E8F0; }\n.csk-dark .csk-source-item__meta { color: #6B7280; }\n.csk-dark .csk-history-panel { background: #1A1A2E; }\n.csk-dark .csk-history-panel__header { background: var(--csk-bg-app); border-bottom-color: var(--csk-border); }\n.csk-dark .csk-history-panel__back { background: var(--csk-bg-app); border-color: var(--csk-border); color: #E2E8F0; }\n.csk-dark .csk-history-panel__back:hover { background: #2D2D48; }\n.csk-dark .csk-history-item:hover { background: #25253A; }\n.csk-dark .csk-history-item__id { color: #E2E8F0; }\n.csk-dark .csk-history-item__meta { color: #6B7280; }\n.csk-dark .csk-history-item--active { background: rgba(var(--csk-primary-rgb), 0.15); }\n.csk-dark .csk-history-item--active:hover { background: rgba(var(--csk-primary-rgb), 0.22); }\n.csk-dark .csk-action-btn:hover { background: #2D2D48; color: #E2E8F0; }\n.csk-dark .csk-clear-btn { background: var(--csk-bg-app); border-color: var(--csk-border); color: #9CA3AF; }\n.csk-dark .csk-clear-btn:hover { background: #3B1A1A; border-color: #7F1D1D; color: #FCA5A5; }\n.csk-dark .csk-md-code-block { background: #0F0F1A; }\n.csk-dark .csk-md-blockquote { background: rgba(var(--csk-primary-rgb), 0.08); }\n.csk-dark .csk-md-link { color: var(--csk-primary-light); }\n.csk-dark .csk-msg--ai .csk-msg__bubble { background: var(--csk-bg-ai); color: var(--csk-text-ai); border-color: var(--csk-border); }\n.csk-dark .csk-welcome__title { color: #E2E8F0; }\n.csk-dark .csk-welcome__desc { color: #6B7280; }\n.csk-dark .csk-quick-reply { background: var(--csk-bg-app); border-color: var(--csk-border); color: #CBD5E1; }\n.csk-dark .csk-quick-reply:hover { background: rgba(var(--csk-primary-rgb), 0.12); border-color: var(--csk-primary); color: var(--csk-primary-light); }\n.csk-dark .csk-teaser { background: #2D2D48; color: #E2E8F0; box-shadow: 0 4px 20px rgba(0,0,0,0.35); }\n.csk-dark .csk-teaser::after { border-top-color: #2D2D48; }\n.csk-dark .csk-teaser__close { color: #6B7280; }\n.csk-dark .csk-teaser__close:hover { color: #9CA3AF; }\n.csk-dark .csk-feedback-btn { background: rgba(var(--csk-primary-rgb), 0.1); color: #9CA3AF; }\n.csk-dark .csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.2); color: var(--csk-primary-light); }\n.csk-dark .csk-feedback-btn--active { background: rgba(var(--csk-primary-rgb), 0.28); color: var(--csk-primary-light); }\n.csk-dark .csk-history-panel__search-wrap { background: var(--csk-bg-app); border-color: var(--csk-border); }\n.csk-dark .csk-history-panel__search-wrap:focus-within { border-color: var(--csk-primary); }\n.csk-dark .csk-history-panel__search { color: #E2E8F0; }\n.csk-dark .csk-launcher__badge { box-shadow: 0 0 0 2px #1A1A2E; }\n.csk-dark .csk-welcome__avatar { box-shadow: 0 6px 18px rgba(var(--csk-primary-rgb), 0.25); }\n.csk-dark .csk-header__avatar { box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.15); background: rgba(255, 255, 255, 0.1); }\n\n/* ========== Launcher 未读徽章 ========== */\n.csk-launcher__badge {\n position: absolute;\n top: -3px;\n right: -3px;\n width: 16px;\n height: 16px;\n border-radius: 50%;\n background: #EF4444;\n border: 2px solid #fff;\n box-shadow: 0 0 0 2px #fff;\n animation: csk-badge-in 0.28s cubic-bezier(0.34, 1.56, 0.64, 1);\n pointer-events: none;\n}\n.csk-launcher__badge--hidden { display: none; }\n@keyframes csk-badge-in {\n from { transform: scale(0); }\n to { transform: scale(1); }\n}\n\n/* ========== Launcher 提示气泡 ========== */\n.csk-teaser {\n position: fixed;\n bottom: 90px;\n z-index: 9997;\n max-width: 240px;\n padding: 10px 14px;\n background: #fff;\n color: #1F2937;\n font-size: 13px;\n line-height: 1.5;\n border-radius: 12px;\n box-shadow: 0 4px 20px rgba(15, 23, 42, 0.15);\n animation: csk-teaser-in 0.35s cubic-bezier(0.22, 1, 0.36, 1);\n cursor: pointer;\n user-select: none;\n}\n.csk-teaser--right { right: 24px; }\n.csk-teaser--left { left: 24px; }\n.csk-teaser::after {\n content: '';\n position: absolute;\n bottom: -6px;\n right: 28px;\n width: 12px;\n height: 12px;\n background: inherit;\n border-radius: 2px;\n transform: rotate(45deg);\n box-shadow: 2px 2px 4px rgba(15, 23, 42, 0.08);\n}\n.csk-teaser--left::after { right: auto; left: 28px; }\n.csk-teaser__close {\n position: absolute;\n top: 4px;\n right: 6px;\n background: none;\n border: none;\n font-size: 16px;\n color: #9CA3AF;\n cursor: pointer;\n padding: 2px 4px;\n line-height: 1;\n border-radius: 4px;\n}\n.csk-teaser__close:hover { color: #374151; }\n.csk-teaser--hidden { display: none; }\n@keyframes csk-teaser-in {\n from { opacity: 0; transform: translateY(8px) scale(0.95); }\n to { opacity: 1; transform: translateY(0) scale(1); }\n}\n\n/* ========== 消息反馈按钮(👍 / 👎) ========== */\n.csk-feedback-btn {\n display: flex;\n align-items: center;\n justify-content: center;\n width: 26px;\n height: 26px;\n border: none;\n background: rgba(var(--csk-primary-rgb), 0.08);\n color: #9CA3AF;\n border-radius: 6px;\n cursor: pointer;\n transition: all 0.15s ease;\n padding: 0;\n}\n.csk-feedback-btn:hover { background: rgba(var(--csk-primary-rgb), 0.18); color: var(--csk-primary); }\n.csk-feedback-btn--active {\n background: rgba(var(--csk-primary-rgb), 0.28);\n color: var(--csk-primary);\n}\n.csk-feedback-btn--active.down { background: #FEF2F2; color: #EF4444; }\n.csk-feedback-btn:active { transform: scale(0.9); }\n.csk-msg--streaming .csk-feedback-btn { display: none; }\n\n/* ========== 历史会话搜索框 ========== */\n.csk-history-panel__search-wrap {\n padding: 8px 10px;\n border-bottom: 1px solid var(--csk-border);\n flex-shrink: 0;\n}\n.csk-history-panel__search-wrap:focus-within {\n border-bottom-color: var(--csk-primary);\n}\n.csk-history-panel__search {\n width: 100%;\n padding: 7px 10px;\n border: 1px solid var(--csk-border);\n border-radius: 8px;\n font-size: 12.5px;\n font-family: inherit;\n color: #1F2937;\n background: var(--csk-bg-app);\n outline: none;\n transition: border-color 0.2s;\n}\n.csk-history-panel__search:focus { border-color: var(--csk-primary); }\n.csk-history-panel__search::placeholder { color: #9CA3AF; }\n\n/* ========== a11y 焦点指示 ========== */\n.csk-root :focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n}\n.csk-root button:focus-visible {\n outline: 2px solid var(--csk-primary);\n outline-offset: 2px;\n border-radius: inherit;\n}\n/* 弹窗打开时隐藏 launcher 上的焦点环 */\n.csk-launcher:focus-visible { outline: none; box-shadow: 0 0 0 3px rgba(var(--csk-primary-rgb), 0.4); }\n\n/* ========== a11y aria-live 播报区(视觉隐藏) ========== */\n.csk-sr-only {\n position: absolute !important;\n width: 1px !important;\n height: 1px !important;\n padding: 0 !important;\n margin: -1px !important;\n overflow: hidden !important;\n clip: rect(0,0,0,0) !important;\n white-space: nowrap !important;\n border: 0 !important;\n}\n\n/* ========== 移动端适配 ========== */\n@media (max-width: 480px) {\n .csk-window {\n width: 100vw !important;\n height: 100vh !important;\n max-height: 100vh;\n bottom: 0 !important;\n right: 0 !important;\n left: 0 !important;\n border-radius: 0;\n }\n .csk-window--hidden { transform: translateY(100%); }\n .csk-launcher { bottom: 20px; }\n .csk-launcher--right { right: 20px; }\n .csk-launcher--left { left: 20px; }\n}\n`}(e),document.head.appendChild(C))}function L(){return"undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID():"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,e=>{const n=16*Math.random()|0;return("x"===e?n:3&n|8).toString(16)})}function S(e){const n={"&":"&","<":"<",">":">",'"':""","'":"'"};return e.replace(/[&<>"']/g,e=>n[e]||e)}function F(){return Date.now()}const N='';function M(e,n){const t=document.createElement("div");t.id="csk-launcher",t.className="csk-launcher csk-launcher--"+("left-bottom"===e.position?"left":"right"),t.setAttribute("title",e.title),t.setAttribute("aria-label",e.title),t.setAttribute("role","button"),t.setAttribute("tabindex","0"),t.innerHTML=e.launcherIcon;const r=document.createElement("div");r.className="csk-launcher__badge csk-launcher__badge--hidden",t.appendChild(r);const s=function(e,n){let t=null;return function(...r){null!==t&&clearTimeout(t),t=setTimeout(()=>{e.apply(this,r),t=null},n)}}(n,300);return t.addEventListener("click",s),t.addEventListener("keydown",e=>{"Enter"!==e.key&&" "!==e.key||(e.preventDefault(),s())}),t}function D(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--user";const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--user",s.innerHTML='';const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.textContent=n;const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=W(t),o.appendChild(a),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),r}function T(e,n,t,r,s){const o=document.createElement("div");o.className="csk-msg csk-msg--ai",s&&(o.dataset.cskMsgId=s);const a=document.createElement("div");a.className="csk-msg__avatar csk-msg__avatar--ai",a.innerHTML=N;const i=document.createElement("div");i.className="csk-msg__content";const c=document.createElement("div");c.className="csk-msg__bubble",r?c.innerHTML=r(n):c.textContent=n;const l=document.createElement("div");return l.className="csk-msg__time",l.textContent=W(t),i.appendChild(c),i.appendChild(z(c,o)),i.appendChild(l),o.appendChild(a),o.appendChild(i),e.appendChild(o),P(c),o}const q='',B='';function z(e,n){const t=document.createElement("div");t.className="csk-msg__actions";const r=document.createElement("button");r.type="button",r.className="csk-action-btn",r.setAttribute("title",a("copy")),r.setAttribute("aria-label",a("copy")),r.innerHTML=q,r.addEventListener("click",async n=>{n.stopPropagation();const t=e.textContent||"";await j(t,r)});const s=document.createElement("button");s.type="button",s.className="csk-action-btn",s.setAttribute("title",a("retry")),s.setAttribute("aria-label",a("retry")),s.innerHTML=B,s.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:retry",{detail:{msgId:n.dataset.cskMsgId||""}}))});const o=document.createElement("button");o.type="button",o.className="csk-feedback-btn",o.setAttribute("title",a("feedback_up")),o.setAttribute("aria-label",a("feedback_up")),o.innerHTML='',o.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"up"}}))});const i=document.createElement("button");return i.type="button",i.className="csk-feedback-btn",i.setAttribute("title",a("feedback_down")),i.setAttribute("aria-label",a("feedback_down")),i.innerHTML='',i.addEventListener("click",e=>{e.stopPropagation();const t=n.closest(".csk-window");t&&t.dispatchEvent(new CustomEvent("csk:feedback",{detail:{msgId:n.dataset.cskMsgId||"",value:"down"}}))}),t.appendChild(r),t.appendChild(s),t.appendChild(o),t.appendChild(i),t}function H(e,n){const t=e.querySelectorAll(".csk-feedback-btn");t.length<2||(t.forEach(e=>e.classList.remove("csk-feedback-btn--active","down")),"up"===n&&t[0]&&t[0].classList.add("csk-feedback-btn--active"),"down"===n&&t[1]&&t[1].classList.add("csk-feedback-btn--active","down"))}async function j(e,n){const t=n.innerHTML;try{if(navigator.clipboard&&window.isSecureContext)await navigator.clipboard.writeText(e);else{const n=document.createElement("textarea");n.value=e,n.style.position="fixed",n.style.opacity="0",document.body.appendChild(n),n.select(),document.execCommand("copy"),document.body.removeChild(n)}n.innerHTML='',n.classList.add("csk-action-btn--done"),setTimeout(()=>{n.innerHTML=t,n.classList.remove("csk-action-btn--done")},1500)}catch(e){}}function P(e){e.querySelectorAll(".csk-md-code-block").forEach(e=>{if(e.querySelector(".csk-md-code-copy"))return;const n=e.querySelector("code"),t=document.createElement("button");t.type="button",t.className="csk-md-code-copy",t.setAttribute("title",a("copy")),t.setAttribute("aria-label",a("copy")),t.innerHTML=q,t.addEventListener("click",async e=>{e.stopPropagation(),await j((null==n?void 0:n.textContent)||"",t)}),e.appendChild(t)})}function R(e,n){e.classList.remove("csk-msg--streaming");const t=n.querySelector(".csk-caret");t&&t.remove(),P(n)}function U(e,n){const t=e.querySelector(".csk-sources");if(t&&t.remove(),!n||0===n.length)return;const r=document.createElement("div");r.className="csk-sources csk-sources--collapsed";const s=document.createElement("div");s.className="csk-sources__header";const o=document.createElement("span");o.className="csk-sources__title",o.textContent=`📚 ${a("source_count",{n:n.length})}`;const i=document.createElement("span");i.className="csk-sources__arrow",i.textContent="▼",s.appendChild(o),s.appendChild(i),s.addEventListener("click",()=>{r.classList.toggle("csk-sources--collapsed")});const c=document.createElement("div");c.className="csk-sources__body";for(const e of n){const n=document.createElement("div");n.className="csk-source-item";const t=document.createElement("div");if(t.className="csk-source-item__name",t.textContent=e.title||e.sourceName||"未知文档",e.snippet){const t=document.createElement("div");t.className="csk-source-item__snippet",t.textContent=e.snippet,n.appendChild(t)}const r=document.createElement("div");r.className="csk-source-item__meta";const s=[];e.sourceName&&s.push(e.sourceName),void 0!==e.chunkIndex&&s.push(`分块 #${e.chunkIndex}`),void 0!==e.score&&s.push(`相关度 ${(100*e.score).toFixed(0)}%`),r.textContent=s.join(" · "),n.appendChild(t),n.appendChild(r),c.appendChild(n)}r.appendChild(s),r.appendChild(c);const l=e.querySelector(".csk-msg__time");l&&l.parentNode?l.parentNode.insertBefore(r,l):e.appendChild(r)}function O(e,n,t,r,s,o,i){if(e.innerHTML="",0===n.length){const n=document.createElement("div");return n.className="csk-history-panel__empty",n.innerHTML=`\n
💬
\n
${a("history_empty")}
\n `,void e.appendChild(n)}for(const i of n){const n=document.createElement("div");n.className="csk-history-item";const c=i.chatId||i.id;o&&c===o&&n.classList.add("csk-history-item--active");const l=document.createElement("div");l.className="csk-history-item__info";const d=document.createElement("div");d.className="csk-history-item__id",i.lastMessagePreview?d.textContent=i.lastMessagePreview.length>60?i.lastMessagePreview.substring(0,60)+"...":i.lastMessagePreview:d.textContent=c;const p=document.createElement("div");p.className="csk-history-item__meta";const u=[];void 0!==i.messageCount&&u.push(`${i.messageCount} 条消息`),i.lastMessageTime?u.push(i.lastMessageTime):i.createdAt&&u.push(i.createdAt),p.textContent=u.join(" · "),l.appendChild(d),l.appendChild(p);const k=document.createElement("div");k.className="csk-history-item__actions";const m=document.createElement("button");m.className="csk-history-action csk-history-action--export",m.setAttribute("title",a("history_export")),m.innerHTML='',m.addEventListener("click",e=>{e.stopPropagation(),r(i.id)});const g=document.createElement("button");g.className="csk-history-action csk-history-action--delete",g.setAttribute("title",a("history_delete")),g.innerHTML='',g.addEventListener("click",e=>{e.stopPropagation(),s(i.id)}),k.appendChild(m),k.appendChild(g),n.appendChild(l),n.appendChild(k),n.addEventListener("click",()=>{t(c)}),e.appendChild(n)}}function Y(e){e.scrollTop=e.scrollHeight}function W(e){const n=new Date(e);return`${String(n.getHours()).padStart(2,"0")}:${String(n.getMinutes()).padStart(2,"0")}`}function K(e){return`csk_history_${e}`}function V(e,n){try{let t=n;t.length>200&&(t=t.slice(50),r.warn(`消息数量达到上限,已裁剪最早 50 条,当前 ${t.length} 条`));const s={messages:t,updatedAt:Date.now()};localStorage.setItem(K(e),JSON.stringify(s))}catch(e){e instanceof Error&&"QuotaExceededError"===e.name?r.error("localStorage 空间不足,会话历史保存失败。建议清空历史记录。"):r.error("保存会话历史失败",e)}}function X(e){try{localStorage.removeItem(K(e))}catch(e){r.warn("清空会话历史失败",e)}}const J="\0CODEBLOCK_",G="\0INLINECODE_";function Q(e){if(!e||"string"!=typeof e)return"";const n=[];let t=e;t=t.replace(/```(\w*)\n([\s\S]*?)```/g,(e,t,r)=>{const s=n.length,o=S(r.trimEnd()),a=t?` class="language-${S(t)}"`:"";return n.push(`
${o}
`),`${J}${s}\0`});const r=[];t=t.replace(/`([^`\n]+)`/g,(e,n)=>{const t=r.length;return r.push(`${S(n)}`),`${G}${t}\0`}),t=S(t),t=Z(t,J,n),t=Z(t,G,r);const s=t.split("\n"),o=[];let a=!1,i="",c=!1,l=[];for(let e=0;e')){p(),u(),k(),o.push(n);continue}const t=n.match(/^(#{1,6})\s+(.+)/);if(t){p(),u(),k();const e=t[1].length;o.push(`${t[2]}`);continue}const r=n.match(/^>\s?(.*)/);if(r){p(),u(),c||(c=!0,o.push('
')),o.push(`

${d(r[1])}

`);continue}c&&k();const m=n.match(/^[\-\*]\s+(.+)/);if(m){p(),k(),a&&"ul"===i||(u(),a=!0,i="ul",o.push('
    ')),o.push(`
  • ${d(m[1])}
  • `);continue}const g=n.match(/^\d+\.\s+(.+)/);g?(p(),k(),a&&"ol"===i||(u(),a=!0,i="ol",o.push('
      ')),o.push(`
    1. ${d(g[1])}
    2. `)):""!==n.trim()?/^(\*{3,}|-{3,}|_{3,})$/.test(n.trim())?(p(),u(),k(),o.push('
      ')):(u(),k(),l.push(d(n))):(p(),u())}return p(),u(),k(),o.join("\n");function d(e){return e=(e=(e=(e=(e=(e=e.replace(/\*\*(.+?)\*\*/g,"$1")).replace(/__(.+?)__/g,"$1")).replace(/\*(.+?)\*/g,"$1")).replace(/(?$1")).replace(/~~(.+?)~~/g,"$1")).replace(/\[([^\]]+)\]\(([^)]+)\)/g,(e,n,t)=>`${n}`)}function p(){l.length>0&&(o.push(`

      ${l.join("
      ")}

      `),l=[])}function u(){a&&(o.push("ul"===i?"
":""),a=!1,i="")}function k(){c&&(o.push("
"),c=!1)}}function Z(e,n,t){return e.replace(new RegExp(n.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")+"(\\d+)\0","g"),(e,n)=>t[parseInt(n)]||"")}let ee,ne=null,te=[],re=null,se=null,oe=null,ae=null,ie=null,ce=null,le=null,de=null,pe=null,ue=null,ke=null,me=null,ge=null,he=!1,be=null,fe=!0,ye=[],xe="",ve=!1;function we(e,n){ne=e,re=n.messagesContainer,se=n.inputEl,oe=n.inputEl.parentElement,ae=n.sendBtn,ie=n.clearBtn,ce=n.categorySelect,le=n.historyPanel,de=n.welcomeEl,pe=n.newMsgBtn,ue=n.searchInput,ke=n.ariaLiveEl,me=n.showLoading,ge=n.hideLoading,ee=e.categoryId,ve=!!e.categoryId||!!e.showCategorySwitch,function(){if(!se||!ae)return;ae.addEventListener("click",()=>{he&&be?be.abort():Se()}),se.addEventListener("keydown",e=>{"Enter"!==e.key||e.shiftKey||e.isComposing||(e.preventDefault(),Se())}),se.addEventListener("input",()=>{Le(),function(){if(!se)return;se.style.height="auto",se.style.height=`${Math.min(se.scrollHeight,120)}px`}()}),se.addEventListener("focus",()=>{oe&&oe.classList.add("csk-input-wrap--focus")}),se.addEventListener("blur",()=>{oe&&oe.classList.remove("csk-input-wrap--focus")}),ie&&ie.addEventListener("click",()=>function(){if(!ne)return;if(!confirm(a("clear_confirm")))return;if(te=[],re){re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove())}ie&&(ie.style.display="none");Ae(),X(ne.integrateId);const e=function(){const e="undefined"!=typeof crypto&&crypto.randomUUID?crypto.randomUUID().substring(0,8):Math.random().toString(36).substring(2,10);return`sdk_${Date.now()}_${e}`}();c(e),E(ne.integrateId,ne.userId,e),r.lifecycleClear(ne.integrateId),r.info(`新 chatId=${e}`)}())}(),function(){if(!re)return;re.addEventListener("scroll",()=>{if(!re)return;const{scrollTop:e,scrollHeight:n,clientHeight:t}=re;fe=n-e-t<80,fe&&Ee()}),pe&&pe.addEventListener("click",()=>{re&&Y(re),fe=!0,Ee()})}(),function(){if(!ue)return;ue.addEventListener("input",()=>{xe=ue.value.trim().toLowerCase(),$e()})}(),e.showCategorySwitch&&ce&&async function(){if(!ce)return;try{const e=await async function(){const e=d("/category/tree");try{const n=await u(e);if(!n.ok)throw new k(m(n.status),`http_${n.status}`);const t=await n.json();return t.success&&Array.isArray(t.data)?(r.info(`加载分类树成功 count=${t.data.length}`),t.data):[]}catch(e){return e instanceof k?r.error(`加载分类树失败: ${e.message}`):r.error("加载分类树失败",e),[]}}();if(0===e.length)return;ce.innerHTML=``;const n=(e,t=0)=>{for(const r of e){const e=document.createElement("option");e.value=String(r.id),e.textContent=`${" ".repeat(t)}${r.name}`,void 0!==ee&&String(r.id)===String(ee)&&(e.selected=!0),ce.appendChild(e),r.children&&r.children.length>0&&n(r.children,t+1)}};n(e),r.info(`知识库分类加载成功 count=${e.length}`)}catch(e){r.error(a("category_load_error"),e)}}()}async function _e(){if(ne&&re&&(await w(),await async function(){if(!ne||!re)return;const e=l();if(!e)return;try{const n=await y(e);n.messages.length>0&&(te=n.messages.map((e,n)=>({id:L(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Ne(),r.info(`从后端加载 ${te.length} 条历史消息`),V(ne.integrateId,te))}catch(e){r.warn("从后端加载历史消息失败",e)}}(),0===te.length)){const e=function(e){try{const n=localStorage.getItem(K(e));if(!n)return[];const t=JSON.parse(n);return t&&Array.isArray(t.messages)?(r.info(`加载历史消息 integrateId=${e} count=${t.messages.length}`),t.messages):[]}catch(e){return r.warn("加载会话历史失败",e),[]}}(ne.integrateId);e.length>0&&(te=e,Ne(),r.info(`从本地缓存恢复 ${e.length} 条消息`))}}function Ee(){pe&&pe.classList.add("csk-newmsg--hidden")}function Ce(){re&&(fe?Y(re):pe&&pe.classList.remove("csk-newmsg--hidden"))}function Ie(e){ae&&("stop"===e?(ae.classList.add("csk-send-btn--stop"),ae.removeAttribute("disabled"),ae.setAttribute("title",a("stop")),ae.setAttribute("aria-label",a("stop")),ae.innerHTML=''):(ae.classList.remove("csk-send-btn--stop"),ae.setAttribute("title",a("send")),ae.setAttribute("aria-label",a("send")),ae.innerHTML='',Le()))}function $e(){const e=null==le?void 0:le.querySelector("#csk-history-list");if(!e||!ne)return;O(e,xe?ye.filter(e=>(e.lastMessagePreview||e.chatId||e.id||"").toLowerCase().includes(xe)):ye,e=>{Me(e)},e=>{window.open(v(e),"_blank")},async e=>{if(!confirm(a("history_delete_confirm")))return;await x(e)&&(e===l()&&(te=[],re&&re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),ie&&(ie.style.display="none"),Ae()),ye=ye.filter(n=>(n.chatId||n.id)!==e),$e())},l())}function Ae(){if(!de)return;const e=te.length>0||re&&re.querySelector(".csk-msg");de.style.display=e?"none":""}function Le(){if(!ae||!se)return;se.value.trim().length>0&&!he?ae.removeAttribute("disabled"):ae.setAttribute("disabled","true")}async function Se(){if(!se||!ne||he)return;const e=se.value.trim();if(""===e)return;se.value="",Le(),se.style.height="auto";const n=F(),t={id:L(),role:"user",content:e,timestamp:n};re&&D(re,e,n),te.push(t),Ae(),ie&&te.length>0&&(ie.style.display="inline-flex"),re&&Ce(),await Fe(e)}async function Fe(e){if(!ne||!re)return;he=!0,Ie("stop"),ne.chatId||await w();const n=F(),t=ve&&(void 0!==ee||void 0!==ne.categoryId);me&&me(),re&&Ce();const s=L();let o="";try{ne.streaming?o=await async function(e,n,t,r){be=new AbortController;const s=be.signal;return new Promise((o,i)=>{let c=null,l=null,d="",p=!1;h(e,e=>{if(d+=e,!p&&re){ge&&ge();const{wrapper:e,bubble:t}=function(e,n,t){const r=document.createElement("div");r.className="csk-msg csk-msg--ai csk-msg--streaming",t&&(r.dataset.cskMsgId=t);const s=document.createElement("div");s.className="csk-msg__avatar csk-msg__avatar--ai",s.innerHTML=N;const o=document.createElement("div");o.className="csk-msg__content";const a=document.createElement("div");a.className="csk-msg__bubble",a.innerHTML="";const i=document.createElement("div");return i.className="csk-msg__time",i.textContent=W(n),o.appendChild(a),o.appendChild(z(a,r)),o.appendChild(i),r.appendChild(s),r.appendChild(o),e.appendChild(r),{wrapper:r,bubble:a}}(re,n,r);l=e,c=t,p=!0}c&&(c.textContent=d,function(e){if(e.querySelector(".csk-caret"))return;const n=document.createElement("span");n.className="csk-caret",n.setAttribute("aria-hidden","true"),e.appendChild(n)}(c)),re&&Ce()},()=>{if(l&&c){if(!p&&""===d)return void g(e).then(o).catch(i);d&&(c.innerHTML=Q(d)),R(l,c)}o(d)},e=>{d.length>0?(c&&(c.innerHTML=Q(d+"\n\n"+a("stream_interrupted")),l&&R(l,c)),o(d)):i(e)},ee,t,s)})}(e,n,t,s):(o=await g(e),ge&&ge(),re&&T(re,o,n,Q,s));const i={id:s,role:"ai",content:o,timestamp:n};te.push(i),V(ne.integrateId,te),re&&Ce(),function(e){if(!ke)return;const n=e.length>120?e.substring(0,120)+"...":e;ke.textContent=a("new_msg_announce")+":"+n}(o),re&&re.dispatchEvent(new CustomEvent("csk:newMessage",{bubbles:!0})),t&&async function(e,n){try{const t=await b(e,ee);if(t.length>0){const e=t.map(e=>{var n,t;return{documentId:e.documentId||"",title:e.title||"",sourceName:e.sourceName||"",chunkIndex:null!==(n=e.chunkIndex)&&void 0!==n?n:0,score:null!==(t=e.score)&&void 0!==t?t:0,snippet:e.snippet||""}});if(n.sources=e,re){const n=re.querySelector(".csk-msg--ai:last-of-type");n&&U(n,e)}ne&&V(ne.integrateId,te)}}catch(e){r.warn("获取引用来源失败",e)}}(e,i)}catch(e){ge&&ge();const n=e instanceof k?e.message:a("error_send");if(re){const e=document.createElement("div");e.className="csk-msg csk-msg--ai";const t=document.createElement("div");t.className="csk-msg__bubble",t.style.color="#DC2626",t.textContent=`⚠ ${n}`,e.appendChild(t),re.appendChild(e)}r.error(`发送失败 integrateId=${ne.integrateId}`,e)}finally{he=!1,be=null,Ie("send"),Le()}}function Ne(){if(!re)return;const e=re.querySelector(".csk-history-panel");re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());for(const e of te)if("user"===e.role)D(re,e.content,e.timestamp);else{const n=T(re,e.content,e.timestamp,Q,e.id);e.sources&&e.sources.length>0&&U(n,e.sources),e.feedback&&H(n,e.feedback)}fe=!0,Y(re),ie&&te.length>0&&(ie.style.display="inline-flex"),Ae(),e&&!re.contains(e)&&re.appendChild(e)}async function Me(e){if(!ne||!re)return;r.info(`切换到会话 conversationId=${e}`),c(e),E(ne.integrateId,ne.userId,e),le&&le.classList.add("csk-history-panel--hidden"),te=[];re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove());try{const n=await y(e);n.messages.length>0&&(te=n.messages.map(e=>({id:L(),role:"USER"===e.messageType?"user":"ai",content:e.content,timestamp:new Date(e.createTime).getTime()})),Ne(),r.info(`加载会话 ${e} 的 ${te.length} 条消息`),V(ne.integrateId,te))}catch(n){r.warn(`加载会话消息失败 conversationId=${e}`,n)}ie&&te.length>0&&(ie.style.display="inline-flex"),Ae()}let De=null,Te=!1,qe=null,Be=null,ze=null,He=null,je=null,Pe=null,Re=null,Ue=null,Oe=null,Ye=null,We=null,Ke=null,Ve=null,Xe=null;function Je(){if(!Ke||!qe)return;const e=qe.getBoundingClientRect();"left-bottom"===(null==De?void 0:De.position)?Ke.style.left=`${e.left}px`:Ke.style.right=window.innerWidth-e.right+"px",Ke.style.bottom=window.innerHeight-e.top+8+"px"}function Ge(){if(!Ke)return;Ke.classList.add("csk-teaser--hidden"),Ke.removeEventListener("click",Qe);const e=Ke.querySelector(".csk-teaser__close");e&&e.removeEventListener("click",Ze)}function Qe(e){e.target.closest(".csk-teaser__close")||(Ge(),rn())}function Ze(e){e.stopPropagation(),Ge()}function en(){Ke&&!Ke.classList.contains("csk-teaser--hidden")&&Je()}const nn='button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])';function tn(e){"Escape"===e.key&&Be&&!Be.classList.contains("csk-window--hidden")&&sn(),function(e){if(!Be||Be.classList.contains("csk-window--hidden"))return;if("Tab"!==e.key)return;const n=Array.from(Be.querySelectorAll(nn));if(0===n.length)return;const t=n[0],r=n[n.length-1];e.shiftKey?document.activeElement===t&&(e.preventDefault(),r.focus()):document.activeElement===r&&(e.preventDefault(),t.focus())}(e)}function rn(){Be&&(Be.classList.remove("csk-window--hidden"),Ge(),Xe&&Xe.classList.add("csk-launcher__badge--hidden"),setTimeout(()=>{He&&He.focus()},80))}function sn(){Be&&Be.classList.add("csk-window--hidden")}function on(){Be&&(Be.classList.contains("csk-window--hidden")?rn():sn())}const an={init:function(e){if(Te)return void r.warn("SDK 已初始化,请先调用 destroy() 再重新初始化");const t=function(e){var n,t,s,o,a,i,c;if(!e.integrateId||"string"!=typeof e.integrateId&&"number"!=typeof e.integrateId||"string"==typeof e.integrateId&&""===e.integrateId.trim())return r.error('integrateId 是必传参数(对应后端 roleId 客服角色 ID),请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;if(!e.requestDomain||"string"!=typeof e.requestDomain||""===e.requestDomain.trim())return r.error('requestDomain 是必传参数,请检查 init() 调用。示例:ChatbotSDK.init({ integrateId: 1, requestDomain: "https://api.example.com" })'),null;try{new URL(e.requestDomain)}catch(n){return r.error(`requestDomain 不是合法的 URL 格式:${e.requestDomain}。请提供完整的域名,如 https://api.example.com`),null}const l={integrateId:String(e.integrateId).trim(),requestDomain:e.requestDomain.replace(/\/+$/,""),userId:e.userId,categoryId:e.categoryId,showCategorySwitch:null!==(n=e.showCategorySwitch)&&void 0!==n&&n,title:e.title||"AI 智能助手",width:null!==(t=e.width)&&void 0!==t?t:380,position:"left-bottom"===e.position?"left-bottom":"right-bottom",primaryColor:e.primaryColor||"#4F46E5",launcherIcon:e.launcherIcon||'\n \n \n',showClear:null===(s=e.showClear)||void 0===s||s,showAdminPanel:null!==(o=e.showAdminPanel)&&void 0!==o&&o,quickReplies:Array.isArray(e.quickReplies)?e.quickReplies.map(e=>String(e).trim()).filter(Boolean):[],theme:"dark"===e.theme?"dark":"light",showTeaser:null===(a=e.showTeaser)||void 0===a||a,teaserText:"string"==typeof e.teaserText&&e.teaserText.trim()||"",streaming:null===(i=e.streaming)||void 0===i||i,locale:e.locale||"zh-CN",debug:null===(c=e.debug)||void 0===c||c,chatId:""};return r.info(`配置解析完成 integrateId(=roleId)=${l.integrateId} userId(=accountId)=${l.userId||"(未设置)"} requestDomain=${l.requestDomain}`),l}(e);if(!t)return;var c;De=t,function(e){if(s[e])o=e;else{const n=e.split("-")[0],t=Object.keys(s).find(e=>e.startsWith(n));t&&(o=t)}}(De.locale),c=De.debug,n=c,function(e){i=e}(De),A(De),qe=M(De,on),document.body.appendChild(qe),Xe=qe.querySelector(".csk-launcher__badge");const d=function(e){const n=document.createElement("div");n.id="csk-window",n.className=`csk-root csk-window csk-window--${"left-bottom"===e.position?"left":"right"} csk-window--hidden${"dark"===e.theme?" csk-dark":""}`,n.setAttribute("role","dialog"),n.setAttribute("aria-label",e.title),n.setAttribute("aria-modal","false");const t=document.createElement("div");t.className="csk-header";const r=document.createElement("div");r.className="csk-header__left";const s=document.createElement("div");s.className="csk-header__avatar",s.innerHTML=N;const o=document.createElement("div");o.className="csk-header__info";const i=document.createElement("span");i.className="csk-header__title",i.textContent=e.title;const c=document.createElement("span");c.className="csk-header__status",c.innerHTML=`${a("status_online")}`,o.appendChild(i),o.appendChild(c),r.appendChild(s),r.appendChild(o);const l=document.createElement("div");l.className="csk-header__actions";const d=document.createElement("button");d.className="csk-history-btn",d.setAttribute("title",a("history_title")),d.innerHTML='';const p=document.createElement("button");p.className="csk-header__btn csk-header__btn--minimize",p.setAttribute("title",a("minimize")),p.innerHTML='',p.addEventListener("click",()=>{n.classList.add("csk-window--hidden")});const u=document.createElement("button");u.className="csk-header__btn csk-header__btn--close",u.setAttribute("title",a("close")),u.innerHTML='',u.addEventListener("click",()=>{n.classList.add("csk-window--hidden")}),l.appendChild(d),l.appendChild(p),l.appendChild(u),t.appendChild(r),t.appendChild(l);const k=document.createElement("div");k.id="csk-messages",k.className="csk-messages";const m=document.createElement("div");if(m.className="csk-welcome",m.innerHTML=`\n
${N}
\n
${a("welcome_title")}
\n
${a("welcome_desc")}
\n `,e.quickReplies.length>0){const t=document.createElement("div");t.className="csk-quick-replies";for(const r of e.quickReplies){const e=document.createElement("button");e.type="button",e.className="csk-quick-reply",e.textContent=r,e.addEventListener("click",()=>{n.dispatchEvent(new CustomEvent("csk:quickReply",{detail:{text:r}}))}),t.appendChild(e)}m.appendChild(t)}k.appendChild(m);const g=document.createElement("button");g.type="button",g.className="csk-newmsg csk-newmsg--hidden",g.innerHTML=`\n \n ${a("new_message")}\n `,n.appendChild(g);const h=document.createElement("div");h.className="csk-history-panel csk-history-panel--hidden",h.innerHTML=`\n
\n ${a("history_title")}\n \n
\n
\n \n
\n
\n `,k.appendChild(h);const b=h.querySelector("#csk-history-back");b&&b.addEventListener("click",()=>{h.classList.add("csk-history-panel--hidden")}),d.addEventListener("click",e=>{e.stopPropagation();const t=h.classList.contains("csk-history-panel--hidden");h.classList.toggle("csk-history-panel--hidden"),t&&n.dispatchEvent(new CustomEvent("csk:loadHistory"))});let f=null;if(e.showCategorySwitch){const e=document.createElement("div");e.className="csk-category-bar";const r=document.createElement("span");r.className="csk-category-bar__label",r.textContent="📚",f=document.createElement("select"),f.id="csk-category-select",f.className="csk-category-select",f.innerHTML=``,f.addEventListener("change",()=>{const e=f.value;n.dispatchEvent(new CustomEvent("csk:categoryChange",{detail:{categoryId:e?Number(e):void 0}}))}),e.appendChild(r),e.appendChild(f),n.appendChild(t),n.appendChild(k),n.appendChild(e)}else n.appendChild(t),n.appendChild(k);const y=document.createElement("div");y.className="csk-input-area";const x=document.createElement("div");x.className="csk-input-wrap";const v=document.createElement("textarea");v.id="csk-input",v.className="csk-input",v.setAttribute("placeholder",a("placeholder")),v.setAttribute("rows","1"),v.setAttribute("autofocus","");const w=document.createElement("button");w.id="csk-send-btn",w.className="csk-send-btn",w.setAttribute("title",a("send")),w.setAttribute("disabled","true"),w.innerHTML='',x.appendChild(v),x.appendChild(w),y.appendChild(x),n.appendChild(y);let _=null;e.showClear&&(_=document.createElement("button"),_.className="csk-clear-btn",_.textContent=a("clear"),_.style.display="none",n.insertBefore(_,y));let E=null;const C=document.createElement("div");C.className="csk-sr-only",C.setAttribute("aria-live","polite"),C.setAttribute("aria-atomic","true"),n.appendChild(C);const I=h.querySelector("#csk-history-search"),$=document.createElement("div");return $.className=`csk-teaser csk-teaser--${"left-bottom"===e.position?"left":"right"} csk-teaser--hidden`,$.setAttribute("role","status"),$.innerHTML=`\n \n ${e.teaserText||a("teaser_text")}\n `,{window:n,messagesContainer:k,inputEl:v,sendBtn:w,clearBtn:_,categorySelect:f,historyPanel:h,welcomeEl:m,newMsgBtn:g,teaserEl:$,searchInput:I,ariaLiveEl:C,showLoading:function(){if(E)return E.style.display="flex",E;const e=document.createElement("div");return e.className="csk-loading",e.innerHTML=`\n
${N}
\n
\n
\n
\n
\n
\n `,k.appendChild(e),E=e,e},hideLoading:function(){E&&E.parentNode&&(E.parentNode.removeChild(E),E=null)}}}(De);Be=d.window,ze=d.messagesContainer,He=d.inputEl,je=d.sendBtn,Pe=d.clearBtn,Re=d.categorySelect,Ue=d.historyPanel,Oe=d.showLoading,Ye=d.hideLoading,document.body.appendChild(Be),Ke=d.teaserEl,document.body.appendChild(Ke),Je();const p=Be.querySelector(".csk-header");p&&(We=function(e,n){let t=!1,r=0,s=0,o=0,a=0;const i=e=>{if(e.target.closest("button"))return;t=!0,r=e.clientX,s=e.clientY;const i=n.getBoundingClientRect();o=r-i.left,a=s-i.top,document.addEventListener("mousemove",c),document.addEventListener("mouseup",l)},c=e=>{if(!t)return;const r=e.clientX-o,s=e.clientY-a,i=window.innerWidth-n.offsetWidth,c=window.innerHeight-n.offsetHeight;n.style.right="auto",n.style.bottom="auto",n.style.left=`${Math.max(0,Math.min(r,i))}px`,n.style.top=`${Math.max(0,Math.min(s,c))}px`},l=()=>{t=!1,document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)};return e.addEventListener("mousedown",i),()=>{e.removeEventListener("mousedown",i),document.removeEventListener("mousemove",c),document.removeEventListener("mouseup",l)}}(p,Be)),we(De,{messagesContainer:ze,inputEl:He,sendBtn:je,clearBtn:Pe,categorySelect:Re,historyPanel:Ue,welcomeEl:d.welcomeEl,newMsgBtn:d.newMsgBtn,searchInput:d.searchInput,ariaLiveEl:d.ariaLiveEl,showLoading:Oe,hideLoading:Ye}),Be.addEventListener("csk:categoryChange",e=>{var n;n=e.detail.categoryId,ee=n,ve=void 0!==n,r.lifecycleCategoryChange(null!=n?n:"全部")}),Be.addEventListener("csk:loadHistory",()=>{!async function(){if(!le||!ne)return;const e=le.querySelector("#csk-history-list");if(e){e.innerHTML='
加载中...
';try{const n=await f(1,50,ne.userId,ne.integrateId);ye=n.list.map(e=>({id:e.conversationId||"",chatId:e.conversationId||"",messageCount:e.messageCount,lastMessageTime:e.lastMessageTime,lastMessagePreview:e.lastMessagePreview,createdAt:e.firstMessageTime||e.createdAt})),xe="",ue&&(ue.value=""),O(e,ye,e=>{Me(e)},e=>{window.open(v(e),"_blank")},async e=>{confirm(a("history_delete_confirm"))&&await x(e)&&(e===l()&&(te=[],re&&re.querySelectorAll(".csk-msg, .csk-loading").forEach(e=>e.remove()),ie&&(ie.style.display="none"),Ae()),ye=ye.filter(n=>(n.chatId||n.id)!==e),$e())},l())}catch(n){r.error(a("history_load_error"),n),e.innerHTML=`
${a("history_load_error")}
`}}}()}),Be.addEventListener("csk:quickReply",e=>{var n;n=e.detail.text,!se||he?Promise.resolve():(se.value=n,Le(),Se())}),Be.addEventListener("csk:retry",e=>{!async function(e){if(!ne||!re||he)return;const n=te.findIndex(n=>n.id===e&&"ai"===n.role);if(n<0)return;let t="";for(let e=n-1;e>=0;e--)if("user"===te[e].role){t=te[e].content;break}if(!t)return;const r=te.splice(n),s=new Set(r.map(e=>e.id));re.querySelectorAll(".csk-msg").forEach(e=>{const n=e.dataset.cskMsgId;n&&s.has(n)&&e.remove()}),V(ne.integrateId,te),Ae(),await Fe(t)}(e.detail.msgId)}),Be.addEventListener("csk:feedback",e=>{!function(e,n){if(!re)return;const t=te.find(n=>n.id===e&&"ai"===n.role);if(!t)return;const s=t.feedback===n?void 0:n;t.feedback=s;const o=re.querySelector(`[data-csk-msg-id="${e}"]`);o&&H(o,s),ne&&V(ne.integrateId,te),r.info(`消息反馈 msgId=${e} value=${s||"cleared"}`)}(e.detail.msgId,e.detail.value)}),Be.addEventListener("csk:newMessage",()=>{Be&&Be.classList.contains("csk-window--hidden")&&Xe&&Xe.classList.remove("csk-launcher__badge--hidden")}),document.addEventListener("keydown",tn),window.addEventListener("resize",en),Te=!0,r.lifecycleInit(De.integrateId,De.requestDomain),De.showTeaser&&(Ve=setTimeout(()=>{Be&&Be.classList.contains("csk-window--hidden")&&function(){if(!Ke)return;Je(),Ke.classList.remove("csk-teaser--hidden"),Ke.addEventListener("click",Qe);const e=Ke.querySelector(".csk-teaser__close");e&&e.addEventListener("click",Ze)}()},1500)),_e().catch(e=>{r.warn("chatId 初始化失败,将在发送消息时重试",e)})},destroy:function(){if(!Te)return;Ve&&(clearTimeout(Ve),Ve=null),Ge(),Ke&&Ke.parentNode&&(Ke.parentNode.removeChild(Ke),Ke=null),qe&&qe.parentNode&&(qe.parentNode.removeChild(qe),qe=null),Be&&Be.parentNode&&(Be.parentNode.removeChild(Be),Be=null),We&&(We(),We=null),C&&C.parentNode&&(C.parentNode.removeChild(C),C=null),document.querySelectorAll("style[data-csk-sdk]").forEach(e=>e.remove()),document.removeEventListener("keydown",tn),window.removeEventListener("resize",en);const e=null==De?void 0:De.integrateId;De=null,Te=!1,ze=null,He=null,je=null,Pe=null,Re=null,Ue=null,Oe=null,Ye=null,Xe=null,r.lifecycleDestroy(e||"")},open:rn,close:sn,toggle:on,clearHistory:function(){De&&(Pe?Pe.click():confirm("确定清空所有对话记录?")&&X(De.integrateId))}};return"undefined"!=typeof window&&(window.ChatbotSDK=an),an}(); //# sourceMappingURL=chatbot-sdk.min.js.map diff --git a/src/main/resources/static/sdk/chatbot-sdk.min.js.map b/src/main/resources/static/sdk/chatbot-sdk.min.js.map index 9ddd9fd..802b584 100644 --- a/src/main/resources/static/sdk/chatbot-sdk.min.js.map +++ b/src/main/resources/static/sdk/chatbot-sdk.min.js.map @@ -1 +1 @@ -{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts","../src/config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","timers","logger","info","msg","data","console","log","undefined","warn","error","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","message","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","String","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","Error","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","controller","AbortController","timer","setTimeout","abort","fetch","assign","signal","mode","credentials","err","DOMException","name","CskError","TypeError","includes","clearTimeout","constructor","type","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","_a","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","width","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","className","position","innerHTML","launcherIcon","debouncedClick","fn","delay","args","apply","debounce","addEventListener","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","renderSources","sources","existing","remove","sourcesEl","header","titleSpan","n","arrow","classList","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","code","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","showLoadingFn","hideLoadingFn","isSending","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","updateSendBtnState","style","height","autoResizeInput","add","confirm","querySelectorAll","forEach","el","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","getTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","hasMessages","removeAttribute","userTimestamp","userMsg","aiContent","aiTimestamp","shouldUseRag","streaming","Promise","resolve","reject","bubbleEl","accumulated","streamStarted","chunk","createEmptyAIBubble","then","catch","sendStreamMessage","aiMsg","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","contains","loadHistoryConversations","listEl","items","onSelect","onExport","onDelete","activeChatId","empty","convId","idEl","lastMessagePreview","metaEl","lastMessageTime","createdAt","actionsEl","exportBtn","stopPropagation","deleteBtn","renderHistoryList","firstMessageTime","switchToConversation","window","open","method","deleteConversation","isInitialized","launcherEl","windowEl","dragCleanup","focus","ChatbotSDK","init","rawConfig","parsed","URL","_g","showClear","_c","showAdminPanel","_d","_e","locale","debug","_f","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","closeBtn","backBtn","isHidden","dispatchEvent","CustomEvent","categoryBar","categoryLabel","selectedId","detail","Number","inputArea","loadingEl","removeChild","createChatWindow","headerEl","dragging","startX","startY","offsetX","offsetY","onMouseDown","target","closest","clientX","clientY","rect","getBoundingClientRect","left","top","onMouseMove","onMouseUp","x","y","maxX","innerWidth","offsetWidth","maxY","innerHeight","offsetHeight","right","bottom","removeEventListener","enableDrag","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"chatbot-sdk.min.js","sources":["../src/logger.ts","../src/i18n.ts","../src/api.ts","../src/styles.ts","../src/utils.ts","../src/dom.ts","../src/storage.ts","../src/markdown.ts","../src/chat.ts","../src/index.ts","../src/config.ts"],"sourcesContent":[null,null,null,null,null,null,null,null,null,null,null],"names":["PREFIX","debugEnabled","timers","logger","info","msg","data","console","log","undefined","warn","error","time","label","Date","now","timeEnd","prefix","start","duration","lifecycleInit","integrateId","requestDomain","this","lifecycleDestroy","lifecycleSend","length","lifecycleReply","lifecycleError","status","message","lifecycleClear","lifecycleStreamDone","lifecycleCategoryChange","categoryId","dictionaries","title","minimize","close","status_online","welcome_title","welcome_desc","placeholder","send","stop","new_message","copy","copied","retry","retrying","loading","stream_interrupted","stream_unstable","category_placeholder","category_all","category_load_error","source_title","source_count","source_loading","clear","clear_confirm","history_title","history_empty","history_load_error","history_delete_confirm","history_export","history_delete","history_search","feedback_up","feedback_down","teaser_text","new_msg_announce","error_network","error_timeout","error_server","error_cors","error_auth","error_forbidden","error_not_found","error_rate_limit","error_unavailable","error_unknown","error_send","error_stream_unsupported","en","currentLocale","t","key","params","text","k","v","Object","entries","replace","String","currentConfig","updateChatId","chatId","getChatId","buildUrl","path","Error","startsWith","setIfPresent","value","trim","set","async","safeFetch","url","options","timeout","externalSignal","controller","AbortController","timer","setTimeout","abort","aborted","addEventListener","once","fetch","assign","signal","mode","credentials","err","CskError","DOMException","name","TypeError","includes","clearTimeout","constructor","type","super","getHttpErrorMessage","chatRequest","URLSearchParams","userId","toString","buildChatUrl","response","ok","errorMsg","chatSSERequest","onChunk","onDone","onError","useRag","buildChatRAGSSEUrl","buildChatSSEUrl","totalText","REQUEST_TIMEOUT","reader","_a","body","getReader","decoder","TextDecoder","stream","buffer","done","read","decode","lines","split","pop","line","trimmed","substring","readErr","releaseLock","fetchRagSources","buildRagSourcesUrl","json","success","Array","isArray","fetchConversationList","page","size","accountId","roleId","encodeURIComponent","list","total","pages","fetchConversationMessages","conversationId","messages","deleteConversation","method","getConversationExportUrl","initChatId","cachedChatId","localStorage","getItem","chatIdStorageKey","loadCachedChatId","result","latestConv","saveCachedChatId","messageCount","newChatId","random","crypto","randomUUID","Math","generateChatId","setItem","removeItem","styleElement","cssVars","config","darker","adjustColor","primaryColor","lighter","rgb","hex","match","parseInt","hexToRgb","width","amount","clamp","max","min","r","g","b","padStart","injectStyles","document","querySelector","createElement","setAttribute","textContent","getStyles","head","appendChild","uuid","c","escapeHtml","map","ch","BOT_ICON","createLauncher","onClick","launcher","id","className","position","innerHTML","launcherIcon","badge","debouncedClick","fn","delay","args","apply","debounce","e","preventDefault","renderUserBubble","container","timestamp","wrapper","avatar","content","bubble","formatTime","renderAIBubble","renderMd","msgId","dataset","cskMsgId","buildAIActions","enhanceCodeBlocks","COPY_ICON","RETRY_ICON","bar","copyBtn","stopPropagation","copyToClipboard","retryBtn","root","closest","dispatchEvent","CustomEvent","detail","upBtn","downBtn","updateFeedbackUI","btns","querySelectorAll","forEach","btn","classList","remove","add","original","navigator","clipboard","window","isSecureContext","writeText","ta","style","opacity","select","execCommand","removeChild","pre","codeEl","finalizeAIBubble","caret","renderSources","sources","existing","sourcesEl","header","titleSpan","n","arrow","toggle","src","item","sourceName","snippet","meta","metaParts","push","chunkIndex","score","toFixed","join","timeEl","parentNode","insertBefore","renderHistoryList","listEl","items","onSelect","onExport","onDelete","activeChatId","emptyText","empty","el","convId","idEl","lastMessagePreview","metaEl","lastMessageTime","createdAt","actionsEl","exportBtn","deleteBtn","scrollToBottom","scrollTop","scrollHeight","d","getHours","getMinutes","storageKey","saveMessages","slice","updatedAt","JSON","stringify","clearMessages","CODE_BLOCK_PREFIX","INLINE_CODE_PREFIX","renderMarkdown","codeBlocks","processed","_match","lang","code","idx","escapedCode","trimEnd","langClass","inlineCodes","restorePlaceholders","inList","listType","inBlockquote","paragraphBuffer","i","flushParagraph","closeList","closeBlockquote","headingMatch","level","quoteMatch","inlineFormat","ulMatch","olMatch","test","_m","linkText","replacements","RegExp","currentCategoryId","messagesContainer","inputEl","inputWrap","sendBtn","clearBtn","categorySelect","historyPanel","welcomeEl","newMsgBtn","searchInput","ariaLiveEl","showLoadingFn","hideLoadingFn","isSending","abortController","isNearBottom","historyItems","historySearchText","initChat","cfg","dom","parentElement","showLoading","hideLoading","showCategorySwitch","handleSend","shiftKey","isComposing","updateSendBtnState","height","autoResizeInput","confirm","display","updateEmptyState","newId","generateNewChatId","handleClear","bindSendEvents","clientHeight","hideNewMsgBtn","bindScrollEvents","toLowerCase","renderFilteredHistory","bindHistorySearch","tree","fetchCategoryTree","addOptions","nodes","indent","node","option","repeat","selected","children","loadCategories","initChatHistory","role","messageType","createTime","getTime","renderHistory","loadHistoryFromBackend","cached","raw","parse","loadMessages","smartScrollToBottom","setSendButtonMode","removeAttribute","filter","switchToConversation","open","it","hasMessages","userTimestamp","userMsg","produceAIReply","userText","aiTimestamp","shouldUseRag","aiMsgId","aiContent","streaming","Promise","resolve","reject","bubbleEl","wrapperEl","accumulated","streamStarted","chunk","createEmptyAIBubble","appendStreamingCaret","then","catch","sendStreamMessage","aiMsg","announceMessage","bubbles","ragSources","s","documentId","_b","lastAiMsg","fetchAndRenderSources","errMsg","errorBubble","color","historyPanelEl","feedback","contains","isInitialized","launcherEl","windowEl","dragCleanup","teaserEl","teaserTimer","badgeEl","positionTeaser","rect","getBoundingClientRect","left","right","innerWidth","bottom","innerHeight","top","hideTeaser","removeEventListener","onTeaserClick","closeBtn","onTeaserClose","target","onResize","FOCUSABLE","onKeyDown","focusables","from","first","last","activeElement","focus","trapFocus","ChatbotSDK","init","rawConfig","parsed","URL","_h","showClear","_c","showAdminPanel","_d","quickReplies","Boolean","theme","showTeaser","_e","teaserText","_f","locale","debug","_g","parseConfig","enabled","matched","keys","find","setLocale","setApiConfig","headerLeft","headerAvatar","headerInfo","titleEl","statusEl","actions","historyBtn","minimizeBtn","chips","reply","chip","backBtn","isHidden","categoryBar","categoryLabel","selectedId","Number","inputArea","loadingEl","createChatWindow","headerEl","dragging","startX","startY","offsetX","offsetY","onMouseDown","clientX","clientY","onMouseMove","onMouseUp","x","y","maxX","offsetWidth","maxY","offsetHeight","enableDrag","firstMessageTime","loadHistoryConversations","aiIndex","findIndex","m","removed","splice","removedIds","Set","has","retryFromMessage","newValue","handleFeedback","destroy","oldIntegrateId","clearHistory","click"],"mappings":"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"} \ No newline at end of file