hermes-agent/hermes_cli/subcommands
yoniebans 578374675e Merge origin/main into feat/desktop-remote-ssh-current
Sync with main after the contribution-shell refactor (#60638) and the backendConnectionState extraction (#65885) landed. Seven conflicts, all resolved in favor of main's new architecture with the SSH lifecycle ported on top:

- electron/main.ts: adopt backendConnectionState (attempt tokens, attachProcess, clearPromiseForAttempt) as the sole owner of the primary backend; drop the branch's raw hermesProcess/connectionPromise globals and commitConnectionFailure call site. SSH liveness-streak classification, teardown, and the SSH quit path are layered onto the new ownership model; before-quit combines SSH transactional teardown with the Windows sandbox marker (#38216).
- desktop-controller.tsx: deleted on main; its SSH beforeConnectionSwitch cleanup (preserved-route fresh draft, overlay return-route reset, project-tree reset, close-all-terminals) moves to contrib/wiring.tsx's useGatewayBoot call.
- use-session-actions/index.ts: keep main's onFreshDraftRouteIntent (fires unconditionally); preserveRoute gates only the navigate.
- gateway-settings.tsx: keep main's acceptSavedConfig/connectedCloudUrl; every save/sign-in/sign-out success path routes through acceptSavedConfig with the branch's stale-async seq guards intact.
- boot-failure-reauth.ts: keep both sshFailureMessage and main's isRemoteReauthFailure formatting.
- Both test harnesses take the union of props.

Validation: tsc -b clean; desktop suite 1704 passed / 1 skipped; electron SSH/connection modules 225 passed; python SSH + web_server suites 508 passed.
2026-07-20 22:46:39 +02:00
..
__init__.py
_shared.py
acp.py
auth.py
backup.py
claw.py
config.py fix(config): warn-after-write for unrecognized keys instead of refusing 2026-07-20 05:38:59 -07:00
console.py
cron.py fix(cron): harden execution attempt ledger 2026-07-17 04:58:35 -07:00
dashboard.py
debug.py
doctor.py
dump.py
gateway.py
gui.py
hooks.py
import_cmd.py
insights.py
login.py
logout.py
logs.py
mcp.py
memory.py
model.py
pairing.py
plugins.py
postinstall.py
profile.py
prompt_size.py
security.py
setup.py
skills.py
slack.py
status.py
tools.py
uninstall.py
update.py
version.py
webhook.py
whatsapp.py