rowboat/apps/cli/src/entities/llm-step-events.ts

63 lines
1.8 KiB
TypeScript
Raw Normal View History

2025-11-07 11:42:10 +05:30
import { z } from "zod";
2025-12-01 11:59:13 +05:30
import { ProviderOptions } from "./message.js";
2025-11-07 11:42:10 +05:30
2025-12-01 11:59:13 +05:30
const BaseEvent = z.object({
providerOptions: ProviderOptions.optional(),
})
export const LlmStepStreamReasoningStartEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("reasoning-start"),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamReasoningDeltaEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("reasoning-delta"),
delta: z.string(),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamReasoningEndEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("reasoning-end"),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamTextStartEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("text-start"),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamTextDeltaEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("text-delta"),
delta: z.string(),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamTextEndEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("text-end"),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamToolCallEvent = BaseEvent.extend({
2025-11-07 11:42:10 +05:30
type: z.literal("tool-call"),
toolCallId: z.string(),
toolName: z.string(),
input: z.any(),
});
2025-12-01 11:59:13 +05:30
export const LlmStepStreamFinishStepEvent = z.object({
type: z.literal("finish-step"),
finishReason: z.enum(["stop", "tool-calls", "length", "content-filter", "error", "other", "unknown"]),
2025-11-07 11:42:10 +05:30
usage: z.object({
inputTokens: z.number().optional(),
outputTokens: z.number().optional(),
totalTokens: z.number().optional(),
reasoningTokens: z.number().optional(),
cachedInputTokens: z.number().optional(),
}),
2025-12-01 11:59:13 +05:30
providerOptions: ProviderOptions.optional(),
2025-11-07 11:42:10 +05:30
});
export const LlmStepStreamEvent = z.union([
LlmStepStreamReasoningStartEvent,
LlmStepStreamReasoningDeltaEvent,
LlmStepStreamReasoningEndEvent,
LlmStepStreamTextStartEvent,
LlmStepStreamTextDeltaEvent,
LlmStepStreamTextEndEvent,
LlmStepStreamToolCallEvent,
2025-12-01 11:59:13 +05:30
LlmStepStreamFinishStepEvent,
2025-11-07 11:42:10 +05:30
]);