Skip to content
Source
Sign inSign up

workflowAgentAnswers.ts

33 lines1.1 KB

1import type { OrchestrationV2WorkflowAgent } from "@t3tools/contracts";
2​
3import { field, text } from "./unknownField.ts";
4​
5export type WorkflowAgentMetadata = Pick<OrchestrationV2WorkflowAgent, "effort" | "speed"> & {
6 readonly messageId?: string;
7};
8​
9export function mergeWorkflowAgentMetadata(
10 lines: ReadonlyArray<unknown>,
11 previous: WorkflowAgentMetadata = {},
12): WorkflowAgentMetadata {
13 let metadata = previous;
14 for (const entry of lines) {
15 if (
16 field(entry, "type") !== "assistant" ||
17 field(entry, "isMeta") === true ||
18 field(entry, "isApiErrorMessage") === true
19 )
20 continue;
21 const message = field(entry, "message");
22 const messageId = text(field(message, "id"));
23 const effort = text(field(entry, "effort"));
24 const speed = text(field(field(message, "usage"), "speed"));
25 metadata = {
26 ...(messageId !== undefined && messageId === metadata.messageId ? metadata : {}),
27 ...(messageId === undefined ? {} : { messageId }),
28 ...(effort === undefined ? {} : { effort }),
29 ...(speed === undefined ? {} : { speed }),
30 };
31 }
32 return metadata;