rowboat/apps/cli/src/entities/run-events.ts

88 lines
2.2 KiB
TypeScript
Raw Normal View History

2025-11-15 01:51:22 +05:30
import { LlmStepStreamEvent } from "./llm-step-events.js";
import { Message, ToolCallPart } from "./message.js";
import z from "zod";
2025-11-07 11:42:10 +05:30
2025-11-11 12:32:46 +05:30
const BaseRunEvent = z.object({
2025-12-02 13:24:58 +05:30
runId: z.string(),
2025-11-11 12:32:46 +05:30
ts: z.iso.datetime().optional(),
subflow: z.array(z.string()),
2025-11-11 12:32:46 +05:30
});
export const StartEvent = BaseRunEvent.extend({
2025-11-11 12:32:46 +05:30
type: z.literal("start"),
agentName: z.string(),
2025-11-07 11:42:10 +05:30
});
export const SpawnSubFlowEvent = BaseRunEvent.extend({
type: z.literal("spawn-subflow"),
agentName: z.string(),
toolCallId: z.string(),
2025-11-07 11:42:10 +05:30
});
export const LlmStreamEvent = BaseRunEvent.extend({
type: z.literal("llm-stream-event"),
2025-11-07 11:42:10 +05:30
event: LlmStepStreamEvent,
});
export const MessageEvent = BaseRunEvent.extend({
2025-11-11 12:32:46 +05:30
type: z.literal("message"),
2025-12-02 13:24:58 +05:30
messageId: z.string(),
2025-11-07 11:42:10 +05:30
message: Message,
});
export const ToolInvocationEvent = BaseRunEvent.extend({
2025-11-11 12:32:46 +05:30
type: z.literal("tool-invocation"),
2025-12-11 13:43:47 +05:30
toolCallId: z.string().optional(),
2025-11-07 11:42:10 +05:30
toolName: z.string(),
input: z.string(),
});
export const ToolResultEvent = BaseRunEvent.extend({
2025-11-11 12:32:46 +05:30
type: z.literal("tool-result"),
2025-12-11 13:43:47 +05:30
toolCallId: z.string().optional(),
2025-11-07 11:42:10 +05:30
toolName: z.string(),
result: z.any(),
});
export const AskHumanRequestEvent = BaseRunEvent.extend({
type: z.literal("ask-human-request"),
toolCallId: z.string(),
query: z.string(),
2025-11-11 12:32:46 +05:30
});
export const AskHumanResponseEvent = BaseRunEvent.extend({
type: z.literal("ask-human-response"),
toolCallId: z.string(),
response: z.string(),
2025-11-11 12:32:46 +05:30
});
export const ToolPermissionRequestEvent = BaseRunEvent.extend({
type: z.literal("tool-permission-request"),
toolCall: ToolCallPart,
2025-11-07 11:42:10 +05:30
});
export const ToolPermissionResponseEvent = BaseRunEvent.extend({
type: z.literal("tool-permission-response"),
toolCallId: z.string(),
response: z.enum(["approve", "deny"]),
2025-11-07 11:42:10 +05:30
});
2025-11-11 12:32:46 +05:30
export const RunErrorEvent = BaseRunEvent.extend({
type: z.literal("error"),
2025-11-07 11:42:10 +05:30
error: z.string(),
});
2025-11-11 12:32:46 +05:30
export const RunEvent = z.union([
StartEvent,
SpawnSubFlowEvent,
LlmStreamEvent,
MessageEvent,
ToolInvocationEvent,
ToolResultEvent,
AskHumanRequestEvent,
AskHumanResponseEvent,
ToolPermissionRequestEvent,
ToolPermissionResponseEvent,
2025-11-11 12:32:46 +05:30
RunErrorEvent,
2025-12-11 13:43:47 +05:30
]);