feat: establish typed runtime protocol model
This commit is contained in:
+16
-3
@@ -35,7 +35,7 @@ macOS 的 `src-tauri/Info.plist` 为当前 Tailscale / 私网 HTTP AppServer 配
|
||||
|
||||
### M0 回归场景
|
||||
|
||||
每次迁移或拆分模块后,至少执行以下场景;其中 `R01` 为构建级检查,其余为 Mac 浏览器开发态人工验收,直至 M0 建立自动化测试。
|
||||
每次迁移或拆分模块后,至少执行以下场景;其中 `R01` 为构建级检查,其余为 Mac 浏览器访问 Linux 开发 Host 的人工验收,直至 M0 建立自动化测试。
|
||||
|
||||
- **M0-R01:构建。** `npm run build` 通过 TypeScript 检查与 Vite 打包。
|
||||
- **M0-R02:登录。** 使用 Tailscale AppServer 登录;成功切换到聊天页,错误地址/超时给出可理解提示。
|
||||
@@ -49,6 +49,16 @@ macOS 的 `src-tauri/Info.plist` 为当前 Tailscale / 私网 HTTP AppServer 配
|
||||
|
||||
`src/main.ts` 目前同时包含 App Shell、页面 DOM、登录、直接 HTTP `fetch`、会话 cursor、同步循环、协议到展示的映射和 renderer。M0 的目的不是改变上述用户行为,而是将它们迁入 `app-shell`、`transport`、`conversation-store`、`interaction-kernel` 和 `renderer-registry` 等独立边界;在 M0 准入前不新增 Surface 或 Capability 功能。
|
||||
|
||||
### M0-02 协议模型(已完成)
|
||||
|
||||
`src/protocol.ts` 是目前唯一允许把 Transport 原始 payload 转换成可信表现模型的入口。它定义了 `JsonValue`、`Actor`、严格 `Envelope`、`ConversationItem`、`UserAction`、`DeliveryState` 与 `ProtocolFallback`,并提供:
|
||||
|
||||
- `parseEnvelope(value)`:校验版本、消息类型、`id`、`conversation_id`、sender/target、timestamp 和 JSON payload;
|
||||
- `parseEnvelopeJSON(raw)`:供不接受历史纯文本的 Transport / Kernel 路径把非法 JSON 明确归为 `invalid_json`;
|
||||
- `decodeConversationItem(raw)`:保留历史纯文本作为 Markdown 的兼容行为;对于非法 LineUp envelope、未知类型和各类非法 payload,返回受控 fallback,绝不触发执行。
|
||||
|
||||
该文件不依赖 DOM、`fetch`、Tauri 或本地存储。Surface 与 Capability 在本阶段只校验其基础合约并降级显示;不加载 bundle,也不调用能力。下一项 M0-03 才会将此模型接入 Interaction Kernel 和 Renderer Registry。
|
||||
|
||||
## 本地命令
|
||||
|
||||
```bash
|
||||
@@ -58,9 +68,12 @@ npm install
|
||||
# 日常开发:启动 Vite 热更新 + 未打包的 Tauri 桌面壳
|
||||
npm run desktop:dev
|
||||
|
||||
# 纯 Web 开发:仅启动 Vite,在浏览器打开 http://127.0.0.1:1420
|
||||
# 纯 Web 开发:Linux 开发机监听全部网卡,供 Mac 浏览器访问
|
||||
npm run web:dev
|
||||
|
||||
# Mac 浏览器访问(经 Tailscale)
|
||||
# http://100.121.118.116:1420
|
||||
|
||||
# 仅检查并构建前端静态文件
|
||||
npm run build
|
||||
|
||||
@@ -73,7 +86,7 @@ npm run tauri build -- --debug
|
||||
|
||||
`npm run desktop:dev` 不生成 `.app`、`.dmg` 或安装包。前端 TypeScript / CSS / HTML 保存后会由 Vite 自动热更新;改动 `src-tauri/` 中的 Rust Host 代码时,Tauri 会重新编译并重启开发窗口。只有需要交付可安装文件时才执行 `tauri build`。
|
||||
|
||||
`npm run web:dev` 只运行同一份可信 Host Web UI,适合在浏览器中快速调试登录、消息和 Renderer。它不具备 Tauri 原生能力,也不应作为第三方 Mini Runtime Surface 的安全验收环境。AppServer 已对固定开发 Origin `http://127.0.0.1:1420` 配置 CORS;若改动 Vite 端口或 host,必须同步收紧更新 AppServer 的 `client.allowedOrigins`。
|
||||
`npm run web:dev` 只运行同一份可信 Host Web UI,适合在浏览器中快速调试登录、消息和 Renderer。它监听 `0.0.0.0:1420`,Mac 通过 Tailscale 打开 `http://100.121.118.116:1420`,直接验证 Linux 工作区的 Vite 热更新;不需要为每次验证将源码同步到 Mac。它不具备 Tauri 原生能力,也不应作为第三方 Mini Runtime Surface 的安全验收环境。AppServer 仅对固定开发 Origin `http://127.0.0.1:1420` 和 `http://100.121.118.116:1420` 配置 CORS;若改动 Vite 端口或 Host 地址,必须同步收紧更新 AppServer 的 `client.allowedOrigins`,不得改为 wildcard。
|
||||
|
||||
本项目的 `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 安装在其他位置,可临时覆盖:
|
||||
|
||||
|
||||
Reference in New Issue
Block a user