fix(outbound): skip sync reserved-literal rejection for heartbeat mode · openclaw/openclaw@f12ade0
zhangguiping
·
2026-06-25
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -80,17 +80,24 @@ export function resolveOutboundTargetWithPlugin(params: {
|
80 | 80 | if (targetPrefixError) { |
81 | 81 | return { ok: false, error: targetPrefixError }; |
82 | 82 | } |
83 | | -const hint = plugin.messaging?.targetResolver?.hint; |
84 | | -const reservedLiteral = resolveReservedTargetLiteral({ raw: effectiveTo, plugin }); |
85 | | -if (reservedLiteral) { |
86 | | -return { |
87 | | -ok: false, |
88 | | -error: reservedTargetLiteralError( |
89 | | -plugin.meta.label ?? params.target.channel, |
90 | | -reservedLiteral, |
91 | | -hint, |
92 | | -), |
93 | | -}; |
| 83 | +// Reserved-literal rejection is skipped for heartbeat mode so the |
| 84 | +// async directory-capable resolver (resolveChannelTarget → |
| 85 | +// resolveMessagingTarget) can do directory-first lookup before deciding. |
| 86 | +// Rejecting here would suppress a heartbeat route to an existing directory |
| 87 | +// entry whose name matches a reserved literal. |
| 88 | +if (params.target.mode !== "heartbeat") { |
| 89 | +const hint = plugin.messaging?.targetResolver?.hint; |
| 90 | +const reservedLiteral = resolveReservedTargetLiteral({ raw: effectiveTo, plugin }); |
| 91 | +if (reservedLiteral) { |
| 92 | +return { |
| 93 | +ok: false, |
| 94 | +error: reservedTargetLiteralError( |
| 95 | +plugin.meta.label ?? params.target.channel, |
| 96 | +reservedLiteral, |
| 97 | +hint, |
| 98 | +), |
| 99 | +}; |
| 100 | +} |
94 | 101 | } |
95 | 102 | |
96 | 103 | const resolveTarget = plugin.outbound?.resolveTarget; |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。