hermes-agent/gateway
teknium1 370cc9394b
feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs
Follow-ups on the #53969 salvage:

- hermes_cli/side_question.py: shared compose_side_prompt() used by all
  three surfaces; treats the parent history as read-only by construction.
- gateway: /side now uses the shared composer and registers its task in
  _background_tasks with a done-callback (same lifecycle as /background,
  addressing the sweeper review note); dropped the unused
  _SIDE_BOUNDARY_PROMPT and the dead /sidereturn no-op command (with its
  /return and /closeside alias squatting).
- CLI: /side snapshots self.conversation_history into a side prompt and
  reuses the /background daemon-thread runner (new prompt_override /
  display_prompt / task_label parameters); dispatch wired in cli.py.
- TUI: new prompt.side RPC (history snapshot under history_lock, throwaway
  AIAgent, background.complete delivery) + /side slash command in ui-tui.
- No /btw alias: /btw is a long-standing alias of /background
  (hermes_cli/commands.py) — /side ships alias-free and a registry test
  pins /btw -> background.
- tests: tests/gateway/test_side_command.py (19) covering the byte-identical
  main-history invariant, empty-history, no-session-entry, task lifecycle
  tracking, prompt composition, and registry; tests/cli/test_cli_side_command.py
  (7) covering the CLI surface and dispatch.
- docs: /side rows in the CLI and messaging tables of
  website/docs/reference/slash-commands.md + cross-surface list.
2026-07-26 16:17:57 -07:00
..
assets
…
builtin_hooks
…
platforms fix(gateway): GIS extensions, spaced MEDIA paths, and code-block-safe display strip 2026-07-26 13:41:53 -07:00
relay feat(relay): Phase 4 thread lifecycle — handoff threads, semantic renames, reply_to context, hello command manifest (#71624) 2026-07-26 10:26:20 +10:00
__init__.py
…
authz_mixin.py fix(gateway): kanban notifier delivery reliability 2026-07-26 16:14:15 -07:00
cgroup_cleanup.py
…
channel_directory.py fix(slack): resolve channel IDs to human-readable names 2026-07-23 12:01:24 -07:00
code_skew.py
…
config.py refactor(gateway): gate loop-liveness watchdog via config.yaml, drop HERMES_* env knobs 2026-07-24 16:03:42 -07:00
cwd_placeholder.py
…
dead_targets.py fix(gateway): add utf-8 encoding to dead target registry 2026-07-24 15:47:12 -07:00
delivery.py fix(gateway): pass encoding="utf-8" to read_text/write_text in update path (#37423) 2026-07-24 15:47:12 -07:00
delivery_ledger.py fix(gateway,tools,agent): close leaked SQLite connections in delivery, delegation, and verification ledgers 2026-07-24 15:55:08 -07:00
display_config.py fix(slack): quiet Slack display defaults — no heartbeat/busy-ack breadcrumbs in channels 2026-07-23 11:34:11 -07:00
drain_control.py
…
hooks.py
…
kanban_watchers.py fix(gateway): zero-sub early exit for kanban notifier board polling 2026-07-26 16:14:15 -07:00
memory_monitor.py
…
message_timestamps.py
…
mirror.py
…
pairing.py
…
platform_registry.py
…
profile_routing.py
…
readiness.py fix(gateway): close readiness-probe SQLite connection deterministically 2026-07-24 15:55:08 -07:00
response_filters.py
…
restart.py
…
restart_loop_guard.py
…
rich_sent_store.py
…
run.py feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs 2026-07-26 16:17:57 -07:00
runtime_footer.py
…
scale_to_zero.py
…
session.py fix(compression): recover rotated session lineage 2026-07-24 16:00:34 -07:00
session_context.py fix(gateway): dedupe chat_type wiring after composing #58615 with #60769 2026-07-26 16:01:32 -07:00
shutdown_forensics.py fix: add explicit UTF-8 encoding to all subprocess text=True calls (#53428) 2026-07-24 11:45:57 -07:00
shutdown_watchdog.py refactor(gateway): gate loop-liveness watchdog via config.yaml, drop HERMES_* env knobs 2026-07-24 16:03:42 -07:00
slash_access.py
…
slash_commands.py feat(side): extend /side to CLI + TUI, shared prompt composer, tests, docs 2026-07-26 16:17:57 -07:00
status.py fix(dashboard): one gateway liveness ladder for status + channels 2026-07-26 08:08:38 -07:00
status_phrases.py
…
sticker_cache.py
…
stream_consumer.py fix(gateway): balance code fences on every remaining chunk-split path 2026-07-23 11:50:28 -07:00
stream_dispatch.py
…
stream_events.py
…
systemd_notify.py
…
turn_lease.py
…
wake.py fix(gateway): deliver kanban/delegate wake-ups to api_server sessions 2026-07-23 11:55:17 -07:00
whatsapp_identity.py
…