@morlay/session-branch 0.0.4 → 0.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +17 -14
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -4,18 +4,23 @@
|
|
|
4
4
|
(rewind / forkFrom / readBranchPrefix)、高层服务 `SessionBranch`
|
|
5
5
|
(`ctx.sessionBranch`)与共享的版本树投影 `buildTimeline`。
|
|
6
6
|
|
|
7
|
-
## 与上游 `
|
|
7
|
+
## 与上游 `SessionHandle` 的关系
|
|
8
8
|
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
|
9
|
+
上游持久化模型是 `SessionHandle`(append-only:`create` / `open` / `append` /
|
|
10
|
+
`flush` / `stat` / `list`),没有显式回退原语;本包在其旁边定义**分支面**
|
|
11
|
+
provider,负责显式回退与闭合边界派生:
|
|
12
|
+
|
|
13
|
+
| 面 | 上游 `SessionHandle` | 本包 `SessionBranchProvider` |
|
|
14
|
+
| ------ | -------------------------------------- | ------------------------------------------------------ |
|
|
15
|
+
| 覆盖 | 持久读写(append-only) | 显式回退 + 闭合边界派生(分支面) |
|
|
16
|
+
| 原语 | `create` / `open` / `append` / `flush` | `readBranchPrefix` / `forkFrom` / `rewind` |
|
|
17
|
+
| 实现方 | JSONL / RDB 等 | RDB 等(`@morlay/session-rdb` 同时实现两者,形成闭环) |
|
|
14
18
|
|
|
15
19
|
## Provider 抽象
|
|
16
20
|
|
|
17
21
|
```ts
|
|
18
22
|
interface SessionBranchProvider {
|
|
23
|
+
readonly name: string;
|
|
19
24
|
readBranchPrefix(id, atSeq?, mode?, signal?): Promise<BranchBoundary>;
|
|
20
25
|
forkFrom(sourceId, options?, signal?): Promise<SessionId>;
|
|
21
26
|
rewind(id, toBoundary, signal?): Promise<SessionPersistenceSnapshot>;
|
|
@@ -27,12 +32,9 @@ interface SessionBranchProvider {
|
|
|
27
32
|
重掷 / 重试语义)。
|
|
28
33
|
- `forkFrom`:纯 append——新会话(`parentSession` / `seedLength`),seed =
|
|
29
34
|
边界前缀 + `seedSuffix`,不触碰源会话。
|
|
30
|
-
- `rewind
|
|
31
|
-
|
|
32
|
-
`@morlay/session-rdb` 的
|
|
33
|
-
- `syncLiveCursor(sessionId)`:编排层把 ignorable 版本效果 push 进 live log
|
|
34
|
-
后(不发布、不进 write-behind 缓冲),用其对齐 coordinator cursor,避免
|
|
35
|
-
后续 append 的 seq 校验错位(默认空实现,rdb 覆写)。
|
|
35
|
+
- `rewind`:唯一的显式回退原语,事务整体提交或回滚;**支持 live 会话**
|
|
36
|
+
(内存 log 截断 + 派生缓存复位 + handle cursor / 继承前缀对齐,详见
|
|
37
|
+
`@morlay/session-rdb` 的 [docs/branch.md](../session-rdb/docs/branch.md))。
|
|
36
38
|
|
|
37
39
|
## 版本树
|
|
38
40
|
|
|
@@ -40,5 +42,6 @@ interface SessionBranchProvider {
|
|
|
40
42
|
lineage)+ 每会话自有后缀(`seq >= seedLength` 的 `session-branch/version`
|
|
41
43
|
事件)投影完整版本树。
|
|
42
44
|
|
|
43
|
-
> 版本效果事件携带 `ignorable: true
|
|
44
|
-
> live 会话从内存 log 读到效果,cold
|
|
45
|
+
> 版本效果事件携带 `ignorable: true`:非 branch 读者凭信封安全跳过,事件
|
|
46
|
+
> 本身原样落库——live 会话从内存 log 读到效果,cold 会话经读路径恢复效果
|
|
47
|
+
> 详情(见 [ADR 0003](./docs/adr/0003-版本效果以ignorable事件原样落库.md))。
|
package/package.json
CHANGED