feat: add ai presets schema (#1928)

This commit is contained in:
Sylvie Crowe 2025-02-07 14:56:11 -08:00 committed by GitHub
parent 8b262445d5
commit 43a7451e8f
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 72 additions and 26 deletions

View File

@ -16,49 +16,40 @@ import (
const WaveSchemaSettingsFileName = "schema/settings.json"
const WaveSchemaConnectionsFileName = "schema/connections.json"
const WaveSchemaAiPresetsFileName = "schema/aipresets.json"
func generateSettingsSchema() error {
settingsSchema := jsonschema.Reflect(&wconfig.SettingsType{})
func generateSchema(template any, dir string) error {
settingsSchema := jsonschema.Reflect(template)
jsonSettingsSchema, err := json.MarshalIndent(settingsSchema, "", " ")
if err != nil {
return fmt.Errorf("failed to parse local schema: %v", err)
return fmt.Errorf("failed to parse local schema: %w", err)
}
written, err := utilfn.WriteFileIfDifferent(WaveSchemaSettingsFileName, jsonSettingsSchema)
written, err := utilfn.WriteFileIfDifferent(dir, jsonSettingsSchema)
if !written {
fmt.Fprintf(os.Stderr, "no changes to %s\n", WaveSchemaSettingsFileName)
fmt.Fprintf(os.Stderr, "no changes to %s\n", dir)
}
if err != nil {
return fmt.Errorf("failed to write local schema: %v", err)
}
return nil
}
func generateConnectionsSchema() error {
connExample := make(map[string]wconfig.ConnKeywords)
connectionSchema := jsonschema.Reflect(connExample)
jsonSettingsSchema, err := json.MarshalIndent(connectionSchema, "", " ")
if err != nil {
return fmt.Errorf("failed to parse local schema: %v", err)
}
written, err := utilfn.WriteFileIfDifferent(WaveSchemaConnectionsFileName, jsonSettingsSchema)
if !written {
fmt.Fprintf(os.Stderr, "no changes to %s\n", WaveSchemaConnectionsFileName)
}
if err != nil {
return fmt.Errorf("failed to write local schema: %v", err)
return fmt.Errorf("failed to write local schema: %w", err)
}
return nil
}
func main() {
err := generateSettingsSchema()
err := generateSchema(&wconfig.SettingsType{}, WaveSchemaSettingsFileName)
if err != nil {
log.Fatalf("settings schema error: %v", err)
}
err = generateConnectionsSchema()
connectionTemplate := make(map[string]wconfig.ConnKeywords)
err = generateSchema(&connectionTemplate, WaveSchemaConnectionsFileName)
if err != nil {
log.Fatalf("connections schema error: %v", err)
}
aiPresetsTemplate := make(map[string]wconfig.AiSettingsType)
err = generateSchema(&aiPresetsTemplate, WaveSchemaAiPresetsFileName)
if err != nil {
log.Fatalf("ai presets schema error: %v", err)
}
}

View File

@ -13,6 +13,7 @@ type EndpointInfo = {
const allFilepaths: Map<string, Array<string>> = new Map();
allFilepaths.set(`${getWebServerEndpoint()}/schema/settings.json`, [`${getApi().getConfigDir()}/settings.json`]);
allFilepaths.set(`${getWebServerEndpoint()}/schema/connections.json`, [`${getApi().getConfigDir()}/connections.json`]);
allFilepaths.set(`${getWebServerEndpoint()}/schema/aipresets.json`, [`${getApi().getConfigDir()}/presets/ai.json`]);
async function getSchemaEndpointInfo(endpoint: string): Promise<EndpointInfo> {
let schema: Object;

54
schema/aipresets.json Normal file
View File

@ -0,0 +1,54 @@
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$defs": {
"AiSettingsType": {
"properties": {
"ai:*": {
"type": "boolean"
},
"ai:preset": {
"type": "string"
},
"ai:apitype": {
"type": "string"
},
"ai:baseurl": {
"type": "string"
},
"ai:apitoken": {
"type": "string"
},
"ai:name": {
"type": "string"
},
"ai:model": {
"type": "string"
},
"ai:orgid": {
"type": "string"
},
"ai:apiversion": {
"type": "string"
},
"ai:maxtokens": {
"type": "number"
},
"ai:timeoutms": {
"type": "number"
},
"ai:fontsize": {
"type": "number"
},
"ai:fixedfontsize": {
"type": "number"
}
},
"additionalProperties": false,
"type": "object"
}
},
"additionalProperties": {
"$ref": "#/$defs/AiSettingsType"
},
"type": "object"
}