UNPKG

bmad-agent-init

Version:

Windsurf integration for BMAD-METHOD - automatic initialization of bmad-agent in projects

62 lines (51 loc) • 2.23 kB
// Using the browser's built-in fetch API // Get API base URL from environment variable or use default const API_BASE_URL = import.meta.env.VITE_API_BASE_URL || 'http://localhost:3000'; export interface FileNode { name: string; path: string; type: 'file' | 'directory'; children?: FileNode[]; } export async function readProjectDirectory(dirPath: string): Promise<FileNode> { try { // Ensure the path is properly encoded and doesn't have leading/trailing slashes let cleanPath = dirPath.replace(/^\/+|\/+$/g, ''); // If the path doesn't start with 'docs', prepend it if (!cleanPath.startsWith('docs')) { cleanPath = `docs${cleanPath ? '/' + cleanPath : ''}`; } const apiUrl = `${API_BASE_URL}/files?path=${encodeURIComponent(cleanPath)}`; console.log('Fetching directory:', apiUrl); const response = await fetch(apiUrl); if (!response.ok) { const errorData = await response.json().catch(() => ({})); throw new Error(errorData.error || `Failed to read directory: ${response.statusText}`); } return await response.json(); } catch (error) { console.error('Error reading directory:', error); throw error instanceof Error ? error : new Error('Failed to read directory'); } } export async function readFileContent(filePath: string): Promise<string> { try { // Ensure the path is properly encoded and doesn't have leading/trailing slashes let cleanPath = filePath.replace(/^\/+|\/+$/g, ''); // If the path doesn't start with 'docs', prepend it if (!cleanPath.startsWith('docs')) { cleanPath = `docs${cleanPath ? '/' + cleanPath : ''}`; } const apiUrl = `${API_BASE_URL}/files/content?path=${encodeURIComponent(cleanPath)}`; console.log('Fetching file content:', apiUrl); const response = await fetch(apiUrl); if (!response.ok) { const errorData = await response.json().catch(() => ({})); throw new Error(errorData.error || `Failed to read file: ${response.statusText}`); } return await response.text(); } catch (error) { console.error('Error reading file:', error); throw error instanceof Error ? error : new Error('Failed to read file'); } }