Files
ai-workflow-skill/docs/tests/inbox/wait-reply

Inbox wait-reply Test Plan

Scope

This document covers blocking reply wait behavior within one thread via inbox wait-reply.

Shared conventions live in ../_shared/README.md.

case: wait-reply-wakes-on-answer-after-message

用例意义

验证 wait-reply 可以从某条已知消息之后开始等待,并在答复到达后唤醒。

前置条件

  • worker-c 已拥有一个 blocked 线程 THREAD_ID
  • 阻塞消息的 message_idBLOCKED_MESSAGE_ID

输入

inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --after-message BLOCKED_MESSAGE_ID --timeout-seconds 2
inbox --db TMPDIR/coord.db --json reply --from leader --to worker-c --thread THREAD_ID --summary "Redirect to login" --body "Redirect guests to login for the MVP."

预期输出

  • wait-reply 退出码为 0
  • wait-reply.data.woke == true
  • 返回的 message.kind == "answer"

断言结论

  • wait-reply 可以可靠地从既知消息边界之后等待后续答复

case: wait-reply-can-start-from-after-event

用例意义

验证 wait-reply --after-event 支持从既知事件游标之后恢复等待。

前置条件

  • 已通过先前的 watchwait-reply 结果拿到某个 NEXT_EVENT_ID
  • 线程 THREAD_ID 后续还会收到新的回复类消息

输入

inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --after-event NEXT_EVENT_ID --timeout-seconds 2
inbox --db TMPDIR/coord.db --json reply --from leader --to worker-c --thread THREAD_ID --summary "Redirect to login" --body "Redirect guests to login for the MVP."

预期输出

  • wait-reply 在事件游标之后的新回复出现时被唤醒
  • 返回新的 next_event_id

断言结论

  • after-event 允许等待逻辑在断点之后继续,而不会重复消费旧回复

case: wait-reply-times-out-when-no-reply

用例意义

验证在超时时间内没有匹配回复出现时,wait-reply 返回稳定超时契约。

前置条件

  • 存在一个线程 THREAD_ID
  • 不会有新的 answer/control/result 消息到达

输入

inbox --db TMPDIR/coord.db --agent worker-c --json wait-reply --thread THREAD_ID --timeout-seconds 1

预期输出

  • 退出码为 10
  • JSON 错误码为 no_matching_work

断言结论

  • wait-reply 超时被视为“没有等到匹配回复”

Notes

  • 默认唤醒 kinds 为 answer,control,result
  • 当返回消息是发给等待 agent 的外来消息时,wait-reply 会顺带推进该 agent 的 read cursor