Skip to content

Commit 335c3a8

Browse files
committed
refactor(gateway): share node agent dispatch
1 parent fd6b325 commit 335c3a8

1 file changed

Lines changed: 40 additions & 40 deletions

File tree

src/gateway/server-node-events.ts

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,22 @@ export type NodeEventHandleResult = {
6666
reason?: string;
6767
};
6868

69+
type NodeAgentCommandInput = Parameters<typeof agentCommandFromIngress>[0];
70+
6971
function normalizeFiniteInteger(value: unknown): number | null {
7072
return typeof value === "number" && Number.isFinite(value) ? Math.trunc(value) : null;
7173
}
7274

75+
function dispatchNodeAgentCommand(
76+
ctx: NodeEventContext,
77+
nodeId: string,
78+
input: NodeAgentCommandInput,
79+
): void {
80+
void agentCommandFromIngress(input, defaultRuntime, ctx.deps).catch((err: unknown) => {
81+
ctx.logGateway.warn(`agent failed node=${nodeId}: ${formatForLog(err)}`);
82+
});
83+
}
84+
7385
function resolveVoiceTranscriptFingerprint(obj: Record<string, unknown>, text: string): string {
7486
const eventId =
7587
normalizeOptionalString(obj.eventId) ??
@@ -413,26 +425,20 @@ export const handleNodeEvent = async (
413425
clientRunId: `voice-${randomUUID()}`,
414426
});
415427

416-
void agentCommandFromIngress(
417-
{
418-
runId,
419-
message: text,
420-
sessionId,
421-
sessionKey: canonicalKey,
422-
thinking: "low",
423-
deliver: false,
424-
messageChannel: "node",
425-
inputProvenance: {
426-
kind: "external_user",
427-
sourceChannel: "voice",
428-
sourceTool: "gateway.voice.transcript",
429-
},
430-
allowModelOverride: false,
428+
dispatchNodeAgentCommand(ctx, nodeId, {
429+
runId,
430+
message: text,
431+
sessionId,
432+
sessionKey: canonicalKey,
433+
thinking: "low",
434+
deliver: false,
435+
messageChannel: "node",
436+
inputProvenance: {
437+
kind: "external_user",
438+
sourceChannel: "voice",
439+
sourceTool: "gateway.voice.transcript",
431440
},
432-
defaultRuntime,
433-
ctx.deps,
434-
).catch((err: unknown) => {
435-
ctx.logGateway.warn(`agent failed node=${nodeId}: ${formatForLog(err)}`);
441+
allowModelOverride: false,
436442
});
437443
return undefined;
438444
}
@@ -583,27 +589,21 @@ export const handleNodeEvent = async (
583589
);
584590
}
585591

586-
void agentCommandFromIngress(
587-
{
588-
runId: sessionId,
589-
message,
590-
images,
591-
imageOrder,
592-
sessionId,
593-
sessionKey: canonicalKey,
594-
thinking: link?.thinking ?? undefined,
595-
deliver,
596-
to: deliveryTo,
597-
channel: deliveryChannel,
598-
timeout:
599-
typeof link?.timeoutSeconds === "number" ? link.timeoutSeconds.toString() : undefined,
600-
messageChannel: "node",
601-
allowModelOverride: false,
602-
},
603-
defaultRuntime,
604-
ctx.deps,
605-
).catch((err: unknown) => {
606-
ctx.logGateway.warn(`agent failed node=${nodeId}: ${formatForLog(err)}`);
592+
dispatchNodeAgentCommand(ctx, nodeId, {
593+
runId: sessionId,
594+
message,
595+
images,
596+
imageOrder,
597+
sessionId,
598+
sessionKey: canonicalKey,
599+
thinking: link?.thinking ?? undefined,
600+
deliver,
601+
to: deliveryTo,
602+
channel: deliveryChannel,
603+
timeout:
604+
typeof link?.timeoutSeconds === "number" ? link.timeoutSeconds.toString() : undefined,
605+
messageChannel: "node",
606+
allowModelOverride: false,
607607
});
608608
return undefined;
609609
}

0 commit comments

Comments
 (0)