hermes-agent/gateway
kshitijk4poor 6777916068 fix(skills): surface list-modified hint on both update paths + disambiguate diff
Salvage follow-up to the cherry-picked feat/test commits:

- W1: the unpack/install update path in main.py printed the
  '~ N user-modified (kept)' notice without the new
  'hermes skills list-modified' hint that the git-pull path got.
  Mirror the hint to both sites so the count is actionable
  regardless of which update path runs.
- W2: 'hermes skills diff <name>' (bundled-vs-stock) now shares the
  verb with the gateway write-approval 'diff <id>'. The gateway
  handler's docstring + truncation message pointed users to
  '/skills diff <id>' on the CLI, which now resolves a bundled skill
  by that name instead. Point at the pending JSON file and note the
  two diff commands are distinct.
- Add an invariant test asserting every 'user-modified (kept)' notice
  in main.py carries the discovery hint (guards sibling drift).
2026-06-18 12:28:11 +05:30
..
assets
…
builtin_hooks
…
platforms
…
relay feat(relay): managed-boot self-provision client (Phase 3, gateway side) (#48242) 2026-06-18 15:25:29 +10:00
__init__.py
…
authz_mixin.py
…
channel_directory.py
…
config.py fix(gateway): register relay connection checker 2026-06-17 16:37:45 -07:00
delivery.py
…
display_config.py
…
hooks.py
…
kanban_watchers.py
…
memory_monitor.py
…
message_timestamps.py
…
mirror.py
…
pairing.py
…
platform_registry.py
…
response_filters.py
…
restart.py
…
rich_sent_store.py
…
run.py feat(relay): managed-boot self-provision client (Phase 3, gateway side) (#48242) 2026-06-18 15:25:29 +10:00
runtime_footer.py
…
session.py
…
session_context.py
…
shutdown_forensics.py
…
slash_access.py
…
slash_commands.py fix(skills): surface list-modified hint on both update paths + disambiguate diff 2026-06-18 12:28:11 +05:30
status.py
…
sticker_cache.py
…
stream_consumer.py
…
stream_dispatch.py
…
stream_events.py
…
whatsapp_identity.py
…