opencode-agent[bot] 2 місяців тому
батько
коміт
a0e4db3714

+ 1 - 1
packages/core/src/catalog.ts

@@ -104,7 +104,7 @@ export const layer = Layer.effect(
             ? { ...model.api, url: provider.api.url, settings: { ...provider.api.settings, ...model.api.settings } }
             : model.api.type === "aisdk" && provider.api.type === "aisdk"
               ? { ...model.api, settings: { ...provider.api.settings, ...model.api.settings } }
-            : model.api
+              : model.api
       const request = {
         headers: {
           ...provider.request.headers,

+ 1 - 3
packages/core/src/plugin/provider/gitlab.ts

@@ -37,9 +37,7 @@ export const GitLabPlugin = PluginV2.define({
         if (evt.model.apiID.startsWith("duo-workflow-")) {
           const gitlab = yield* Effect.promise(() => import("gitlab-ai-provider")).pipe(Effect.orDie)
           const workflowRef =
-            typeof evt.model.request.body.workflowRef === "string"
-              ? evt.model.request.body.workflowRef
-              : undefined
+            typeof evt.model.request.body.workflowRef === "string" ? evt.model.request.body.workflowRef : undefined
           const workflowDefinition =
             typeof evt.model.request.body.workflowDefinition === "string"
               ? evt.model.request.body.workflowDefinition

+ 6 - 8
packages/core/src/v1/config/migrate.ts

@@ -217,16 +217,14 @@ function migrateModel(info: typeof ConfigProviderV1.Model.Type, packageName?: st
       body: info.options && lowerer.request(info.options),
     },
     variants:
-      info.variants &&
-      Object.entries(info.variants).map(([id, options]) => ({ id, body: lowerer.request(options) })),
+      info.variants && Object.entries(info.variants).map(([id, options]) => ({ id, body: lowerer.request(options) })),
     cost: costs,
     disabled: info.status === "deprecated" ? true : undefined,
-    limit:
-      info.limit && {
-        context: int(info.limit.context),
-        input: info.limit.input === undefined ? undefined : int(info.limit.input),
-        output: int(info.limit.output),
-      },
+    limit: info.limit && {
+      context: int(info.limit.context),
+      input: info.limit.input === undefined ? undefined : int(info.limit.input),
+      output: int(info.limit.output),
+    },
   }
 }
 

+ 3 - 1
packages/core/src/v1/config/provider-options.ts

@@ -185,7 +185,9 @@ function pick(options: Options, keys: ReadonlyArray<string>) {
 
 function headers(input: unknown) {
   if (!isRecord(input)) return undefined
-  return Object.fromEntries(Object.entries(input).filter((entry): entry is [string, string] => typeof entry[1] === "string"))
+  return Object.fromEntries(
+    Object.entries(input).filter((entry): entry is [string, string] => typeof entry[1] === "string"),
+  )
 }
 
 function compact(input: Record<string, string | undefined>) {

+ 2 - 6
packages/core/test/plugin/provider-azure.test.ts

@@ -60,9 +60,7 @@ describe("AzurePlugin", () => {
           })
           catalog.provider.update(ProviderV2.ID.openai, () => {})
         })
-        expect((yield* catalog.provider.get(ProviderV2.ID.azure)).request.body.resourceName).toBe(
-          "from-config",
-        )
+        expect((yield* catalog.provider.get(ProviderV2.ID.azure)).request.body.resourceName).toBe("from-config")
         expect((yield* catalog.provider.get(ProviderV2.ID.openai)).request.body.resourceName).toBeUndefined()
       }),
     ),
@@ -103,9 +101,7 @@ describe("AzurePlugin", () => {
               item.api = { type: "aisdk", package: "@ai-sdk/azure" }
             })
           })
-          expect((yield* catalog.provider.get(ProviderV2.ID.azure)).request.body.resourceName).toBe(
-            "from-account",
-          )
+          expect((yield* catalog.provider.get(ProviderV2.ID.azure)).request.body.resourceName).toBe("from-account")
         }),
     ),
   )

