mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-01 12:02:05 +00:00
The Keys page only rendered env vars present in a catalog (OPTIONAL_ENV_VARS or the provider catalog); any other key a user set in .env was invisible, and there was no way to add an arbitrary env var from the GUI (e.g. to inject a var a skill or MCP server needs). Backend: GET /api/env now also emits a row for every on-disk .env key that isn't in any catalog, flagged category="custom" + custom=true and password-masked (an unrecognised key could hold anything, so it's redacted and reveal-gated like any secret). Channel-managed credentials stay excluded. The write (PUT /api/env) and reveal (POST /api/env/reveal) paths already handle arbitrary keys, with the existing env-name guard + denylist (PATH, LD_PRELOAD, PYTHONPATH, …) enforced server-side — no new write surface. Frontend: a new "Custom Keys" section lists those custom rows and carries an add-a-key form (client-side name validation mirroring the backend regex; the new row reuses the normal edit/save flow, so on save it round-trips back from the backend as a durable custom row). i18n added for en + zh + types. Tests: behavior-contract coverage that an unknown .env key surfaces as a masked custom row and a catalogued key does not — verified to fail on the pre-fix backend. |
||
|---|---|---|
| .. | ||
| api.ts | ||
| chat-title.test.ts | ||
| chat-title.ts | ||
| cron-job.test.ts | ||
| cron-job.ts | ||
| dashboard-flags.ts | ||
| format.ts | ||
| fuzzy.ts | ||
| gatewayClient.ts | ||
| nested.ts | ||
| reasoning-effort.test.ts | ||
| reasoning-effort.ts | ||
| resolve-page-title.ts | ||
| schedule.test.ts | ||
| schedule.ts | ||
| session-refresh.test.ts | ||
| session-refresh.ts | ||
| slashExec.ts | ||
| utils.ts | ||