@meetquinn/animactl 0.1.14-canary.499.1.fa0a014 → 0.1.14
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -435,6 +435,8 @@ function isRetryableClaudeProviderError(input) {
|
|
|
435
435
|
return input.status === 408 || input.status >= 500;
|
|
436
436
|
if (/\b(socket|connection|timeout|timed out|network|fetch)\b/i.test(input.message))
|
|
437
437
|
return true;
|
|
438
|
+
if (/\bresponse stalled mid-stream\b/i.test(input.message))
|
|
439
|
+
return true;
|
|
438
440
|
return input.subtype === 'error_during_execution';
|
|
439
441
|
}
|
|
440
442
|
function textFromClaudeAssistantEvent(value) {
|
|
@@ -416,7 +416,7 @@ test('claude-code runtime does not retry non-transient provider protocol errors'
|
|
|
416
416
|
await rm(stateDir, { force: true, recursive: true });
|
|
417
417
|
}
|
|
418
418
|
});
|
|
419
|
-
test('claude-code runtime resumes after
|
|
419
|
+
test('claude-code runtime resumes after a stalled mid-stream response when tool use already started', async () => {
|
|
420
420
|
const stateDir = await mkdtemp(join(tmpdir(), 'anima-runtime-test-'));
|
|
421
421
|
try {
|
|
422
422
|
await withAnimaHome(stateDir, async () => {
|
|
@@ -434,7 +434,7 @@ test('claude-code runtime resumes after transient provider errors when tool use
|
|
|
434
434
|
" console.log(JSON.stringify({ type: 'system', subtype: 'init', session_id: 'claude-error-session', cwd: process.cwd(), claude_code_version: 'test' }));",
|
|
435
435
|
" if (count === 1) {",
|
|
436
436
|
" console.log(JSON.stringify({ type: 'assistant', message: { content: [{ type: 'tool_use', id: 'toolu_side_effect', name: 'Bash', input: { command: 'touch /tmp/anima-side-effect' } }] }, session_id: 'claude-error-session' }));",
|
|
437
|
-
" console.log(JSON.stringify({ type: 'result', subtype: 'success', is_error: true,
|
|
437
|
+
" console.log(JSON.stringify({ type: 'result', subtype: 'success', is_error: true, result: 'API Error: Response stalled mid-stream. The response above may be incomplete.', session_id: 'claude-error-session', usage: { input_tokens: 0, output_tokens: 0 }, terminal_reason: 'api_error' }));",
|
|
438
438
|
" return;",
|
|
439
439
|
" }",
|
|
440
440
|
" console.log(JSON.stringify({ type: 'assistant', message: { content: [{ type: 'text', text: 'continued safely after provider error' }] }, session_id: 'claude-error-session' }));",
|