Skip to content

feat(server): add session event adapter - #2

Open
cc-hearts wants to merge 1 commit into
masterfrom
feat/dsh-event-adapter
Open

feat(server): add session event adapter#2
cc-hearts wants to merge 1 commit into
masterfrom
feat/dsh-event-adapter

Conversation

@cc-hearts

@cc-heartscc-hearts commented Aug 18, 2026

Copy link
Copy Markdown
Member

背景

借鉴主流会话交换工具的分层转换设计(各源格式 → 统一中间结构 → 目标会话事件),为 open-chat 增加会话事件日志的双向适配层,让会话可以在 open-chat 与外部会话格式之间移动,同时保持事件纪律一致。

改动

  • apps/server/src/transcript/sessionEvents.ts — 正向合成器 synthesizeSessionEvents
    • TranscriptMessage[] → 会话事件(turn/startuser/messageassistant/messagetool/calltool/resultstep/startstep/endturn/endsession/title),每行一个 JSON 事件可逐行落盘;
    • 事件纪律:seq 连续、surface 事件带 surfaceOp:'append'tool/resultsourceEventSeqs 关联 tool/call配对不变量(无结果的 activity 补发空结果,否则会话恢复时模型 API 拒绝);
    • 无法表达的内容(agentPlanattachments)跳过并在 degradations 里显式报告(失败要大声);
    • validateSessionEvents 结构自检(seq 连续性 / 事件白名单 / surfaceOp / sourceEventSeqs 指向)。
  • apps/server/src/transcript/adapters/sessionEvents.ts — 反向适配器 convertSessionEventsHistory
    • 事件行 → TranscriptMessage[](text → content、reasoning → reasoningContent、tool-call 块 / tool/call 事件 → toolCalls、tool/resulttoolCallId upsert 到所属 assistant,timeline 重建)。
  • apps/server/src/transcript/sessionEvents.test.ts — 29 个测试:合成纪律、校验失败路径、降级报告、反向还原、往返一致性(合成 → 序列化 → 还原)。
  • docs/architecture.md — 新增 "Session Event Adapter" 一节。

验证

vp check # format + lint + type check 全过
vp test# 29/29 passed

Bidirectional event-log adapter around the canonical TranscriptMessage
contract, enabling conversations to move between Open Chat and external
session formats:
- transcript/sessionEvents.ts: synthesizeSessionEvents renders canonical
history into session events (continuous seq, surfaceOp:'append' on surface
events, sourceEventSeqs linking tool/result to tool/call, pairing
invariant with empty-result backfill for pending calls). agentPlan /
attachments are skipped and reported via degradations; validateSessionEvents
runs a structural self-check on the emitted log.
- transcript/adapters/sessionEvents.ts: convertSessionEventsHistory reads
event lines back into canonical history (tool/call events fill missing
block arguments, tool/result upserted by toolCallId onto the owning
assistant message).
- tests cover synthesis, validation, degradation reporting, reverse
conversion, and round-trip fidelity; docs/architecture.md documents the
adapter.
@cc-hearts
cc-heartsforce-pushed the feat/dsh-event-adapter branch from cc5c8f1 to ca95d2cCompareAugust 18, 2026 07:51
@cc-heartscc-hearts changed the title feat(server): add DSH session event adapterfeat(server): add session event adapterAug 18, 2026
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@cc-hearts