Repository navigation
evoke-chat 0.4.0 · 真实接入反馈批(接通防线 / SSE 取消 / 扩展钩子 / 代际守卫)
首批真实项目接入 expose 的问题全数收口:2 P0 + 2 P1 + 4 P2(minor)。
修复(P0)
useChatSession静默断链:transport.open未被调用时,走事件出口的标准事件(delta 增量、turn/end收尾)全部蒸发,而引擎直改路径照常——症状是页面永远"思考中"。现在首次submit自动补开并console.warn;显式open()仍是正式接法(快照装载与重连语义都在那里)。readSseFrames接受{ signal }:abort 经reader.cancel()解除挂起中的 read,安静收尾、残帧按丢弃处理、监听器与锁都释放;createChatTransport中断接入解析层(abort 先解除挂起 read,再统一补turn/end(aborted))。
新增(P1 + P2)
createChatTransport新增onExtension({ event, data, json }):RAG 引用 / 进度 / 运行卡等非标准载荷的拦截口,返回true整帧认领跳过标准映射;provider接受自定义 adapter 对象(createState/buildRequest/headersOf/frameToEvents/finalize),自研后端不必复制 fetch/abort 管线。- 代际守卫与
dispose():每次open()进新代,切会话后在途轮的迟到事件就地丢弃(幽灵消息防线);open()同时清乐观气泡 / 审批 / 提问等瞬态;dispose()幂等停用、再open()复活、scope 卸载自动调用。 - 结构化进度一等通道:瞬时事件
assistant/progress({ messageId, label, detail?, elapsedMs?, percent? })→engine.setProgress→ 消息内一行阶段读数,收尾自动清空。 ChatSources条目status字段:定位状态说明与域名同行展示,不必拼进 title。ChatUsage新增segments: [{ label, tokens }]:按阶段等自定义记账进披露行,汇总按 label 合并,不计入总量。- 打包:exports 去掉
"./*"通配、40 个组件子路径逐条显式登记——未登记路径直接ERR_PACKAGE_PATH_NOT_EXPORTED,不再 advertise 不存在的子路径。
测试 +13;AI 契约页随版本重生成。详见 CHANGELOG「evoke-chat 0.4.0」小节。