hermes-agent/web/src/pages
Brooklyn Nicholson 37d0766ba5 fix(pairing): keep GUI approvals off the code brute-force lockout
Follow-up hardening on the request-id grant path.

approve_request took the same lockout treatment as approve_code: gated by
it, and recording a miss toward it. But the two paths defend different
things. The lockout exists to stop guessing at the 8-char code space over a
messaging channel; a request id is only ever obtained by an admin already
authenticated to the store, so a miss means the row they clicked went stale.
Counting those let a handful of clicks on a stale list lock the operator out
of `hermes pairing approve` for an hour — the GUI DoSing the CLI.

Also drops the `code`/`code_hash_prefix` compat fields from list_pending.
The hash prefix is what admin surfaces mistook for an approvable code in the
first place, and re-exporting the request id under the old `code` key just
preserves the ambiguity; both consumers in the tree read `request_id` now.
The 16-hex sniffing that had been copy-pasted into the CLI and the endpoint
(where a chained conditional consulted it against the wrong field) moves to
one owner, PairingStore.looks_like_request_id.

The endpoint no longer reports a 429 on the request-id path, where lockout
can't apply — a stale id surfaced as a bogus "locked out" while the platform
sat locked for something else entirely.
2026-07-29 17:51:40 -05:00
..
AnalyticsPage.tsx feat(dashboard): nous-blue theme, bulk sessions, schedule picker (#37383) 2026-06-02 12:37:40 -04:00
ChannelsPage.tsx feat(dashboard): clarify manual Telegram bot setup 2026-07-16 00:21:01 -07:00
ChatPage.tsx fix(web): make PTY resume sanitizer work against real PTY output 2026-07-29 12:21:48 -04:00
ConfigPage.tsx fix(dashboard): keep memory.provider in the config schema so Desktop's dropdown survives (#63886) 2026-07-13 18:56:51 -07:00
CronPage.tsx fix(dashboard): QA pass — log colors, nameless channels, config bool, UX gaps 2026-07-26 15:17:30 -07:00
DocsPage.tsx fix(web): force light color-scheme on docs iframe 2026-05-07 04:55:47 -07:00
EnvPage.tsx feat(agent): add Upstage Solar as a model provider 2026-07-15 00:09:24 +05:30
FilesPage.tsx fix(dashboard): stream file uploads via multipart instead of base64 JSON (NS-501) (#47663) 2026-06-18 15:54:32 +10:00
LogsPage.tsx fix(dashboard): QA pass — log colors, nameless channels, config bool, UX gaps 2026-07-26 15:17:30 -07:00
McpPage.tsx fix(mcp): complete OAuth through hosted dashboards 2026-07-17 04:50:47 -07:00
ModelsPage.tsx fix(moa): contain failed reference details 2026-07-23 18:40:09 -07:00
PairingPage.tsx fix(pairing): keep GUI approvals off the code brute-force lockout 2026-07-29 17:51:40 -05:00
PluginsPage.tsx Add dashboard memory provider switching 2026-07-07 17:27:54 -07:00
ProfileBuilderPage.tsx fix(dashboard): add MCP auth to profile builder (#65163) 2026-07-16 02:05:04 +05:30
ProfilesPage.tsx fix(web): remove marketing backdrop stack for lighter dashboard shell 2026-06-29 12:30:24 -07:00
SessionsPage.tsx Add dashboard session filtering 2026-07-28 22:41:56 -07:00
SkillsPage.tsx fix(dashboard): persist Discord toolsets to Discord platform 2026-07-16 00:20:33 -07:00
SystemPage.tsx Add dashboard memory provider switching 2026-07-07 17:27:54 -07:00
WebhooksPage.tsx fix(web): remove marketing backdrop stack for lighter dashboard shell 2026-06-29 12:30:24 -07:00