@apeira/ 会话
阿皮拉特工的树形耐久会议历史.
使用量
import { createAgent, mem } from '@apeira/core'
import { createSession } from '@apeira/session'
const session = createSession({
defaultRef: 'main',
sessionStorage: mem(),
})
const agent = createAgent({
// ...
storage: session.storage,
})
session.sessionStorage 包含完整的仅附加日志.
session.storage 是核心所使用的活动分支视图.
代理状态同步
登记册 session.plugin 与代理保存 agent.state 同步与
活动分支 checkout(), (中文(简体) ), fork() (附离职),或 rebase()
更改当前标题 :
const agent = createAgent({
// ...
plugins: [session.plugin],
storage: session.storage,
})
插件还在代理频道上播放分支更改作为
session.checkout, (中文(简体) ), session.fork,以及 session.rebase 活动
save: false,因此其他订阅者可以在不持续额外条目的情况下作出反应.
agent.subscribe('session.checkout', ({ ref, state, targetId }) => {
// ...
})
分支
await session.fork('experiment')
await session.checkout('main')
await session.rebase('experiment', 'main')
const input = await session.buildInput('experiment')
const state = await session.buildState('experiment')
字符串解析为先由 refs 解析,再由 enter ids 解析. checkout() 没有目标
创建脱去的空上下文.
自定义语义条目
除生命周期事件和会话控制条目外,每个条目都是语义
分支节点。 接收插件定义条目 parentId,推进活动
分支,通过路径、再基和克隆操作保存
特定会话配置.
譬如说, @apeira/plugin-compact 直接与会话存储工作 :
const agent = createAgent({
// ...
plugins: [compact({ compactAgent: { runner: summaryRunner } })],
storage: session.storage,
})
会话将紧凑项存储为普通语义节点. 该插件拥有 如何将该条目预测为模式背景.