graphlit-client
Version:
Graphlit API Client for TypeScript
75 lines (74 loc) • 1.89 kB
TypeScript
import { ConversationMessage, ConversationToolCall } from "../generated/graphql-types.js";
/**
* Tool execution status for streaming
*/
export type ToolExecutionStatus = "preparing" | "executing" | "ready" | "completed" | "failed";
/**
* Context window usage event - emitted at start of agent interaction
*/
export type ContextWindowEvent = {
type: "context_window";
usage: {
usedTokens: number;
maxTokens: number;
percentage: number;
remainingTokens: number;
};
timestamp: Date;
};
/**
* Simplified UI-focused streaming events using GraphQL types
*/
export type AgentStreamEvent = {
type: "conversation_started";
conversationId: string;
timestamp: Date;
model?: string;
} | ContextWindowEvent | {
type: "message_update";
message: Partial<ConversationMessage> & {
message: string;
};
isStreaming: boolean;
metrics?: {
ttft?: number;
elapsedTime: number;
conversationDuration: number;
tokenCount?: number;
avgTokenDelay?: number;
streamingThroughput?: number;
};
} | {
type: "tool_update";
toolCall: ConversationToolCall;
status: ToolExecutionStatus;
result?: unknown;
error?: string;
} | {
type: "conversation_completed";
message: ConversationMessage;
metrics?: {
ttft?: number;
totalTime: number;
conversationDuration: number;
tokenCount?: number;
llmTokens?: number;
avgTokenDelay?: number;
streamingThroughput?: number;
};
contextWindow?: {
usedTokens: number;
maxTokens: number;
percentage: number;
remainingTokens: number;
};
} | {
type: "error";
error: {
message: string;
code?: string;
recoverable?: boolean;
};
conversationId: string;
timestamp: Date;
};