feat: add models.dev schema ref for model autocomplete in opencode.json (#12528)
This commit is contained in:
3
bun.lock
3
bun.lock
@@ -497,6 +497,9 @@
|
|||||||
"web-tree-sitter",
|
"web-tree-sitter",
|
||||||
"tree-sitter-bash",
|
"tree-sitter-bash",
|
||||||
],
|
],
|
||||||
|
"patchedDependencies": {
|
||||||
|
"@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch",
|
||||||
|
},
|
||||||
"overrides": {
|
"overrides": {
|
||||||
"@types/bun": "catalog:",
|
"@types/bun": "catalog:",
|
||||||
"@types/node": "catalog:",
|
"@types/node": "catalog:",
|
||||||
|
|||||||
@@ -100,5 +100,7 @@
|
|||||||
"@types/bun": "catalog:",
|
"@types/bun": "catalog:",
|
||||||
"@types/node": "catalog:"
|
"@types/node": "catalog:"
|
||||||
},
|
},
|
||||||
"patchedDependencies": {}
|
"patchedDependencies": {
|
||||||
|
"@standard-community/standard-openapi@0.2.9": "patches/@standard-community%2Fstandard-openapi@0.2.9.patch"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,6 +33,8 @@ import { proxied } from "@/util/proxied"
|
|||||||
import { iife } from "@/util/iife"
|
import { iife } from "@/util/iife"
|
||||||
|
|
||||||
export namespace Config {
|
export namespace Config {
|
||||||
|
const ModelId = z.string().meta({ $ref: "https://models.dev/model-schema.json#/$defs/Model" })
|
||||||
|
|
||||||
const log = Log.create({ service: "config" })
|
const log = Log.create({ service: "config" })
|
||||||
|
|
||||||
// Managed settings directory for enterprise deployments (highest priority, admin-controlled)
|
// Managed settings directory for enterprise deployments (highest priority, admin-controlled)
|
||||||
@@ -653,7 +655,7 @@ export namespace Config {
|
|||||||
template: z.string(),
|
template: z.string(),
|
||||||
description: z.string().optional(),
|
description: z.string().optional(),
|
||||||
agent: z.string().optional(),
|
agent: z.string().optional(),
|
||||||
model: z.string().optional(),
|
model: ModelId.optional(),
|
||||||
subtask: z.boolean().optional(),
|
subtask: z.boolean().optional(),
|
||||||
})
|
})
|
||||||
export type Command = z.infer<typeof Command>
|
export type Command = z.infer<typeof Command>
|
||||||
@@ -669,7 +671,7 @@ export namespace Config {
|
|||||||
|
|
||||||
export const Agent = z
|
export const Agent = z
|
||||||
.object({
|
.object({
|
||||||
model: z.string().optional(),
|
model: ModelId.optional(),
|
||||||
variant: z
|
variant: z
|
||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
@@ -1040,11 +1042,8 @@ export namespace Config {
|
|||||||
.array(z.string())
|
.array(z.string())
|
||||||
.optional()
|
.optional()
|
||||||
.describe("When set, ONLY these providers will be enabled. All other providers will be ignored"),
|
.describe("When set, ONLY these providers will be enabled. All other providers will be ignored"),
|
||||||
model: z.string().describe("Model to use in the format of provider/model, eg anthropic/claude-2").optional(),
|
model: ModelId.describe("Model to use in the format of provider/model, eg anthropic/claude-2").optional(),
|
||||||
small_model: z
|
small_model: ModelId.describe("Small model to use for tasks like title generation in the format of provider/model").optional(),
|
||||||
.string()
|
|
||||||
.describe("Small model to use for tasks like title generation in the format of provider/model")
|
|
||||||
.optional(),
|
|
||||||
default_agent: z
|
default_agent: z
|
||||||
.string()
|
.string()
|
||||||
.optional()
|
.optional()
|
||||||
|
|||||||
16
patches/@standard-community%2Fstandard-openapi@0.2.9.patch
Normal file
16
patches/@standard-community%2Fstandard-openapi@0.2.9.patch
Normal file
@@ -0,0 +1,16 @@
|
|||||||
|
diff --git a/dist/vendors/convert.js b/dist/vendors/convert.js
|
||||||
|
index 0d615eebfd7cd646937ec1b29f8332db73586ec1..7b146f903c07a9377d676753691cba67781879be 100644
|
||||||
|
--- a/dist/vendors/convert.js
|
||||||
|
+++ b/dist/vendors/convert.js
|
||||||
|
@@ -74,7 +74,10 @@ function convertToOpenAPISchema(jsonSchema, context) {
|
||||||
|
$ref: `#/components/schemas/${id}`
|
||||||
|
};
|
||||||
|
} else if (_jsonSchema.$ref) {
|
||||||
|
- const { $ref, $defs } = _jsonSchema;
|
||||||
|
+ const { $ref, $defs, ...rest } = _jsonSchema;
|
||||||
|
+ if ($ref.includes("://")) {
|
||||||
|
+ return Object.keys(rest).length > 0 ? rest : { type: "string" };
|
||||||
|
+ }
|
||||||
|
const ref = $ref.split("/").pop();
|
||||||
|
context.components.schemas = {
|
||||||
|
...context.components.schemas,
|
||||||
Reference in New Issue
Block a user