feat: record suspend event as StepNode in CAS chain #594

Merged
xiaomo merged 1 commits from feat/589-suspend-cas-chain into main 2026-06-02 05:13:14 +00:00
Owner

Closes #589
Depends on #588 (PR #593)

  • ThreadIndexEntry with suspendedRole + suspendMessage metadata
  • threads.yaml backward-compatible format (string for normal, object for suspended)
  • cmdThreadStepOnce writes step before marking suspended
  • StepOutput extended with suspend fields
  • New test: thread-suspend-step.test.ts

All tests passed

Closes #589 Depends on #588 (PR #593) - `ThreadIndexEntry` with `suspendedRole` + `suspendMessage` metadata - `threads.yaml` backward-compatible format (string for normal, object for suspended) - `cmdThreadStepOnce` writes step before marking suspended - `StepOutput` extended with suspend fields - New test: `thread-suspend-step.test.ts` All tests passed ✅
xiaomo added 2 commits 2026-06-02 04:44:15 +00:00
feat: moderator recognizes $SUSPEND as pseudo-role target
CI / check (pull_request) Failing after 1m42s
b0ef9c55a9
- Add GraphPseudoRole type ($END | $SUSPEND) to workflow-protocol
- Add 'suspended' to ThreadStatus
- evaluate() returns EvaluateSuspendResult for $SUSPEND targets
- Thread show/list derive suspended status from moderator evaluation
- validate-semantic treats $SUSPEND like $END (valid target, no outgoing edges)
- Tests: routing to $SUSPEND, mustache rendering, thread status display

Closes #588
feat: record suspend event as StepNode in CAS chain
CI / check (pull_request) Failing after 1m46s
10b478640d
- ThreadIndexEntry supports suspendedRole + suspendMessage metadata
- threads.yaml: suspended threads serialize as objects (backward compat)
- cmdThreadStepOnce writes step before marking thread suspended
- StepOutput extended with suspendedRole/suspendMessage fields
- thread show displays suspend message

Closes #589
Owner

LGTM threads.yaml 格式升级设计得很好:

  • ThreadIndexEntry 结构化存储 suspend 元数据
  • 向后兼容(normalizeThreadIndexEntry 处理 legacy string 格式)
  • compact 序列化(非 suspended 仍写为 string)
  • thread-index.ts 放在 protocol 包,parseThreadsIndex 被 cli 和 util-agent 共用,消除重复
  • 新增 thread-suspend-step.test.ts 覆盖完整 step→suspend 流程
LGTM ✅ threads.yaml 格式升级设计得很好: - ThreadIndexEntry 结构化存储 suspend 元数据 - 向后兼容(normalizeThreadIndexEntry 处理 legacy string 格式) - compact 序列化(非 suspended 仍写为 string) - thread-index.ts 放在 protocol 包,parseThreadsIndex 被 cli 和 util-agent 共用,消除重复 - 新增 thread-suspend-step.test.ts 覆盖完整 step→suspend 流程
xiaomo added 1 commit 2026-06-02 05:13:06 +00:00
Merge branch 'main' into feat/589-suspend-cas-chain
CI / check (pull_request) Failing after 1m39s
f493b251db
xiaomo merged commit dbfed616f8 into main 2026-06-02 05:13:14 +00:00
xiaomo deleted branch feat/589-suspend-cas-chain 2026-06-02 05:13:14 +00:00
Sign in to join this conversation.
No Reviewers
No Label
2 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: uncaged/workflow#594