Skip to content

v0.8.1 · 修掉番茄钟提醒把会话打死的写入

Latest

Choose a tag to compare

@modusensus modusensus released this 05 Nov 02:49
2f7b672

番茄钟走完的自动提醒会把整个会话打成跑不起来 —— 修掉那条写入。

症状

番茄钟时间走完的那一刻,起钟的那个会话忽然任何回复都发不出去,一直显示:

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,原会话可继续对话