-
-
Notifications
You must be signed in to change notification settings - Fork 27
Open
Description
概要
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()が定義されているが呼び出し元がない
検討事項
interruptedをerrorに統一するか、PieceEngine に明示的ハンドリングを追加するかapproved/rejected/improveはエンジンレベルで必要か、Mock 専用で十分かcancelled/answer/pendingは AgentResponse として返る想定があるのか- 不要なステータスを
Status型から削除するか
発見経緯
PR #403 のレビューで status !== 'done' ガードの影響範囲を調査した際に発見。
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels