Skip to main content

Module bundle

Module bundle 

Source
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) 与 server POST /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 命令与 server GET /sessions/:id 共用。 segments 读路径 gzip 感知(.jsonl / .jsonl.gz 均可),见 read_segment_events。
read_session_meta
元信息 + 段索引(不含段内事件):回放首屏所需的最小数据集合。 供 console read_session_meta 与 server GET /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)。