+ 43 - 294
packages/sdk/openapi.json

@@ -19312,74 +19312,26 @@
           "name": {
             "type": "string"
           },
-          "endpoint": {
+          "api": {
             "anyOf": [
               {
                 "type": "object",
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["unknown"]
-                  }
-                },
-                "required": ["type"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/responses"]
+                    "enum": ["aisdk"]
                   },
-                  "url": {
+                  "package": {
                     "type": "string"
                   },
-                  "websocket": {
-                    "type": "boolean"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/completions"]
-                  },
                   "url": {
                     "type": "string"
                   },
-                  "reasoning": {
-                    "anyOf": [
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_content"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      },
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_details"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      }
-                    ]
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "url"],
+                "required": ["type", "package"],
                 "additionalProperties": false
               },
               {
@@ -19387,30 +19339,16 @@
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["anthropic/messages"]
+                    "enum": ["native"]
                   },
                   "url": {
                     "type": "string"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["aisdk"]
                   },
-                  "package": {
-                    "type": "string"
-                  },
-                  "url": {
-                    "type": "string"
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "package"],
+                "required": ["type", "settings"],
                 "additionalProperties": false
               }
             ]
@@ -19437,7 +19375,7 @@
             "required": ["tools", "input", "output"],
             "additionalProperties": false
           },
-          "options": {
+          "request": {
             "type": "object",
             "properties": {
               "headers": {
@@ -19449,24 +19387,11 @@
               "body": {
                 "type": "object"
               },
-              "aisdk": {
-                "type": "object",
-                "properties": {
-                  "provider": {
-                    "type": "object"
-                  },
-                  "request": {
-                    "type": "object"
-                  }
-                },
-                "required": ["provider", "request"],
-                "additionalProperties": false
-              },
               "variant": {
                 "type": "string"
               }
             },
-            "required": ["headers", "body", "aisdk"],
+            "required": ["headers", "body"],
             "additionalProperties": false
           },
           "variants": {
@@ -19485,22 +19410,9 @@
                 },
                 "body": {
                   "type": "object"
-                },
-                "aisdk": {
-                  "type": "object",
-                  "properties": {
-                    "provider": {
-                      "type": "object"
-                    },
-                    "request": {
-                      "type": "object"
-                    }
-                  },
-                  "required": ["provider", "request"],
-                  "additionalProperties": false
                 }
               },
-              "required": ["id", "headers", "body", "aisdk"],
+              "required": ["id", "headers", "body"],
               "additionalProperties": false
             }
           },
@@ -19606,9 +19518,9 @@
           "apiID",
           "providerID",
           "name",
-          "endpoint",
+          "api",
           "capabilities",
-          "options",
+          "request",
           "variants",
           "time",
           "cost",
@@ -22237,74 +22149,26 @@
               "type": "string"
             }
           },
-          "endpoint": {
+          "api": {
             "anyOf": [
               {
                 "type": "object",
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["unknown"]
-                  }
-                },
-                "required": ["type"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/responses"]
+                    "enum": ["aisdk"]
                   },
-                  "url": {
+                  "package": {
                     "type": "string"
                   },
-                  "websocket": {
-                    "type": "boolean"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/completions"]
-                  },
                   "url": {
                     "type": "string"
                   },
-                  "reasoning": {
-                    "anyOf": [
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_content"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      },
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_details"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      }
-                    ]
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "url"],
+                "required": ["type", "package"],
                 "additionalProperties": false
               },
               {
@@ -22312,35 +22176,21 @@
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["anthropic/messages"]
+                    "enum": ["native"]
                   },
                   "url": {
                     "type": "string"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["aisdk"]
-                  },
-                  "package": {
-                    "type": "string"
                   },
-                  "url": {
-                    "type": "string"
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "package"],
+                "required": ["type", "settings"],
                 "additionalProperties": false
               }
             ]
           },
