# agent-chat

一个独立于 `websocket-test.html` 的多会话聊天页原型。

## 文件结构

```text
agent-chat/
├─ agent-chat.html
├─ css/
│  └─ agent-chat.css
├─ js/
│  ├─ auth.js
│  ├─ config.js
│  ├─ gateway.js
│  ├─ main.js
│  ├─ markdown.js
│  ├─ state.js
│  ├─ storage.js
│  ├─ ui.js
│  └─ utils.js
└─ README.md
```

## MVP 已实现

- 连接设置弹窗：WS URL / Token / Preset / Connect / Disconnect / 状态显示
- Gateway 握手：`connect.challenge -> connect -> hello-ok/res`
- `sessions.list` 拉取并渲染多 session 卡片墙
- 每个 session 独立消息区 / 输入区 / 发送按钮
- `chat.send` 独立按 `sessionKey` 发送
- `agent lifecycle / assistant stream / chat / chat.outgoing` 路由到对应卡片
- 本地 session 消息缓存（localStorage）
- 基础 Markdown 渲染 + 代码高亮
- 自动重连
- 离线可回显最近一次 session 卡片和缓存消息

## 使用方式

1. 直接打开 `agent-chat.html`，或者在 `test_page` 下起一个静态文件服务器。
2. 点击右上角 **连接设置**。
3. 填写 Gateway URL / Token，或者选择预设。
4. Connect 后页面会自动拉取 `sessions.list` 并展示卡片墙。

## 当前刻意没做

- 没搬运旧页的 raw frame 调试工具、会话管理操作、日志抽屉
- 没做图片粘贴 / 历史拉取 / 复杂消息类型展示
- 没做更细颗粒度的权限或错误分类 UI

## 备注

- 本页和旧的 `websocket-test.html` 完全分目录放置，避免资源互相污染。
- localStorage key 也使用了独立命名空间 `agent-chat.*`。
