72 lines
2.4 KiB
TypeScript
72 lines
2.4 KiB
TypeScript
// ── Client → Server messages ──
|
|
|
|
export type ClientMessage =
|
|
| { type: "prompt"; text: string; requestId: string }
|
|
| { type: "steer"; text: string }
|
|
| { type: "followUp"; text: string }
|
|
| { type: "abort" }
|
|
| { type: "getModels" }
|
|
| { type: "setModel"; provider: string; modelId: string }
|
|
| { type: "setThinkingLevel"; level: string }
|
|
| { type: "getState" }
|
|
| { type: "newSession" }
|
|
| { type: "getSessions"; offset?: number; limit?: number; query?: string }
|
|
| { type: "getMessages"; offset: number; limit?: number }
|
|
| { type: "loadSession"; sessionPath?: string; sessionId?: string }
|
|
| { type: "deleteSession"; sessionPath?: string; sessionId?: string }
|
|
| { type: "renameSession"; sessionPath?: string; sessionId?: string; name: string }
|
|
| { type: "choiceResponse"; requestId: string; selected: string[] };
|
|
|
|
// ── Server → Client messages ──
|
|
|
|
export interface ModelInfo {
|
|
provider: string;
|
|
id: string;
|
|
name: string;
|
|
scoped?: boolean;
|
|
forceAliasLabel?: boolean;
|
|
}
|
|
|
|
export interface SessionListItem {
|
|
id: string;
|
|
path: string;
|
|
name?: string;
|
|
cwd: string;
|
|
created: string;
|
|
modified: string;
|
|
messageCount: number;
|
|
firstMessage: string;
|
|
}
|
|
|
|
export type ServerMessage =
|
|
| { type: "agentEvent"; event: any }
|
|
| { type: "stateSync"; state: SerializedAgentState }
|
|
| { type: "models"; models: ModelInfo[]; current?: ModelInfo; thinkingLevel?: string }
|
|
| { type: "modelChanged"; model: ModelInfo; thinkingLevel: string }
|
|
| { type: "error"; message: string }
|
|
| { type: "ready"; runtimeId: string; sessionId: string }
|
|
| { type: "promptAccepted"; requestId: string }
|
|
| { type: "promptRejected"; requestId: string; message: string }
|
|
| { type: "sessions"; sessions: SessionListItem[]; currentSessionId: string; offset?: number; limit?: number; total?: number; hasMore?: boolean; query?: string }
|
|
| { type: "messagePage"; messages: any[]; offset: number; limit: number; total: number; hasMoreBefore: boolean }
|
|
| { type: "sessionChanged"; sessionId: string };
|
|
|
|
export interface SerializedAgentState {
|
|
messages: any[];
|
|
messagesOffset?: number;
|
|
messagesTotal?: number;
|
|
hasMoreMessagesBefore?: boolean;
|
|
model?: ModelInfo;
|
|
thinkingLevel: string;
|
|
systemPrompt: string;
|
|
isStreaming: boolean;
|
|
streamingMessage?: any;
|
|
errorMessage?: string;
|
|
tools: string[];
|
|
cwd?: string;
|
|
appTitle?: string;
|
|
sessionId: string;
|
|
sessionName?: string;
|
|
sessionPath?: string;
|
|
}
|