provider-chain.json 9.4 KB

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