provider-chain.json 9.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217
  1. {
  2. "circuit": {
  3. "closed": "Closed (Normal)",
  4. "halfOpen": "Half-Open (Testing)",
  5. "open": "Open (Circuit Broken)",
  6. "unknown": "Unknown"
  7. },
  8. "errors": {
  9. "ENOTFOUND": "DNS resolution failed (domain name not found)",
  10. "ECONNREFUSED": "Connection refused (target server rejected connection)",
  11. "ETIMEDOUT": "TCP connection timeout (high network latency or firewall blocking)",
  12. "ECONNRESET": "Connection reset (network interruption or server disconnect)",
  13. "EHOSTUNREACH": "Host unreachable (network routing issue)",
  14. "ENETUNREACH": "Network unreachable (local network configuration issue)",
  15. "EPROTO": "Protocol error (SSL/TLS handshake failed)",
  16. "CLIENT_ABORT": "Client aborted request",
  17. "PROVIDER_TIMEOUT": "Provider response timeout (high first-byte latency)",
  18. "STREAMING_IDLE_TIMEOUT": "Streaming idle timeout (provider stopped sending data)"
  19. },
  20. "summary": {
  21. "singleSuccess": "{total} providers, {healthy} healthy → {provider} ✓",
  22. "sessionReuse": "Session reuse → {provider} ✓"
  23. },
  24. "description": {
  25. "noDecisionRecord": "No decision record",
  26. "sessionReuse": "Session Reuse - Provider Selection",
  27. "sessionId": "Session ID: {id}",
  28. "unknown": "Unknown",
  29. "reuseProvider": "Reused Provider: {provider}",
  30. "initialSelection": "Initial Selection: {provider}",
  31. "candidateCount": "{count} candidate providers",
  32. "groupFiltered": "{group} group filtered to {count}",
  33. "healthyCount": "{count} after health check",
  34. "priority": "Priority {priority}",
  35. "candidate": "{name}({probability}%)",
  36. "requestChain": "Request Chain:",
  37. "systemError": "System Error",
  38. "resourceNotFound": "Resource Not Found (404)",
  39. "concurrentLimit": "Concurrent Limit",
  40. "http2Fallback": "HTTP/2 Fallback",
  41. "clientError": "Client Error",
  42. "endpointPoolExhausted": "Endpoint Pool Exhausted",
  43. "vendorTypeAllTimeout": "Vendor-Type All Endpoints Timeout"
  44. },
  45. "reasons": {
  46. "request_success": "Success",
  47. "retry_success": "Retry Success",
  48. "retry_failed": "Retry Failed",
  49. "system_error": "System Error",
  50. "resource_not_found": "Resource Not Found (404)",
  51. "client_error_non_retryable": "Client Error",
  52. "concurrent_limit_failed": "Concurrent Limit",
  53. "http2_fallback": "HTTP/2 Fallback",
  54. "session_reuse": "Session Reuse",
  55. "initial_selection": "Initial Selection",
  56. "endpoint_pool_exhausted": "Endpoint Pool Exhausted",
  57. "vendor_type_all_timeout": "Vendor-Type All Endpoints Timeout"
  58. },
  59. "filterReasons": {
  60. "rate_limited": "Rate Limited",
  61. "circuit_open": "Circuit Open",
  62. "disabled": "Disabled",
  63. "excluded": "Excluded",
  64. "format_type_mismatch": "Format Type Mismatch",
  65. "type_mismatch": "Type Mismatch",
  66. "model_not_allowed": "Model Not Allowed",
  67. "context_1m_disabled": "1M Context Disabled",
  68. "model_not_supported": "Model Not Supported",
  69. "group_mismatch": "Group Mismatch",
  70. "health_check_failed": "Health Check Failed",
  71. "endpoint_circuit_open": "Endpoint Circuit Open",
  72. "endpoint_disabled": "Endpoint Disabled"
  73. },
  74. "filterDetails": {
  75. "vendor_type_circuit_open": "Vendor-type temporarily circuit-broken",
  76. "circuit_open": "Circuit breaker open",
  77. "circuit_half_open": "Circuit breaker half-open",
  78. "rate_limited": "Rate limited"
  79. },
  80. "details": {
  81. "selectionMethod": "Selection",
  82. "attemptNumber": "Attempt",
  83. "endpoint": "Endpoint",
  84. "config": "Configuration",
  85. "priority": "Priority",
  86. "weight": "Weight",
  87. "costMultiplier": "Cost",
  88. "groupTag": "Group",
  89. "circuitBreaker": "Circuit Breaker",
  90. "circuitDisabled": "Disabled",
  91. "failures": "failures",
  92. "modelRedirect": "Model Redirect",
  93. "error": "Error",
  94. "errorDetails": "Error Details",
  95. "decisionContext": "Decision Context",
  96. "beforeHealthCheck": "Before Health Check",
  97. "afterHealthCheck": "After Health Check",
  98. "filteredProviders": "Filtered Providers",
  99. "priorityLevels": "Priority Levels",
  100. "candidates": "Candidates"
  101. },
  102. "technicalTimeline": "Technical Timeline",
  103. "timeline": {
  104. "sessionReuse": "Session Reuse",
  105. "sessionReuseSelection": "Session Reuse - Provider Selection",
  106. "sessionReuseTitle": "Session Reuse - Provider Selection",
  107. "sessionId": "Session ID: {id}",
  108. "reuseProvider": "Reused Provider: {provider}",
  109. "configuration": "Configuration",
  110. "priority": "Priority",
  111. "weight": "Weight",
  112. "cost": "Cost",
  113. "providerConfig": "Provider Config: priority={priority} weight={weight} cost={cost}",
  114. "basedOnCache": "Reusing provider based on session cache (within 5 minutes)",
  115. "sessionCache": "Based on session cache (within 5 minutes)",
  116. "waitingForResult": "Waiting for request result...",
  117. "waiting": "Waiting for request result...",
  118. "initialSelection": "Initial Provider Selection",
  119. "initialSelectionTitle": "Initial Provider Selection",
  120. "systemStatus": "System Status",
  121. "totalProviders": "Total Providers: {count}",
  122. "enabledProviders": "Enabled {type} type: {count}",
  123. "type": "Type",
  124. "userGroup": "User Group {group}: {count}",
  125. "healthCheck": "Health Check Passed: {count}",
  126. "filtered": "Filtered",
  127. "priorityLevel": "Priority",
  128. "priorityCandidates": "Priority {priority} Candidates ({count})",
  129. "candidates": "Candidates",
  130. "candidateInfo": " • {name}: weight={weight} cost={cost} probability={probability}%",
  131. "selected": "✓ Selected: {provider}",
  132. "requestFailed": "Request Failed (Attempt {attempt})",
  133. "resourceNotFoundFailed": "Resource Not Found (404) (Attempt {attempt})",
  134. "attemptNumber": "Attempt {number}",
  135. "firstAttempt": "First Attempt",
  136. "nthAttempt": "Attempt {attempt}",
  137. "provider": "Provider: {provider}",
  138. "statusCode": "Status Code: {code}",
  139. "statusCodeInferred": "Status Code (inferred): {code}",
  140. "error": "Error: {error}",
  141. "requestDuration": "Request Duration: {duration}ms",
  142. "requestDurationSeconds": "Request Duration: {duration}s",
  143. "circuitStatus": "Circuit Status",
  144. "current": "Current",
  145. "circuitCurrent": "Current State: {state}",
  146. "failureCount": "Failure Count: {current}/{threshold}",
  147. "untilBreak": "Until Circuit Break",
  148. "circuitRemaining": "{remaining} attempts until circuit break",
  149. "remaining": "{count} attempts remaining",
  150. "status": "Status",
  151. "alreadyBroken": "Circuit already broken",
  152. "circuitTriggered": "Warning: Circuit breaker triggered",
  153. "circuitDisabled": "Circuit Breaker Disabled",
  154. "errorDetails": "Error Details",
  155. "systemError": "Network/System Error",
  156. "systemErrorFailed": "Network/System Error (Attempt {attempt})",
  157. "errorType": "Error Type: ",
  158. "errorName": "Error",
  159. "errorCode": "Error Code: {code}",
  160. "errorSyscall": "Syscall: {syscall}",
  161. "errorMeaning": "Meaning: {meaning}",
  162. "meaning": "Meaning",
  163. "notCountedInCircuit": "This error is not counted in provider circuit breaker",
  164. "systemErrorNote": "Note: This error is not counted in provider circuit breaker",
  165. "resourceNotFoundNote": "Note: This error is not counted in the circuit breaker and will trigger failover after retries are exhausted.",
  166. "reselection": "Reselecting Provider",
  167. "reselect": "Reselecting Provider",
  168. "excluded": "Excluded: {providers}",
  169. "remainingCandidates": "Remaining Candidates: {count}",
  170. "requestSuccess": "{label} Request Success",
  171. "requestSuccessAttempt": "{attempt} Request Success",
  172. "requestOk": "OK",
  173. "successStatus": "Status: {code} OK",
  174. "requestCompleted": "Request completed successfully",
  175. "completed": "Request completed successfully",
  176. "concurrentLimitFailed": "Concurrent Limit",
  177. "attemptFailed": "Attempt Failed ({attempt})",
  178. "concurrentLimit": "Concurrent Limit",
  179. "concurrentLimitInfo": "Current Concurrent: {current}/{limit}",
  180. "sessions": "Sessions",
  181. "withPriorityWeight": "(priority={priority} weight={weight})",
  182. "unknown": "Unknown",
  183. "noDecisionRecord": "No decision record",
  184. "modelRedirect": "Model Redirect",
  185. "modelRedirectFrom": " Requested Model: {model}",
  186. "modelRedirectTo": " Redirected To: {model}",
  187. "modelRedirectBilling": " Billing Model: {model}",
  188. "http2Fallback": "HTTP/2 Protocol Fallback",
  189. "http2ErrorType": "HTTP/2 Error Type: {type}",
  190. "http2FallbackNote": "Transparently fell back to HTTP/1.1, not counted in circuit breaker",
  191. "requestDetails": "Request Details (for debugging)",
  192. "requestMethod": "Method",
  193. "requestUrl": "URL",
  194. "requestHeaders": "Headers",
  195. "requestBody": "Body",
  196. "requestBodyTruncated": "(truncated)",
  197. "clientErrorNonRetryable": "Client Error (Attempt {attempt}, non-retryable)",
  198. "matchedRule": "Matched Error Rule",
  199. "ruleId": "Rule ID: {id}",
  200. "ruleCategory": "Rule Category: {category}",
  201. "rulePattern": "Rule Pattern: {pattern}",
  202. "ruleMatchType": "Match Type: {matchType}",
  203. "ruleDescription": "Description: {description}",
  204. "ruleHasOverride": "Overrides: response={response}, statusCode={statusCode}",
  205. "clientErrorNote": "This error is caused by client input and is not retried or counted in the circuit breaker.",
  206. "endpointPoolExhausted": "Endpoint Pool Exhausted (all endpoints unavailable)",
  207. "endpointStats": "Endpoint Filter Stats",
  208. "endpointStatsTotal": "Total Endpoints: {count}",
  209. "endpointStatsEnabled": "Enabled Endpoints: {count}",
  210. "endpointStatsCircuitOpen": "Circuit-Open Endpoints: {count}",
  211. "endpointStatsAvailable": "Available Endpoints: {count}",
  212. "strictBlockNoEndpoints": "Strict mode: no endpoint candidates available, provider skipped without fallback",
  213. "strictBlockSelectorError": "Strict mode: endpoint selector encountered an error, provider skipped without fallback",
  214. "vendorTypeAllTimeout": "Vendor-Type All Endpoints Timeout (524)",
  215. "vendorTypeAllTimeoutNote": "All endpoints for this vendor-type timed out. Vendor-type circuit breaker triggered."
  216. }
  217. }