mirror of
https://github.com/getcompanion-ai/co-mono.git
synced 2026-04-19 19:04:41 +00:00
Fix message routing by broadcasting to all providers and consumers
- Router was stopping propagation after first handler returned true - This prevented consumers from seeing messages that providers handled - executionConsumer never received execution-complete because ConsoleRuntimeProvider handled it first - Now all providers and consumers receive all messages - Fixes javascript_repl never completing
This commit is contained in:
parent
3f29ce9cb6
commit
fdd4e24246
2 changed files with 5 additions and 12 deletions
|
|
@ -166,13 +166,6 @@ export class ConsoleRuntimeProvider implements SandboxRuntimeProvider {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Don't handle execution-complete/error - let executionConsumer handle those
|
|
||||||
// We just need to respond to allow the message to proceed
|
|
||||||
if (message.type === "execution-complete" || message.type === "execution-error") {
|
|
||||||
respond({ success: true });
|
|
||||||
return false; // Don't stop propagation
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -153,15 +153,15 @@ export class RuntimeMessageRouter {
|
||||||
// 1. Try provider handlers first (for bidirectional comm)
|
// 1. Try provider handlers first (for bidirectional comm)
|
||||||
for (const provider of context.providers) {
|
for (const provider of context.providers) {
|
||||||
if (provider.handleMessage) {
|
if (provider.handleMessage) {
|
||||||
const handled = await provider.handleMessage(e.data, respond);
|
await provider.handleMessage(e.data, respond);
|
||||||
if (handled) return; // Stop if handled
|
// Don't stop - let consumers also handle the message
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// 2. Broadcast to consumers (for one-way messages like console)
|
// 2. Broadcast to consumers (one-way messages or lifecycle events)
|
||||||
for (const consumer of context.consumers) {
|
for (const consumer of context.consumers) {
|
||||||
const consumed = await consumer.handleMessage(e.data);
|
await consumer.handleMessage(e.data);
|
||||||
if (consumed) break; // Stop if consumed
|
// Don't stop - let all consumers see the message
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue