Просмотр исходного кода

fix(config): keybinds should not be required in config schema (#2669)

Timo Clasen 5 месяцев назад
Родитель
Сommit
0df6fc1226
1 измененных файлов с 10 добавлено и 2 удалено
  1. 10 2
      packages/opencode/script/schema.ts

+ 10 - 2
packages/opencode/script/schema.ts

@@ -7,6 +7,7 @@ const file = process.argv[2]
 console.log(file)
 console.log(file)
 
 
 const result = z.toJSONSchema(Config.Info, {
 const result = z.toJSONSchema(Config.Info, {
+  io: "input", // Generate input shape (treats optional().default() as not required)
   /**
   /**
    * We'll use the `default` values of the field as the only value in `examples`.
    * We'll use the `default` values of the field as the only value in `examples`.
    * This will ensure no docs are needed to be read, as the configuration is
    * This will ensure no docs are needed to be read, as the configuration is
@@ -14,8 +15,15 @@ const result = z.toJSONSchema(Config.Info, {
    *
    *
    * See https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.9.5
    * See https://json-schema.org/draft/2020-12/draft-bhutton-json-schema-validation-00#rfc.section.9.5
    */
    */
-  override(input) {
-    const schema = input.jsonSchema
+  override(ctx) {
+    const schema = ctx.jsonSchema
+
+    // Preserve strictness: set additionalProperties: false for objects
+    if (schema && typeof schema === "object" && schema.type === "object" && schema.additionalProperties === undefined) {
+      schema.additionalProperties = false
+    }
+
+    // Add examples and default descriptions for string fields with defaults
     if (schema && typeof schema === "object" && "type" in schema && schema.type === "string" && schema?.default) {
     if (schema && typeof schema === "object" && "type" in schema && schema.type === "string" && schema?.default) {
       if (!schema.examples) {
       if (!schema.examples) {
         schema.examples = [schema.default]
         schema.examples = [schema.default]