Archived
163 lines
4.1 KiB
TypeScript
163 lines
4.1 KiB
TypeScript
export interface Project {
|
|
id: string;
|
|
name: string;
|
|
path: string;
|
|
createdAt: string;
|
|
}
|
|
|
|
export interface Workspace {
|
|
id: string;
|
|
projectId: string;
|
|
path: string;
|
|
label: string;
|
|
branch?: string;
|
|
isMain: boolean;
|
|
isGitRepo: boolean;
|
|
isGitWorktree: boolean;
|
|
}
|
|
|
|
export interface SessionInfo {
|
|
id: string;
|
|
path: string;
|
|
cwd: string;
|
|
name?: string;
|
|
created: string;
|
|
modified: string;
|
|
messageCount: number;
|
|
firstMessage: string;
|
|
archived?: boolean;
|
|
archivedAt?: string;
|
|
}
|
|
|
|
export interface SessionActivity {
|
|
sessionId: string;
|
|
phase: "active" | "idle" | "error";
|
|
label: string;
|
|
detail?: string;
|
|
at: string;
|
|
}
|
|
|
|
export interface SessionStatus {
|
|
sessionId: string;
|
|
model?: { provider?: string; id?: string; name?: string; contextWindow?: number; reasoning?: unknown };
|
|
thinkingLevel?: string;
|
|
isStreaming: boolean;
|
|
isCompacting: boolean;
|
|
isBashRunning: boolean;
|
|
pendingMessageCount: number;
|
|
tokens: { input: number; output: number; cacheRead: number; cacheWrite: number; total: number };
|
|
cost: number;
|
|
contextUsage?: { tokens: number | null; contextWindow: number; percent: number | null };
|
|
}
|
|
|
|
export interface SlashCommand {
|
|
name: string;
|
|
description?: string;
|
|
source: "extension" | "prompt" | "skill" | "builtin";
|
|
}
|
|
|
|
export interface FileSuggestion {
|
|
path: string;
|
|
kind: "tracked" | "untracked" | "other";
|
|
}
|
|
|
|
export interface FileTreeEntry {
|
|
name: string;
|
|
path: string;
|
|
type: "file" | "directory" | "symlink";
|
|
size?: number;
|
|
modifiedAt?: string;
|
|
}
|
|
|
|
export interface FileTreeResponse {
|
|
path: string;
|
|
entries: FileTreeEntry[];
|
|
scannedAt: string;
|
|
truncated: boolean;
|
|
}
|
|
|
|
export interface FileContentResponse {
|
|
path: string;
|
|
language?: string;
|
|
encoding: "utf8";
|
|
size: number;
|
|
modifiedAt: string;
|
|
content: string;
|
|
truncated: boolean;
|
|
binary: boolean;
|
|
}
|
|
|
|
export type GitFileState = "unmodified" | "modified" | "added" | "deleted" | "renamed" | "copied" | "untracked" | "ignored" | "conflicted";
|
|
|
|
export interface GitStatusFile {
|
|
path: string;
|
|
oldPath?: string;
|
|
index: GitFileState;
|
|
workingTree: GitFileState;
|
|
}
|
|
|
|
export interface GitStatusResponse {
|
|
isGitRepo: boolean;
|
|
hash: string;
|
|
branch?: string;
|
|
upstream?: string;
|
|
ahead?: number;
|
|
behind?: number;
|
|
files: GitStatusFile[];
|
|
}
|
|
|
|
export interface GitDiffResponse {
|
|
path?: string;
|
|
staged: boolean;
|
|
hash: string;
|
|
diff: string;
|
|
truncated: boolean;
|
|
}
|
|
|
|
export interface TerminalInfo {
|
|
id: string;
|
|
cwd: string;
|
|
name: string;
|
|
createdAt: string;
|
|
exited: boolean;
|
|
exitCode?: number;
|
|
}
|
|
|
|
export interface CommandOption {
|
|
value: string;
|
|
label: string;
|
|
description?: string;
|
|
}
|
|
|
|
export interface MessagePage {
|
|
messages: unknown[];
|
|
start: number;
|
|
total: number;
|
|
}
|
|
|
|
export type CommandResult =
|
|
| { type: "done"; message?: string; session?: SessionInfo }
|
|
| { type: "select"; requestId: string; title: string; options: CommandOption[] }
|
|
| { type: "unsupported"; message: string };
|
|
|
|
export type SessionUiEvent =
|
|
| { type: "message.append"; message: unknown }
|
|
| { type: "assistant.delta"; text: string }
|
|
| { type: "assistant.thinking.delta"; text: string }
|
|
| { type: "tool.start"; toolName: string; toolCallId: string; summary: string; args?: unknown }
|
|
| { type: "tool.end"; toolName: string; toolCallId: string; text: string; isError: boolean; content?: unknown }
|
|
| { type: "shell.start"; command: string; excludeFromContext?: boolean }
|
|
| { type: "shell.chunk"; chunk: string }
|
|
| { type: "shell.end"; output?: string; exitCode?: number | null; cancelled?: boolean; truncated?: boolean; fullOutputPath?: string; isError?: boolean }
|
|
| { type: "agent.start" }
|
|
| { type: "agent.end" }
|
|
| { type: "message.end"; message?: unknown }
|
|
| { type: "status.update"; status: SessionStatus }
|
|
| { type: "activity.update"; activity: SessionActivity }
|
|
| { type: "command.output"; level: "info" | "success" | "error"; message: string }
|
|
| { type: "session.error"; message: string }
|
|
| { type: "session.name"; sessionId: string; name?: string }
|
|
| { type: "pi.event"; eventType: string };
|
|
|
|
export type GlobalSessionEvent = Extract<SessionUiEvent, { type: "status.update" | "activity.update" | "session.name" }>;
|