Repository navigation
番茄钟走完的自动提醒会把整个会话打成跑不起来 —— 修掉那条写入。
症状
番茄钟时间走完的那一刻,起钟的那个会话忽然任何回复都发不出去,一直显示:
format v4 message requires a producer-owned source kind
会话历史是完整的、文件也没坏,但之后每一轮都撞同一堵墙。
根因
走完钟时插件用 agent.followup() 往起钟会话塞一条提醒,source 写成
{ kind: 'plugin', plugin: 'dsh-study-desk', … }。
宿主会话格式 v4 把「kind 一律写 plugin、只靠 plugin 字段认来源」判为退役语法,
准入时直接抛错;而 followup 的消息会原样落进 agent/inbox/spliced.data.inserted[],
于是整条事件被拒——写入侧永久失败。
改法
kind 改成生产者自己命名的 plugin:dsh-study-desk:
index.js新增MESSAGE_SOURCE_KIND与timerEndSource(at),提醒一律从工厂出,不再手写字面量- 新增
test/message-source.test.js(4 条):kind 取值、能过宿主同款准入、at每次新对象、
静态扫禁止裸kind: 'plugin'回潮(带注释遮罩,讲旧写法的注释不算违规) apply-probe.mjs端到端断言同步到新 kind- 单测 73 → 78
验证
node --test:78/78 通过node apply-probe.mjs:端到端全通过- 变异自证三次:把 source 改回裸
kind: 'plugin',静态扫与端到端各自变红;还原后全绿 - 实机确认:重启后插件
/api返回0.8.1,原会话可继续对话