fix: only process assistant messages in before_message_write
before_message_write fires for both user (incoming) and assistant (outgoing) messages. Without a role check, end symbols from other agents' incoming messages incorrectly trigger turn advances. Add role check to skip non-assistant messages early.
This commit is contained in:
8
dist/whispergate/index.ts
vendored
8
dist/whispergate/index.ts
vendored
@@ -932,9 +932,17 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Extract content from event.message (AgentMessage)
|
// Extract content from event.message (AgentMessage)
|
||||||
|
// IMPORTANT: Only process assistant messages — before_message_write fires for both
|
||||||
|
// user (incoming) and assistant (outgoing) messages. Processing user messages would
|
||||||
|
// incorrectly detect end symbols from OTHER agents' messages and advance the turn.
|
||||||
let content = "";
|
let content = "";
|
||||||
const msg = (event as Record<string, unknown>).message as Record<string, unknown> | undefined;
|
const msg = (event as Record<string, unknown>).message as Record<string, unknown> | undefined;
|
||||||
if (msg) {
|
if (msg) {
|
||||||
|
const role = msg.role as string | undefined;
|
||||||
|
if (role && role !== "assistant") {
|
||||||
|
// Skip non-assistant messages (user messages, system messages, etc.)
|
||||||
|
return;
|
||||||
|
}
|
||||||
// AgentMessage may have content as string or nested
|
// AgentMessage may have content as string or nested
|
||||||
if (typeof msg.content === "string") {
|
if (typeof msg.content === "string") {
|
||||||
content = msg.content;
|
content = msg.content;
|
||||||
|
|||||||
@@ -932,9 +932,17 @@ export default {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Extract content from event.message (AgentMessage)
|
// Extract content from event.message (AgentMessage)
|
||||||
|
// IMPORTANT: Only process assistant messages — before_message_write fires for both
|
||||||
|
// user (incoming) and assistant (outgoing) messages. Processing user messages would
|
||||||
|
// incorrectly detect end symbols from OTHER agents' messages and advance the turn.
|
||||||
let content = "";
|
let content = "";
|
||||||
const msg = (event as Record<string, unknown>).message as Record<string, unknown> | undefined;
|
const msg = (event as Record<string, unknown>).message as Record<string, unknown> | undefined;
|
||||||
if (msg) {
|
if (msg) {
|
||||||
|
const role = msg.role as string | undefined;
|
||||||
|
if (role && role !== "assistant") {
|
||||||
|
// Skip non-assistant messages (user messages, system messages, etc.)
|
||||||
|
return;
|
||||||
|
}
|
||||||
// AgentMessage may have content as string or nested
|
// AgentMessage may have content as string or nested
|
||||||
if (typeof msg.content === "string") {
|
if (typeof msg.content === "string") {
|
||||||
content = msg.content;
|
content = msg.content;
|
||||||
|
|||||||
Reference in New Issue
Block a user