import type { ProviderEvent, ProviderSession } from "@t3tools/contracts"; export type SessionPhase = "disconnected" | "connecting" | "ready" | "running";export type RuntimeMode = "approval-required" | "full-access";export const DEFAULT_RUNTIME_MODE: RuntimeMode = "full-access";export const DEFAULT_THREAD_TERMINAL_HEIGHT = 280;export const DEFAULT_THREAD_TERMINAL_ID = "default"; export interface ThreadTerminalGroup { id: string; terminalIds: string[];} export interface ChatImageAttachment { type: "image"; id: string; name: string; mimeType: string; sizeBytes: number; previewUrl?: string;} export type ChatAttachment = ChatImageAttachment; export interface ChatMessage { id: string; role: "user" | "assistant"; text: string; attachments?: ChatAttachment[]; createdAt: string; streaming: boolean;} export interface Project { id: string; name: string; cwd: string; model: string; expanded: boolean;} export interface Thread { id: string; codexThreadId: string | null; projectId: string; title: string; model: string; terminalOpen: boolean; terminalHeight: number; terminalIds: string[]; runningTerminalIds: string[]; activeTerminalId: string; terminalGroups: ThreadTerminalGroup[]; activeTerminalGroupId: string; session: ProviderSession | null; messages: ChatMessage[]; events: ProviderEvent[]; error: string | null; createdAt: string; latestTurnId?: string | undefined; latestTurnStartedAt?: string | undefined; latestTurnCompletedAt?: string | undefined; latestTurnDurationMs?: number | undefined; lastVisitedAt?: string | undefined; branch: string | null; worktreePath: string | null;}
import type { ProviderEvent, ProviderSession } from "@t3tools/contracts";
export type SessionPhase = "disconnected" | "connecting" | "ready" | "running";
export type RuntimeMode = "approval-required" | "full-access";
export const DEFAULT_RUNTIME_MODE: RuntimeMode = "full-access";
export const DEFAULT_THREAD_TERMINAL_HEIGHT = 280;
export const DEFAULT_THREAD_TERMINAL_ID = "default";
export interface ThreadTerminalGroup {
id: string;
terminalIds: string[];
}
export interface ChatImageAttachment {
type: "image";
id: string;
name: string;
mimeType: string;
sizeBytes: number;
previewUrl?: string;
}
export type ChatAttachment = ChatImageAttachment;
export interface ChatMessage {
id: string;
role: "user" | "assistant";
text: string;
attachments?: ChatAttachment[];
createdAt: string;
streaming: boolean;
}
export interface Project {
id: string;
name: string;
cwd: string;
model: string;
expanded: boolean;
}
export interface Thread {
id: string;
codexThreadId: string | null;
projectId: string;
title: string;
model: string;
terminalOpen: boolean;
terminalHeight: number;
terminalIds: string[];
runningTerminalIds: string[];
activeTerminalId: string;
terminalGroups: ThreadTerminalGroup[];
activeTerminalGroupId: string;
session: ProviderSession | null;
messages: ChatMessage[];
events: ProviderEvent[];
error: string | null;
createdAt: string;
latestTurnId?: string | undefined;
latestTurnStartedAt?: string | undefined;
latestTurnCompletedAt?: string | undefined;
latestTurnDurationMs?: number | undefined;
lastVisitedAt?: string | undefined;
branch: string | null;
worktreePath: string | null;
}