somratpro commited on
Commit
765659f
Β·
1 Parent(s): abaeee7

feat: add persistent plugin directory and use setdefault for configuration schema preservation

Browse files
Files changed (1) hide show
  1. start.sh +20 -13
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["default"] = model_name
234
  if provider_name:
235
- model["provider"] = provider_name
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["base_url"] = custom_base.rstrip("/")
243
  if os.environ.get("CUSTOM_API_KEY"):
244
- model["api_key"] = os.environ["CUSTOM_API_KEY"]
245
  try:
246
- model["context_length"] = int(os.environ.get("CUSTOM_MODEL_CONTEXT_LENGTH", "131072"))
247
- model["max_tokens"] = int(os.environ.get("CUSTOM_MODEL_MAX_TOKENS", "8192"))
248
  except ValueError:
249
  pass
250
 
251
- config.setdefault("terminal", {})["cwd"] = os.environ.get("MESSAGING_CWD", str(home / "workspace"))
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["enabled"] = True
260
  extra = telegram.setdefault("extra", {})
261
  if os.environ.get("TELEGRAM_BASE_URL"):
262
- extra["base_url"] = os.environ["TELEGRAM_BASE_URL"]
263
- extra["base_file_url"] = os.environ.get("TELEGRAM_BASE_FILE_URL") or os.environ["TELEGRAM_BASE_URL"]
264
  if os.environ.get("TELEGRAM_ALLOWED_USERS"):
265
- config.setdefault("telegram", {})["allow_from"] = [
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)