-          "options": {
+          "request": {
             "type": "object",
             "properties": {
               "headers": {
@@ -22351,26 +22201,13 @@
               },
               "body": {
                 "type": "object"
-              },
-              "aisdk": {
-                "type": "object",
-                "properties": {
-                  "provider": {
-                    "type": "object"
-                  },
-                  "request": {
-                    "type": "object"
-                  }
-                },
-                "required": ["provider", "request"],
-                "additionalProperties": false
               }
             },
-            "required": ["headers", "body", "aisdk"],
+            "required": ["headers", "body"],
             "additionalProperties": false
           }
         },
-        "required": ["id", "name", "enabled", "env", "endpoint", "options"],
+        "required": ["id", "name", "enabled", "env", "api", "request"],
         "additionalProperties": false
       },
       "PermissionV2Request": {
@@ -22546,74 +22383,26 @@
           "name": {
             "type": "string"
           },
-          "endpoint": {
+          "api": {
             "anyOf": [
               {
                 "type": "object",
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["unknown"]
-                  }
-                },
-                "required": ["type"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/responses"]
+                    "enum": ["aisdk"]
                   },
-                  "url": {
+                  "package": {
                     "type": "string"
                   },
-                  "websocket": {
-                    "type": "boolean"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["openai/completions"]
-                  },
                   "url": {
                     "type": "string"
                   },
-                  "reasoning": {
-                    "anyOf": [
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_content"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      },
-                      {
-                        "type": "object",
-                        "properties": {
-                          "type": {
-                            "type": "string",
-                            "enum": ["reasoning_details"]
-                          }
-                        },
-                        "required": ["type"],
-                        "additionalProperties": false
-                      }
-                    ]
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "url"],
+                "required": ["type", "package"],
                 "additionalProperties": false
               },
               {
@@ -22621,30 +22410,16 @@
                 "properties": {
                   "type": {
                     "type": "string",
-                    "enum": ["anthropic/messages"]
+                    "enum": ["native"]
                   },
                   "url": {
                     "type": "string"
-                  }
-                },
-                "required": ["type", "url"],
-                "additionalProperties": false
-              },
-              {
-                "type": "object",
-                "properties": {
-                  "type": {
-                    "type": "string",
-                    "enum": ["aisdk"]
-                  },
-                  "package": {
-                    "type": "string"
                   },
-                  "url": {
-                    "type": "string"
+                  "settings": {
+                    "type": "object"
                   }
                 },
-                "required": ["type", "package"],
+                "required": ["type", "settings"],
                 "additionalProperties": false
               }
             ]
@@ -22671,7 +22446,7 @@
             "required": ["tools", "input", "output"],
             "additionalProperties": false
           },
-          "options": {
+          "request": {
             "type": "object",
             "properties": {
               "headers": {
@@ -22683,24 +22458,11 @@
               "body": {
                 "type": "object"
               },
-              "aisdk": {
-                "type": "object",
-                "properties": {
-                  "provider": {
-                    "type": "object"
-                  },
-                  "request": {
-                    "type": "object"
-                  }
-                },
-                "required": ["provider", "request"],
-                "additionalProperties": false
-              },
               "variant": {
                 "type": "string"
               }
             },
-            "required": ["headers", "body", "aisdk"],
+            "required": ["headers", "body"],
             "additionalProperties": false
           },
           "variants": {
@@ -22719,22 +22481,9 @@
                 },
                 "body": {
                   "type": "object"
-                },
-                "aisdk": {
-                  "type": "object",
-                  "properties": {
-                    "provider": {
-                      "type": "object"
-                    },
-                    "request": {
-                      "type": "object"
-                    }
-                  },
-                  "required": ["provider", "request"],
-                  "additionalProperties": false
                 }
               },
-              "required": ["id", "headers", "body", "aisdk"],
+              "required": ["id", "headers", "body"],
               "additionalProperties": false
             }
           },
@@ -22836,9 +22585,9 @@
           "apiID",
           "providerID",
           "name",
-          "endpoint",
+          "api",
           "capabilities",
-          "options",
+          "request",
           "variants",
           "time",
           "cost",