update agent
Some checks are pending
CI / host-build (push) Waiting to run
CI / rk3588-cross-build (push) Waiting to run

This commit is contained in:
sladro 2026-01-10 22:37:26 +08:00
parent 1737419aed
commit d83f2eb749
2 changed files with 36 additions and 2 deletions

View File

@ -70,13 +70,28 @@ func (s *Server) handleConfigUIState(w http.ResponseWriter, r *http.Request) {
}
root, _ := readUIRootConfig(s.agentCfg.ConfigPath)
// Force templates/instances-only view.
// templates = union(current templates, built-in templates)
tplKeys := map[string]bool{}
for k := range root.Templates {
tplKeys[k] = true
}
for k := range uiTemplates() {
tplKeys[k] = true
}
mergedTpls := make([]string, 0, len(tplKeys))
for k := range tplKeys {
mergedTpls = append(mergedTpls, k)
}
sort.Strings(mergedTpls)
resp := map[string]any{
"ok": true,
"global": root.Global,
"queue": root.Queue,
"instances": root.Instances,
"templates": sortedKeys(uiTemplates()),
"templates": mergedTpls,
}
writeJSON(w, http.StatusOK, resp)
}
@ -145,7 +160,18 @@ func (s *Server) planUIConfig(req uiPlanRequest) (uiPlanResponse, error) {
}
warnings := []string{}
tpls := uiTemplates()
// Allow both built-in templates and templates already present in the current config.
// Merge rule: keep existing templates as-is; add built-in templates if missing.
tpls := map[string]any{}
for k, v := range cur.Templates {
tpls[k] = v
}
for k, v := range uiTemplates() {
if _, ok := tpls[k]; !ok {
tpls[k] = v
}
}
seen := map[string]bool{}
for i := range req.Instances {
@ -239,6 +265,11 @@ func readUIRootConfig(path string) (uiRootConfig, error) {
b, err := os.ReadFile(path)
if err != nil {
if os.IsNotExist(err) {
// Return a well-formed empty state.
out.Instances = []UIInstance{}
out.Global = map[string]any{}
out.Queue = map[string]any{}
out.Templates = map[string]any{}
return out, nil
}
return out, err
@ -253,6 +284,9 @@ func readUIRootConfig(path string) (uiRootConfig, error) {
if out.Queue == nil {
out.Queue = map[string]any{}
}
if out.Templates == nil {
out.Templates = map[string]any{}
}
return out, nil
}

Binary file not shown.