| author | |
| committer | |
| log | ce90eec1ffc2087395227a610843091f4b260cf7 |
| tree | ae249fcb8a710e80715615a0ba5e47d3280c68f4 |
| parent | a0bf1eee48d1537ec38e0f1fa5243f10ffd4e870 |
| signature | Signed by PGP key B5690EEEBB952194 |
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>4 files changed, 8 insertions(+), 6 deletions(-)
apps/server/src/orchestration-v2/Adapters/ClaudeAdapterV2.ts+4-2| ... | ... | @@ -3673,7 +3673,7 @@ export function makeClaudeAdapterV2( |
| 3673 | 3673 | readonly output: ClaudeNativeToolOutput; |
| 3674 | 3674 | readonly status: Extract< |
| 3675 | 3675 | OrchestrationV2TurnItem["status"], |
| 3676 | "running" | "completed" | "failed" | |
| 3676 | "running" | "completed" | "failed" | "interrupted" | "cancelled" | |
| 3677 | 3677 | >; |
| 3678 | 3678 | readonly startedAt: DateTime.Utc; |
| 3679 | 3679 | readonly updatedAt: DateTime.Utc; |
| ... | ... | @@ -4740,7 +4740,9 @@ export function makeClaudeAdapterV2( |
| 4740 | 4740 | parentNodeId: toolCall.parentNodeId, |
| 4741 | 4741 | ordinal: toolCall.ordinal, |
| 4742 | 4742 | output: NO_CLAUDE_NATIVE_TOOL_OUTPUT, |
| 4743 | status: "failed", | |
| 4743 | // A stopped turn cuts its open tools short; only a turn that | |
| 4744 | // ended on its own leaves them failed. | |
| 4745 | status: input.status === "completed" ? "failed" : input.status, | |
| 4744 | 4746 | startedAt: toolCall.startedAt, |
| 4745 | 4747 | updatedAt: input.completedAt, |
| 4746 | 4748 | presentation: toolCall.presentation, |
apps/server/src/orchestration-v2/testkit/fixtures/claude_background_task_interrupt/output.ts+2-2| ... | ... | @@ -44,7 +44,7 @@ export function assertClaudeBackgroundTaskInterruptOutput( |
| 44 | 44 | projection.turnItems.flatMap((item) => |
| 45 | 45 | item.type === "command_execution" ? [item.status] : [], |
| 46 | 46 | ), |
| 47 | ["completed", "failed"], | |
| 48 | "the background launch completed; the interrupted foreground command did not", | |
| 47 | ["completed", "interrupted"], | |
| 48 | "the background launch completed; the foreground command was interrupted", | |
| 49 | 49 | ); |
| 50 | 50 | } |
apps/server/src/orchestration-v2/testkit/fixtures/turn_interrupt_mid_tool/claude_output.ts+1-1| ... | ... | @@ -81,7 +81,7 @@ export function assertTurnInterruptMidToolClaudeOutput( |
| 81 | 81 | assert.isDefined(commandItem); |
| 82 | 82 | assert.isDefined(interruptRequest); |
| 83 | 83 | assert.isDefined(interruptResult); |
| 84 | assert.equal(commandItem.status, "failed"); | |
| 84 | assert.equal(commandItem.status, "interrupted"); | |
| 85 | 85 | assert.include(commandItem.input, "node -e"); |
| 86 | 86 | assert.equal(interruptRequest.status, "completed"); |
| 87 | 87 | assert.equal(interruptResult.status, "interrupted"); |
apps/server/src/orchestration-v2/testkit/fixtures/turn_interrupt_restart/claude_output.ts+1-1| ... | ... | @@ -111,7 +111,7 @@ export function assertTurnInterruptRestartClaudeOutput( |
| 111 | 111 | assert.equal(projection.providerThreads[0]?.status, "idle"); |
| 112 | 112 | const commandItem = projection.turnItems.find((item) => item.type === "command_execution"); |
| 113 | 113 | assert.isDefined(commandItem); |
| 114 | assert.equal(commandItem.status, "failed"); | |
| 114 | assert.equal(commandItem.status, "interrupted"); | |
| 115 | 115 | assert.include(commandItem.input, "node -e"); |
| 116 | 116 | |
| 117 | 117 | const outboundFrames = transcript.entries.flatMap((entry) => |