mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-02-21 02:33:34 +01:00
feat: add ai presets schema (#1928)
This commit is contained in:
parent
8b262445d5
commit
43a7451e8f
@ -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)
|
||||
}
|
||||
}
|
||||
|
@ -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
54
schema/aipresets.json
Normal 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"
|
||||
}
|
Loading…
Reference in New Issue
Block a user