diff --git a/.speakeasy/in.openapi.yaml b/.speakeasy/in.openapi.yaml index 0d5f2111..51a68ef6 100644 --- a/.speakeasy/in.openapi.yaml +++ b/.speakeasy/in.openapi.yaml @@ -5545,6 +5545,7 @@ components: moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' + switchyard-router: '#/components/schemas/SwitchyardRouterPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: 'id' @@ -5559,6 +5560,7 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' + - $ref: '#/components/schemas/SwitchyardRouterPlugin' type: 'array' prediction: $ref: '#/components/schemas/Prediction' @@ -14892,6 +14894,7 @@ components: moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' + switchyard-router: '#/components/schemas/SwitchyardRouterPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: 'id' @@ -14906,6 +14909,7 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' + - $ref: '#/components/schemas/SwitchyardRouterPlugin' type: 'array' provider: $ref: '#/components/schemas/ProviderPreferences' @@ -24817,6 +24821,7 @@ components: moderation: '#/components/schemas/ModerationPlugin' pareto-router: '#/components/schemas/ParetoRouterPlugin' response-healing: '#/components/schemas/ResponseHealingPlugin' + switchyard-router: '#/components/schemas/SwitchyardRouterPlugin' web: '#/components/schemas/WebSearchPlugin' web-fetch: '#/components/schemas/WebFetchPlugin' propertyName: 'id' @@ -24831,6 +24836,7 @@ components: - $ref: '#/components/schemas/ContextCompressionPlugin' - $ref: '#/components/schemas/ParetoRouterPlugin' - $ref: '#/components/schemas/FusionPlugin' + - $ref: '#/components/schemas/SwitchyardRouterPlugin' type: 'array' presence_penalty: format: 'double' @@ -26609,6 +26615,28 @@ components: required: - 'suspended' type: 'object' + SwitchyardRouterPlugin: + example: + algorithm: 'stage' + id: 'switchyard-router' + properties: + algorithm: + description: 'Routing algorithm for this request. "capability" calls a small judge model to rate how demanding the task is, then picks the efficient or capable candidate. "stage" reads the tool-result history (errors, repeated failures, edits landing) and calls the judge only when those signals are undecided. "auto" is "stage" without the judge call. "random" picks one candidate at random. "composite" keeps the tier chosen on the last human turn and re-evaluates tool turns with the stage signals. "passthrough" serves the eligible candidates in the order OpenRouter already ranked them, with no routing decision and no judge call. Omit this field to use the platform default, capability.' + enum: + - 'capability' + - 'stage' + - 'auto' + - 'random' + - 'composite' + - 'passthrough' + type: 'string' + id: + enum: + - 'switchyard-router' + type: 'string' + required: + - 'id' + type: 'object' TaskClassificationItem: example: category_token_share: 0.48 @@ -36645,13 +36673,13 @@ paths: example: error: code: 409 - message: 'The intern is not in a state that allows this operation' + message: 'Another operation holds the intern, retry once it settles' metadata: reason: 'intern_busy' - retryable: false + retryable: true schema: $ref: '#/components/schemas/InternLifecycleError' - description: 'The intern is not in a state that allows this operation.' + description: 'The intern is not in a state that allows this operation. `metadata.reason` says whether to try again: `intern_busy` means another operation still holds the intern and carries `metadata.retryable: true`, so the same request may be sent again once it settles. A duplicate delete of an intern already being deleted is not a conflict and is accepted with 202.' '413': content: application/json: @@ -37293,13 +37321,13 @@ paths: example: error: code: 409 - message: 'The intern is not in a state that allows this operation' + message: 'Another operation holds the intern, retry once it settles' metadata: reason: 'intern_busy' - retryable: false + retryable: true schema: $ref: '#/components/schemas/InternLifecycleError' - description: 'The intern is not in a state that allows this operation.' + description: 'The intern is not in a state that allows this operation. `metadata.reason` says whether to try again: `intern_busy` means another operation still holds the intern and carries `metadata.retryable: true`, so the same request may be sent again once it settles. A duplicate delete of an intern already being deleted is not a conflict and is accepted with 202.' '413': content: application/json: @@ -37445,13 +37473,13 @@ paths: example: error: code: 409 - message: 'The intern is not in a state that allows this operation' + message: 'Another operation holds the intern, retry once it settles' metadata: reason: 'intern_busy' - retryable: false + retryable: true schema: $ref: '#/components/schemas/InternLifecycleError' - description: 'The intern is not in a state that allows this operation.' + description: 'The intern is not in a state that allows this operation. `metadata.reason` says whether to try again: `intern_busy` means another operation still holds the intern and carries `metadata.retryable: true`, so the same request may be sent again once it settles. A duplicate delete of an intern already being deleted is not a conflict and is accepted with 202.' '413': content: application/json: