Skip to content

Status 型の整理: PieceEngine で未ハンドルのステータスがある #404

@nrslib

Description

@nrslib

概要

Status 型(src/core/models/status.ts)に定義されているステータスのうち、PieceEngine.run() で明示的にハンドリングされていないものがある。現状は resolveNextMovement で例外になるパスに依存しており、意図的な設計ではない。

現状

PieceEngine.run() のステータス分岐:

if (response.status === 'blocked') { /* handleBlocked */ }
if (response.status === 'error') { /* abort */ }
// それ以外 → resolveNextMovement(matchedRuleIndex 必須)

Status 型の全値と PieceEngine での扱い:

status ハンドリング 備考
done resolveNextMovement 正常フロー
error ✅ abort プロバイダー障害
blocked handleBlocked ユーザー入力待ち
interrupted ❌ 例外パス Claude provider が返す(client.ts:29
approved ❌ 例外パス Mock provider が返せる
rejected ❌ 例外パス Mock provider が返せる
improve ❌ 例外パス Mock provider が返せる
cancelled ❌ 例外パス 使用箇所なし
answer ❌ 例外パス 使用箇所なし
pending ❌ 例外パス 使用箇所なし

未使用コード

  • ClaudeProcess.wasInterrupted() が定義されているが呼び出し元がない

検討事項

  • interruptederror に統一するか、PieceEngine に明示的ハンドリングを追加するか
  • approved / rejected / improve はエンジンレベルで必要か、Mock 専用で十分か
  • cancelled / answer / pending は AgentResponse として返る想定があるのか
  • 不要なステータスを Status 型から削除するか

発見経緯

PR #403 のレビューで status !== 'done' ガードの影響範囲を調査した際に発見。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions