test(cliproxy): add thinking suffix test and document exit 0 behavior

- Add test case for comma-separated thinking params (32768,extended)
- Add clarifying comment to isProviderError() about exit 0 handling
This commit is contained in:
Tam Nhu Tran
2026-02-12 11:04:37 +07:00
parent b6e1d0c481
commit c35de7ec9a
2 changed files with 16 additions and 0 deletions
+2
View File
@@ -125,6 +125,8 @@ export function detectFailedTier(
/** Check if Claude exit indicates provider error (vs normal user exit) */
export function isProviderError(exitCode: number, stderr: string): boolean {
// Exit code 0 means success, even if stderr has error-like output
// (could be warnings, debug info, etc.)
if (exitCode === 0) return false;
return PROVIDER_ERROR_PATTERNS.some((p) => p.test(stderr));
}
@@ -147,6 +147,20 @@ describe('detectFailedTier', () => {
// Should still match because model name is substring
expect(result).toBe('opus');
});
it('should strip complex thinking suffix with comma-separated params', () => {
const tiersWithComplexBudget: typeof tiers = {
opus: { provider: 'agy', model: 'claude-opus-4-6-thinking(32768,extended)' },
sonnet: { provider: 'agy', model: 'claude-sonnet-4-5-thinking(high)' },
haiku: { provider: 'agy', model: 'claude-3-5-haiku' },
};
// Stderr contains base model name without suffix
const stderr = 'Error: claude-opus-4-6-thinking overloaded';
const result = detectFailedTier(stderr, tiersWithComplexBudget);
// Should match because regex strips (32768,extended) to get base name
expect(result).toBe('opus');
});
});
// ========================================