180 lines
3.8 KiB
TypeScript
180 lines
3.8 KiB
TypeScript
export type AuthType = 'PASSWORD' | 'PRIVATE_KEY'
|
|
export type ConnectionSetupMode = 'NONE' | 'PASSWORD_BOOTSTRAP'
|
|
export type SessionTreeNodeType = 'folder' | 'connection'
|
|
export type SessionTreeSortMode = 'manual' | 'nameAsc'
|
|
export type WorkspaceLayout = 'split' | 'terminal' | 'sftp'
|
|
export type TerminalConnectionStatus = 'idle' | 'connecting' | 'connected' | 'reconnecting' | 'error'
|
|
export type ConnectionReachabilityStatus = 'unknown' | 'checking' | 'online' | 'offline'
|
|
|
|
export interface LoginResponse {
|
|
token: string
|
|
username: string
|
|
displayName: string
|
|
passwordChangeRequired: boolean
|
|
}
|
|
|
|
export interface CurrentUser {
|
|
username: string
|
|
displayName: string
|
|
passwordChangeRequired?: boolean
|
|
}
|
|
|
|
export interface Connection {
|
|
id: number
|
|
name: string
|
|
host: string
|
|
port: number
|
|
username: string
|
|
authType: AuthType
|
|
createdAt: string
|
|
updatedAt: string
|
|
}
|
|
|
|
export interface ConnectionCreateRequest {
|
|
name: string
|
|
host: string
|
|
port?: number
|
|
username: string
|
|
authType?: AuthType
|
|
password?: string
|
|
privateKey?: string
|
|
passphrase?: string
|
|
setupMode?: ConnectionSetupMode
|
|
bootstrapPassword?: string
|
|
}
|
|
|
|
export interface ConnectionModalSubmitPayload extends ConnectionCreateRequest {
|
|
targetFolderId: string | null
|
|
}
|
|
|
|
export interface SessionTreeNodePayload {
|
|
id: string
|
|
type: SessionTreeNodeType
|
|
name: string
|
|
parentId: string | null
|
|
order: number
|
|
connectionId?: number
|
|
expanded?: boolean
|
|
createdAt: number
|
|
updatedAt: number
|
|
}
|
|
|
|
export interface SessionTreeLayoutPayload {
|
|
nodes: SessionTreeNodePayload[]
|
|
sortMode?: SessionTreeSortMode
|
|
}
|
|
|
|
export interface SessionTreeFolderOption {
|
|
id: string
|
|
name: string
|
|
depth: number
|
|
}
|
|
|
|
export interface SftpFileInfo {
|
|
name: string
|
|
directory: boolean
|
|
size: number
|
|
mtime: number
|
|
}
|
|
|
|
export interface UploadTask {
|
|
taskId: string
|
|
status: 'queued' | 'running' | 'success' | 'error'
|
|
progress: number
|
|
transferredBytes: number
|
|
totalBytes: number
|
|
filename: string
|
|
error?: string
|
|
createdAt: number
|
|
startedAt: number
|
|
finishedAt: number
|
|
}
|
|
|
|
export interface UploadConflictResponse {
|
|
code: 'SFTP_UPLOAD_CONFLICT'
|
|
fileName: string
|
|
conflictType: 'file' | 'dir'
|
|
canOverwrite: boolean
|
|
message: string
|
|
}
|
|
|
|
export interface RemoteTransferTask {
|
|
taskId: string
|
|
status: 'queued' | 'running' | 'success' | 'error' | 'cancelled'
|
|
progress: number
|
|
transferredBytes: number
|
|
totalBytes: number
|
|
error?: string
|
|
createdAt: number
|
|
startedAt: number
|
|
finishedAt: number
|
|
}
|
|
|
|
export interface BatchCommandResult {
|
|
connectionId: number
|
|
connectionName: string
|
|
success: boolean
|
|
output: string | null
|
|
error: string | null
|
|
durationMs: number
|
|
}
|
|
|
|
export interface BatchCommandResponse {
|
|
command: string
|
|
total: number
|
|
successCount: number
|
|
failureCount: number
|
|
results: BatchCommandResult[]
|
|
}
|
|
|
|
export interface ConnectionStatusItem {
|
|
connectionId: number
|
|
connectionName: string
|
|
status: 'online' | 'offline'
|
|
message: string
|
|
durationMs: number
|
|
}
|
|
|
|
export interface ConnectionStatusResponse {
|
|
total: number
|
|
onlineCount: number
|
|
offlineCount: number
|
|
results: ConnectionStatusItem[]
|
|
}
|
|
|
|
export interface MonitorMetrics {
|
|
cpuUsage?: number | null
|
|
memTotal?: number | null
|
|
memUsed?: number | null
|
|
memUsage?: number | null
|
|
diskUsage?: number | null
|
|
load1?: number | null
|
|
cpuCores?: number | null
|
|
uptime?: string | null
|
|
}
|
|
|
|
export interface WorkspaceTab {
|
|
id: number
|
|
name: string
|
|
connection: Connection
|
|
}
|
|
|
|
export interface TransferTaskItem {
|
|
id: string
|
|
label: string
|
|
status: 'queued' | 'running' | 'success' | 'error' | 'cancelled'
|
|
progress: number
|
|
message: string
|
|
taskId?: string
|
|
}
|
|
|
|
export interface TransferTaskGroup {
|
|
id: string
|
|
mode: 'LOCAL_TO_MANY' | 'REMOTE_TO_MANY'
|
|
title: string
|
|
status: 'queued' | 'running' | 'success' | 'error' | 'cancelled'
|
|
progress: number
|
|
createdAt: string
|
|
items: TransferTaskItem[]
|
|
}
|