import { sessionManager } from '../ssh/session.js';
import { listDirectory } from '../ssh/sftp.js';
import type { SFTPListParams, ToolResponse } from '../types.js';
export async function sftpList(params: SFTPListParams): Promise<ToolResponse> {
try {
const client = sessionManager.getClient(params.sessionId);
if (!client) {
return {
success: false,
error: `Session not found or disconnected: ${params.sessionId}`,
};
}
const files = await listDirectory(client, params.remotePath);
return {
success: true,
data: {
path: params.remotePath,
files: files.map((f) => ({
name: f.filename,
size: f.size,
isDirectory: f.isDirectory,
isFile: f.isFile,
isSymbolicLink: f.isSymbolicLink,
permissions: f.permissions.toString(8).padStart(3, '0'),
modifyTime: f.modifyTime.toISOString(),
})),
count: files.length,
},
};
} catch (err) {
return {
success: false,
error: err instanceof Error ? err.message : String(err),
};
}
}