# 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](../_shared/README.md). ## case: wait-reply-wakes-on-answer-after-message ### 用例意义 验证 `wait-reply` 可以从某条已知消息之后开始等待,并在答复到达后唤醒。 ### 前置条件 - `worker-c` 已拥有一个 `blocked` 线程 `THREAD_ID` - 阻塞消息的 `message_id` 为 `BLOCKED_MESSAGE_ID` ### 输入 ```bash 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` 支持从既知事件游标之后恢复等待。 ### 前置条件 - 已通过先前的 `watch` 或 `wait-reply` 结果拿到某个 `NEXT_EVENT_ID` - 线程 `THREAD_ID` 后续还会收到新的回复类消息 ### 输入 ```bash 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` 消息到达 ### 输入 ```bash 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