Commit Graph

653 Commits

Author SHA1 Message Date
Teknium 279726cc2f chore: map contributor email for wiseconnex 2026-08-26 04:51:41 -07:00
Teknium 6bbae974d5 chore: map justinjohnson25600 and BrunoBza contributor emails 2026-08-26 04:49:22 -07:00
Teknium 20d33e385a fix(web_server): a dashboard started without a build recovers the moment one appears (#82614)
mount_spa's WEB_DIST.exists() check ran ONCE at mount time: a long-lived
'hermes dashboard --skip-build' that survived a git pull (or launched
before the first build) installed a permanent no_frontend catch-all and
answered 404 'Frontend not built' on every route forever — even after
npm run build completed. Remote Desktop clients saw ERR_EMPTY_RESPONSE.

The missing-dist branch is now reserved for the headless-serve contract
only. The SPA routes mount unconditionally and already cope with a
missing dist per-request (_serve_index returns the same 404 JSON when
index.html is unreadable; the /assets mount gains check_dir=False so
StaticFiles 404s instead of raising at mount). The dashboard recovers
the moment a build lands on disk — no restart needed.

Direction from #82666 by @codexbt (his PR's rebase dropped the product
hunk, leaving only the test; the test is cherry-picked as-is and this
commit restores the behavior it pins, adapted to the current mount_spa
shape: headless guard preserved, per-request recovery instead of a
per-request exists() check).
2026-08-26 04:48:58 -07:00
Teknium 7a10d91b29 chore: map contributor email for notkisk 2026-08-26 04:14:16 -07:00
kshitijk4poor e513f3fb40 chore: map kshitijkapoorr@gmail.com to kshitijk4poor in contributors/emails 2026-08-26 16:06:09 +05:30
Teknium 213f46a4e3 chore: map contributor email for attribution gate 2026-08-26 03:22:37 -07:00
Deus 298ab73e7b chore: map contributor email 2026-08-26 03:22:37 -07:00
Teknium a74ffb9ee8 chore: map contributor email for projetsjsl 2026-08-26 03:21:37 -07:00
Victor Nogueira 21f34794be fix(desktop): recover remote sessions after gateway restart 2026-08-26 00:40:35 -07:00
Jaime Marques 14d16c2578 fix(desktop): clarify primary SSH reuse failures 2026-08-26 00:40:35 -07:00
Teknium 4fc4da2531 chore: map contributor email for salvaged PR #88544 2026-08-26 00:40:35 -07:00
Ravi Tharuma 949f5169de fix(desktop): treat ticket 401 as sign-in when native tokens are unreadable 2026-08-26 00:40:35 -07:00
kshitijk4poor 4ba2608524 fix(compressor): widen empty-content abort to sibling no-response shapes + snapshot state field
Follow-up to PR #94531 salvage:
- classify the auxiliary boundary's terminal 'None response' /
  'invalid response' errors (#7264) into the same empty-content abort
  carve-out so those shapes also preserve the session (#94459's wider
  classification, sibling shapes from #94448)
- register _last_summary_empty_content_failure in
  _COMPRESSOR_ATTEMPT_STATE_FIELDS so pre-commit hard-cancel rollback
  restores the flag (conversation_compression snapshot allow-list)
- tests: cooldown re-entry keeps aborting; both sibling shapes abort
- attribution: map zhangyswx@163.com -> YusenZhang0601
2026-08-26 13:02:27 +05:30
Tom 2ed39365d6 fix(desktop): thread eager profile metadata through registry enumeration
Never-interacted remote bots painted as bare handles because roster rows
carried only profile names: display_name/title/ui_meta/has_avatar were
fetched lazily on first interaction (#91365). Thread credential-free
profile metadata from the enumeration-time /api/profiles body through
enumerateRegistryAgentSources (main.ts) and buildAgentRoster
(connection-registry.ts), keeping it attached to the connection-qualified
row across the same-install collapse. The plugin.js botRosterMeta half of
the original PR is dropped — superseded by landed #92731.

Fixes #91365
Salvaged (partial) from #92708.
2026-08-26 00:22:27 -07:00
Tilly-YL 2952119bce fix(desktop): remember selected profile across restarts
The profile rail's live workspace switch never persisted the selection,
so the Desktop always booted back into the previous startup profile
(#79886). Route the successful primary-backend activation through a new
persistence-only hermes:profile:remember IPC (validated
writeActiveDesktopProfile) that records the choice WITHOUT tearing down
the backend or reloading the window like hermes:profile:set does.
Registry-source picks name another source's profiles and do not touch
the startup preference. Reapplied semantically over three weeks of
main.ts/preload.ts drift (selectProfile now routes through
activateOnCurrentSource, #91349/#91365 seams).

Fixes #79886
Salvaged from #79888.
2026-08-26 00:22:27 -07:00
Teknium e0210ab6c9 chore: contributor email mappings for salvage class-4 2026-08-26 00:21:49 -07:00
LovePlayCode 1808d33a24 fix(desktop): keep owner-routed tile gateways out of idle prune
Bot chats stay on a secondary while chrome stays on the launch profile.
The keep-set only counted busy sessions, so idle prune closed the tile
socket and resume spun forever. Keep open tiles, route catalog reads to
the owner, and hydrate model/provider from resume.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-26 00:21:29 -07:00
Teknium 708b24513d chore: map contributor email for jwtor7 2026-08-25 23:33:46 -07:00
Teknium a7e1410faf chore: map Kavyrocom attribution 2026-08-25 23:15:49 -07:00
Teknium 2664599644 test(gateway): prove the profile_route_rejected sentinel is observable
Review follow-up for the salvaged #94848: the ProfileRouteRejected marker
looked write-only inside the primary handler. Document that
_handle_message's ingress gate reads the same marker to drop the message
fail-closed, and add a regression test showing the rejected route is
stamped once, dispatch falls back to the default home, and routing is not
re-run on redelivery.
2026-08-25 23:15:15 -07:00
Teknium 1f78750280 chore: add contributor email mappings for salvaged PRs 2026-08-25 22:51:31 -07:00
Teknium ad1d159bfb chore: map kgparadzayi attribution 2026-08-25 21:59:38 -07:00
Teknium a5fbf9a171 chore: map contributor email for hermias1 2026-08-25 21:59:23 -07:00
MagMueller 648361e788 chore: map contributor email 2026-08-25 16:25:37 -07:00
Teknium 95668f5eab fix(mcp): Atlassian catalog entry no longer 404s + Grafana defensive curation
- atlassian: /v1/sse was deprecated by Atlassian after June 30 2026 —
  installs OAuth'd fine then failed every handshake with 404 (#91538).
  Now points at /v1/mcp/authv2, the endpoint Atlassian's docs recommend
  for custom clients (live-probed: OAuth 2.1 + DCR intact).
- grafana (on top of @cedricziel's #93183 entry): defensive
  default_excluded for ask_assistant (opaque Assistant delegation
  meta-tool, bills usage) and agento11y_* (Grafana's own agent-obs
  product suite) — both from Grafana's published tool tables, both
  no-ops until the Cloud surface serves them; billing note added to
  post_install.
2026-08-25 14:49:40 -07:00
Krzysztof Radzikowski 36f1423411 fix(update): gateway-only concurrent instances no longer abort hermes update (#37039)
On Windows, the pre-update concurrent-instance gate aborted with exit 2
whenever ANY other process held the venv hermes.exe shim — including the
gateway itself, which _pause_windows_gateways_for_update() stops moments
later and the post-update restart phase brings back. Users with a running
gateway were forced into a manual taskkill dance before every update.

The gate now filters gateway runtimes out of the abort list and proceeds
when nothing else is concurrent. Classification delegates to
_is_pausable_gateway -> gateway.status.looks_like_gateway_command_line
(the canonical shlex-tokenized, profile-selector-aware matcher shared by
the Desktop preflight exemption and the venv-holder guard fallback), so
the gate's exemption and the pause machinery cannot drift apart. Anything
not positively identified as a gateway — REPLs, dashboard, Desktop
backend children, gateway MANAGEMENT commands like 'gateway status',
unreadable cmdlines — still aborts exactly as before, and the abort
message now lists only the PIDs that are actually the user's problem.

Surgical reapply of PR #37039 by @damadorPL onto current main (the gate
moved from hermes_cli/main.py to hermes_cli/update_cmd.py in the main.py
decomposition); his substring classifier was replaced with the canonical
matcher, which also fixes the 'hermes gateway status' misclassification
flagged in review.

Co-authored-by: Hermes <hermes@nousresearch.com>
2026-08-25 14:48:51 -07:00
Jeffrey Quesnelle 5b82658b3c Merge pull request #90129 from rroverin/fix/nvidia-nim-tool-message-name-field
fix(providers): strip name/tool_name from NVIDIA NIM tool messages
2026-08-25 16:39:36 -04:00
Teknium 52bcfb47de chore: map contributor email for attribution gate 2026-08-25 12:09:08 -07:00
Teknium 0268c0b8c0 chore: map 2ndNatureAI attribution 2026-08-25 02:31:34 -07:00
kshitijk4poor e5032945cb chore: map contributor email for salvage attribution
Map macd@google.com (Mark McDonald, @markmcd) so the contributor
attribution check passes for the salvage of PR #94522.
2026-08-25 13:14:30 +05:30
Teknium 760d3af0d7 chore: map contributor email for salvage attribution 2026-08-25 00:31:14 -07:00
Leegenux 6ce7ab8bfb feat(browser): make snapshot threshold configurable 2026-08-24 21:51:44 -07:00
Nathan Shan d934bbd4d5 fix(agent): race Codex IPv6 and IPv4 connections
- Add RFC 8305-style staggered address attempts for synchronous ChatGPT Codex requests.
- Share the keepalive client builder across primary and auxiliary model paths.
- Cover blackholed IPv6 fallback, provider scoping, and existing proxy and TLS behavior.
2026-08-24 21:46:05 -07:00
Vignesh Ramesh a0795acc83 fix(codex): identify Hermes requests 2026-08-24 11:25:04 -07:00
kshitij 6e534df114 Merge pull request #93773 from kshitijk4poor/fix/codex-sdk-transform-bypass-93650-v2
fix: route codex payloads around the SDK's GIL-holding request transform (#93650)
2026-08-24 16:11:18 +05:30
Fabiao De Gongniu 97850afa33 fix(hindsight): send configured event timestamps
Use Hermes timezone-aware timestamps for retained events and turn messages. Pass the public timestamp field supported by hindsight-client 0.6.1 and cover the final serialized request field.
2026-08-24 03:23:52 -07:00
Teknium f28718c331 chore: map contributor email for shanthans-es 2026-08-24 03:20:46 -07:00
Teknium 8eba0d2fd6 chore: map dougatbuck contributor email 2026-08-24 03:19:47 -07:00
Teknium 94af11a920 chore: map contributor email for jeremyrandria-debug 2026-08-24 03:14:24 -07:00
kshitijk4poor 9857bcba5c fix: widen secure_parent_dir to skip entire install tree
Replace hardcoded /opt/hermes check with dynamic install-tree detection
using Path(__file__).resolve().parent. This catches ALL install paths
(Docker /opt/hermes, apt /usr/local/lib/hermes-agent, git clone, custom)
instead of just the Docker image path. Also covers subdirectories of the
install tree, not just the top-level dir.

Add regression test test_install_tree_skipped to verify both the install
root and subdirectories are excluded from chmod.

Add contributor email mapping for bradmarshall987.

Follow-up to PR #93050 by @bradmarshall987.
2026-08-24 15:42:09 +05:30
kshitijk4poor ee924a1bc5 chore: add cycorld to AUTHOR_MAP for PR #92189 salvage 2026-08-24 15:30:11 +05:30
kshitijk4poor f14f62d91b chore: AUTHOR_MAP for kchernev (PR #93681 salvage) 2026-08-24 15:29:46 +05:30
Ben Barclay 9a91f7058c Merge remote-tracking branch 'origin/main' into fix/pkce-samesite-none-salvage 2026-08-24 16:48:06 +10:00
quexiaolong 7e67f64fce fix(desktop): bots group chat sends message on IME composition Enter
macOS Chinese pinyin IME: pressing Enter to confirm a candidate word in
the group-chat composer submitted the draft as a message mid-composition.
The GroupMentionInput onKeyDown checked only `event.key === 'Enter' &&
!event.shiftKey` with no IME guard, unlike the core composer which guards
isComposing + keyCode 229 (#44135).

Add the same guard to the three Enter handlers in the bots plugin:
- GroupMentionInput (group composer + reply box) — the reported bug
- GroupClarifyCard free-text answer input — same premature-submit
- skill-hub search input — same premature-trigger

Closes #93528
2026-08-23 23:33:33 -07:00
Teknium 03662dca77 chore(release): map KHALIDagara contributor email 2026-08-23 21:12:26 -07:00
Teknium 95af45419f chore: map beplee contributor email for attribution gate 2026-08-23 21:12:20 -07:00
Teknium fdff700dc2 chore: map e-macgregor contributor email 2026-08-23 19:55:17 -07:00
Teknium ea25bf204d chore: map contributor email for cxxCoolStar 2026-08-23 19:02:30 -07:00
Teknium 74e483d326 chore: add contributor email mapping for jackijianxa 2026-08-23 19:00:36 -07:00
Teknium ca226b5e06 chore: map contributor emails for ring-2 salvage (A2chitect, c-pompa) 2026-08-23 18:58:40 -07:00