mirror of
https://github.com/wavetermdev/waveterm.git
synced 2025-02-22 02:41:23 +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 WaveSchemaSettingsFileName = "schema/settings.json"
|
||||||
const WaveSchemaConnectionsFileName = "schema/connections.json"
|
const WaveSchemaConnectionsFileName = "schema/connections.json"
|
||||||
|
const WaveSchemaAiPresetsFileName = "schema/aipresets.json"
|
||||||
|
|
||||||
func generateSettingsSchema() error {
|
func generateSchema(template any, dir string) error {
|
||||||
settingsSchema := jsonschema.Reflect(&wconfig.SettingsType{})
|
settingsSchema := jsonschema.Reflect(template)
|
||||||
|
|
||||||
jsonSettingsSchema, err := json.MarshalIndent(settingsSchema, "", " ")
|
jsonSettingsSchema, err := json.MarshalIndent(settingsSchema, "", " ")
|
||||||
if err != nil {
|
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 {
|
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 {
|
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)
|
|
||||||
}
|
|
||||||
if err != nil {
|
|
||||||
return fmt.Errorf("failed to write local schema: %v", err)
|
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
err := generateSettingsSchema()
|
err := generateSchema(&wconfig.SettingsType{}, WaveSchemaSettingsFileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("settings schema error: %v", err)
|
log.Fatalf("settings schema error: %v", err)
|
||||||
}
|
}
|
||||||
err = generateConnectionsSchema()
|
|
||||||
|
connectionTemplate := make(map[string]wconfig.ConnKeywords)
|
||||||
|
err = generateSchema(&connectionTemplate, WaveSchemaConnectionsFileName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatalf("connections schema error: %v", err)
|
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();
|
const allFilepaths: Map<string, Array<string>> = new Map();
|
||||||
allFilepaths.set(`${getWebServerEndpoint()}/schema/settings.json`, [`${getApi().getConfigDir()}/settings.json`]);
|
allFilepaths.set(`${getWebServerEndpoint()}/schema/settings.json`, [`${getApi().getConfigDir()}/settings.json`]);
|
||||||
allFilepaths.set(`${getWebServerEndpoint()}/schema/connections.json`, [`${getApi().getConfigDir()}/connections.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> {
|
async function getSchemaEndpointInfo(endpoint: string): Promise<EndpointInfo> {
|
||||||
let schema: Object;
|
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