Spaces:
Running
Running
feat: add persistent plugin directory and use setdefault for configuration schema preservation
Browse files
start.sh
CHANGED
|
@@ -46,7 +46,14 @@ PY
|
|
| 46 |
fi
|
| 47 |
|
| 48 |
# ββ Setup directories ββ
|
| 49 |
-
mkdir -p "$HERMES_HOME"/{cron,sessions,logs,hooks,memories,skills,skins,plans,workspace,home}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 50 |
|
| 51 |
# ββ Restore workspace/state from HF Dataset ββ
|
| 52 |
if [ -n "${HF_TOKEN:-}" ]; then
|
|
@@ -230,25 +237,25 @@ provider_name = os.environ.get("PROVIDER_FOR_CONFIG", "").strip()
|
|
| 230 |
|
| 231 |
if model_name:
|
| 232 |
model = config.setdefault("model", {})
|
| 233 |
-
model
|
| 234 |
if provider_name:
|
| 235 |
-
model
|
| 236 |
else:
|
| 237 |
model = config.get("model", {})
|
| 238 |
print("No LLM_MODEL/HERMES_MODEL set; leaving Hermes model config unchanged.")
|
| 239 |
|
| 240 |
custom_base = os.environ.get("CUSTOM_BASE_URL", "").strip()
|
| 241 |
if custom_base and model_name:
|
| 242 |
-
model
|
| 243 |
if os.environ.get("CUSTOM_API_KEY"):
|
| 244 |
-
model
|
| 245 |
try:
|
| 246 |
-
model
|
| 247 |
-
model
|
| 248 |
except ValueError:
|
| 249 |
pass
|
| 250 |
|
| 251 |
-
config.setdefault("terminal", {})
|
| 252 |
config.setdefault("compression", {}).setdefault("enabled", True)
|
| 253 |
config.setdefault("display", {}).setdefault("background_process_notifications", os.environ.get("HERMES_BACKGROUND_NOTIFICATIONS", "result"))
|
| 254 |
|
|
@@ -256,17 +263,17 @@ platforms = config.setdefault("platforms", {})
|
|
| 256 |
|
| 257 |
if os.environ.get("TELEGRAM_BOT_TOKEN"):
|
| 258 |
telegram = platforms.setdefault("telegram", {})
|
| 259 |
-
telegram
|
| 260 |
extra = telegram.setdefault("extra", {})
|
| 261 |
if os.environ.get("TELEGRAM_BASE_URL"):
|
| 262 |
-
extra
|
| 263 |
-
extra
|
| 264 |
if os.environ.get("TELEGRAM_ALLOWED_USERS"):
|
| 265 |
-
config.setdefault("telegram", {})
|
| 266 |
item.strip()
|
| 267 |
for item in os.environ["TELEGRAM_ALLOWED_USERS"].split(",")
|
| 268 |
if item.strip()
|
| 269 |
-
]
|
| 270 |
|
| 271 |
path.write_text(yaml.safe_dump(config, sort_keys=False), encoding="utf-8")
|
| 272 |
path.chmod(0o600)
|
|
|
|
| 46 |
fi
|
| 47 |
|
| 48 |
# ββ Setup directories ββ
|
| 49 |
+
mkdir -p "$HERMES_HOME"/{cron,sessions,logs,hooks,memories,skills,skins,plans,workspace,home,plugins}
|
| 50 |
+
|
| 51 |
+
# Redirect Hermes plugin dir into volume so plugins survive container restarts
|
| 52 |
+
if [ ! -L "${HOME}/.hermes/plugins" ]; then
|
| 53 |
+
mkdir -p "${HOME}/.hermes"
|
| 54 |
+
rm -rf "${HOME}/.hermes/plugins"
|
| 55 |
+
ln -sfn "$HERMES_HOME/plugins" "${HOME}/.hermes/plugins"
|
| 56 |
+
fi
|
| 57 |
|
| 58 |
# ββ Restore workspace/state from HF Dataset ββ
|
| 59 |
if [ -n "${HF_TOKEN:-}" ]; then
|
|
|
|
| 237 |
|
| 238 |
if model_name:
|
| 239 |
model = config.setdefault("model", {})
|
| 240 |
+
model.setdefault("default", model_name)
|
| 241 |
if provider_name:
|
| 242 |
+
model.setdefault("provider", provider_name)
|
| 243 |
else:
|
| 244 |
model = config.get("model", {})
|
| 245 |
print("No LLM_MODEL/HERMES_MODEL set; leaving Hermes model config unchanged.")
|
| 246 |
|
| 247 |
custom_base = os.environ.get("CUSTOM_BASE_URL", "").strip()
|
| 248 |
if custom_base and model_name:
|
| 249 |
+
model.setdefault("base_url", custom_base.rstrip("/"))
|
| 250 |
if os.environ.get("CUSTOM_API_KEY"):
|
| 251 |
+
model.setdefault("api_key", os.environ["CUSTOM_API_KEY"])
|
| 252 |
try:
|
| 253 |
+
model.setdefault("context_length", int(os.environ.get("CUSTOM_MODEL_CONTEXT_LENGTH", "131072")))
|
| 254 |
+
model.setdefault("max_tokens", int(os.environ.get("CUSTOM_MODEL_MAX_TOKENS", "8192")))
|
| 255 |
except ValueError:
|
| 256 |
pass
|
| 257 |
|
| 258 |
+
config.setdefault("terminal", {}).setdefault("cwd", os.environ.get("MESSAGING_CWD", str(home / "workspace")))
|
| 259 |
config.setdefault("compression", {}).setdefault("enabled", True)
|
| 260 |
config.setdefault("display", {}).setdefault("background_process_notifications", os.environ.get("HERMES_BACKGROUND_NOTIFICATIONS", "result"))
|
| 261 |
|
|
|
|
| 263 |
|
| 264 |
if os.environ.get("TELEGRAM_BOT_TOKEN"):
|
| 265 |
telegram = platforms.setdefault("telegram", {})
|
| 266 |
+
telegram.setdefault("enabled", True)
|
| 267 |
extra = telegram.setdefault("extra", {})
|
| 268 |
if os.environ.get("TELEGRAM_BASE_URL"):
|
| 269 |
+
extra.setdefault("base_url", os.environ["TELEGRAM_BASE_URL"])
|
| 270 |
+
extra.setdefault("base_file_url", os.environ.get("TELEGRAM_BASE_FILE_URL") or os.environ["TELEGRAM_BASE_URL"])
|
| 271 |
if os.environ.get("TELEGRAM_ALLOWED_USERS"):
|
| 272 |
+
config.setdefault("telegram", {}).setdefault("allow_from", [
|
| 273 |
item.strip()
|
| 274 |
for item in os.environ["TELEGRAM_ALLOWED_USERS"].split(",")
|
| 275 |
if item.strip()
|
| 276 |
+
])
|
| 277 |
|
| 278 |
path.write_text(yaml.safe_dump(config, sort_keys=False), encoding="utf-8")
|
| 279 |
path.chmod(0o600)
|