vibe-weaver 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +229 -0
- package/bin/vibe-weaver.js +8 -0
- package/dist/bin/vibe-weaver.js +8 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.js +2018 -0
- package/dist/index.js.map +1 -0
- package/package.json +66 -0
- package/src/agent/deploy.ts +171 -0
- package/src/agent/swarm.ts +167 -0
- package/src/agent/tasks.ts +205 -0
- package/src/auth/index.ts +273 -0
- package/src/config/index.ts +86 -0
- package/src/index.ts +797 -0
- package/src/lib/code-parser.ts +150 -0
- package/src/lib/vibe-api.ts +197 -0
- package/src/mcp/index.ts +273 -0
- package/src/tools/files.ts +279 -0
- package/src/tools/git.ts +498 -0
- package/src/tools/shell.ts +248 -0
- package/tsconfig.json +25 -0
- package/tsup.config.ts +34 -0
- package/vibe-weaver-1.0.0.tgz +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/config/index.ts","../src/auth/index.ts","../src/lib/code-parser.ts","../src/lib/vibe-api.ts","../src/tools/shell.ts","../src/tools/git.ts","../src/mcp/index.ts","../src/agent/swarm.ts","../src/agent/tasks.ts","../src/agent/deploy.ts","../src/index.ts","../src/tools/files.ts"],"names":["path","config","chalk","userInfo","fs","completed","failed","result","inquirer","MCPManager","getDefaultMCPServers","runSwarm","submitTask","getTaskStatus","displayTaskStatus","streamTaskLogs","waitForTask","deploy"],"mappings":"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","file":"index.js","sourcesContent":["/**\n * Configuration module for Vibe-Weaver CLI\n * Manages config storage in ~/.vibe-weaver/config.json\n */\n\nimport envPaths from 'env-paths';\nimport fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n\nexport interface CLIConfig {\n apiKey?: string;\n githubToken?: string;\n supabaseUrl?: string;\n defaultPlatform?: string;\n defaultMode?: string;\n autoApprove?: boolean;\n autoDeploy?: boolean;\n}\n\nexport interface UserInfo {\n email?: string;\n plan?: string;\n credits?: number;\n}\n\nconst CONFIG_FILE_NAME = 'config.json';\n\nfunction getConfigDir(): string {\n const paths = envPaths('vibe-weaver', { suffix: '' });\n if (!fs.existsSync(paths.config)) {\n fs.mkdirSync(paths.config, { recursive: true });\n }\n // Set restrictive permissions\n fs.chmodSync(paths.config, 0o700);\n return paths.config;\n}\n\nexport function getConfigPath(): string {\n return path.join(getConfigDir(), CONFIG_FILE_NAME);\n}\n\nexport function loadConfig(): CLIConfig {\n const configPath = getConfigPath();\n try {\n if (fs.existsSync(configPath)) {\n const data = fs.readFileSync(configPath, 'utf-8');\n return JSON.parse(data);\n }\n } catch (error) {\n console.warn('Warning: Failed to load config:', error);\n }\n return {};\n}\n\nexport function saveConfig(config: CLIConfig): void {\n const configPath = getConfigPath();\n try {\n fs.writeFileSync(configPath, JSON.stringify(config, null, 2), {\n mode: 0o600\n });\n } catch (error) {\n throw new Error(`Failed to save config: ${error}`);\n }\n}\n\nexport function clearConfig(): void {\n const configPath = getConfigPath();\n try {\n if (fs.existsSync(configPath)) {\n fs.unlinkSync(configPath);\n }\n } catch (error) {\n throw new Error(`Failed to clear config: ${error}`);\n }\n}\n\nexport function getDefaultSupabaseUrl(): string {\n // Default to vibe-weaver's Supabase instance\n return process.env.VW_SUPABASE_URL || 'https://mmtsoqelnsjleusqyknc.supabase.co';\n}\n\nexport function getSupabaseUrl(): string {\n const config = loadConfig();\n return config.supabaseUrl || getDefaultSupabaseUrl();\n}\n","/**\n * Auth module for Vibe-Weaver CLI\n * Handles API key and GitHub token storage via keytar with plaintext fallback\n */\n\nimport chalk from 'chalk';\nimport inquirer from 'inquirer';\nimport open from 'open';\nimport { loadConfig, saveConfig, getSupabaseUrl, getConfigPath } from '../config/index.js';\n\nconst SERVICE_NAME = 'vibe-weaver';\nconst API_KEY_ACCOUNT = 'api-key';\nconst GITHUB_TOKEN_ACCOUNT = 'github-token';\n\n// Try to use keytar for secure storage\nlet keytar: any = null;\ntry {\n keytar = require('keytar');\n} catch {\n // keytar not available, will use plaintext fallback\n}\n\nfunction getPlaintextPath(): string {\n return getConfigPath();\n}\n\n/**\n * Try to get a secret from keytar, fall back to config file\n */\nasync function getSecret(account: string): Promise<string | null> {\n if (keytar) {\n try {\n const value = await keytar.getPassword(SERVICE_NAME, account);\n if (value) return value;\n } catch {\n // Keytar failed, fall through to plaintext\n }\n }\n \n // Fallback to config file\n const config = loadConfig();\n if (account === API_KEY_ACCOUNT) return config.apiKey || null;\n if (account === GITHUB_TOKEN_ACCOUNT) return config.githubToken || null;\n return null;\n}\n\n/**\n * Store a secret in keytar, fall back to config file\n */\nasync function setSecret(account: string, value: string): Promise<void> {\n if (keytar) {\n try {\n await keytar.setPassword(SERVICE_NAME, account, value);\n // Also save to config as backup\n const config = loadConfig();\n if (account === API_KEY_ACCOUNT) config.apiKey = value;\n if (account === GITHUB_TOKEN_ACCOUNT) config.githubToken = value;\n saveConfig(config);\n return;\n } catch {\n // Keytar failed, fall through to plaintext\n }\n }\n \n // Fallback to config file\n const config = loadConfig();\n if (account === API_KEY_ACCOUNT) config.apiKey = value;\n if (account === GITHUB_TOKEN_ACCOUNT) config.githubToken = value;\n saveConfig(config);\n}\n\n/**\n * Remove a secret from keytar and config\n */\nasync function deleteSecret(account: string): Promise<void> {\n if (keytar) {\n try {\n await keytar.deletePassword(SERVICE_NAME, account);\n } catch {\n // Ignore errors\n }\n }\n \n const config = loadConfig();\n if (account === API_KEY_ACCOUNT) {\n config.apiKey = undefined;\n }\n if (account === GITHUB_TOKEN_ACCOUNT) {\n config.githubToken = undefined;\n }\n saveConfig(config);\n}\n\n/**\n * Check if user is logged in (has API key)\n */\nexport async function isLoggedIn(): Promise<boolean> {\n const apiKey = await getSecret(API_KEY_ACCOUNT);\n return !!apiKey;\n}\n\n/**\n * Get current API key\n */\nexport async function getApiKey(): Promise<string | null> {\n return getSecret(API_KEY_ACCOUNT);\n}\n\n/**\n * Get current GitHub token\n */\nexport async function getGithubToken(): Promise<string | null> {\n return getSecret(GITHUB_TOKEN_ACCOUNT);\n}\n\n/**\n * Interactive login - accept API key or open web page\n */\nexport async function login(options: { apiKey?: string; openBrowser?: boolean } = {}): Promise<void> {\n const supabaseUrl = getSupabaseUrl();\n \n if (options.apiKey) {\n // Direct API key provided\n await setSecret(API_KEY_ACCOUNT, options.apiKey);\n console.log(chalk.green('ā API key saved securely'));\n \n // Verify the key works\n const userInfo = await getUserInfo();\n if (userInfo) {\n console.log(chalk.green(`ā Logged in as ${userInfo.email} (${userInfo.plan} plan)`));\n }\n return;\n }\n \n if (options.openBrowser) {\n // Open the web page for API key creation\n const apiPageUrl = `${supabaseUrl}/dashboard/api`;\n console.log(chalk.blue('Opening browser to create API key...'));\n await open(apiPageUrl);\n }\n \n // Interactive prompt for API key\n const answers = await inquirer.prompt([\n {\n type: 'input',\n name: 'apiKey',\n message: 'Enter your Vibe-Weaver API key (vw_...):',\n validate: (input: string) => {\n if (!input.startsWith('vw_') && input.length < 10) {\n return 'Please enter a valid API key (starts with vw_)';\n }\n return true;\n }\n }\n ]);\n \n await setSecret(API_KEY_ACCOUNT, answers.apiKey);\n console.log(chalk.green('ā API key saved securely'));\n \n // Verify the key works\n const userInfo = await getUserInfo();\n if (userInfo) {\n console.log(chalk.green(`ā Logged in as ${userInfo.email} (${userInfo.plan} plan)`));\n }\n}\n\n/**\n * Login with GitHub token\n */\nexport async function loginGithub(token?: string): Promise<void> {\n if (!token) {\n const answers = await inquirer.prompt([\n {\n type: 'password',\n name: 'token',\n message: 'Enter your GitHub Personal Access Token:',\n validate: (input: string) => {\n if (input.length < 10) {\n return 'Please enter a valid GitHub token';\n }\n return true;\n }\n }\n ]);\n token = answers.token;\n }\n \n await setSecret(GITHUB_TOKEN_ACCOUNT, token);\n console.log(chalk.green('ā GitHub token saved securely'));\n}\n\n/**\n * Logout - clear all stored credentials\n */\nexport async function logout(): Promise<void> {\n await deleteSecret(API_KEY_ACCOUNT);\n await deleteSecret(GITHUB_TOKEN_ACCOUNT);\n console.log(chalk.green('ā Logged out successfully'));\n}\n\n/**\n * Get user info from the API\n */\nexport async function getUserInfo(): Promise<{ email: string; plan: string; credits: number } | null> {\n const apiKey = await getApiKey();\n if (!apiKey) return null;\n \n const supabaseUrl = getSupabaseUrl();\n \n try {\n const response = await fetch(`${supabaseUrl}/rest/v1/profiles?select=email,plan,credits`, {\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'apikey': `${supabaseUrl}/rest/v1/apikey`\n }\n });\n \n if (response.ok) {\n const data = await response.json();\n if (Array.isArray(data) && data.length > 0) {\n return {\n email: data[0].email || 'Unknown',\n plan: data[0].plan || 'free',\n credits: data[0].credits || 0\n };\n }\n }\n } catch (error) {\n console.warn('Warning: Could not fetch user info:', error);\n }\n \n return null;\n}\n\n/**\n * Show current user info (whoami)\n */\nexport async function whoami(): Promise<void> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n console.log(chalk.yellow('Not logged in. Run \"vibe-weaver login\" first.'));\n return;\n }\n \n const userInfo = await getUserInfo();\n if (userInfo) {\n console.log(chalk.bold('Logged in as:'));\n console.log(` Email: ${userInfo.email}`);\n console.log(` Plan: ${chalk.cyan(userInfo.plan)}`);\n console.log(` Credits: ${chalk.green(userInfo.credits.toString())}`);\n } else {\n console.log(chalk.yellow('API key is set but could not fetch user info.'));\n console.log(` API Key: ${chalk.grey(apiKey.substring(0, 10))}...`);\n }\n \n const githubToken = await getGithubToken();\n if (githubToken) {\n console.log(chalk.green('ā GitHub token configured'));\n } else {\n console.log(chalk.grey(' GitHub: Not configured (run \"vibe-weaver login --github\" to add)'));\n }\n}\n\nexport default {\n login,\n logout,\n whoami,\n loginGithub,\n isLoggedIn,\n getApiKey,\n getGithubToken,\n getUserInfo\n};\n","/**\n * Code Block Parser for Vibe-Weaver CLI\n * Parses markdown code blocks with language and file path\n * Format: ```lang path\\n...```\n */\n\nexport interface ParsedCodeBlock {\n language: string;\n path: string;\n content: string;\n startLine: number;\n endLine: number;\n}\n\nexport interface ParseResult {\n blocks: ParsedCodeBlock[];\n explanation?: string;\n quality?: {\n score: number;\n issues: string[];\n suggestions: string[];\n };\n stats?: {\n mode: string;\n parameters: string;\n architecture: string;\n inferenceTimeMs: number;\n };\n}\n\n/**\n * Parse code blocks from the AI response\n * Supports format: ```typescript src/App.tsx\\n...content...```\n */\nexport function parseCodeBlocks(response: string): ParseResult {\n const blocks: ParsedCodeBlock[] = [];\n \n // Regex to match code blocks with optional language and path\n // Format: ```[lang[ path]]\\n...content...\\n```\n const codeBlockRegex = /```(\\w+)?\\s+(.+?)\\n([\\s\\S]*?)```/g;\n \n let match;\n while ((match = codeBlockRegex.exec(response)) !== null) {\n const language = match[1] || 'text';\n const path = match[2].trim();\n const content = match[3];\n \n // Calculate line numbers\n const beforeBlock = response.substring(0, match.index);\n const startLine = (beforeBlock.match(/\\n/g) || []).length + 1;\n const endLine = startLine + (content.match(/\\n/g) || []).length;\n \n blocks.push({\n language,\n path,\n content,\n startLine,\n endLine\n });\n }\n \n // Try to extract explanation (text before first code block)\n let explanation: string | undefined;\n const firstCodeBlockIndex = response.indexOf('```');\n if (firstCodeBlockIndex > 0) {\n explanation = response.substring(0, firstCodeBlockIndex).trim();\n }\n \n return { blocks, explanation };\n}\n\n/**\n * Parse a single code block string\n */\nexport function parseSingleCodeBlock(blockStr: string): { language: string; path: string; content: string } | null {\n const match = blockStr.match(/^(\\w+)?\\s+(.+?)\\n([\\s\\S]*)$/);\n if (!match) return null;\n \n return {\n language: match[1] || 'text',\n path: match[2].trim(),\n content: match[3]\n };\n}\n\n/**\n * Write parsed code blocks to disk\n */\nexport async function writeCodeBlocks(\n blocks: ParsedCodeBlock[],\n baseDir: string,\n options: { dryRun?: boolean } = {}\n): Promise<{ success: string[]; failed: { path: string; error: string }[] }> {\n const fs = await import('fs/promises');\n const path = await import('path');\n \n const success: string[] = [];\n const failed: { path: string; error: string }[] = [];\n \n for (const block of blocks) {\n try {\n const fullPath = path.join(baseDir, block.path);\n const dir = path.dirname(fullPath);\n \n if (!options.dryRun) {\n // Create directory if it doesn't exist\n await fs.mkdir(dir, { recursive: true });\n \n // Write file\n await fs.writeFile(fullPath, block.content, 'utf-8');\n }\n \n success.push(block.path);\n } catch (error) {\n failed.push({\n path: block.path,\n error: error instanceof Error ? error.message : String(error)\n });\n }\n }\n \n return { success, failed };\n}\n\n/**\n * Generate a diff between old and new content\n */\nexport function generateDiff(oldContent: string, newContent: string, filePath: string): string {\n const diff = require('diff');\n const changes = diff.diffLines(oldContent, newContent);\n \n let result = `--- ${filePath}\\n+++ ${filePath}\\n`;\n \n for (const change of changes) {\n const prefix = change.added ? '+' : change.removed ? '-' : ' ';\n const lines = change.value.split('\\n').filter((l: string) => l.length > 0);\n for (const line of lines) {\n result += `${prefix}${line}\\n`;\n }\n }\n \n return result;\n}\n\nexport default {\n parseCodeBlocks,\n parseSingleCodeBlock,\n writeCodeBlocks,\n generateDiff\n};\n","/**\n * Vibe-Weaver API Client\n * Communicates with the vibe-ai-api edge function\n */\n\nimport { getApiKey, getGithubToken } from '../auth/index.js';\nimport { getSupabaseUrl } from '../config/index.js';\nimport { parseCodeBlocks, ParseResult } from './code-parser.js';\n\nexport type ModelId = 'fast' | 'balanced' | 'deep_reasoning' | 'refactor';\nexport type Platform = 'web' | 'roblox' | 'mobile' | 'desktop' | 'api';\nexport type Language = 'typescript' | 'javascript' | 'python' | 'lua' | 'rust';\n\nexport interface GenerateOptions {\n goal: string;\n platform?: Platform;\n language?: Language;\n modelId?: ModelId;\n context?: string;\n stream?: boolean;\n}\n\nexport interface GenerateResult {\n code: string;\n explanation: string;\n quality: {\n score: number;\n issues: string[];\n suggestions: string[];\n };\n stats: {\n mode: string;\n parameters: string;\n architecture: string;\n inferenceTimeMs: number;\n };\n parsed: ParseResult;\n}\n\nexport interface CreditInfo {\n cost: number;\n remaining: number;\n plan: string;\n}\n\n/**\n * Get credit cost for a given model\n */\nexport function getCreditCost(modelId: ModelId): number {\n const costs: Record<ModelId, number> = {\n 'fast': 0.2,\n 'balanced': 0.5,\n 'deep_reasoning': 1.0,\n 'refactor': 1.0\n };\n return costs[modelId] || 0.5;\n}\n\n/**\n * Call the vibe-ai-api to generate code\n */\nexport async function generateCode(options: GenerateOptions): Promise<GenerateResult> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n \n const supabaseUrl = getSupabaseUrl();\n const endpoint = `${supabaseUrl}/functions/v1/vibe-ai-api`;\n \n const payload = {\n goal: options.goal,\n platform: options.platform || 'web',\n language: options.language || 'typescript',\n modelId: options.modelId || 'balanced'\n };\n \n console.log(`\\n${'[Vibe-Weaver]'.padEnd(20)} Calling ${payload.modelId.toUpperCase()} model for: ${options.goal.substring(0, 50)}...`);\n \n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(payload)\n });\n \n if (!response.ok) {\n const error = await response.json().catch(() => ({ error: 'Unknown error' }));\n \n if (response.status === 401) {\n throw new Error('Authentication failed. Please run \"vibe-weaver login\" again.');\n }\n if (response.status === 402) {\n throw new Error(`Insufficient credits: ${error.message}`);\n }\n \n throw new Error(`API error: ${error.error || error.message}`);\n }\n \n const result = await response.json();\n \n // Parse code blocks from the response\n const parsed = parseCodeBlocks(result.code);\n \n return {\n code: result.code,\n explanation: result.explanation || '',\n quality: result.quality || { score: 0, issues: [], suggestions: [] },\n stats: result.stats || { mode: payload.modelId, parameters: 'N/A', architecture: 'N/A', inferenceTimeMs: 0 },\n parsed\n };\n}\n\n/**\n * Stream code generation (for future implementation)\n */\nexport async function* streamGenerate(options: GenerateOptions): AsyncGenerator<{ delta: string; done: boolean }> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n \n const supabaseUrl = getSupabaseUrl();\n const endpoint = `${supabaseUrl}/functions/v1/vibe-ai-api`;\n \n const payload = {\n goal: options.goal,\n platform: options.platform || 'web',\n language: options.language || 'typescript',\n modelId: options.modelId || 'balanced'\n };\n \n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify(payload)\n });\n \n if (!response.ok) {\n throw new Error(`API error: ${response.status}`);\n }\n \n // For now, yield the full result\n const result = await response.json();\n yield { delta: result.code, done: true };\n}\n\n/**\n * Get remaining credits for the user\n */\nexport async function getCredits(): Promise<CreditInfo> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n \n const supabaseUrl = getSupabaseUrl();\n \n try {\n // Try to get profile info\n const response = await fetch(`${supabaseUrl}/rest/v1/profiles?select=credits,plan`, {\n headers: {\n 'Authorization': `Bearer ${apiKey}`,\n 'apikey': `${supabaseUrl}/rest/v1/apikey`\n }\n });\n \n if (response.ok) {\n const data = await response.json();\n if (Array.isArray(data) && data.length > 0) {\n return {\n cost: 0,\n remaining: data[0].credits || 0,\n plan: data[0].plan || 'free'\n };\n }\n }\n } catch {\n // Ignore errors\n }\n \n return { cost: 0, remaining: 0, plan: 'unknown' };\n}\n\nexport default {\n generateCode,\n streamGenerate,\n getCredits,\n getCreditCost\n};\n\nexport type { ModelId, Platform, Language };\n","/**\n * Shell execution tool for Vibe-Weaver CLI\n * Runs real shell commands and streams output\n */\n\nimport { execa, execaCommand } from 'execa';\nimport chalk from 'chalk';\nimport ora from 'ora';\n\nexport interface CommandResult {\n success: boolean;\n command: string;\n exitCode: number;\n stdout: string;\n stderr: string;\n timedOut?: boolean;\n duration?: number;\n}\n\n/**\n * Run a shell command and capture output\n */\nexport async function runShell(\n command: string,\n options: {\n cwd?: string;\n env?: Record<string, string>;\n timeout?: number;\n shell?: boolean;\n dryRun?: boolean;\n } = {}\n): Promise<CommandResult> {\n const startTime = Date.now();\n \n if (options.dryRun) {\n console.log(chalk.grey(`[DRY-RUN] Would execute: ${command}`));\n return {\n success: true,\n command,\n exitCode: 0,\n stdout: '',\n stderr: '',\n duration: 0\n };\n }\n \n try {\n const result = await execaCommand(command, {\n cwd: options.cwd || process.cwd(),\n env: { ...process.env, ...options.env },\n timeout: options.timeout || 120000, // 2 minute default timeout\n shell: options.shell || true,\n reject: false,\n cleanup: true\n });\n \n const duration = Date.now() - startTime;\n \n return {\n success: result.exitCode === 0,\n command,\n exitCode: result.exitCode || 0,\n stdout: result.stdout || '',\n stderr: result.stderr || '',\n duration\n };\n } catch (error) {\n const duration = Date.now() - startTime;\n \n return {\n success: false,\n command,\n exitCode: 1,\n stdout: '',\n stderr: error instanceof Error ? error.message : String(error),\n timedOut: error instanceof Error && error.message.includes('timeout'),\n duration\n };\n }\n}\n\n/**\n * Run a shell command with streaming output (live display)\n */\nexport async function runShellStream(\n command: string,\n options: {\n cwd?: string;\n env?: Record<string, string>;\n timeout?: number;\n onStdout?: (data: string) => void;\n onStderr?: (data: string) => void;\n } = {}\n): Promise<CommandResult> {\n const startTime = Date.now();\n \n try {\n const childProcess = execa(command, {\n cwd: options.cwd || process.cwd(),\n env: { ...process.env, ...options.env },\n shell: true,\n cleanup: true\n });\n \n let stdout = '';\n let stderr = '';\n \n childProcess.stdout?.on('data', (data: Buffer) => {\n const text = data.toString();\n stdout += text;\n if (options.onStdout) {\n options.onStdout(text);\n } else {\n process.stdout.write(text);\n }\n });\n \n childProcess.stderr?.on('data', (data: Buffer) => {\n const text = data.toString();\n stderr += text;\n if (options.onStderr) {\n options.onStderr(text);\n } else {\n process.stderr.write(text);\n }\n });\n \n const result = await childProcess;\n const duration = Date.now() - startTime;\n \n return {\n success: result.exitCode === 0,\n command,\n exitCode: result.exitCode || 0,\n stdout,\n stderr,\n duration\n };\n } catch (error) {\n const duration = Date.now() - startTime;\n \n return {\n success: false,\n command,\n exitCode: 1,\n stdout: '',\n stderr: error instanceof Error ? error.message : String(error),\n duration\n };\n }\n}\n\n/**\n * Run a command with a spinner\n */\nexport async function runWithSpinner(\n command: string,\n options: {\n cwd?: string;\n env?: Record<string, string>;\n timeout?: number;\n message?: string;\n } = {}\n): Promise<CommandResult> {\n const spinner = ora(options.message || 'Running command...').start();\n \n try {\n const result = await runShell(command, options);\n \n if (result.success) {\n spinner.succeed(chalk.green('Command completed successfully'));\n } else {\n spinner.fail(chalk.red(`Command failed with exit code ${result.exitCode}`));\n }\n \n return result;\n } catch (error) {\n spinner.fail(chalk.red('Command failed'));\n throw error;\n }\n}\n\n/**\n * Common build commands\n */\nexport const buildCommands = {\n npmInstall: 'npm install',\n npmBuild: 'npm run build',\n npmTest: 'npm test',\n npmLint: 'npm run lint',\n npmTypecheck: 'npm run typecheck' || 'npx tsc --noEmit',\n pnpmInstall: 'pnpm install',\n pnpmBuild: 'pnpm run build',\n bunInstall: 'bun install',\n bunBuild: 'bun run build',\n yarnInstall: 'yarn install',\n yarnBuild: 'yarn run build'\n};\n\n/**\n * Detect package manager from lock files\n */\nexport function detectPackageManager(cwd: string = process.cwd()): 'npm' | 'pnpm' | 'yarn' | 'bun' {\n const fs = require('fs');\n \n if (fs.existsSync(`${cwd}/pnpm-lock.yaml`)) return 'pnpm';\n if (fs.existsSync(`${cwd}/yarn.lock`)) return 'yarn';\n if (fs.existsSync(`${cwd}/bun.lockb`)) return 'bun';\n return 'npm';\n}\n\n/**\n * Get the appropriate install command\n */\nexport function getInstallCommand(cwd: string = process.cwd()): string {\n const pm = detectPackageManager(cwd);\n \n switch (pm) {\n case 'pnpm': return buildCommands.pnpmInstall;\n case 'yarn': return buildCommands.yarnInstall;\n case 'bun': return buildCommands.bunInstall;\n default: return buildCommands.npmInstall;\n }\n}\n\n/**\n * Get the appropriate build command\n */\nexport function getBuildCommand(cwd: string = process.cwd()): string {\n const pm = detectPackageManager(cwd);\n \n switch (pm) {\n case 'pnpm': return buildCommands.pnpmBuild;\n case 'yarn': return buildCommands.yarnBuild;\n case 'bun': return buildCommands.bunBuild;\n default: return buildCommands.npmBuild;\n }\n}\n\nexport default {\n runShell,\n runShellStream,\n runWithSpinner,\n buildCommands,\n detectPackageManager,\n getInstallCommand,\n getBuildCommand\n};\n","/**\n * Git tools for Vibe-Weaver CLI\n * Handles local git operations and GitHub integration\n */\n\nimport simpleGit, { SimpleGit, LogResult, StatusResult } from 'simple-git';\nimport chalk from 'chalk';\nimport { getGithubToken } from '../auth/index.js';\nimport { getSupabaseUrl } from '../config/index.js';\n\nexport interface GitStatus {\n current: string | null;\n tracking: string | null;\n ahead: number;\n behind: number;\n staged: string[];\n modified: string[];\n untracked: string[];\n conflicted: string[];\n}\n\nexport interface GitCommitResult {\n success: boolean;\n commitSha?: string;\n message?: string;\n files?: string[];\n error?: string;\n}\n\nexport interface GitLogEntry {\n hash: string;\n date: string;\n message: string;\n author_name: string;\n author_email: string;\n}\n\n/**\n * Get a git instance for a directory\n */\nexport function getGit(cwd: string = process.cwd()): SimpleGit {\n return simpleGit(cwd);\n}\n\n/**\n * Get the current git status\n */\nexport async function getStatus(cwd: string = process.cwd()): Promise<GitStatus> {\n const git = getGit(cwd);\n const status = await git.status();\n \n return {\n current: status.current,\n tracking: status.tracking,\n ahead: status.ahead,\n behind: status.behind,\n staged: status.staged,\n modified: status.modified,\n untracked: status.not_added,\n conflicted: status.conflicted\n };\n}\n\n/**\n * Get the current branch name\n */\nexport async function getBranch(cwd: string = process.cwd()): Promise<string> {\n const git = getGit(cwd);\n const branchSummary = await git.branch();\n return branchSummary.current;\n}\n\n/**\n * Get recent commit history\n */\nexport async function getLog(cwd: string = process.cwd(), maxCount: number = 10): Promise<GitLogEntry[]> {\n const git = getGit(cwd);\n const log = await git.log({ maxCount });\n \n return log.all.map(entry => ({\n hash: entry.hash,\n date: entry.date,\n message: entry.message,\n author_name: entry.author_name,\n author_email: entry.author_email\n }));\n}\n\n/**\n * Stage files for commit\n */\nexport async function stage(files: string | string[], cwd: string = process.cwd()): Promise<void> {\n const git = getGit(cwd);\n await git.add(files);\n}\n\n/**\n * Stage all changes\n */\nexport async function stageAll(cwd: string = process.cwd()): Promise<void> {\n const git = getGit(cwd);\n await git.add('.');\n}\n\n/**\n * Commit changes with a message\n */\nexport async function commit(message: string, cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n const result = await git.commit(message);\n \n return {\n success: true,\n commitSha: result.commit,\n message: result.summary.changes + ' file(s) changed'\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Commit all changes with a conventional commit message\n */\nexport async function commitAll(message: string, cwd: string = process.cwd()): Promise<GitCommitResult> {\n await stageAll(cwd);\n return commit(message, cwd);\n}\n\n/**\n * Push changes to remote\n */\nexport async function push(options: { remote?: string; branch?: string; force?: boolean } = {}, cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n const result = await git.push(options.remote || 'origin', options.branch || 'HEAD', {\n '--force': options.force || false\n });\n \n return {\n success: true,\n commitSha: result.pushed[0]?.hash,\n message: 'Push successful'\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Pull changes from remote\n */\nexport async function pull(options: { remote?: string; branch?: string } = {}, cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n const result = await git.pull(options.remote || 'origin', options.branch || 'HEAD');\n \n return {\n success: true,\n message: 'Pull successful'\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Create a new branch\n */\nexport async function createBranch(branchName: string, options: { checkout?: boolean } = {}, cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n if (options.checkout) {\n await git.checkoutLocalBranch(branchName);\n } else {\n await git.branch([branchName]);\n }\n \n return {\n success: true,\n message: `Branch ${branchName} created`\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Checkout a branch\n */\nexport async function checkout(branchName: string, cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n await git.checkout(branchName);\n \n return {\n success: true,\n message: `Switched to branch ${branchName}`\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Get the diff between commits, branches, or working tree\n */\nexport async function getDiff(options: { staged?: boolean; from?: string; to?: string } = {}, cwd: string = process.cwd()): Promise<string> {\n const git = getGit(cwd);\n \n if (options.staged) {\n return git.diff(['--staged']);\n }\n \n if (options.from && options.to) {\n return git.diff([options.from, options.to]);\n }\n \n return git.diff();\n}\n\n/**\n * Check if a directory is a git repository\n */\nexport async function isRepo(cwd: string = process.cwd()): Promise<boolean> {\n const git = getGit(cwd);\n return git.checkIsRepo();\n}\n\n/**\n * Initialize a new git repository\n */\nexport async function init(cwd: string = process.cwd()): Promise<GitCommitResult> {\n const git = getGit(cwd);\n \n try {\n await git.init();\n \n return {\n success: true,\n message: 'Git repository initialized'\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Get the remote URL\n */\nexport async function getRemote(cwd: string = process.cwd()): Promise<string | null> {\n const git = getGit(cwd);\n const remotes = await git.getRemotes(true);\n \n const origin = remotes.find(r => r.name === 'origin');\n return origin?.refs.fetch || null;\n}\n\n// GitHub-specific operations via the platform's edge function\n\n/**\n * Call the github-ai-sync edge function\n */\nasync function callGithubSync(action: string, params: Record<string, any>): Promise<any> {\n const apiKey = await getGithubToken();\n if (!apiKey) {\n throw new Error('GitHub token not configured. Run \"vibe-weaver login --github\" first.');\n }\n \n const supabaseUrl = getSupabaseUrl();\n const endpoint = `${supabaseUrl}/functions/v1/github-ai-sync`;\n \n const response = await fetch(endpoint, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n action,\n token: apiKey,\n ...params\n })\n });\n \n if (!response.ok) {\n const error = await response.json().catch(() => ({ error: 'Unknown error' }));\n throw new Error(`GitHub API error: ${error.error || error.message}`);\n }\n \n return response.json();\n}\n\n/**\n * Commit files via GitHub API\n */\nexport async function commitFilesToGithub(options: {\n owner: string;\n repo: string;\n branch: string;\n files: { path: string; content: string; message: string }[];\n commitMessage: string;\n}): Promise<GitCommitResult> {\n try {\n const result = await callGithubSync('commit_files', options);\n \n return {\n success: true,\n commitSha: result.commitSha,\n message: `Committed ${result.files?.length || 0} file(s) to ${options.branch}`,\n files: result.files\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Create a branch via GitHub API\n */\nexport async function createBranchOnGithub(options: {\n owner: string;\n repo: string;\n newBranch: string;\n fromBranch: string;\n}): Promise<GitCommitResult> {\n try {\n const result = await callGithubSync('create_branch', options);\n \n return {\n success: true,\n commitSha: result.sha,\n message: `Created branch ${options.newBranch} from ${options.fromBranch}`\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Create a pull request via GitHub API\n */\nexport async function createPullRequestOnGithub(options: {\n owner: string;\n repo: string;\n title: string;\n body: string;\n head: string;\n base: string;\n}): Promise<{ success: boolean; prNumber?: number; prUrl?: string; error?: string }> {\n try {\n const result = await callGithubSync('create_pr', options);\n \n return {\n success: true,\n prNumber: result.prNumber,\n prUrl: result.prUrl\n };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Full PR workflow: create branch, commit changes, open PR\n */\nexport async function fullPRWorkflow(options: {\n owner: string;\n repo: string;\n branchName: string;\n baseBranch: string;\n files: { path: string; content: string; message: string }[];\n commitMessage: string;\n prTitle: string;\n prBody: string;\n}): Promise<{\n success: boolean;\n branch?: string;\n commitSha?: string;\n prUrl?: string;\n prNumber?: number;\n error?: string;\n}> {\n console.log(chalk.blue('\\n=== GitHub PR Workflow ==='));\n \n // Step 1: Create branch\n console.log(chalk.gray('1. Creating branch...'));\n const branchResult = await createBranchOnGithub({\n owner: options.owner,\n repo: options.repo,\n newBranch: options.branchName,\n fromBranch: options.baseBranch\n });\n \n if (!branchResult.success) {\n return { success: false, error: `Failed to create branch: ${branchResult.error}` };\n }\n \n console.log(chalk.green(` ā Branch ${options.branchName} created`));\n \n // Step 2: Commit files\n console.log(chalk.gray('2. Committing files...'));\n const commitResult = await commitFilesToGithub({\n owner: options.owner,\n repo: options.repo,\n branch: options.branchName,\n files: options.files,\n commitMessage: options.commitMessage\n });\n \n if (!commitResult.success) {\n return { success: false, error: `Failed to commit: ${commitResult.error}` };\n }\n \n console.log(chalk.green(` ā Committed ${commitResult.files?.length || 0} file(s)`));\n \n // Step 3: Create PR\n console.log(chalk.gray('3. Creating pull request...'));\n const prResult = await createPullRequestOnGithub({\n owner: options.owner,\n repo: options.repo,\n title: options.prTitle,\n body: options.prBody,\n head: options.branchName,\n base: options.baseBranch\n });\n \n if (!prResult.success) {\n return { success: false, error: `Failed to create PR: ${prResult.error}` };\n }\n \n console.log(chalk.green(` ā PR created: ${prResult.prUrl}`));\n console.log(chalk.blue('===========================\\n'));\n \n return {\n success: true,\n branch: options.branchName,\n commitSha: commitResult.commitSha,\n prUrl: prResult.prUrl,\n prNumber: prResult.prNumber\n };\n}\n\nexport default {\n getGit,\n getStatus,\n getBranch,\n getLog,\n stage,\n stageAll,\n commit,\n commitAll,\n push,\n pull,\n createBranch,\n checkout,\n getDiff,\n isRepo,\n init,\n getRemote,\n commitFilesToGithub,\n createBranchOnGithub,\n createPullRequestOnGithub,\n fullPRWorkflow\n};\n","/**\n * MCP Client for Vibe-Weaver CLI\n * Connects to MCP servers via JSON-RPC\n */\n\nimport chalk from 'chalk';\nimport { getSupabaseUrl } from '../config/index.js';\n\nexport interface MCPServer {\n name: string;\n url: string;\n enabled: boolean;\n}\n\nexport interface MCPTool {\n name: string;\n description: string;\n inputSchema: Record<string, any>;\n}\n\nexport interface MCPInitializeResult {\n protocolVersion: string;\n serverInfo: {\n name: string;\n version: string;\n };\n capabilities: Record<string, any>;\n}\n\nexport interface MCPToolsResult {\n tools: MCPTool[];\n}\n\n/**\n * Default MCP servers provided by Vibe-Weaver\n */\nexport function getDefaultMCPServers(): MCPServer[] {\n const supabaseUrl = getSupabaseUrl();\n return [\n { name: 'github-mcp', url: `${supabaseUrl}/functions/v1/github-mcp`, enabled: true },\n { name: 'filesystem-mcp', url: `${supabaseUrl}/functions/v1/filesystem-mcp`, enabled: true },\n { name: 'supabase-mcp', url: `${supabaseUrl}/functions/v1/supabase-mcp`, enabled: true },\n { name: 'roblox-mcp', url: `${supabaseUrl}/functions/v1/roblox-mcp`, enabled: true },\n { name: 'linear-mcp', url: `${supabaseUrl}/functions/v1/linear-mcp`, enabled: false },\n { name: 'notion-mcp', url: `${supabaseUrl}/functions/v1/notion-mcp`, enabled: false },\n { name: 'slack-mcp', url: `${supabaseUrl}/functions/v1/slack-mcp`, enabled: false },\n { name: 'discord-mcp', url: `${supabaseUrl}/functions/v1/discord-mcp`, enabled: false },\n { name: 'vercel-mcp', url: `${supabaseUrl}/functions/v1/vercel-mcp`, enabled: false },\n { name: 'stripe-mcp', url: `${supabaseUrl}/functions/v1/stripe-mcp`, enabled: false },\n ];\n}\n\n/**\n * MCP JSON-RPC client\n */\nexport class MCPClient {\n private url: string;\n private initialized: boolean = false;\n private serverInfo: MCPInitializeResult['serverInfo'] | null = null;\n private capabilities: Record<string, any> = {};\n private requestId: number = 0;\n\n constructor(url: string) {\n this.url = url;\n }\n\n /**\n * Send a JSON-RPC request\n */\n private async request(method: string, params?: Record<string, any>): Promise<any> {\n const id = ++this.requestId;\n \n const response = await fetch(this.url, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n },\n body: JSON.stringify({\n jsonrpc: '2.0',\n id,\n method,\n params: params || {}\n })\n });\n\n if (!response.ok) {\n throw new Error(`MCP request failed: ${response.status} ${response.statusText}`);\n }\n\n const result = await response.json();\n \n if (result.error) {\n throw new Error(`MCP error: ${result.error.message}`);\n }\n\n return result.result;\n }\n\n /**\n * Initialize the MCP connection\n */\n async initialize(): Promise<MCPInitializeResult> {\n try {\n const result = await this.request('initialize', {\n protocolVersion: '2024-11-05',\n capabilities: {},\n clientInfo: {\n name: 'vibe-weaver-cli',\n version: '1.0.0'\n }\n });\n\n this.initialized = true;\n this.serverInfo = result.serverInfo;\n this.capabilities = result.capabilities;\n\n return result;\n } catch (error) {\n throw new Error(`Failed to initialize MCP server: ${error instanceof Error ? error.message : error}`);\n }\n }\n\n /**\n * List available tools\n */\n async listTools(): Promise<MCPToolsResult> {\n if (!this.initialized) {\n await this.initialize();\n }\n\n return this.request('tools/list');\n }\n\n /**\n * Call a tool\n */\n async callTool(name: string, args: Record<string, any>): Promise<any> {\n if (!this.initialized) {\n await this.initialize();\n }\n\n return this.request('tools/call', {\n name,\n arguments: args\n });\n }\n\n /**\n * Check if server is alive\n */\n async ping(): Promise<boolean> {\n try {\n await this.request('ping');\n return true;\n } catch {\n return false;\n }\n }\n\n getServerInfo(): MCPInitializeResult['serverInfo'] | null {\n return this.serverInfo;\n }\n\n isInitialized(): boolean {\n return this.initialized;\n }\n}\n\n/**\n * MCP Manager - handles multiple MCP servers\n */\nexport class MCPManager {\n private clients: Map<string, MCPClient> = new Map();\n private servers: MCPServer[] = [];\n\n constructor(servers?: MCPServer[]) {\n this.servers = servers || getDefaultMCPServers();\n }\n\n /**\n * Initialize all enabled MCP servers\n */\n async initializeAll(): Promise<{ success: string[]; failed: { name: string; error: string }[] }> {\n const success: string[] = [];\n const failed: { name: string; error: string }[] = [];\n\n for (const server of this.servers) {\n if (!server.enabled) continue;\n\n const client = new MCPClient(server.url);\n \n try {\n const result = await client.initialize();\n this.clients.set(server.name, client);\n success.push(`${server.name} (${result.serverInfo.version})`);\n console.log(chalk.green(`ā Connected to ${server.name}`));\n } catch (error) {\n failed.push({\n name: server.name,\n error: error instanceof Error ? error.message : String(error)\n });\n console.log(chalk.red(`ā Failed to connect to ${server.name}`));\n }\n }\n\n return { success, failed };\n }\n\n /**\n * List all available tools from connected servers\n */\n async listAllTools(): Promise<{ server: string; tools: MCPTool[] }[]> {\n const results: { server: string; tools: MCPTool[] }[] = [];\n\n for (const [name, client] of this.clients) {\n try {\n const result = await client.listTools();\n results.push({ server: name, tools: result.tools });\n } catch (error) {\n console.warn(chalk.yellow(`Warning: Failed to list tools from ${name}: ${error}`));\n }\n }\n\n return results;\n }\n\n /**\n * Call a tool on a specific server\n */\n async callTool(serverName: string, toolName: string, args: Record<string, any>): Promise<any> {\n const client = this.clients.get(serverName);\n \n if (!client) {\n throw new Error(`MCP server \"${serverName}\" not connected`);\n }\n\n return client.callTool(toolName, args);\n }\n\n /**\n * Get status of all servers\n */\n getStatus(): { name: string; connected: boolean; tools: number }[] {\n const status: { name: string; connected: boolean; tools: number }[] = [];\n \n for (const server of this.servers) {\n const client = this.clients.get(server.name);\n status.push({\n name: server.name,\n connected: !!client && client.isInitialized(),\n tools: 0 // Would need to cache tool list\n });\n }\n\n return status;\n }\n\n /**\n * Enable/disable a server\n */\n setServerEnabled(name: string, enabled: boolean): void {\n const server = this.servers.find(s => s.name === name);\n if (server) {\n server.enabled = enabled;\n }\n }\n}\n\nexport default {\n MCPClient,\n MCPManager,\n getDefaultMCPServers\n};\n","/**\n * Sub-agent Swarm for Vibe-Weaver CLI\n * Runs multiple agents in parallel for complex tasks\n */\n\nimport chalk from 'chalk';\nimport { generateCode } from '../lib/vibe-api.js';\nimport { writeCodeBlocks } from '../lib/code-parser.js';\nimport { runShell } from '../tools/shell.js';\nimport path from 'path';\n\nexport interface AgentTask {\n id: string;\n name: string;\n goal: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n result?: string;\n error?: string;\n}\n\nexport interface SwarmResult {\n success: boolean;\n completed: number;\n failed: number;\n results: AgentTask[];\n}\n\n/**\n * Split a complex goal into sub-tasks for parallel execution\n */\nexport async function planSubTasks(goal: string): Promise<string[]> {\n const result = await generateCode({\n goal: `Break down this complex goal into 3-5 independent subtasks that can run in parallel. List only the subtask descriptions, one per line:\\n\\n${goal}`,\n modelId: 'balanced'\n });\n\n // Parse subtasks from result\n const lines = result.explanation.split('\\n').filter(line => line.trim().length > 0);\n return lines.slice(0, 5); // Limit to 5 subtasks\n}\n\n/**\n * Execute a single subtask\n */\nasync function executeSubTask(task: AgentTask, baseDir: string): Promise<AgentTask> {\n task.status = 'running';\n \n try {\n console.log(chalk.gray(`[${task.id}] Starting: ${task.name}`));\n \n const result = await generateCode({\n goal: task.goal,\n modelId: 'balanced'\n });\n\n // Write generated files\n if (result.parsed.blocks.length > 0) {\n const writeResult = await writeCodeBlocks(result.parsed.blocks, baseDir);\n \n if (writeResult.failed.length > 0) {\n task.status = 'failed';\n task.error = `Failed to write files: ${writeResult.failed.map(f => f.path).join(', ')}`;\n } else {\n task.status = 'completed';\n task.result = `Generated ${writeResult.success.length} files: ${writeResult.success.join(', ')}`;\n }\n } else {\n task.status = 'completed';\n task.result = result.explanation;\n }\n\n console.log(chalk.green(`[${task.id}] Completed: ${task.name}`));\n } catch (error) {\n task.status = 'failed';\n task.error = error instanceof Error ? error.message : String(error);\n console.log(chalk.red(`[${task.id}] Failed: ${task.name} - ${task.error}`));\n }\n\n return task;\n}\n\n/**\n * Run multiple agents in parallel (swarm)\n */\nexport async function runSwarm(goal: string, options: {\n maxParallel?: number;\n baseDir?: string;\n} = {}): Promise<SwarmResult> {\n const maxParallel = options.maxParallel || 3;\n const baseDir = options.baseDir || process.cwd();\n\n console.log(chalk.cyan('\\nšÆ Vibe-Weaver Agent Swarm'));\n console.log(chalk.gray(`Planning subtasks for: ${goal.substring(0, 50)}...\\n`));\n\n // Plan subtasks\n const subtaskGoals = await planSubTasks(goal);\n \n if (subtaskGoals.length === 0) {\n console.log(chalk.yellow('Could not generate subtasks. Running as single task.'));\n subtaskGoals.push(goal);\n }\n\n console.log(chalk.gray(`Found ${subtaskGoals.length} subtasks:\\n`));\n for (let i = 0; i < subtaskGoals.length; i++) {\n console.log(chalk.gray(` ${i + 1}. ${subtaskGoals[i].substring(0, 60)}...`));\n }\n console.log();\n\n // Create tasks\n const tasks: AgentTask[] = subtaskGoals.map((subGoal, i) => ({\n id: `agent-${i + 1}`,\n name: `Agent ${i + 1}`,\n goal: subGoal,\n status: 'pending' as const\n }));\n\n // Run tasks in batches\n const results: AgentTask[] = [];\n \n for (let i = 0; i < tasks.length; i += maxParallel) {\n const batch = tasks.slice(i, i + maxParallel);\n \n console.log(chalk.cyan(`\\n--- Running batch ${Math.floor(i / maxParallel) + 1} (${batch.length} agents) ---\\n`));\n \n // Execute batch in parallel\n const batchResults = await Promise.all(\n batch.map(task => executeSubTask(task, baseDir))\n );\n \n results.push(...batchResults);\n\n // Show progress\n const completed = results.filter(t => t.status === 'completed').length;\n const failed = results.filter(t => t.status === 'failed').length;\n console.log(chalk.gray(`\\nProgress: ${completed} completed, ${failed} failed\\n`));\n }\n\n // Summary\n const completed = results.filter(t => t.status === 'completed').length;\n const failed = results.filter(t => t.status === 'failed').length;\n\n console.log(chalk.cyan('\\n=== Swarm Results ==='));\n console.log(chalk.green(`Completed: ${completed}`));\n if (failed > 0) {\n console.log(chalk.red(`Failed: ${failed}`));\n }\n\n for (const task of results) {\n if (task.status === 'completed') {\n console.log(chalk.green(` ā ${task.name}: ${task.result?.substring(0, 50)}...`));\n } else if (task.status === 'failed') {\n console.log(chalk.red(` ā ${task.name}: ${task.error}`));\n }\n }\n\n return {\n success: failed === 0,\n completed,\n failed,\n results\n };\n}\n\nexport default {\n runSwarm,\n planSubTasks\n};\n","/**\n * Background Tasks for Vibe-Weaver CLI\n * Submit server-side runs and check status\n */\n\nimport chalk from 'chalk';\nimport { getApiKey } from '../auth/index.js';\nimport { getSupabaseUrl } from '../config/index.js';\n\nexport interface TaskSubmission {\n id?: string;\n goal: string;\n platform?: string;\n language?: string;\n modelId?: string;\n}\n\nexport interface TaskStatus {\n id: string;\n status: 'pending' | 'running' | 'completed' | 'failed';\n progress?: number;\n result?: string;\n error?: string;\n createdAt: string;\n updatedAt: string;\n}\n\n/**\n * Submit a background task to the server\n */\nexport async function submitTask(options: TaskSubmission): Promise<{ id: string; status: string }> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n\n const supabaseUrl = getSupabaseUrl();\n \n console.log(chalk.gray(`\\nSubmitting background task: ${options.goal.substring(0, 50)}...`));\n\n const response = await fetch(`${supabaseUrl}/functions/v1/automation-executor`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n goal: options.goal,\n platform: options.platform || 'web',\n language: options.language || 'typescript',\n modelId: options.modelId || 'balanced'\n })\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ error: 'Unknown error' }));\n throw new Error(`Failed to submit task: ${error.error || error.message}`);\n }\n\n const result = await response.json();\n \n console.log(chalk.green(`ā Task submitted: ${result.id}`));\n console.log(chalk.gray(` Use \"vibe-weaver task status ${result.id}\" to check progress\\n`));\n\n return {\n id: result.id,\n status: result.status || 'pending'\n };\n}\n\n/**\n * Get task status\n */\nexport async function getTaskStatus(taskId: string): Promise<TaskStatus> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n\n const supabaseUrl = getSupabaseUrl();\n\n const response = await fetch(`${supabaseUrl}/functions/v1/automation-executor?id=${taskId}`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${apiKey}`\n }\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ error: 'Unknown error' }));\n throw new Error(`Failed to get task status: ${error.error || error.message}`);\n }\n\n return response.json();\n}\n\n/**\n * Stream task logs\n */\nexport async function* streamTaskLogs(taskId: string): AsyncGenerator<string> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n\n const supabaseUrl = getSupabaseUrl();\n \n const response = await fetch(`${supabaseUrl}/functions/v1/automation-executor/logs?id=${taskId}`, {\n method: 'GET',\n headers: {\n 'Authorization': `Bearer ${apiKey}`\n }\n });\n\n if (!response.ok) {\n throw new Error(`Failed to get task logs: ${response.status}`);\n }\n\n const reader = response.body?.getReader();\n const decoder = new TextDecoder();\n\n if (!reader) {\n throw new Error('Could not read response body');\n }\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n \n if (done) break;\n \n yield decoder.decode(value);\n }\n } finally {\n reader.releaseLock();\n }\n}\n\n/**\n * Poll task status until completion\n */\nexport async function waitForTask(taskId: string, options: {\n pollInterval?: number;\n onProgress?: (status: TaskStatus) => void;\n} = {}): Promise<TaskStatus> {\n const pollInterval = options.pollInterval || 5000;\n \n while (true) {\n const status = await getTaskStatus(taskId);\n \n if (options.onProgress) {\n options.onProgress(status);\n }\n\n if (status.status === 'completed') {\n return status;\n }\n \n if (status.status === 'failed') {\n throw new Error(`Task failed: ${status.error}`);\n }\n\n // Wait before next poll\n await new Promise(resolve => setTimeout(resolve, pollInterval));\n }\n}\n\n/**\n * Display task status nicely\n */\nexport function displayTaskStatus(status: TaskStatus): void {\n const statusColor: Record<string, (s: string) => string> = {\n pending: chalk.yellow,\n running: chalk.blue,\n completed: chalk.green,\n failed: chalk.red\n };\n\n console.log(chalk.bold(`\\nTask: ${status.id}`));\n console.log(chalk.gray(`Status: ${statusColor[status.status] ? statusColor[status.status](status.status) : chalk.gray(status.status)}`));\n \n if (status.progress !== undefined) {\n console.log(chalk.gray(`Progress: ${status.progress}%`));\n }\n \n if (status.result) {\n console.log(chalk.gray(`\\nResult:`));\n console.log(status.result);\n }\n \n if (status.error) {\n console.log(chalk.red(`\\nError: ${status.error}`));\n }\n \n console.log(chalk.gray(`\\nCreated: ${new Date(status.createdAt).toLocaleString()}`));\n console.log(chalk.gray(`Updated: ${new Date(status.updatedAt).toLocaleString()}`));\n}\n\nexport default {\n submitTask,\n getTaskStatus,\n streamTaskLogs,\n waitForTask,\n displayTaskStatus\n};\n","/**\n * Deploy functionality for Vibe-Weaver CLI\n * Deploy projects and verify against live URL\n */\n\nimport chalk from 'chalk';\nimport { getApiKey } from '../auth/index.js';\nimport { getSupabaseUrl } from '../config/index.js';\nimport { runShell } from '../tools/shell.js';\n\nexport interface DeployOptions {\n projectId?: string;\n platform?: string;\n siteUrl?: string;\n}\n\nexport interface DeployResult {\n success: boolean;\n url?: string;\n projectId?: string;\n error?: string;\n}\n\n/**\n * Submit deployment\n */\nexport async function submitDeploy(options: DeployOptions): Promise<DeployResult> {\n const apiKey = await getApiKey();\n if (!apiKey) {\n throw new Error('Not logged in. Run \"vibe-weaver login\" first.');\n }\n\n const supabaseUrl = getSupabaseUrl();\n \n console.log(chalk.cyan('\\nš Submitting deployment...'));\n\n const response = await fetch(`${supabaseUrl}/functions/v1/deploy-bridge`, {\n method: 'POST',\n headers: {\n 'Content-Type': 'application/json',\n 'Authorization': `Bearer ${apiKey}`\n },\n body: JSON.stringify({\n projectId: options.projectId,\n platform: options.platform || 'web'\n })\n });\n\n if (!response.ok) {\n const error = await response.json().catch(() => ({ error: 'Unknown error' }));\n return {\n success: false,\n error: error.error || error.message\n };\n }\n\n const result = await response.json();\n \n console.log(chalk.green(`ā Deployment submitted`));\n console.log(chalk.gray(` URL: ${result.url}`));\n\n return {\n success: true,\n url: result.url,\n projectId: result.projectId\n };\n}\n\n/**\n * Verify deployment by checking the URL\n */\nexport async function verifyDeploy(url: string, options: {\n timeout?: number;\n expectedStatus?: number;\n} = {}): Promise<{ success: boolean; status?: number; error?: string }> {\n const timeout = options.timeout || 60000;\n const expectedStatus = options.expectedStatus || 200;\n \n console.log(chalk.gray(`\\nVerifying deployment at ${url}...`));\n\n const startTime = Date.now();\n \n while (Date.now() - startTime < timeout) {\n try {\n const response = await fetch(url, { method: 'HEAD' });\n \n if (response.status === expectedStatus) {\n console.log(chalk.green(`ā Deployment verified (${response.status})`));\n return { success: true, status: response.status };\n }\n \n // If we get 404, the site might still be deploying\n if (response.status === 404) {\n console.log(chalk.yellow(` Still deploying... (${response.status})`));\n } else {\n console.log(chalk.yellow(` Unexpected status: ${response.status}`));\n }\n } catch (error) {\n console.log(chalk.yellow(` Waiting for deployment...`));\n }\n \n await new Promise(resolve => setTimeout(resolve, 5000));\n }\n\n console.log(chalk.red(`ā Deployment verification timed out`));\n return {\n success: false,\n error: 'Deployment verification timed out'\n };\n}\n\n/**\n * Full deploy and verify workflow\n */\nexport async function deploy(options: {\n projectId?: string;\n platform?: string;\n verify?: boolean;\n cwd?: string;\n} = {}): Promise<DeployResult> {\n const verify = options.verify !== false;\n \n console.log(chalk.cyan('\\nš Vibe-Weaver Deploy'));\n \n // First build locally\n if (options.cwd) {\n console.log(chalk.gray('\\nBuilding project locally...'));\n const buildResult = await runShell('npm run build', { cwd: options.cwd });\n \n if (!buildResult.success) {\n return {\n success: false,\n error: `Build failed: ${buildResult.stderr}`\n };\n }\n \n console.log(chalk.green('ā Build successful'));\n }\n \n // Submit deployment\n console.log(chalk.gray('\\nSubmitting to Vibe-Weaver...'));\n const deployResult = await submitDeploy({\n projectId: options.projectId,\n platform: options.platform\n });\n\n if (!deployResult.success) {\n return deployResult;\n }\n\n // Verify if requested\n if (verify && deployResult.url) {\n const verifyResult = await verifyDeploy(deployResult.url);\n \n if (!verifyResult.success) {\n return {\n success: false,\n url: deployResult.url,\n error: verifyResult.error\n };\n }\n }\n\n return deployResult;\n}\n\nexport default {\n submitDeploy,\n verifyDeploy,\n deploy\n};\n","/**\n * Vibe-Weaver CLI - Main Entry Point\n * A production-ready terminal agent that beats Claude Code\n */\n\nimport { Command } from 'commander';\nimport chalk from 'chalk';\nimport { login, logout, whoami, loginGithub, isLoggedIn } from './auth/index.js';\nimport { generateCode, getCreditCost } from './lib/vibe-api.js';\nimport { writeCodeBlocks } from './lib/code-parser.js';\nimport { readFile, writeFile, listDir, grep } from './tools/files.js';\nimport { runShell, getInstallCommand, getBuildCommand } from './tools/shell.js';\nimport { \n getStatus, getBranch, commit, commitAll, push, pull, \n getDiff, isRepo, fullPRWorkflow \n} from './tools/git.js';\nimport inquirer from 'inquirer';\nimport path from 'path';\n\nconst program = new Command();\n\nprogram\n .name('vibe-weaver')\n .description('Vibe-Weaver CLI - Production-ready terminal agent that beats Claude Code')\n .version('1.0.0');\n\n// ============================================\n// Auth Commands\n// ============================================\n\nprogram\n .command('login')\n .description('Log in with your Vibe-Weaver API key')\n .option('-k, --api-key <key>', 'API key (vw_...)')\n .option('-o, --open', 'Open browser to create API key')\n .option('-g, --github', 'Also configure GitHub token')\n .action(async (options) => {\n try {\n await login({ apiKey: options.apiKey, openBrowser: options.open });\n \n if (options.github) {\n await loginGithub();\n }\n } catch (error) {\n console.error(chalk.red('Login failed:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('logout')\n .description('Log out and clear stored credentials')\n .action(async () => {\n try {\n await logout();\n } catch (error) {\n console.error(chalk.red('Logout failed:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('whoami')\n .description('Show current user info and credits')\n .action(async () => {\n try {\n await whoami();\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Generate Commands\n// ============================================\n\nprogram\n .command('generate')\n .description('Generate code using Vibe-Weaver AI')\n .option('-g, --goal <text>', 'Goal/prompt for code generation')\n .option('-p, --platform <type>', 'Platform: web, roblox, mobile, desktop, api', 'web')\n .option('-l, --language <lang>', 'Language: typescript, javascript, python, lua, rust', 'typescript')\n .option('-m, --mode <mode>', 'Model: fast, balanced, deep_reasoning, refactor', 'balanced')\n .option('-o, --out <dir>', 'Output directory', '.')\n .option('-y, --yes', 'Auto-approve file writes')\n .option('-d, --dry-run', 'Show what would be generated without writing')\n .action(async (options) => {\n if (!options.goal) {\n console.error(chalk.red('Error: --goal is required'));\n process.exit(1);\n }\n \n try {\n const loggedIn = await isLoggedIn();\n if (!loggedIn) {\n console.error(chalk.red('Not logged in. Run \"vibe-weaver login\" first.'));\n process.exit(1);\n }\n \n console.log(chalk.cyan('\\nšØ Vibe-Weaver Code Generation'));\n console.log(chalk.gray(`Mode: ${options.mode} | Platform: ${options.platform} | Language: ${options.language}`));\n console.log(chalk.gray(`Cost: ~${getCreditCost(options.mode)} credits\\n`));\n \n const result = await generateCode({\n goal: options.goal,\n platform: options.platform,\n language: options.language,\n modelId: options.mode\n });\n \n console.log(chalk.gray('Explanation:'));\n console.log(result.explanation);\n \n console.log(chalk.gray('\\nQuality Score:'), `${result.quality.score}/100`);\n \n if (result.parsed.blocks.length > 0) {\n console.log(chalk.gray('\\nGenerated Files:'));\n for (const block of result.parsed.blocks) {\n console.log(` - ${chalk.green(block.path)} (${block.language})`);\n }\n \n if (!options.dryRun) {\n const writeResult = await writeCodeBlocks(result.parsed.blocks, path.resolve(options.out));\n \n console.log(chalk.gray('\\nWritten:'));\n for (const file of writeResult.success) {\n console.log(` ā ${file}`);\n }\n \n if (writeResult.failed.length > 0) {\n console.log(chalk.red('\\nFailed:'));\n for (const file of writeResult.failed) {\n console.log(` ā ${file.path}: ${file.error}`);\n }\n }\n } else {\n console.log(chalk.yellow('\\n[DRY-RUN] Files not written'));\n }\n }\n \n console.log(chalk.green('\\nā Generation complete'));\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Agent Commands\n// ============================================\n\nprogram\n .command('run')\n .description('Run the interactive agent loop (REPL)')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-y, --yes', 'Auto-approve all operations')\n .option('-d, --dry-run', 'Preview changes without applying')\n .action(async (options) => {\n const loggedIn = await isLoggedIn();\n if (!loggedIn) {\n console.error(chalk.red('Not logged in. Run \"vibe-weaver login\" first.'));\n process.exit(1);\n }\n \n console.log(chalk.cyan('šÆ Vibe-Weaver Interactive Agent'));\n console.log(chalk.gray('Type your goal or task. Press Ctrl+C to exit.\\n'));\n \n // Interactive REPL\n const readline = await import('readline');\n const rl = readline.createInterface({\n input: process.stdin,\n output: process.stdout\n });\n \n const askQuestion = () => {\n rl.question(chalk.green('\\n> '), async (input) => {\n if (!input.trim()) {\n askQuestion();\n return;\n }\n \n if (input.toLowerCase() === 'exit' || input.toLowerCase() === 'quit') {\n rl.close();\n return;\n }\n \n try {\n console.log(chalk.gray('\\nGenerating code...'));\n const result = await generateCode({ goal: input });\n \n if (result.parsed.blocks.length > 0) {\n const writeResult = await writeCodeBlocks(result.parsed.blocks, options.cwd);\n \n console.log(chalk.green('\\nā Generated files:'));\n for (const file of writeResult.success) {\n console.log(` ā ${file}`);\n }\n \n if (writeResult.failed.length > 0) {\n console.log(chalk.red('\\nā Failed:'));\n for (const file of writeResult.failed) {\n console.log(` ā ${file.path}: ${file.error}`);\n }\n }\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n }\n \n askQuestion();\n });\n };\n \n askQuestion();\n });\n\n// ============================================\n// File Commands\n// ============================================\n\nprogram\n .command('read')\n .description('Read a file')\n .argument('<file>', 'File path to read')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (file, options) => {\n try {\n const result = await readFile(file, options.cwd);\n if (result.success && result.content) {\n console.log(result.content);\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('write')\n .description('Write content to a file')\n .argument('<file>', 'File path to write')\n .argument('<content>', 'Content to write')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-d, --dry-run', 'Preview without writing')\n .action(async (file, content, options) => {\n try {\n const result = await writeFile(file, content, options.cwd, { dryRun: options.dryRun });\n if (result.success) {\n console.log(chalk.green(`ā Written to ${file}`));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('ls')\n .description('List files in a directory')\n .argument('[dir]', 'Directory to list', '.')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (dir, options) => {\n try {\n const entries = await listDir(dir, options.cwd);\n for (const entry of entries) {\n const prefix = entry.isDirectory ? chalk.blue('š') : chalk.gray('š');\n console.log(`${prefix} ${entry.path}`);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('grep')\n .description('Search for a pattern in files')\n .argument('<pattern>', 'Pattern to search for')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-r, --recursive', 'Search recursively', true)\n .action(async (pattern, options) => {\n try {\n const results = await grep(pattern, options.cwd, { recursive: options.recursive });\n if (results.length === 0) {\n console.log(chalk.yellow('No matches found'));\n return;\n }\n \n for (const result of results) {\n console.log(`${chalk.gray(`${result.file}:${result.line}`)} ${result.content}`);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Shell Commands\n// ============================================\n\nprogram\n .command('exec')\n .description('Execute a shell command')\n .argument('<command>', 'Command to execute')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-d, --dry-run', 'Preview without executing')\n .action(async (command, options) => {\n try {\n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY-RUN] Would execute: ${command}`));\n return;\n }\n \n console.log(chalk.gray(`$ ${command}`));\n const result = await runShell(command, { cwd: options.cwd });\n \n if (result.stdout) console.log(result.stdout);\n if (result.stderr) console.error(chalk.red(result.stderr));\n \n process.exit(result.exitCode);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Git Commands\n// ============================================\n\nprogram\n .command('status')\n .description('Show git status')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (options) => {\n try {\n const status = await getStatus(options.cwd);\n \n console.log(chalk.gray(`Branch: ${status.current || '(none)'}`));\n if (status.tracking) {\n console.log(chalk.gray(`Tracking: ${status.tracking}`));\n }\n \n if (status.staged.length > 0) {\n console.log(chalk.green('\\nStaged:'));\n for (const file of status.staged) {\n console.log(` ${chalk.green('+')} ${file}`);\n }\n }\n \n if (status.modified.length > 0) {\n console.log(chalk.yellow('\\nModified:'));\n for (const file of status.modified) {\n console.log(` ${chalk.yellow('M')} ${file}`);\n }\n }\n \n if (status.untracked.length > 0) {\n console.log(chalk.gray('\\nUntracked:'));\n for (const file of status.untracked) {\n console.log(` ${chalk.gray('?')} ${file}`);\n }\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('commit')\n .description('Commit changes with a message')\n .argument('<message>', 'Commit message')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-a, --all', 'Stage all changes', false)\n .action(async (message, options) => {\n try {\n if (options.all) {\n const result = await commitAll(message, options.cwd);\n if (result.success) {\n console.log(chalk.green(`ā Committed: ${result.message}`));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } else {\n const result = await commit(message, options.cwd);\n if (result.success) {\n console.log(chalk.green(`ā Committed: ${result.message}`));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('push')\n .description('Push to remote')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-f, --force', 'Force push', false)\n .action(async (options) => {\n try {\n const result = await push({ force: options.force }, options.cwd);\n if (result.success) {\n console.log(chalk.green('ā Pushed successfully'));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('pull')\n .description('Pull from remote')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (options) => {\n try {\n const result = await pull({}, options.cwd);\n if (result.success) {\n console.log(chalk.green('ā Pulled successfully'));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// PR Commands\n// ============================================\n\nprogram\n .command('pr')\n .description('Create a pull request with AI-generated summary')\n .option('-t, --title <title>', 'PR title')\n .option('-b, --body <body>', 'PR body')\n .option('-o, --owner <owner>', 'Repository owner')\n .option('-r, --repo <repo>', 'Repository name')\n .option('-B, --base <branch>', 'Base branch', 'main')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (options) => {\n try {\n const isGitRepo = await isRepo(options.cwd);\n if (!isGitRepo) {\n console.error(chalk.red('Not a git repository'));\n process.exit(1);\n }\n \n // Get current branch\n const currentBranch = await getBranch(options.cwd);\n \n // If no title/body provided, generate with AI\n let prTitle = options.title;\n let prBody = options.body;\n \n if (!prTitle || !prBody) {\n console.log(chalk.gray('Generating PR description with AI...'));\n const result = await generateCode({\n goal: `Create a descriptive pull request title and body for the changes in branch ${currentBranch}. Focus on what changed and why.`,\n modelId: 'balanced'\n });\n \n // Parse the result\n const lines = result.explanation.split('\\n').filter(l => l.trim());\n if (!prTitle) prTitle = lines[0] || `Update ${currentBranch}`;\n if (!prBody) prBody = lines.slice(1).join('\\n') || result.explanation;\n }\n \n // Prompt for required options if not provided\n if (!options.owner || !options.repo) {\n const remote = await import('./tools/git.js').then(m => m.getRemote(options.cwd));\n if (remote) {\n // Parse owner/repo from remote URL\n const match = remote.match(/github\\.com[/:]([^/]+)\\/([^/.]+)/);\n if (match) {\n options.owner = options.owner || match[1];\n options.repo = options.repo || match[2];\n }\n }\n }\n \n if (!options.owner || !options.repo) {\n const answers = await inquirer.prompt([\n { type: 'input', name: 'owner', message: 'Repository owner:', when: !options.owner },\n { type: 'input', name: 'repo', message: 'Repository name:', when: !options.repo }\n ]);\n options.owner = options.owner || answers.owner;\n options.repo = options.repo || answers.repo;\n }\n \n // Get diff for PR\n const diff = await getDiff({ from: options.base, to: currentBranch }, options.cwd);\n console.log(chalk.gray(`Diff: ${diff.length} characters`));\n \n const result = await fullPRWorkflow({\n owner: options.owner,\n repo: options.repo,\n branchName: currentBranch,\n baseBranch: options.base,\n files: [], // Would need to parse diff into files\n commitMessage: prTitle,\n prTitle,\n prBody\n });\n \n if (result.success) {\n console.log(chalk.green(`\\nā PR created: ${result.prUrl}`));\n } else {\n console.error(chalk.red(`Error: ${result.error}`));\n process.exit(1);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Build Commands\n// ============================================\n\nprogram\n .command('build')\n .description('Run build command')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-d, --dry-run', 'Preview without executing')\n .action(async (options) => {\n try {\n const buildCmd = getBuildCommand(options.cwd);\n \n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY-RUN] Would execute: ${buildCmd}`));\n return;\n }\n \n console.log(chalk.gray(`$ ${buildCmd}`));\n const result = await runShell(buildCmd, { cwd: options.cwd });\n \n if (result.stdout) console.log(result.stdout);\n if (result.stderr) console.error(chalk.red(result.stderr));\n \n if (result.success) {\n console.log(chalk.green('\\nā Build successful'));\n } else {\n console.log(chalk.red(`\\nā Build failed (exit code ${result.exitCode})`));\n process.exit(result.exitCode);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\nprogram\n .command('install')\n .description('Run install command')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .option('-d, --dry-run', 'Preview without executing')\n .action(async (options) => {\n try {\n const installCmd = getInstallCommand(options.cwd);\n \n if (options.dryRun) {\n console.log(chalk.yellow(`[DRY-RUN] Would execute: ${installCmd}`));\n return;\n }\n \n console.log(chalk.gray(`$ ${installCmd}`));\n const result = await runShell(installCmd, { cwd: options.cwd, timeout: 300000 });\n \n if (result.stdout) console.log(result.stdout);\n if (result.stderr) console.error(chalk.red(result.stderr));\n \n if (result.success) {\n console.log(chalk.green('\\nā Install successful'));\n } else {\n console.log(chalk.red(`\\nā Install failed (exit code ${result.exitCode})`));\n process.exit(result.exitCode);\n }\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// MCP Commands\n// ============================================\n\nprogram\n .command('mcp')\n .description('Manage MCP server connections')\n .option('-l, --list', 'List available MCP servers')\n .option('-c, --connect', 'Connect to all enabled MCP servers')\n .option('-s, --status', 'Show MCP server status')\n .action(async (options) => {\n const { MCPManager, getDefaultMCPServers } = await import('./mcp/index.js');\n \n if (options.list) {\n const servers = getDefaultMCPServers();\n console.log(chalk.cyan('\\nš” Available MCP Servers\\n'));\n for (const server of servers) {\n const status = server.enabled ? chalk.green('enabled') : chalk.gray('disabled');\n console.log(` ${server.name.padEnd(20)} ${status}`);\n }\n return;\n }\n \n if (options.connect) {\n const manager = new MCPManager();\n console.log(chalk.cyan('\\nš Connecting to MCP servers...\\n'));\n const result = await manager.initializeAll();\n console.log(chalk.green(`\\nā Connected to ${result.success.length} servers`));\n if (result.failed.length > 0) {\n console.log(chalk.red(`ā Failed to connect to ${result.failed.length} servers`));\n }\n return;\n }\n \n if (options.status) {\n const manager = new MCPManager();\n await manager.initializeAll();\n const status = manager.getStatus();\n console.log(chalk.cyan('\\nš” MCP Server Status\\n'));\n for (const s of status) {\n const icon = s.connected ? chalk.green('ā') : chalk.red('ā');\n console.log(` ${icon} ${s.name}`);\n }\n return;\n }\n \n console.log(chalk.gray('Use --list, --connect, or --status'));\n });\n\n// ============================================\n// Swarm Commands\n// ============================================\n\nprogram\n .command('swarm')\n .description('Run multiple agents in parallel for complex tasks')\n .option('-g, --goal <text>', 'Goal for the swarm')\n .option('-p, --parallel <num>', 'Max parallel agents', '3')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (options) => {\n if (!options.goal) {\n console.error(chalk.red('Error: --goal is required'));\n process.exit(1);\n }\n \n const loggedIn = await isLoggedIn();\n if (!loggedIn) {\n console.error(chalk.red('Not logged in. Run \"vibe-weaver login\" first.'));\n process.exit(1);\n }\n \n const { runSwarm } = await import('./agent/swarm.js');\n await runSwarm(options.goal, {\n maxParallel: parseInt(options.parallel),\n baseDir: options.cwd\n });\n });\n\n// ============================================\n// Task Commands\n// ============================================\n\nconst taskCmd = program\n .command('task')\n .description('Manage background tasks');\n\ntaskCmd\n .command('submit')\n .description('Submit a background task')\n .option('-g, --goal <text>', 'Task goal')\n .option('-p, --platform <type>', 'Platform', 'web')\n .option('-m, --mode <mode>', 'Model mode', 'balanced')\n .action(async (options) => {\n if (!options.goal) {\n console.error(chalk.red('Error: --goal is required'));\n process.exit(1);\n }\n \n const { submitTask } = await import('./agent/tasks.js');\n await submitTask({\n goal: options.goal,\n platform: options.platform,\n modelId: options.mode\n });\n });\n\ntaskCmd\n .command('status')\n .description('Check task status')\n .argument('<id>', 'Task ID')\n .action(async (taskId) => {\n const { getTaskStatus, displayTaskStatus } = await import('./agent/tasks.js');\n const status = await getTaskStatus(taskId);\n displayTaskStatus(status);\n });\n\ntaskCmd\n .command('logs')\n .description('Stream task logs')\n .argument('<id>', 'Task ID')\n .action(async (taskId) => {\n const { streamTaskLogs } = await import('./agent/tasks.js');\n console.log(chalk.gray(`Streaming logs for task ${taskId}...\\n`));\n \n for await (const log of streamTaskLogs(taskId)) {\n process.stdout.write(log);\n }\n });\n\ntaskCmd\n .command('wait')\n .description('Wait for task to complete')\n .argument('<id>', 'Task ID')\n .option('-t, --timeout <seconds>', 'Timeout in seconds', '300')\n .action(async (taskId, options) => {\n const { waitForTask, displayTaskStatus } = await import('./agent/tasks.js');\n \n try {\n const status = await waitForTask(taskId, {\n pollInterval: 5000,\n onProgress: (s) => {\n process.stdout.write(chalk.gray(`\\rStatus: ${s.status}`));\n }\n });\n console.log();\n displayTaskStatus(status);\n } catch (error) {\n console.error(chalk.red('Error:'), error instanceof Error ? error.message : error);\n process.exit(1);\n }\n });\n\n// ============================================\n// Deploy Commands\n// ============================================\n\nprogram\n .command('deploy')\n .description('Deploy project and verify')\n .option('-i, --project-id <id>', 'Project ID')\n .option('-t, --platform <type>', 'Platform', 'web')\n .option('-v, --verify', 'Verify deployment', true)\n .option('--no-verify', 'Skip verification')\n .option('-c, --cwd <dir>', 'Working directory', process.cwd())\n .action(async (options) => {\n const loggedIn = await isLoggedIn();\n if (!loggedIn) {\n console.error(chalk.red('Not logged in. Run \"vibe-weaver login\" first.'));\n process.exit(1);\n }\n \n const { deploy } = await import('./agent/deploy.js');\n const result = await deploy({\n projectId: options.projectId,\n platform: options.platform,\n verify: options.verify,\n cwd: options.cwd\n });\n \n if (result.success) {\n console.log(chalk.green(`\\nā Deployed to ${result.url}`));\n } else {\n console.error(chalk.red(`\\nā Deployment failed: ${result.error}`));\n process.exit(1);\n }\n });\n\n// ============================================\n// Main entry point\n// ============================================\n\nprogram.parse();\n","/**\n * File Tools for Vibe-Weaver CLI\n * Real file operations against local filesystem\n */\n\nimport fs from 'fs/promises';\nimport path from 'path';\nimport chalk from 'chalk';\nimport { generateDiff } from '../lib/code-parser.js';\n\nexport interface FileOperationResult {\n success: boolean;\n path: string;\n content?: string;\n error?: string;\n diff?: string;\n}\n\n/**\n * Read a file from the local filesystem\n */\nexport async function readFile(filePath: string, baseDir: string = process.cwd()): Promise<FileOperationResult> {\n try {\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(baseDir, filePath);\n const content = await fs.readFile(fullPath, 'utf-8');\n return { success: true, path: filePath, content };\n } catch (error) {\n return {\n success: false,\n path: filePath,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Write content to a file\n */\nexport async function writeFile(\n filePath: string,\n content: string,\n baseDir: string = process.cwd(),\n options: { dryRun?: boolean; showDiff?: boolean } = {}\n): Promise<FileOperationResult> {\n try {\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(baseDir, filePath);\n const dir = path.dirname(fullPath);\n \n // Check if file exists for diff\n let oldContent = '';\n try {\n oldContent = await fs.readFile(fullPath, 'utf-8');\n } catch {\n // File doesn't exist, that's fine\n }\n \n // Generate diff if requested and file exists\n const diff = options.showDiff && oldContent ? generateDiff(oldContent, content, filePath) : undefined;\n \n if (options.dryRun) {\n return { success: true, path: filePath, diff };\n }\n \n // Create directory if needed\n await fs.mkdir(dir, { recursive: true });\n \n // Write file\n await fs.writeFile(fullPath, content, 'utf-8');\n \n return { success: true, path: filePath, diff };\n } catch (error) {\n return {\n success: false,\n path: filePath,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * Edit a file using search/replace\n */\nexport async function editFile(\n filePath: string,\n search: string,\n replace: string,\n baseDir: string = process.cwd(),\n options: { dryRun?: boolean; showDiff?: boolean } = {}\n): Promise<FileOperationResult> {\n try {\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(baseDir, filePath);\n \n // Read current content\n const content = await fs.readFile(fullPath, 'utf-8');\n \n // Check if search string exists\n if (!content.includes(search)) {\n return {\n success: false,\n path: filePath,\n error: `Search string not found in file`\n };\n }\n \n // Generate diff\n const newContent = content.replace(search, replace);\n const diff = options.showDiff ? generateDiff(content, newContent, filePath) : undefined;\n \n if (options.dryRun) {\n return { success: true, path: filePath, diff };\n }\n \n // Write updated content\n await fs.writeFile(fullPath, newContent, 'utf-8');\n \n return { success: true, path: filePath, diff };\n } catch (error) {\n return {\n success: false,\n path: filePath,\n error: error instanceof Error ? error.message : String(error)\n };\n }\n}\n\n/**\n * List files in a directory\n */\nexport async function listDir(dirPath: string = '.', baseDir: string = process.cwd()): Promise<{ path: string; isDirectory: boolean }[]> {\n const fullPath = path.isAbsolute(dirPath) ? dirPath : path.join(baseDir, dirPath);\n \n try {\n const entries = await fs.readdir(fullPath, { withFileTypes: true });\n return entries.map(entry => ({\n path: entry.name,\n isDirectory: entry.isDirectory()\n }));\n } catch (error) {\n throw new Error(`Failed to list directory: ${error instanceof Error ? error.message : String(error)}`);\n }\n}\n\n/**\n * Search for a pattern in files\n */\nexport async function grep(\n pattern: string,\n baseDir: string = process.cwd(),\n options: { filePattern?: string; recursive?: boolean } = {}\n): Promise<{ file: string; line: number; content: string }[]> {\n const results: { file: string; line: number; content: string }[] = [];\n const fs = await import('fs/promises');\n \n async function searchDir(dir: string) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n \n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n \n // Skip node_modules, .git, etc.\n if (entry.name === 'node_modules' || entry.name === '.git' || entry.name.startsWith('.')) {\n continue;\n }\n \n if (entry.isDirectory() && options.recursive !== false) {\n await searchDir(fullPath);\n } else if (entry.isFile()) {\n // Check file pattern\n if (options.filePattern && !new RegExp(options.filePattern).test(entry.name)) {\n continue;\n }\n \n // Search in file\n try {\n const content = await fs.readFile(fullPath, 'utf-8');\n const lines = content.split('\\n');\n \n for (let i = 0; i < lines.length; i++) {\n if (lines[i].includes(pattern)) {\n results.push({\n file: path.relative(baseDir, fullPath),\n line: i + 1,\n content: lines[i].trim()\n });\n }\n }\n } catch {\n // Skip binary files or unreadable files\n }\n }\n }\n }\n \n await searchDir(baseDir);\n return results;\n}\n\n/**\n * Find files matching a glob pattern\n */\nexport async function glob(\n pattern: string,\n baseDir: string = process.cwd()\n): Promise<string[]> {\n const results: string[] = [];\n const patternParts = pattern.split('/');\n const regexPattern = patternParts.map(part => {\n if (part === '**') return '.*';\n if (part === '*') return '[^/]*';\n return part.replace(/\\./g, '\\\\.').replace(/\\*/g, '.*');\n }).join('/');\n \n const regex = new RegExp(`^${regexPattern}$`);\n \n async function searchDir(dir: string) {\n const entries = await fs.readdir(dir, { withFileTypes: true });\n \n for (const entry of entries) {\n const fullPath = path.join(dir, entry.name);\n const relativePath = path.relative(baseDir, fullPath);\n \n // Skip node_modules, .git, etc.\n if (entry.name === 'node_modules' || entry.name === '.git' || entry.name.startsWith('.')) {\n continue;\n }\n \n if (entry.isDirectory()) {\n await searchDir(fullPath);\n } else if (entry.isFile()) {\n if (regex.test(relativePath) || regex.test(entry.name)) {\n results.push(relativePath);\n }\n }\n }\n }\n \n await searchDir(baseDir);\n return results;\n}\n\n/**\n * Check if a file exists\n */\nexport async function fileExists(filePath: string, baseDir: string = process.cwd()): Promise<boolean> {\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(baseDir, filePath);\n try {\n await fs.access(fullPath);\n return true;\n } catch {\n return false;\n }\n}\n\n/**\n * Get file stats\n */\nexport async function getFileStats(filePath: string, baseDir: string = process.cwd()): Promise<{ size: number; modified: Date } | null> {\n const fullPath = path.isAbsolute(filePath) ? filePath : path.join(baseDir, filePath);\n try {\n const stats = await fs.stat(fullPath);\n return {\n size: stats.size,\n modified: stats.mtime\n };\n } catch {\n return null;\n }\n}\n\nexport default {\n readFile,\n writeFile,\n editFile,\n listDir,\n grep,\n glob,\n fileExists,\n getFileStats\n};\n"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "vibe-weaver",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "Vibe-Weaver CLI - Production-ready terminal agent that beats Claude Code",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"bin": {
|
|
8
|
+
"vibe-weaver": "./dist/bin/vibe-weaver.js"
|
|
9
|
+
},
|
|
10
|
+
"scripts": {
|
|
11
|
+
"build": "tsup",
|
|
12
|
+
"dev": "tsup --watch",
|
|
13
|
+
"start": "node dist/index.js",
|
|
14
|
+
"test": "vitest run",
|
|
15
|
+
"test:watch": "vitest",
|
|
16
|
+
"test:coverage": "vitest run --coverage",
|
|
17
|
+
"lint": "eslint src --ext .ts",
|
|
18
|
+
"typecheck": "tsc --noEmit",
|
|
19
|
+
"pack": "npm pack"
|
|
20
|
+
},
|
|
21
|
+
"dependencies": {
|
|
22
|
+
"commander": "^12.1.0",
|
|
23
|
+
"ora": "^7.0.1",
|
|
24
|
+
"chalk": "^5.3.0",
|
|
25
|
+
"diff": "^5.2.0",
|
|
26
|
+
"inquirer": "^9.2.23",
|
|
27
|
+
"keytar": "^7.9.0",
|
|
28
|
+
"simple-git": "^3.25.0",
|
|
29
|
+
"ws": "^8.17.1",
|
|
30
|
+
"node-fetch": "^3.3.2",
|
|
31
|
+
"conf": "^12.0.0",
|
|
32
|
+
"execa": "^9.3.1",
|
|
33
|
+
"plist": "^3.1.0",
|
|
34
|
+
"open": "^10.1.0",
|
|
35
|
+
"env-paths": "^3.0.0",
|
|
36
|
+
"async-retry": "^1.3.3"
|
|
37
|
+
},
|
|
38
|
+
"devDependencies": {
|
|
39
|
+
"@types/node": "^20.14.10",
|
|
40
|
+
"@types/diff": "^5.2.1",
|
|
41
|
+
"@types/inquirer": "^9.0.7",
|
|
42
|
+
"@types/ws": "^8.5.12",
|
|
43
|
+
"@types/plist": "^3.0.5",
|
|
44
|
+
"@types/async-retry": "^1.4.8",
|
|
45
|
+
"typescript": "^5.5.3",
|
|
46
|
+
"tsup": "^8.2.1",
|
|
47
|
+
"vitest": "^1.6.0",
|
|
48
|
+
"eslint": "^8.57.0",
|
|
49
|
+
"@typescript-eslint/eslint-plugin": "^7.16.0",
|
|
50
|
+
"@typescript-eslint/parser": "^7.16.0",
|
|
51
|
+
"tsx": "^4.16.2"
|
|
52
|
+
},
|
|
53
|
+
"engines": {
|
|
54
|
+
"node": ">=18.0.0"
|
|
55
|
+
},
|
|
56
|
+
"keywords": [
|
|
57
|
+
"vibe-weaver",
|
|
58
|
+
"cli",
|
|
59
|
+
"ai",
|
|
60
|
+
"agent",
|
|
61
|
+
"code-generation",
|
|
62
|
+
"terminal"
|
|
63
|
+
],
|
|
64
|
+
"author": "Vibe-Weaver Team",
|
|
65
|
+
"license": "MIT"
|
|
66
|
+
}
|