File size: 1,586 Bytes
78d0c37 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | import { validateAgentParams } from "../../../packages/gateway-protocol/src/index.js";
import { prepareAgentRequestPreflight } from "../agent-turn/agent-request-preflight.js";
import { createAgentTurnService } from "../agent-turn/agent-turn-service.js";
import { createAgentTurnIo } from "../agent-turn/io.js";
import { captureAgentTurnPrincipal, resolveAgentTurnRunObserver } from "../agent-turn/principal.js";
import type { AgentRunRequest } from "./agent-request-types.js";
import type { GatewayRequestHandlers } from "./types.js";
import { assertValidParams } from "./validation.js";
export const agentRunHandler: GatewayRequestHandlers["agent"] = async ({
params,
respond,
context,
client,
isWebchatConnect,
sessionMutationCommitGuard,
}) => {
sessionMutationCommitGuard?.();
const io = createAgentTurnIo(respond);
if (
!assertValidParams(params, validateAgentParams, "agent", (ok, payload, error, meta) =>
io.emitAcceptance([ok, payload, error], meta),
)
) {
return;
}
const request = params as AgentRunRequest;
const principal = captureAgentTurnPrincipal(client);
const preflight = prepareAgentRequestPreflight({ request, context, client: principal, io });
if (!preflight) {
return;
}
const onRunObserved = resolveAgentTurnRunObserver({
principal,
registerToolEventRecipient: context.registerToolEventRecipient,
});
await createAgentTurnService({ context, isWebchatConnect }).startTurn({
assertAdmissionCurrent: sessionMutationCommitGuard,
preflight,
principal,
io,
onRunObserved,
});
};
|