fix(honcho): inherit identity-mapping config in cloned profile blocks

PR #27371 added host-scoped userPeerAliases, runtimePeerPrefix, and
pinPeerName, but the cloned-profile allowlist in
plugins/memory/honcho/cli.py::clone_honcho_for_profile() omitted them.
A new profile created via 'hermes honcho setup' or similar would
silently drop the operator's identity-mapping config, causing gateway
users to resolve to raw runtime IDs and fragmenting Honcho memory
across an unintended set of peers.

Add the three keys to the allowlist and a regression test class
covering all three plus the unset case.
This commit is contained in:
erosika 2026-05-21 22:15:14 +00:00 committed by kshitij
parent 30b391ab36
commit 00e6830204
2 changed files with 94 additions and 3 deletions

View file

@ -40,12 +40,18 @@ def clone_honcho_for_profile(profile_name: str) -> bool:
if new_host in hosts:
return False # already exists
# Clone settings from default block, override identity fields
# Clone settings from default block, override identity fields.
# Identity-mapping keys (pinPeerName, userPeerAliases, runtimePeerPrefix)
# carry the operator's runtime-to-peer routing intent from #27371.
# Without them in this allowlist, a cloned profile would silently lose
# the mapping and gateway users would resolve to raw runtime IDs,
# fragmenting Honcho memory across an unintended set of peers.
new_block = {}
for key in ("recallMode", "writeFrequency", "sessionStrategy",
"sessionPeerPrefix", "contextTokens", "dialecticReasoningLevel",
"dialecticDynamic", "dialecticMaxChars", "messageMaxChars",
"dialecticMaxInputChars", "saveMessages", "observation"):
"dialecticMaxInputChars", "saveMessages", "observation",
"pinPeerName", "userPeerAliases", "runtimePeerPrefix"):
val = default_block.get(key)
if val is not None:
new_block[key] = val