Expand description
bundle 契约 + 会话读/列举/导入导出。
bundle 是平台「会话跨进程/跨机迁移的唯一契约」(见 docs/架构/bundle-规范.md):
本地文件分享 / 本地 server 实时流 / 云端上传三路共用。本模块提供纯逻辑,
供 console Tauri command 与 observer_server HTTP 路由共用。
Constants§
- BUNDLE_
FORMAT - bundle 契约标识与版本(与 TS 侧 buildBundle/parseBundle 对齐,见 docs/架构/bundle-规范.md)。
- BUNDLE_
VERSION
Functions§
- build_
export_ bundle - 读会话目录组装成 export bundle(不依赖 AppHandle,便于测试)。
- import_
bundle - 导入已校验的 bundle 到 root 下:分配新 id、原子写(.tmp -> rename)。返回新 id。
- import_
bundle_ content - 导入 bundle(从 JSON 字符串):校验 + 原子写。返回新 id。
供 console
import_session(content)与 serverPOST /sessions/import共用。 - list_
sessions - 列出所有会话 meta(按 startedAt 倒序)。
- merge_
session_ meta - 合并 meta 到 session.json(空串/null 删除字段,否则覆盖),返回写回后的 session。
- parse_
bundle - 校验 bundle 格式与版本,返回解析后的 Value。
- read_
segment_ json - 单段事件直拼为 JSON 数组文本:jsonl 每行本身即合法 JSON,串接即可,
不做
serde_json::Value往返(P19 D2)——省掉实测 2.9GB 的中间树与二次序列化。 调用方经 raw IPC 返回字节,JS 侧一次JSON.parse。 - read_
session - 读会话目录组装成回放数据(session + windows + segments + annotations)。
供 console
read_session命令与 serverGET /sessions/:id共用。 segments 读路径 gzip 感知(.jsonl/.jsonl.gz均可),见read_segment_events。 - read_
session_ meta - 元信息 + 段索引(不含段内事件):回放首屏所需的最小数据集合。
供 console
read_session_meta与 serverGET /sessions/:id/meta共用。 - read_
session_ signals_ json - 全库诊断信号(
type:6)直拼为 JSON 数组文本。 - unique_
id - 分配不与本地已有会话冲突的新 id(毫秒时间戳,冲突则自增)。
- validate_
segment_ id - segmentId 合法性:
<label>#<n>,label 仅 [A-Za-z0-9_-]。 segment key 会成为文件名(segments/.jsonl),此校验是路径穿越防护的核心。 - validate_
session_ id - session ID 合法性:纯数字(与
unique_id生成器一致)。 read API 的/sessions/:id直接root.join(id),未校验可被../跨租户逃逸。 多租户(P9)下这是必校验项;单租户也应校验。 - write_
import_ bundle - 把 bundle 重建为目标目录的文件结构(session.id 替换为 new_id,标记 importedAt)。