graphlit-client
Version:
Graphlit API Client for TypeScript
91 lines (90 loc) • 2.27 kB
TypeScript
import { ConversationMessage, ConversationToolCall } from "../generated/graphql-types.js";
/**
* Tool execution status for streaming
*/
export type ToolExecutionStatus = "preparing" | "executing" | "ready" | "completed" | "failed";
/**
* Reasoning format types
*/
export type ReasoningFormat = "thinking_tag" | "markdown" | "custom";
/**
* 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: "reasoning_update";
content: string;
format: ReasoningFormat;
isComplete: boolean;
} | {
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;
};
usage?: {
promptTokens: number;
completionTokens: number;
totalTokens: number;
model?: string;
provider?: string;
};
} | {
type: "error";
error: {
message: string;
code?: string;
recoverable?: boolean;
};
conversationId: string;
timestamp: Date;
};