File tree Expand file tree Collapse file tree
packages/opencode/test/session Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -230,6 +230,30 @@ describe("session.retry.retryable", () => {
230230 expect ( retryable ) . toBeDefined ( )
231231 expect ( retryable ) . toBe ( "Response decompression failed" )
232232 } )
233+
234+ test ( "returns upsell message for FreeUsageLimitError in response body" , ( ) => {
235+ const error = new MessageV2 . APIError ( {
236+ message : "Usage limit exceeded" ,
237+ isRetryable : true ,
238+ responseBody : '{"error":{"type":"FreeUsageLimitError"}}' ,
239+ } ) . toObject ( ) as MessageV2 . APIError
240+
241+ expect ( SessionRetry . retryable ( error ) ) . toBe ( SessionRetry . GO_UPSELL_MESSAGE )
242+ } )
243+
244+ test ( "returns overloaded message when APIError message includes Overloaded" , ( ) => {
245+ const error = new MessageV2 . APIError ( {
246+ message : "Server is Overloaded, try again later" ,
247+ isRetryable : true ,
248+ } ) . toObject ( ) as MessageV2 . APIError
249+
250+ expect ( SessionRetry . retryable ( error ) ) . toBe ( "Provider is overloaded" )
251+ } )
252+
253+ test ( "maps rate_limit error code in nested json" , ( ) => {
254+ const error = wrap ( JSON . stringify ( { type : "error" , error : { code : "rate_limit_exceeded" } } ) )
255+ expect ( SessionRetry . retryable ( error ) ) . toBe ( "Rate Limited" )
256+ } )
233257} )
234258
235259describe ( "session.message-v2.fromError" , ( ) => {
You can’t perform that action at this time.
0 commit comments