Commit 792879f
committed
fix(agent-display): reject runtime-leak displayName + use canonical resolver in DM frame (#292)
Live nova↔theo smoke surfaced a runtime-label leak: the §9 inline DM
frame rendered as "@nova (openclaw (nova))". Root cause: Nova's User
row stores botMetadata.displayName = "openclaw (nova)" (literally
`<agentName> (<instanceId>)`), and the §9 chain trusted it.
Two fixes:
- resolveAgentDisplayLabel detects + rejects the leak pattern (case-
insensitive, exact tuple only — curated labels like "Strategist
(Aria)" are kept). Falls through to instanceId.
- agentMentionService §9 frame replaces its inline chain with a call
to resolveAgentDisplayLabel — single source of truth.
Tests: 5 new leak-pattern cases + 7 baseline. 12/12 pass.
A one-shot backfill on dev sweeps the contaminated User rows
post-deploy. The resolver guard catches future regressions defensively.1 parent b97c960 commit 792879f
3 files changed
Lines changed: 87 additions & 7 deletions
File tree
- backend
- __tests__/unit/services
- services
Lines changed: 50 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
57 | 57 | | |
58 | 58 | | |
59 | 59 | | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
| 96 | + | |
| 97 | + | |
| 98 | + | |
| 99 | + | |
| 100 | + | |
| 101 | + | |
| 102 | + | |
| 103 | + | |
| 104 | + | |
| 105 | + | |
| 106 | + | |
| 107 | + | |
| 108 | + | |
| 109 | + | |
60 | 110 | | |
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
70 | 70 | | |
71 | 71 | | |
72 | 72 | | |
73 | | - | |
74 | | - | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
| 79 | + | |
| 80 | + | |
| 81 | + | |
| 82 | + | |
| 83 | + | |
| 84 | + | |
| 85 | + | |
| 86 | + | |
| 87 | + | |
| 88 | + | |
| 89 | + | |
| 90 | + | |
| 91 | + | |
| 92 | + | |
| 93 | + | |
| 94 | + | |
| 95 | + | |
75 | 96 | | |
76 | 97 | | |
77 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
10 | 10 | | |
11 | 11 | | |
12 | 12 | | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
13 | 20 | | |
14 | 21 | | |
15 | 22 | | |
| |||
747 | 754 | | |
748 | 755 | | |
749 | 756 | | |
| 757 | + | |
| 758 | + | |
| 759 | + | |
| 760 | + | |
| 761 | + | |
| 762 | + | |
750 | 763 | | |
751 | 764 | | |
752 | 765 | | |
753 | 766 | | |
754 | | - | |
755 | | - | |
756 | | - | |
757 | | - | |
758 | | - | |
| 767 | + | |
759 | 768 | | |
760 | 769 | | |
761 | 770 | | |
| |||
0 commit comments