Skip to content

Commit

Permalink
feat: add ai presets schema
Browse files Browse the repository at this point in the history
  • Loading branch information
oneirocosm committed Feb 7, 2025
1 parent 134a1f1 commit 9e22b94
Show file tree
Hide file tree
Showing 3 changed files with 71 additions and 25 deletions.
41 changes: 16 additions & 25 deletions cmd/generateschema/main-generateschema.go
Original file line number Diff line number Diff line change
Expand Up @@ -16,48 +16,39 @@ 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 fmt.Errorf("failed to write local schema: %w", 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)
}
func main() {
err := generateSchema(&wconfig.SettingsType{}, WaveSchemaSettingsFileName)
if err != nil {
return fmt.Errorf("failed to write local schema: %v", err)
log.Fatalf("settings schema error: %v", err)
}
return nil
}

func main() {
err := generateSettingsSchema()
connectionTemplate := make(map[string]wconfig.ConnKeywords)
err = generateSchema(&connectionTemplate, WaveSchemaConnectionsFileName)
if err != nil {
log.Fatalf("settings schema error: %v", err)
log.Fatalf("connections schema error: %v", err)
}
err = generateConnectionsSchema()

aiPresetsTemplate := make(map[string]wconfig.AiSettingsType)
err = generateSchema(&aiPresetsTemplate, WaveSchemaAiPresetsFileName)
if err != nil {
log.Fatalf("connections schema error: %v", err)
}
Expand Down
1 change: 1 addition & 0 deletions frontend/app/view/codeeditor/schemaendpoints.ts
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down
54 changes: 54 additions & 0 deletions schema/aipresets.json
Original file line number Diff line number Diff line change
@@ -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"
}

0 comments on commit 9e22b94

Please sign in to comment.