feat: initialize LineUp Tauri reference host

This commit is contained in:
2026-08-03 10:26:27 +08:00
commit 32a425034b
79 changed files with 11460 additions and 0 deletions
+82
View File
@@ -0,0 +1,82 @@
# LineUp Tauri Reference Host
这是 LineUp Mini Runtime 的第一版 Tauri 2 Reference Host。它独立于当前 `upstream/tangsengdaodao-android/` 快速实验工程,不替换或修改现有 Android 验证路径。
## 已实现的最小闭环
- 可信 Host 前端:AppServer 地址、手机号/验证码登录、退出;
- AppServer 交互:`/login``/messages/send``/messages/sync`
- 用户消息本地即时回显与送达状态;
- HTTP 同步游标:首次 `0`、后续最后序号 `+ 1`
- `lineup.v1.text``agent.status``agent.progress``error` 的基础 Renderer
- `marked + DOMPurify` 的 GFM Markdown 安全渲染;
- Tauri 2 Rust Host、capability 文件与桌面窗口配置。
AppServer 已配置只允许 `tauri://localhost``https://tauri.localhost``http://tauri.localhost` 三个 Tauri Host origin 跨源调用。若产品使用新的 Tauri origin 或独立 Web 客户端,应先在 `lineup-app-server/configs/lineup.yaml``client.allowedOrigins` 显式加入,不能放开任意 Origin。
macOS 的 `src-tauri/Info.plist` 为当前 Tailscale / 私网 HTTP AppServer 配置了 `NSAllowsArbitraryLoadsInWebContent`。该例外仅作用于 Host 的 WKWebView 内容请求,使其能访问类似 `http://100.x.y.z:8090` 的地址,不放宽 Rust 原生网络层;待所有 AppServer 都迁移到 HTTPS 后应移除。
`ui.open / patch / close``app.call` 已被协议层识别,但目前安全降级为可见提示;它们是下一阶段 Mini Runtime Surface Host 与 Capability Registry 的实现范围,不能在当前 Host 页面中直接执行 Agent JavaScript 或直接授予设备能力。
## 本地命令
```bash
cd lineup-app/tauri
npm install
# 日常开发:启动 Vite 热更新 + 未打包的 Tauri 桌面壳
npm run desktop:dev
# 仅检查并构建前端静态文件
npm run build
# Linux:仅构建 Debian 包,避免为不需要的 AppImage 下载额外运行器
npm run tauri -- build --debug --bundles deb
# macOSApple Silicon / Intel):生成 .app 与 .dmg
npm run tauri build -- --debug
```
`npm run desktop:dev` 不生成 `.app``.dmg` 或安装包。前端 TypeScript / CSS / HTML 保存后会由 Vite 自动热更新;改动 `src-tauri/` 中的 Rust Host 代码时,Tauri 会重新编译并重启开发窗口。只有需要交付可安装文件时才执行 `tauri build`
本项目的 `tauri``check:rust` npm 脚本会自动识别 Linux x86_64、macOS Apple Silicon、macOS Intel 的 Rust stable toolchain,并加入 `PATH`。因此不要直接执行裸 `tauri build`;统一使用 `npm run tauri build -- --debug`。如 Rust toolchain 安装在其他位置,可临时覆盖:
```bash
RUST_TOOLCHAIN_BIN=/path/to/rust/bin npm run tauri build -- --debug
```
## 本机构建状态(2026-08-03
- `npm run build`:已通过;
- Cargo/Tauri Rust crates:已下载并开始编译;
- Tauri Linux desktop build:已通过;debug 可执行文件和 Debian 包已生成;
- Android Spike:尚未开始。仍需要 Android NDK、Rust Android targets 与 Tauri Android 初始化。
Linux 桌面构建依赖以下系统开发库;本机已具备。新环境缺少时可安装:
```bash
sudo apt-get update
sudo apt-get install -y pkg-config libdbus-1-dev libwebkit2gtk-4.1-dev libayatana-appindicator3-dev librsvg2-dev
```
本机已生成的产物:
```text
src-tauri/target/debug/lineup-tauri
src-tauri/target/debug/bundle/deb/LineUp_0.1.0_amd64.deb
```
Tauri 构建产物位于 `src-tauri/target/`,已被 Git 忽略。图标源文件是 `src-tauri/icons/icon.svg`,其余 PNG/ICO/ICNS 与 Android/iOS 图标由 `npm run tauri icon src-tauri/icons/icon.svg` 生成。
## 目录边界
```text
tauri/
├── src/ # 可信 LineUp Host 前端
│ ├── main.ts # 会话 UI、AppServer transport、Renderer 调度
│ └── protocol.ts # 平台无关的 LineUp v1 → ConversationItem 解码
├── src-tauri/ # Tauri Rust Host 与 capability 配置
└── package.json # Vite、Tauri CLI 与前端依赖
```
第三方 Agent Surface 未来必须运行于独立隔离执行域,只能经 LineUp Mini Runtime 事件桥与 Capability Gateway 通信;不得访问 Tauri `invoke`、Host DOM、登录态或本机特权。