{"record":{"id":"7d5fc5f1abb63b3b","repo":"multica-ai/multica","slug":"hermes-profile-name-cannot-be-empty","errorCode":null,"errorMessage":"hermes profile name cannot be empty","messagePattern":"hermes profile name cannot be empty","errorType":"validation","errorClass":null,"httpStatus":null,"severity":"error","filePath":"server/internal/daemon/execenv/hermes_home.go","lineNumber":338,"sourceCode":"\tdata, err := os.ReadFile(filepath.Join(root, \"active_profile\"))\n\tif err != nil {\n\t\treturn \"\"\n\t}\n\tname := strings.TrimSpace(string(data))\n\tif name == \"default\" {\n\t\treturn \"\"\n\t}\n\treturn name\n}\n\n// hermesProfileDir resolves a profile name against root, reproducing\n// normalize_profile_name + validate_profile_name + get_profile_dir. It returns\n// the home dir, whether that home must already exist (true for a named profile),\n// or an error for an empty/malformed/reserved name (which Hermes sys.exit(1)s on).\nfunc hermesProfileDir(root, name string) (home string, mustExist bool, err error) {\n\tstripped := strings.TrimSpace(name)\n\tif stripped == \"\" {\n\t\treturn \"\", false, fmt.Errorf(\"hermes profile name cannot be empty\")\n\t}\n\tvar canon string\n\tif strings.EqualFold(stripped, \"default\") {\n\t\tcanon = \"default\"\n\t} else {\n\t\tcanon = strings.ToLower(stripped)\n\t}\n\tif canon == \"default\" {\n\t\treturn root, false, nil // the default profile IS the root home\n\t}\n\tif !hermesProfileNameRe.MatchString(canon) {\n\t\treturn \"\", false, fmt.Errorf(\"invalid hermes profile name %q\", canon)\n\t}\n\tif _, reserved := hermesReservedProfileNames[canon]; reserved {\n\t\treturn \"\", false, fmt.Errorf(\"hermes profile name %q is reserved\", canon)\n\t}\n\treturn filepath.Join(root, \"profiles\", canon), true, nil\n}","sourceCodeStart":320,"sourceCodeEnd":356,"githubUrl":"https://github.com/multica-ai/multica/blob/2c0912b6ec764b373d44eeea1e80f0d9f11ab417/server/internal/daemon/execenv/hermes_home.go#L320-L356","documentation":"Error \"hermes profile name cannot be empty\" thrown in multica-ai/multica.","triggerScenarios":"Thrown at server/internal/daemon/execenv/hermes_home.go:338 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Provide a non-empty hermes profile name."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"2c0912b6ec764b373d44eeea1e80f0d9f11ab417","analyzedAt":"2026-08-15T13:25:18.241Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}