( items: TranscriptEntry[], event: AgentEvent, assistantId: string )
| 850 | } |
| 851 | |
| 852 | function applyAgentEvent( |
| 853 | items: TranscriptEntry[], |
| 854 | event: AgentEvent, |
| 855 | assistantId: string |
| 856 | ): TranscriptEntry[] { |
| 857 | switch (event.type) { |
| 858 | case "assistant_delta": |
| 859 | return appendAssistantDelta(items, assistantId, event.text) |
| 860 | case "thinking": { |
| 861 | const text = compactText(event.text) |
| 862 | return text |
| 863 | ? upsertEntry(items, `thinking-${assistantId}`, "status", "think", text) |
| 864 | : items |
| 865 | } |
| 866 | case "tool": { |
| 867 | const id = event.callId |
| 868 | ? `tool-${event.callId}` |
| 869 | : `tool-${assistantId}-${event.name}` |
| 870 | return upsertEntry( |
| 871 | items, |
| 872 | id, |
| 873 | "tool", |
| 874 | "tool", |
| 875 | [ |
| 876 | formatToolStatus(event.status), |
| 877 | formatToolIcon(event.name), |
| 878 | event.name, |
| 879 | event.params, |
| 880 | ] |
| 881 | .filter(Boolean) |
| 882 | .join(" ") |
| 883 | ) |
| 884 | } |
| 885 | case "status": |
| 886 | return ["CREATING", "RUNNING", "FINISHED"].includes(event.status) |
| 887 | ? items |
| 888 | : upsertEntry( |
| 889 | items, |
| 890 | `status-${assistantId}`, |
| 891 | event.status === "ERROR" ? "error" : "status", |
| 892 | "run", |
| 893 | `${formatRunStatus(event.status)}${event.message ? ` ${event.message}` : ""}` |
| 894 | ) |
| 895 | case "task": { |
| 896 | const text = compactText([event.status, event.text].filter(Boolean).join(" ")) |
| 897 | return text |
| 898 | ? upsertEntry(items, `task-${assistantId}`, "status", "task", text) |
| 899 | : items |
| 900 | } |
| 901 | case "result": { |
| 902 | const details = [ |
| 903 | event.status !== "finished" ? `status=${event.status}` : undefined, |
| 904 | event.durationMs ? `duration=${formatDuration(event.durationMs)}` : undefined, |
| 905 | event.usage?.inputTokens ? `input=${event.usage.inputTokens}` : undefined, |
| 906 | event.usage?.outputTokens ? `output=${event.usage.outputTokens}` : undefined, |
| 907 | ].filter(Boolean) |
| 908 | |
| 909 | return details.length > 0 |
no test coverage detected