langtrain 0.2.1 → 0.2.2

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/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/cli/components/Table.ts","../src/cli/ui.ts","../src/cli/config.ts","../src/cli/auth.ts","../src/cli/menu.ts","../src/cli/handlers/subscription.ts","../src/cli/handlers/tune.ts","../src/cli/handlers/vision.ts","../src/cli/handlers/agent.ts","../src/cli/handlers/init.ts","../src/cli/handlers/doctor.ts","../src/cli/handlers/data.ts","../src/cli/handlers/deploy.ts","../src/cli/handlers/dev.ts","../src/cli/handlers/guardrails.ts","../src/cli/handlers/env.ts","../src/cli/handlers/logs.ts","../src/cli/handlers/telemetry.ts","../package.json","../src/cli/index.ts"],"names":["createTable","headers","Table","h","colors","showBanner","version","gradient","bgMagenta","black","intro","message","magenta","outro","gray","spinner","msg","green","showSuccess","showWarning","yellow","showInfo","blue","red","cyan","bold","dim","white","CONFIG_DIR","path","os","CONFIG_FILE","getConfig","fs","saveConfig","config","isAuthenticated","handleLogin","apiKey","password","value","isCancel","cancel","s","info","SubscriptionClient","planBadge","used","limit","pct","handleLogout","getSubscription","client","e","getMenu","state","plan","planLabel","handleSubscriptionStatus","handleTuneFinetune","tune","modelClient","model","models","select","m","text","trainFile","epochs","track","upgrade","confirm","fileClient","FileClient","trainingClient","TrainingClient","fileResp","job","cont","s2","handleTuneGenerate","prompt","response","handleTuneList","workspaceId","jobs","table","j","statusColor","selectedJob","handleTuneStatus","jobId","id","action","handleTuneCancel","confirmCancel","handleVisionFinetune","vision","dataset","r","handleVisionGenerate","handleAgentCreate","name","description","systemPrompt","agents","wid","agent","handleAgentDelete","agentId","a","d","handleAgentList","handleAgentRun","agentName","initialMessage","conversationId","input","result","handleInit","cwd","overwrite","projectName","shouldLogin","configContent","handleDoctor","issues","nodeVersion","platform","arch","handleDataUpload","filePath","purpose","handleDataRefine","fileId","gClient","GuardrailClient","wId","files","selection","f","formatBytes","guardId","guards","g","bytes","decimals","k","dm","sizes","handleDeploy","agentConfig","existingAgents","existing","payload","handleDev","configPath","isDeploying","eventType","handleGuardrailList","handleGuardrailCreate","minLen","enablePii","patterns","regexList","p","handleEnvList","secrets","sec","handleEnvSet","keyVal","key","handleEnvMenu","handleLogs","found","logs","log","sessionStart","apiCallCount","errorCount","handleTokens","axios","de","baseUrl","usage","remaining","barWidth","filled","bar","barColor","handleTelemetry","uptimeMs","uptimeSec","uptimeMin","uptimeStr","avgLatency","errorRate","start","latency","package_default","showStatusBar","tokensUsed","tokenLimit","tokenBar","buildClients","Langvision","Langtune","AgentClient","ModelClient","SecretClient","getMessageForState","main","program","Command","dataCommand","guardCommand","authed","clients","currentState","operation","op","error"],"mappings":"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","file":"cli.js","sourcesContent":["import Table from 'cli-table3';\nimport { colors } from '../ui';\n\nexport function createTable(headers: string[]) {\n return new Table({\n head: headers.map(h => colors.magenta(colors.bold(h))),\n chars: {\n 'top': '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐',\n 'bottom': '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘',\n 'left': '│', 'left-mid': '├', 'mid': '─', 'mid-mid': '┼',\n 'right': '│', 'right-mid': '┤', 'middle': '│'\n },\n style: {\n 'padding-left': 1,\n 'padding-right': 1,\n head: [], // handle colors manually\n border: ['gray']\n }\n });\n}\n","import { text, select, confirm, password, isCancel, cancel, note } from '@clack/prompts';\nimport { bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, magenta, white } from 'kleur/colors';\nimport gradient from 'gradient-string';\n\n// Re-export specific prompts to keep imports clean in other files\nexport { text, select, confirm, password, isCancel, cancel, note };\n\nexport function showBanner(version: string) {\n console.clear();\n const banner = `\n ██╗ █████╗ ███╗ ██╗ ██████╗████████╗██████╗ █████╗ ██╗███╗ ██╗\n ██║ ██╔══██╗████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║████╗ ██║\n ██║ ███████║██╔██╗ ██║██║ ███╗ ██║ ██████╔╝███████║██║██╔██╗ ██║\n ██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██╔══██╗██╔══██║██║██║╚██╗██║\n ███████╗██║ ██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║██║ ██║██║██║ ╚████║\n ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝\n `;\n // Brand Gradient: Purple to Pink to Blue (Light Luxury)\n console.log(gradient(['#A855F7', '#EC4899', '#3B82F6'])(banner));\n\n // Elegant Badge: Black text on Magenta background\n console.log(`${bgMagenta(black(` Langtrain SDK v${version} `))}\\n`);\n}\n\nexport function intro(message: string) {\n console.log(magenta(`◆ ${message}`));\n}\n\nexport function outro(message: string) {\n console.log(gray(`└ ${message}`));\n}\n\nexport function spinner() {\n return {\n start: (msg: string) => process.stdout.write(`${magenta('●')} ${msg}\\r`),\n stop: (msg?: string) => {\n if (msg) console.log(`${green('✔')} ${msg}`);\n else console.log(''); // Newline\n },\n message: (msg: string) => process.stdout.write(`${magenta('●')} ${msg}\\r`)\n };\n}\n\nexport function showError(message: string) {\n console.log(red(`✖ Error: ${message}`));\n}\n\nexport function showSuccess(message: string) {\n console.log(green(`✔ ${message}`));\n}\n\nexport function showWarning(message: string) {\n console.log(yellow(`⚠ Warning: ${message}`));\n}\n\nexport function showInfo(message: string) {\n console.log(blue(`ℹ ${message}`));\n}\n\nexport function showDim(message: string) {\n console.log(dim(message));\n}\n\n// Re-export for backward compatibility\nexport { bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, gradient, magenta, white };\n\nexport const colors = {\n bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, magenta, white\n};\n\nexport * from './components/Table';\n\n","import fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n\nconst CONFIG_DIR = path.join(os.homedir(), '.langtrain');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');\n\nexport interface CLIConfig {\n apiKey?: string;\n baseUrl?: string;\n [key: string]: any;\n}\n\nexport function getConfig(): CLIConfig {\n if (!fs.existsSync(CONFIG_FILE)) return {};\n try {\n return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: CLIConfig) {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n }\n fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));\n}\n","import { password, isCancel, cancel, intro, green, yellow, red, bgMagenta, black, spinner, gray, cyan, dim, bold } from './ui';\nimport { getConfig, saveConfig } from './config';\nimport { SubscriptionClient, SubscriptionInfo } from '../index';\n\n/**\n * Quick check if API key is stored (no network call).\n */\nexport function isAuthenticated(): boolean {\n const config = getConfig();\n return !!config.apiKey;\n}\n\n/**\n * Ensure auth — if not logged in, forces login flow.\n */\nexport async function ensureAuth(): Promise<string> {\n let config = getConfig();\n\n if (!config.apiKey) {\n console.log('');\n console.log(yellow(' Authentication required.'));\n console.log(gray(' Login to access all features.\\n'));\n await handleLogin();\n config = getConfig();\n }\n\n return config.apiKey as string;\n}\n\n/**\n * Interactive login — Claude-style API key entry with immediate verification.\n */\nexport async function handleLogin() {\n while (true) {\n console.log(dim(' ─────────────────────────────────────'));\n console.log(gray(' Get your API Key at: ') + cyan('https://app.langtrain.xyz/home/api'));\n console.log(dim(' ─────────────────────────────────────\\n'));\n\n const apiKey = await password({\n message: 'Enter your Langtrain API Key:',\n validate(value) {\n if (!value || value.length === 0) return 'API Key is required';\n if (value.length < 10) return 'Invalid key format';\n },\n });\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled');\n process.exit(0);\n }\n\n const s = spinner();\n s.start('Verifying API Key...');\n\n try {\n const client = new SubscriptionClient({ apiKey: apiKey as string });\n const info = await client.getStatus();\n\n const planBadge = info.plan === 'pro'\n ? bgMagenta(black(' PRO '))\n : info.plan === 'enterprise'\n ? bgMagenta(black(' ENTERPRISE '))\n : ' FREE ';\n\n s.stop(green(`Authenticated ${planBadge}`));\n\n // Show initial token info if available\n if (info.usage) {\n const used = info.usage.tokensUsedThisMonth || 0;\n const limit = info.usage.tokenLimit || 10000;\n const pct = Math.round((used / limit) * 100);\n console.log(dim(` Tokens: ${used.toLocaleString()} / ${limit.toLocaleString()} (${pct}% used)`));\n }\n\n const config = getConfig();\n saveConfig({ ...config, apiKey: apiKey as string });\n console.log(green(' ✔ Credentials saved to ~/.langtrain/config.json\\n'));\n return;\n } catch (e: any) {\n s.stop(red('Invalid API Key. Please try again.'));\n }\n }\n}\n\n/**\n * Logout — clear stored credentials.\n */\nexport async function handleLogout() {\n const config = getConfig();\n delete config.apiKey;\n saveConfig(config);\n console.log(green('\\n ✔ Logged out. Credentials cleared.\\n'));\n}\n\n/**\n * Fetch subscription info for status bar display.\n */\nexport async function getSubscription(apiKey: string): Promise<SubscriptionInfo | null> {\n const client = new SubscriptionClient({ apiKey });\n const s = spinner();\n s.start('Checking subscription...');\n try {\n const info = await client.getStatus();\n\n const planBadge = info.plan === 'pro'\n ? bgMagenta(black(' PRO '))\n : info.plan === 'enterprise'\n ? bgMagenta(black(' ENTERPRISE '))\n : bold(' FREE ');\n\n s.stop(green(`Plan: ${planBadge}`));\n\n if (info.is_active === false) {\n console.log(yellow(' ⚠ Subscription inactive. Some features may be limited.\\n'));\n }\n\n return info;\n } catch (e: any) {\n s.stop(red('Failed to verify subscription.'));\n if (e.response && e.response.status === 401) {\n console.log(red(' API Key expired. Please login again.'));\n }\n return null;\n }\n}\n","import { SubscriptionInfo } from '../index';\n\nexport interface MenuOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport type MenuState = 'main' | 'agents' | 'text' | 'vision' | 'guard' | 'settings';\n\nexport function getMenu(state: MenuState, plan: SubscriptionInfo | null, isAuthenticated: boolean): MenuOption[] {\n\n // ── Unauthenticated: Claude-style minimal menu ─────────────────────────\n if (!isAuthenticated) {\n return [\n { value: 'login', label: '→ Login', hint: 'Authenticate with your API key' },\n { value: 'docs', label: ' Documentation', hint: 'https://docs.langtrain.ai' },\n { value: 'exit', label: ' Exit' }\n ];\n }\n\n // ── Authenticated menus ────────────────────────────────────────────────\n const planLabel = plan?.plan === 'pro' ? 'PRO' : plan?.plan === 'enterprise' ? 'ENTERPRISE' : 'FREE';\n\n switch (state) {\n case 'main':\n return [\n { value: 'nav-agents', label: ' Agents', hint: 'Manage & deploy AI agents' },\n { value: 'nav-text', label: ' Langtune', hint: 'Text fine-tuning & generation' },\n { value: 'nav-vision', label: ' Langvision', hint: 'Vision fine-tuning & analysis' },\n { value: 'nav-guard', label: ' Guardrails', hint: 'Data quality & safety rules' },\n { value: 'init', label: ' Init Project', hint: 'Scaffold new Langtrain app' },\n { value: 'deploy', label: ' Deploy', hint: 'Push to Langtrain Cloud' },\n { value: 'dev', label: ' Dev Server', hint: 'Local watch mode' },\n { value: 'env', label: ' Secrets', hint: 'Manage environment variables' },\n { value: 'logs', label: ' Logs', hint: 'Stream agent logs' },\n { value: 'tokens', label: ' Token Usage', hint: 'View consumption this period' },\n { value: 'telemetry', label: ' Telemetry', hint: 'Session stats & API health' },\n { value: 'doctor', label: ' Doctor', hint: 'Check environment health' },\n { value: 'nav-settings', label: ' Settings', hint: `Plan: ${planLabel}` },\n { value: 'exit', label: ' Exit' }\n ];\n\n case 'agents':\n return [\n { value: 'agent-list', label: 'List & Run Agents', hint: 'Chat with active agents' },\n { value: 'agent-create', label: 'Create New Agent', hint: 'Deploy a new agent' },\n { value: 'agent-delete', label: 'Delete Agent', hint: 'Remove an agent' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'text':\n return [\n { value: 'tune-finetune', label: 'Fine-tune Text Model', hint: 'Create custom LLM' },\n { value: 'tune-list', label: 'List Jobs', hint: 'Check training status' },\n { value: 'tune-generate', label: 'Generate Text', hint: 'Test your models' },\n { value: 'data-upload', label: 'Upload Dataset', hint: 'Upload JSONL for training' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'guard':\n return [\n { value: 'guard-list', label: 'List Guardrails', hint: 'View active rules' },\n { value: 'guard-create', label: 'Create Guardrail', hint: 'Define new rules' },\n { value: 'data-refine', label: 'Refine Dataset', hint: 'Apply guardrail to data' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'vision':\n return [\n { value: 'vision-finetune', label: 'Fine-tune Vision Model', hint: 'Create custom VLM' },\n { value: 'vision-generate', label: 'Generate Vision Response', hint: 'Test vision models' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'settings':\n return [\n { value: 'status', label: `Subscription (${planLabel})`, hint: 'View plan details' },\n { value: 'tokens', label: 'Token Usage', hint: 'View consumption' },\n { value: 'telemetry', label: 'Telemetry', hint: 'Session & API health' },\n { value: 'login', label: 'Update API Key', hint: 'Change credentials' },\n { value: 'logout', label: 'Logout', hint: 'Clear stored credentials' },\n { value: 'back', label: '← Back' }\n ];\n\n default:\n return [];\n }\n}\n","import { spinner, intro, red, green, gray, bgMagenta } from '../ui';\nimport { getConfig } from '../config';\nimport { SubscriptionClient } from '../../index';\n\nexport async function handleSubscriptionStatus() {\n const config = getConfig();\n if (!config.apiKey) {\n intro(red('Not logged in. Run \"login\" first.'));\n return;\n }\n const client = new SubscriptionClient({ apiKey: config.apiKey });\n const s = spinner();\n s.start('Fetching subscription status...');\n try {\n const info = await client.getStatus();\n s.stop(green('Subscription Status:'));\n\n console.log(gray('Plan: ') + (info.plan === 'pro' ? bgMagenta(' PRO ') : info.plan.toUpperCase()));\n console.log(gray('Active: ') + (info.is_active ? green('Yes') : red('No')));\n if (info.expires_at) console.log(gray('Expires: ') + new Date(info.expires_at).toLocaleDateString());\n\n console.log(gray('\\nLimits:'));\n console.log(` Models: ${info.limits.max_models === -1 ? 'Unlimited' : info.limits.max_models}`);\n console.log(` Training Jobs: ${info.limits.max_training_jobs}`);\n\n } catch (e: any) {\n s.stop(red('Failed to fetch status.'));\n console.error(e.message);\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, bgMagenta, black, gradient, gray, createTable } from '../ui';\nimport { getConfig } from '../config';\nimport { Langtune, ModelClient, SubscriptionClient, FileClient, TrainingClient } from '../../index';\n\n// Handler for Langtune Fine-tuning\nexport async function handleTuneFinetune(tune: Langtune, modelClient: ModelClient) {\n let model: string | symbol = '';\n\n const s = spinner();\n s.start('Fetching available text models...');\n try {\n const models = await modelClient.list('text');\n s.stop(`Found ${models.length} text models`);\n\n if (models.length > 0) {\n model = await select({\n message: 'Select base model:',\n options: models.map(m => ({ value: m.id, label: m.id, hint: m.owned_by }))\n });\n }\n } catch (e) {\n s.stop(yellow('Failed to fetch models. Using manual input.'));\n model = await text({\n message: 'Enter base model (e.g., gpt-3.5-turbo):',\n placeholder: 'gpt-3.5-turbo',\n validate(value) {\n if (!value || value.length === 0) return 'Value is required!';\n },\n });\n }\n\n if (isCancel(model)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const trainFile = await text({\n message: 'Enter path to training file:',\n placeholder: './data.jsonl',\n validate(value) {\n if (!value || value.length === 0) return 'Value is required!';\n },\n });\n if (isCancel(trainFile)) cancel('Operation cancelled.');\n\n const epochs = await text({\n message: 'Num Epochs:',\n placeholder: '3',\n initialValue: '3'\n });\n if (isCancel(epochs)) cancel('Operation cancelled.');\n\n const track = await select({\n message: 'Track this job on Langtrain Cloud?',\n options: [\n { value: 'yes', label: 'Yes', hint: 'Upload dataset and log job' },\n { value: 'no', label: 'No', hint: 'Local only' }\n ]\n });\n if (isCancel(track)) cancel('Operation cancelled.');\n\n if (track === 'yes') {\n const s = spinner();\n s.start('Connecting to Cloud...');\n try {\n const config = getConfig();\n if (!config.apiKey) throw new Error('API Key required. Run \"login\" first.');\n\n // Check Subscription\n const subClient = new SubscriptionClient({ apiKey: config.apiKey });\n const sub = await subClient.getStatus();\n if (!sub.features.includes('cloud_finetuning')) {\n s.stop(red('Feature \"cloud_finetuning\" is not available on your plan.'));\n const upgrade = await confirm({ message: 'Upgrade to Pro for cloud tracking?' });\n if (upgrade && !isCancel(upgrade)) {\n console.log(bgMagenta(black(' Visit https://langtrain.ai/dashboard/billing to upgrade. ')));\n }\n return;\n }\n\n const fileClient = new FileClient({ apiKey: config.apiKey });\n const trainingClient = new TrainingClient({ apiKey: config.apiKey });\n\n s.message('Uploading dataset...');\n const fileResp = await fileClient.upload(trainFile as string);\n\n s.message('Creating Job...');\n const job = await trainingClient.createJob({\n name: `cli-sft-${Date.now()}`,\n base_model: model as string,\n dataset_id: fileResp.id,\n task: 'text',\n hyperparameters: {\n n_epochs: parseInt(epochs as string)\n }\n });\n s.stop(green(`Job tracked: ${job.id}`));\n } catch (e: any) {\n s.stop(red(`Tracking failed: ${e.message}`));\n const cont = await confirm({ message: 'Continue with local training anyway?' });\n if (!cont || isCancel(cont)) return;\n }\n }\n\n const s2 = spinner();\n s2.start('Starting local fine-tuning...');\n\n try {\n const config: any = {\n model: model as string,\n trainFile: trainFile as string,\n preset: 'default', // simplified\n epochs: parseInt(epochs as string),\n batchSize: 1,\n learningRate: 2e-5,\n loraRank: 16,\n outputDir: './output'\n };\n\n await tune.finetune(config);\n s2.stop(green('Fine-tuning job started successfully!'));\n } catch (e: any) {\n s2.stop(red('Failed to start job.'));\n throw e;\n }\n}\n\n// Handler for Langtune Generation\nexport async function handleTuneGenerate(tune: Langtune) {\n const model = await text({\n message: 'Enter model path:',\n placeholder: './output/model',\n initialValue: './output/model'\n });\n if (isCancel(model)) cancel('Operation cancelled');\n\n const prompt = await text({\n message: 'Enter prompt:',\n placeholder: 'Hello world',\n });\n if (isCancel(prompt)) cancel('Operation cancelled');\n\n const s = spinner();\n s.start('Connecting to Langtrain Inference API...');\n\n try {\n const response = await tune.generate(model as string, { prompt: prompt as string });\n s.stop('Generation complete');\n intro('Response:');\n console.log(gradient.pastel(response));\n } catch (e: any) {\n s.stop(red('Generation failed.'));\n throw e;\n }\n}\n\nexport async function handleTuneList(trainingClient: TrainingClient) {\n const s = spinner();\n s.start('Fetching fine-tuning jobs...');\n\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n s.stop(yellow('Workspace ID required to list jobs.'));\n workspaceId = await text({ message: 'Enter Workspace ID:' });\n if (isCancel(workspaceId)) return;\n }\n\n try {\n const jobs = await trainingClient.listJobs(workspaceId as string);\n s.stop(`Found ${jobs.data.length} jobs`);\n\n if (jobs.data.length === 0) {\n console.log(yellow('No jobs found.'));\n return;\n }\n\n // Display Table\n const table = createTable(['ID', 'Status', 'Model', 'Progress', 'Created']);\n jobs.data.forEach(j => {\n const statusColor = j.status === 'succeeded' ? green : (j.status === 'failed' ? red : yellow);\n table.push([\n j.id.substring(0, 8) + '...',\n statusColor(j.status),\n j.base_model,\n (j.progress || 0) + '%',\n new Date(j.created_at).toLocaleDateString()\n ]);\n });\n console.log(table.toString());\n console.log('');\n\n const selectedJob = await select({\n message: 'Select a job to view details:',\n options: jobs.data.map(j => ({\n value: j.id,\n label: `${j.name || j.id} (${j.status})`,\n hint: `Created: ${new Date(j.created_at).toLocaleDateString()}`\n }))\n });\n\n if (isCancel(selectedJob)) return;\n\n await handleTuneStatus(trainingClient, selectedJob as string);\n\n } catch (e: any) {\n s.stop(red(`Failed to list jobs: ${e.message}`));\n }\n}\n\nexport async function handleTuneStatus(trainingClient: TrainingClient, jobId?: string) {\n let id = jobId;\n if (!id) {\n id = await text({ message: 'Enter Job ID:' }) as string;\n if (isCancel(id)) return;\n }\n\n const s = spinner();\n s.start(`Fetching status for ${id}...`);\n\n try {\n const job = await trainingClient.getJob(id);\n s.stop(`Job Status: ${job.status.toUpperCase()}`);\n\n console.log(gray('------------------------------------------------'));\n console.log(`${bgMagenta(black(' Job Details '))}`);\n console.log(`ID: ${job.id}`);\n console.log(`Name: ${job.name}`);\n console.log(`Status: ${job.status === 'succeeded' ? green(job.status) : job.status}`);\n console.log(`Model: ${job.base_model}`);\n console.log(`Progress: ${job.progress || 0}%`);\n if (job.error_message) console.log(red(`Error: ${job.error_message}`));\n console.log(gray('------------------------------------------------'));\n\n if (job.status === 'running' || job.status === 'queued') {\n const action = await select({\n message: 'Action:',\n options: [\n { value: 'refresh', label: 'Refresh Status' },\n { value: 'cancel', label: 'Cancel Job' },\n { value: 'back', label: 'Back' }\n ]\n });\n\n if (action === 'refresh') await handleTuneStatus(trainingClient, id);\n if (action === 'cancel') await handleTuneCancel(trainingClient, id);\n }\n\n } catch (e: any) {\n s.stop(red(`Failed to get job status: ${e.message}`));\n }\n}\n\nexport async function handleTuneCancel(trainingClient: TrainingClient, jobId: string) {\n const confirmCancel = await confirm({ message: 'Are you sure you want to cancel this job?' });\n if (!confirmCancel || isCancel(confirmCancel)) return;\n\n const s = spinner();\n s.start('Canceling job...');\n try {\n await trainingClient.cancelJob(jobId);\n s.stop(green('Job canceled successfully.'));\n } catch (e: any) {\n s.stop(red(`Failed to cancel job: ${e.message}`));\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, bgMagenta, black, gradient } from '../ui';\nimport { getConfig } from '../config';\nimport { Langvision, ModelClient, SubscriptionClient, FileClient, TrainingClient } from '../../index';\n\n// Handler for Langvision Fine-tuning\nexport async function handleVisionFinetune(vision: Langvision, modelClient: ModelClient) {\n let model: string | symbol = '';\n\n const s = spinner();\n s.start('Fetching available vision models...');\n try {\n const models = await modelClient.list('vision');\n s.stop(`Found ${models.length} vision models`);\n\n if (models.length > 0) {\n model = await select({\n message: 'Select base vision model:',\n options: models.map(m => ({ value: m.id, label: m.id, hint: m.owned_by }))\n });\n } else {\n model = await text({\n message: 'Enter base vision model:',\n placeholder: 'llava-v1.5-7b',\n initialValue: 'llava-v1.5-7b'\n });\n }\n } catch (e) {\n s.stop(yellow('Failed to fetch models. Using manual input.'));\n model = await text({\n message: 'Enter base vision model:',\n placeholder: 'llava-v1.5-7b',\n initialValue: 'llava-v1.5-7b'\n });\n }\n\n if (isCancel(model)) {\n cancel('Operation cancelled');\n process.exit(0);\n }\n\n const dataset = await text({\n message: 'Enter dataset path:',\n placeholder: './dataset',\n });\n if (isCancel(dataset)) cancel('Operation cancelled');\n\n const epochs = await text({\n message: 'Num Epochs:',\n placeholder: '3',\n initialValue: '3'\n });\n if (isCancel(epochs)) cancel('Operation cancelled');\n\n const track = await select({\n message: 'Track this job on Langtrain Cloud?',\n options: [\n { value: 'yes', label: 'Yes', hint: 'Upload dataset and log job' },\n { value: 'no', label: 'No', hint: 'Local only' }\n ]\n });\n if (isCancel(track)) cancel('Operation cancelled');\n\n if (track === 'yes') {\n const s = spinner();\n s.start('Connecting to Cloud...');\n try {\n const config = getConfig();\n if (!config.apiKey) throw new Error('API Key required. Run \"login\" first.');\n\n // Check Subscription\n const subClient = new SubscriptionClient({ apiKey: config.apiKey });\n const sub = await subClient.getStatus();\n if (!sub.features.includes('cloud_finetuning')) {\n s.stop(red('Feature \"cloud_finetuning\" is not available on your plan.'));\n const upgrade = await confirm({ message: 'Upgrade to Pro for cloud tracking?' });\n if (upgrade && !isCancel(upgrade)) {\n console.log(bgMagenta(black(' Visit https://langtrain.ai/dashboard/billing to upgrade. ')));\n }\n return;\n }\n\n const fileClient = new FileClient({ apiKey: config.apiKey });\n const trainingClient = new TrainingClient({ apiKey: config.apiKey });\n\n s.message('Uploading dataset...');\n const fileResp = await fileClient.upload(dataset as string, undefined, 'fine-tune-vision');\n\n s.message('Creating Job...');\n const job = await trainingClient.createJob({\n name: `cli-vision-${Date.now()}`,\n base_model: model as string,\n dataset_id: fileResp.id,\n task: 'vision',\n training_method: 'lora',\n hyperparameters: {\n n_epochs: parseInt(epochs as string)\n }\n });\n s.stop(green(`Job tracked: ${job.id}`));\n } catch (e: any) {\n s.stop(red(`Tracking failed: ${e.message}`));\n const cont = await confirm({ message: 'Continue with local training anyway?' });\n if (!cont || isCancel(cont)) return;\n }\n }\n\n const s2 = spinner();\n s2.start('Analyzing dataset structure...');\n await new Promise(r => setTimeout(r, 800));\n s2.message('Starting vision fine-tuning on Langtrain Cloud...');\n\n try {\n const config: any = {\n model: model as string,\n dataset: dataset as string,\n epochs: parseInt(epochs as string),\n batchSize: 1,\n learningRate: 2e-5,\n loraRank: 16,\n outputDir: './vision-output'\n };\n await vision.finetune(config);\n s2.stop(green('Vision fine-tuning started successfully!'));\n } catch (e: any) {\n s2.stop(red('Failed to start vision job.'));\n throw e;\n }\n}\n\n// Handler for Langvision Generation\nexport async function handleVisionGenerate(vision: Langvision) {\n const model = await text({\n message: 'Enter model path:',\n placeholder: './vision-output/model',\n initialValue: './vision-output/model'\n });\n if (isCancel(model)) cancel('Operation cancelled');\n\n const prompt = await text({\n message: 'Enter prompt/image path:', // Simplified for CLI\n placeholder: 'Describe this image...',\n });\n if (isCancel(prompt)) cancel('Operation cancelled');\n\n const s = spinner();\n s.start('Uploading image and context...');\n await new Promise(r => setTimeout(r, 600));\n s.message('Generating vision response...');\n\n try {\n const response = await vision.generate(model as string, { prompt: prompt as string });\n s.stop('Generation complete');\n intro('Response:');\n console.log(gradient.pastel(response));\n } catch (e: any) {\n s.stop(red('Generation failed.'));\n throw e;\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray, bgMagenta, black, gradient, createTable } from '../ui';\nimport { AgentClient, ModelClient } from '../../index';\n\nexport async function handleAgentCreate(client: AgentClient, modelClient: ModelClient) {\n const name = await text({\n message: 'Agent Name:',\n placeholder: 'e.g. Support Bot',\n validate(value) {\n if (!value || value.length === 0) return 'API Key is required';\n },\n });\n if (isCancel(name)) {\n cancel('Operation cancelled');\n return;\n }\n\n const description = await text({\n message: 'Description:',\n placeholder: 'e.g. A helpful support assistant',\n });\n if (isCancel(description)) return;\n\n const systemPrompt = await text({\n message: 'System Prompt:',\n placeholder: 'e.g. You are a helpful assistant.',\n initialValue: 'You are a helpful assistant.'\n });\n if (isCancel(systemPrompt)) return;\n\n // Select model\n let model: string | symbol = 'gpt-4o';\n const s = spinner();\n s.start('Fetching agent models...');\n try {\n const models = await modelClient.list('agent');\n s.stop(`Found ${models.length} models`);\n if (models.length > 0) {\n model = await select({\n message: 'Select Agent Model:',\n options: models.map(m => ({ value: m.id, label: m.id }))\n });\n }\n } catch (e) {\n s.stop(yellow('Could not fetch models, using default.'));\n }\n\n if (isCancel(model)) return;\n\n const s2 = spinner();\n s2.start('Creating agent...');\n\n try {\n const agents = await client.list();\n let workspaceId = \"\";\n if (agents.length > 0) {\n workspaceId = agents[0].workspace_id;\n } else {\n s2.stop(yellow('Workspace ID needed (no existing agents found).'));\n const wid = await text({\n message: 'Enter Workspace ID (UUID):',\n validate(value) {\n if (!value || value.length === 0) return 'Required';\n },\n });\n if (isCancel(wid)) return;\n workspaceId = wid as string;\n s2.start('Creating agent...');\n }\n\n const agent = await client.create({\n workspace_id: workspaceId,\n name: name as string,\n description: description as string,\n config: {\n system_prompt: systemPrompt as string,\n model: model as string\n }\n });\n s2.stop(green(`Agent \"${agent.name}\" created successfully! ID: ${agent.id}`));\n } catch (e: any) {\n s2.stop(red('Failed to create agent.'));\n throw e;\n }\n}\n\nexport async function handleAgentDelete(client: AgentClient) {\n const s = spinner();\n s.start('Fetching agents...');\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n intro(yellow('No agents to delete.'));\n return;\n }\n\n const agentId = await select({\n message: 'Select an agent to DELETE:',\n options: agents.map(a => ({ value: a.id, label: a.name, hint: a.description || 'No description' }))\n });\n\n if (isCancel(agentId)) return;\n\n const confirmDel = await select({\n message: `Are you sure you want to delete this agent?`,\n options: [\n { value: 'yes', label: 'Yes, delete it', hint: 'Cannot be undone' },\n { value: 'no', label: 'No, keep it' }\n ]\n });\n\n if (confirmDel !== 'yes') {\n intro(gray('Deletion cancelled.'));\n return;\n }\n\n const d = spinner();\n d.start('Deleting agent...');\n try {\n await client.delete(agentId as string);\n d.stop(green('Agent deleted successfully.'));\n } catch (e: any) {\n d.stop(red('Failed to delete agent.'));\n throw e;\n }\n}\n\nexport async function handleAgentList(client: AgentClient) {\n const s = spinner();\n s.start('Fetching agents...');\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n intro(yellow('No agents found in your workspace.'));\n return;\n }\n\n // Display Table\n const table = createTable(['ID', 'Name', 'Model', 'Created']);\n agents.forEach(a => {\n table.push([\n a.id.substring(0, 8) + '...',\n a.name,\n (a.config as any)?.model || 'default',\n new Date(a.created_at).toLocaleDateString()\n ]);\n });\n console.log(table.toString());\n console.log(''); // spacer\n\n const agentId = await select({\n message: 'Select an agent to run:',\n options: agents.map(a => ({ value: a.id, label: a.name, hint: a.description || 'No description' }))\n });\n\n if (isCancel(agentId)) return;\n\n await handleAgentRun(client, agentId as string, agents.find(a => a.id === agentId)?.name || 'Agent');\n}\n\nexport async function handleAgentRun(client: AgentClient, agentId: string, agentName: string, initialMessage?: string) {\n intro(bgMagenta(black(` Chatting with ${agentName} `)));\n console.log(gray('Type \"exit\" to quit conversation.'));\n\n let conversationId: string | undefined = undefined;\n\n // Send initial message if provided\n if (initialMessage) {\n const s = spinner();\n s.start('Agent is analyzing...');\n try {\n const result = await client.execute(agentId, { prompt: initialMessage }, [], conversationId);\n s.stop();\n if ((result.output as any)?.response) {\n console.log(gradient.pastel(`Agent: ${(result.output as any).response}`));\n } else {\n console.log(gradient.pastel(`Agent: ${JSON.stringify(result.output)}`));\n }\n conversationId = result.conversation_id;\n } catch (e: any) {\n s.stop(red('Error running agent.'));\n console.error(e);\n }\n }\n\n while (true) {\n const input = await text({\n message: 'You:',\n placeholder: 'Type a message...',\n });\n\n if (isCancel(input) || input === 'exit') {\n break;\n }\n\n const s = spinner();\n s.start('Agent is thinking...');\n try {\n const result = await client.execute(agentId, { prompt: input }, [], conversationId);\n s.stop();\n\n if ((result.output as any)?.response) {\n console.log(gradient.pastel(`Agent: ${(result.output as any).response}`));\n } else {\n console.log(gradient.pastel(`Agent: ${JSON.stringify(result.output)}`));\n }\n\n conversationId = result.conversation_id;\n } catch (e: any) {\n s.stop(red('Error running agent.'));\n console.error(e);\n }\n }\n}\n","import path from 'path';\nimport fs from 'fs';\nimport { text, confirm, select, isCancel, cancel, intro, outro, showSuccess, showInfo, spinner, colors } from '../ui';\nimport { getConfig } from '../config';\nimport { handleLogin } from '../auth';\n\nexport async function handleInit() {\n intro('Initializing new Langtrain project...');\n\n const cwd = process.cwd();\n\n // 1. Check if already initialized\n if (fs.existsSync(path.join(cwd, 'langtrain.config.json'))) {\n showInfo('langtrain.config.json already exists in this directory.');\n const overwrite = await confirm({\n message: 'Do you want to re-initialize and overwrite the config?',\n initialValue: false\n });\n\n if (isCancel(overwrite) || !overwrite) {\n outro('Initialization cancelled.');\n return;\n }\n }\n\n // 2. Ask for Project Details\n const projectName = await text({\n message: 'What is the name of your project?',\n placeholder: 'my-ai-app',\n initialValue: path.basename(cwd),\n validate(value) {\n if (!value || value.length === 0) return 'Project name is required!';\n }\n });\n\n if (isCancel(projectName)) {\n cancel('Operation cancelled.');\n return;\n }\n\n let config = getConfig();\n let apiKey = config.apiKey;\n\n if (apiKey) {\n showSuccess('Found existing Langtrain credentials.');\n } else {\n const shouldLogin = await confirm({\n message: 'You are not logged in. Do you want to log in now?',\n initialValue: true\n });\n\n if (isCancel(shouldLogin)) {\n cancel('Operation cancelled.');\n return;\n }\n\n if (shouldLogin) {\n await handleLogin();\n config = getConfig(); // Reload config\n apiKey = config.apiKey;\n } else {\n apiKey = await text({\n message: 'Enter your Langtrain API Key (optional for local dev):',\n placeholder: 'lt_sk_...',\n initialValue: ''\n }) as string;\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled.');\n return;\n }\n }\n }\n\n // 3. Create Config File\n const s = spinner();\n s.start('Creating configuration...');\n\n const configContent = {\n name: projectName,\n apiKey: apiKey || undefined,\n environment: 'development',\n agents: [\n {\n name: 'support-bot',\n description: 'A helpful customer support assistant',\n config: {\n model: 'llama-3-8b',\n system_prompt: 'You are a helpful customer support assistant.',\n temperature: 0.7\n }\n }\n ]\n };\n\n fs.writeFileSync(path.join(cwd, 'langtrain.config.json'), JSON.stringify(configContent, null, 2));\n\n showSuccess('Project initialized successfully!');\n console.log(colors.dim('\\nNext steps:'));\n console.log(` 1. Run ${colors.cyan('lt deploy')} to push your agent to the cloud.`);\n console.log(` 2. Run ${colors.cyan('lt dev')} to start the local development loop.`);\n\n outro('Happy coding!');\n}\n","import { intro, outro, showSuccess, showError, showWarning, showInfo, spinner, colors } from '../ui';\nimport { getConfig } from '../config';\nimport { getSubscription } from '../auth';\nimport os from 'os';\n\nexport async function handleDoctor() {\n intro('Running Langtrain Doctor...');\n\n const s = spinner();\n let issues = 0;\n\n // 1. Check Node Environment\n s.start('Checking Node.js environment...');\n const nodeVersion = process.version;\n const platform = os.platform();\n const arch = os.arch();\n\n if (parseInt(nodeVersion.replace('v', '').split('.')[0]) < 18) {\n s.stop(colors.red(`Node.js version ${nodeVersion} is outdated. Please upgrade to v18+.`));\n issues++;\n } else {\n s.stop(`Node.js ${nodeVersion} (${platform} ${arch})`);\n }\n\n // 2. Check Configuration\n s.start('Checking configuration...');\n const config = getConfig();\n if (!config.apiKey) {\n s.stop(colors.yellow('API Key is missing. Run `langtrain login` or set LANGTRAIN_API_KEY.'));\n issues++;\n } else {\n s.stop('Configuration found.');\n\n // 3. Check API Connectivity\n s.start('Checking API connectivity...');\n try {\n const plan = await getSubscription(config.apiKey);\n s.stop(`Connected to Langtrain Cloud (Plan: ${colors.green(plan?.plan || 'unknown')})`);\n } catch (e: any) {\n s.stop(colors.red(`Failed to connect to Langtrain Cloud: ${e.message}`));\n issues++;\n }\n }\n\n console.log(''); // Spacer\n\n if (issues === 0) {\n showSuccess('Your Langtrain environment is healthy! Ready to build.');\n } else {\n showWarning(`Found ${issues} issue(s). Please resolve them for the best experience.`);\n }\n\n outro('Doctor check complete.');\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray } from '../ui';\nimport { getConfig } from '../config';\nimport { FileClient, AgentClient, GuardrailClient } from '../../index';\nimport { handleAgentRun } from './agent';\nimport fs from 'fs';\n\nexport async function handleDataUpload(client: FileClient) {\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n // Optional: ask for workspace ID or try to infer? \n // For upload, workspace_id is often optional (inferred from API key's default workspace)\n // But let's ask if user wants to specify.\n }\n\n const filePath = await text({\n message: 'Path to file:',\n placeholder: './dataset.jsonl',\n validate(value) {\n if (!value) return 'Required';\n if (!fs.existsSync(value)) return 'File not found';\n }\n });\n\n if (isCancel(filePath)) return;\n\n const purpose = await select({\n message: 'File Purpose:',\n options: [\n { value: 'fine-tune', label: 'Fine-tuning (JSONL)' },\n { value: 'vision-tune', label: 'Vision Tuning (Image/Zip)' },\n { value: 'agent-knowledge', label: 'Agent Knowledge' }\n ]\n });\n\n if (isCancel(purpose)) return;\n\n const s = spinner();\n s.start('Uploading file...');\n\n try {\n const result = await client.upload(filePath as string, workspaceId, purpose as string);\n s.stop(green('File uploaded successfully!'));\n console.log(gray(`ID: ${result.id}`));\n console.log(gray(`Name: ${result.filename}`));\n console.log(gray(`Bytes: ${result.bytes}`));\n } catch (e: any) {\n s.stop(red(`Upload failed: ${e.message}`));\n }\n}\n\nexport async function handleDataList(client: FileClient) {\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n // Try without workspace ID (some APIs return user's files)\n // or ask\n workspaceId = await text({ message: 'Enter Workspace ID (optional):', initialValue: '' });\n if (isCancel(workspaceId)) return;\n }\n\n const s = spinner();\n s.start('Fetching files...');\n\n try {\n const files = await client.list(workspaceId as string);\n s.stop(`Found ${files.length} files`);\n\n if (files.length === 0) {\n console.log(yellow('No files found.'));\n return;\n }\n\n const file = await select({\n message: 'Select file to analyze (or cancel to exit):',\n options: files.map(f => ({ value: f.id, label: `${f.filename} (${formatBytes(f.bytes)})` }))\n });\n\n if (isCancel(file)) return;\n\n await handleDataAnalyze(client, file as string);\n\n } catch (e: any) {\n s.stop(red(`Failed to list files: ${e.message}`));\n }\n}\n\nexport async function handleDataAnalyze(client: FileClient, fileId: string) {\n const config = getConfig();\n const s2 = spinner();\n s2.start('Connecting to Data Analyst...');\n\n try {\n const agentClient = new AgentClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n const agents = await agentClient.list();\n // Check name (name is optional in type but we know it exists for system agent)\n let analyst = agents.find(a => a.name && a.name === \"Langtrain Data Analyst\");\n\n if (!analyst) {\n s2.stop(yellow('Data Analyst agent (System) not found. Please contact admin to provision it.'));\n return;\n }\n\n s2.stop(green('Connected to Data Analyst.'));\n\n console.log(gray(`\\nAnalyzing dataset ${fileId}...\\n`));\n\n await handleAgentRun(agentClient, analyst.id, analyst.name, `Please analyze the dataset with ID: ${fileId}`);\n\n } catch (e: any) {\n s2.stop(red(`Failed to connect: ${e.message}`));\n }\n}\n\nexport async function handleDataRefine(client: FileClient, fileId?: string) {\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n // 0. Select File if not provided\n if (!fileId) {\n const s = spinner();\n s.start('Fetching files...');\n try {\n // Need workspace ID logic similar to List?\n // client.list takes workspaceId.\n const wId = config.workspace_id || '';\n const files = await client.list(wId);\n s.stop(`Found ${files.length} files`);\n\n if (files.length === 0) {\n console.log(yellow('No files found. Upload one first.'));\n return;\n }\n\n const selection = await select({\n message: 'Select file to refine:',\n options: files.map(f => ({ value: f.id, label: `${f.filename} (${formatBytes(f.bytes)})` }))\n });\n\n if (isCancel(selection)) return;\n fileId = selection as string;\n\n } catch (e: any) {\n s.stop(red(`Failed to fetch files: ${e.message}`));\n return;\n }\n }\n\n // 1. Select Guardrail\n const s = spinner();\n s.start('Fetching guardrails...');\n let guardId = \"\";\n try {\n const guards = await gClient.list();\n s.stop(`Found ${guards.length} guardrails`);\n\n if (guards.length === 0) {\n console.log(yellow('No guardrails found. Please create one first using \"lt guardrails create\".'));\n return;\n }\n\n const selection = await select({\n message: 'Select a Guardrail to apply:',\n options: guards.map((g: any) => ({\n value: g.id,\n label: g.name,\n hint: g.description\n }))\n });\n\n if (isCancel(selection)) return;\n guardId = selection as string;\n\n } catch (e: any) {\n s.stop(red(`Failed to fetch guardrails: ${e.message}`));\n return;\n }\n\n // 2. Apply\n const s2 = spinner();\n s2.start('Applying guardrail (filtering dataset)...');\n\n try {\n const result = await gClient.apply(fileId, guardId);\n s2.stop(green('Dataset refined successfully!'));\n\n console.log(gray('Stats:'));\n console.log(`Original Rows: ${result.original_rows}`);\n console.log(`Filtered Rows: ${result.filtered_rows}`);\n console.log(red(`Removed: ${result.removed_rows} rows`));\n console.log(green(`New Dataset ID: ${result.new_dataset_id}`));\n\n } catch (e: any) {\n s2.stop(red(`Failed to refine dataset: ${e.message}`));\n }\n}\n\nfunction formatBytes(bytes: number, decimals = 2) {\n if (!+bytes) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n","import { intro, outro, spinner, green, red, yellow, showSuccess } from '../ui';\nimport { getConfig } from '../config';\nimport { AgentClient, AgentCreate } from '../../index';\n\nexport async function handleDeploy(client: AgentClient) {\n intro('Deploying configuration to Langtrain Cloud...');\n\n const config = getConfig();\n const agents = config.agents || [];\n\n if (agents.length === 0) {\n intro(yellow('No agents found in langtrain.config.json'));\n return;\n }\n\n // Iterate and deploy\n for (const agentConfig of agents) {\n const s = spinner();\n s.start(`Deploying agent: ${agentConfig.name}...`);\n\n try {\n // Check if agent exists (by name? logic needed)\n // Ideally we store ID in config after create, but for now let's just create new or try to find by name.\n // Listing all agents is expensive if many, but safe for now.\n const existingAgents = await client.list();\n const existing = existingAgents.find(a => a.name === agentConfig.name);\n\n if (existing) {\n // Update (Note: SDK didn't expose update in my view_file, assuming create or need to add update)\n // If update not available, we skip or warn.\n // Let's assume we can't update yet as per SDK view.\n // So we just skip if exists.\n s.stop(yellow(`Agent ${agentConfig.name} already exists (ID: ${existing.id}). Skipping update (not supported yet).`));\n } else {\n // Create\n const payload: AgentCreate = {\n workspace_id: config.workspace_id || (existingAgents[0]?.workspace_id) || '', // Need a way to get workspace!\n name: agentConfig.name,\n description: agentConfig.description,\n config: agentConfig.config\n };\n\n // Fallback for workspace_id\n if (!payload.workspace_id) {\n // Try to get from first agent or error\n // Realistically, user needs to set workspace_id in config or we infer from API key scope.\n // Let's warn.\n s.stop(red(`Failed: Workspace ID missing in config for ${agentConfig.name}`));\n continue;\n }\n\n await client.create(payload);\n s.stop(green(`Agent ${agentConfig.name} deployed successfully!`));\n }\n\n } catch (e: any) {\n s.stop(red(`Failed to deploy ${agentConfig.name}: ${e.message}`));\n }\n }\n\n showSuccess('Deployment complete.');\n}\n","import { intro, outro, spinner, green, red, yellow, showInfo, gray } from '../ui';\nimport { AgentClient } from '../../index';\nimport { handleDeploy } from './deploy';\nimport fs from 'fs';\nimport path from 'path';\n\nexport async function handleDev(client: AgentClient) {\n intro('Starting Langtrain Development Server...');\n\n const configPath = path.join(process.cwd(), 'langtrain.config.json');\n if (!fs.existsSync(configPath)) {\n intro(red('langtrain.config.json not found. Run \"lt init\" first.'));\n return;\n }\n\n console.log(gray(`Watching ${configPath} for changes...`));\n\n let isDeploying = false;\n\n // Initial Deploy\n await handleDeploy(client);\n\n fs.watch(configPath, async (eventType) => {\n if (eventType === 'change' && !isDeploying) {\n isDeploying = true;\n console.log(yellow('Configuration changed. Redeploying...'));\n // Wait a bit for file write to complete\n await new Promise(r => setTimeout(r, 500));\n try {\n await handleDeploy(client);\n } catch (e: any) {\n console.error(red(`Deploy failed: ${e.message}`));\n } finally {\n isDeploying = false;\n console.log(gray(`Watching ${configPath}...`));\n }\n }\n });\n\n // Keep process alive\n await new Promise(() => { });\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray } from '../ui';\nimport { getConfig } from '../config';\nimport { GuardrailClient } from '../../index';\n\nexport async function handleGuardrailList(client: any) { // using any to match index signature, but we instantiate specific client inside\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n const s = spinner();\n s.start('Fetching guardrails...');\n\n try {\n const guards = await gClient.list();\n s.stop(`Found ${guards.length} guardrails`);\n\n if (guards.length === 0) {\n console.log(yellow('No guardrails found. Create one with \"lt guardrails create\".'));\n return;\n }\n\n guards.forEach((g: any) => {\n console.log(green(`• ${g.name}`) + gray(` (ID: ${g.id})`));\n if (g.description) console.log(gray(` ${g.description}`));\n console.log(gray(` Config: PII=${g.config.pii_enabled}, MinLen=${g.config.min_length}`));\n console.log('');\n });\n\n } catch (e: any) {\n s.stop(red(`Failed to list guardrails: ${e.message}`));\n }\n}\n\nexport async function handleGuardrailCreate(client: any) {\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n intro('Create a new Data Guardrail');\n\n const name = await text({\n message: 'Guardrail Name:',\n placeholder: 'e.g. Strict Safety Policy',\n validate(value) {\n if (!value) return 'Name is required';\n }\n });\n if (isCancel(name)) return;\n\n const description = await text({\n message: 'Description (optional):',\n placeholder: 'Filters PII and short text',\n });\n if (isCancel(description)) return;\n\n // Interactive Config\n const minLen = await text({\n message: 'Minimum Text Length (0 for no limit):',\n initialValue: '0',\n validate(value) {\n if (isNaN(Number(value))) return 'Must be a number';\n }\n });\n if (isCancel(minLen)) return;\n\n const enablePii = await confirm({\n message: 'Enable PII Filtering (Email/Phone)?',\n initialValue: false\n });\n if (isCancel(enablePii)) return;\n\n const patterns = await text({\n message: 'Regex Patterns to Block (comma separated, optional):',\n placeholder: 'e.g. bad_word, another_one',\n });\n if (isCancel(patterns)) return;\n\n const s = spinner();\n s.start('Creating guardrail...');\n\n try {\n const regexList = (patterns as string).split(',').map(p => p.trim()).filter(p => p.length > 0);\n\n const payload = {\n name,\n description,\n config: {\n min_length: Number(minLen),\n pii_enabled: enablePii,\n regex_patterns: regexList,\n profanity_enabled: false\n }\n };\n\n const result = await gClient.create(payload);\n s.stop(green(`Guardrail \"${result.name}\" created successfully!`));\n console.log(gray(`ID: ${result.id}`));\n\n } catch (e: any) {\n s.stop(red(`Failed to create guardrail: ${e.message}`));\n }\n}\n","import { intro, outro, spinner, green, red, yellow, showInfo, gray, showSuccess } from '../ui';\nimport { SecretClient } from '../../index';\nimport { text, confirm, select, isCancel, cancel } from '../ui';\nimport { getConfig } from '../config';\n\nexport async function handleEnvList(client: SecretClient) {\n const s = spinner();\n s.start('Fetching secrets...');\n const config = getConfig();\n try {\n const secrets = await client.list(config.workspace_id);\n s.stop(`Found ${secrets.length} secrets`);\n\n if (secrets.length === 0) {\n console.log(gray('No secrets found. Use \"lt env set\" to add one.'));\n return;\n }\n\n console.log(gray('------------------------------------------------'));\n secrets.forEach(sec => {\n console.log(`${sec.key.padEnd(30)} ${gray('******')}`);\n });\n console.log(gray('------------------------------------------------'));\n\n } catch (e: any) {\n s.stop(red(`Failed to list secrets: ${e.message}`));\n }\n}\n\nexport async function handleEnvSet(client: SecretClient, keyVal?: string) {\n let key = '';\n let value = '';\n\n if (keyVal && keyVal.includes('=')) {\n const parts = keyVal.split('=');\n key = parts[0];\n value = parts.slice(1).join('=');\n } else {\n key = await text({ message: 'Secret Key:', placeholder: 'OPENAI_API_KEY' }) as string;\n if (isCancel(key)) return;\n\n value = await text({ message: 'Secret Value:', placeholder: 'sk-...' }) as string;\n if (isCancel(value)) return;\n }\n\n const s = spinner();\n s.start(`Setting ${key}...`);\n const config = getConfig();\n\n try {\n await client.set(key, value, config.workspace_id);\n s.stop(green(`Secret ${key} set successfully.`));\n } catch (e: any) {\n s.stop(red(`Failed to set secret: ${e.message}`));\n }\n}\n\n// Interactive menu for env\nexport async function handleEnvMenu(client: SecretClient) {\n const action = await select({\n message: 'Manage Secrets',\n options: [\n { value: 'list', label: 'List Secrets' },\n { value: 'set', label: 'Set Secret' },\n { value: 'remove', label: 'Remove Secret' },\n { value: 'back', label: 'Back' }\n ]\n });\n\n if (isCancel(action) || action === 'back') return;\n\n if (action === 'list') await handleEnvList(client);\n if (action === 'set') await handleEnvSet(client);\n if (action === 'remove') {\n const key = await text({ message: 'Key to remove:' });\n if (!isCancel(key)) {\n const s = spinner();\n s.start('Removing...');\n try {\n // need workspace_id\n const config = getConfig();\n await client.delete(key as string, config.workspace_id);\n s.stop(green('Removed.'));\n } catch (e: any) {\n s.stop(red(`Failed: ${e.message}`));\n }\n }\n }\n}\n","import { intro, spinner, red, gray, yellow, bgMagenta, black, green } from '../ui';\nimport { AgentClient } from '../../index';\nimport { select, text, isCancel } from '../ui';\n\nexport async function handleLogs(client: AgentClient, agentName?: string) {\n const s = spinner();\n\n let agentId = '';\n\n if (agentName) {\n s.start('Finding agent...');\n try {\n const agents = await client.list();\n const found = agents.find(a => a.name === agentName || a.id === agentName);\n if (found) agentId = found.id;\n else {\n s.stop(red(`Agent \"${agentName}\" not found.`));\n return;\n }\n s.stop(green(`Found agent: ${found.name}`));\n } catch (e: any) {\n s.stop(red(`Failed to list agents: ${e.message}`));\n return;\n }\n } else {\n // Interactive select\n s.start('Fetching agents...');\n try {\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n console.log(yellow('No agents found.'));\n return;\n }\n\n const selection = await select({\n message: 'Select agent to view logs:',\n options: agents.map(a => ({ value: a.id, label: a.name }))\n });\n\n if (isCancel(selection)) return;\n agentId = selection as string;\n } catch (e: any) {\n s.stop(red(`Failed to list agents: ${e.message}`));\n return;\n }\n }\n\n const s2 = spinner();\n s2.start('Fetching logs...');\n try {\n const logs = await client.logs(agentId); // Assumes we added logs() to AgentClient\n s2.stop('Logs fetched.');\n\n console.log(gray('------------------------------------------------'));\n console.log(`${bgMagenta(black(' Recent Logs '))}`);\n if (logs.logs && logs.logs.length > 0) {\n logs.logs.forEach(log => console.log(log));\n } else {\n console.log(gray('(No logs found)'));\n }\n console.log(gray('------------------------------------------------'));\n\n } catch (e: any) {\n s2.stop(red(`Failed to fetch logs: ${e.message}`));\n }\n}\n","import { green, dim, cyan, bold, yellow, gray, spinner } from '../ui';\nimport { getConfig } from '../config';\n\n// Session-level telemetry tracker\nlet sessionStart = Date.now();\nlet apiCallCount = 0;\nlet totalLatencyMs = 0;\nlet errorCount = 0;\n\nexport function trackApiCall(latencyMs: number, isError: boolean = false) {\n apiCallCount++;\n totalLatencyMs += latencyMs;\n if (isError) errorCount++;\n}\n\nexport async function handleTokens() {\n const config = getConfig();\n const apiKey = config.apiKey;\n\n console.log('');\n console.log(bold(' ╔══════════════════════════════════════╗'));\n console.log(bold(' ║ TOKEN USAGE ║'));\n console.log(bold(' ╚══════════════════════════════════════╝'));\n console.log('');\n\n if (!apiKey) {\n console.log(yellow(' Login required to view token usage.\\n'));\n return;\n }\n\n const s = spinner();\n s.start('Fetching token usage...');\n\n try {\n const axios = require('axios');\n const baseUrl = config.baseUrl || 'https://api.langtrain.xyz';\n const res = await axios.get(`${baseUrl}/v1/usage/tokens`, {\n headers: { Authorization: `Bearer ${apiKey}` }\n });\n\n const usage = res.data;\n s.stop(green('Token usage retrieved'));\n console.log('');\n\n const used = usage.tokens_used || 0;\n const limit = usage.token_limit || 10000;\n const pct = Math.round((used / limit) * 100);\n const remaining = Math.max(0, limit - used);\n\n // Visual bar\n const barWidth = 30;\n const filled = Math.round((pct / 100) * barWidth);\n const bar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);\n const barColor = pct > 90 ? '\\x1b[31m' : pct > 70 ? '\\x1b[33m' : '\\x1b[32m';\n\n console.log(` ${dim('Period:')} ${usage.period || 'Current Month'}`);\n console.log(` ${dim('Used:')} ${used.toLocaleString()} tokens`);\n console.log(` ${dim('Limit:')} ${limit.toLocaleString()} tokens`);\n console.log(` ${dim('Remaining:')} ${remaining.toLocaleString()} tokens`);\n console.log(` ${dim('Usage:')} ${barColor}${bar}\\x1b[0m ${pct}%`);\n console.log('');\n\n if (usage.breakdown) {\n console.log(dim(' ── Breakdown ────────────────────────'));\n console.log(` ${dim('Training:')} ${(usage.breakdown.training || 0).toLocaleString()}`);\n console.log(` ${dim('Inference:')} ${(usage.breakdown.inference || 0).toLocaleString()}`);\n console.log(` ${dim('Agents:')} ${(usage.breakdown.agents || 0).toLocaleString()}`);\n console.log('');\n }\n } catch (e: any) {\n s.stop('');\n // Show mock data if API not available\n console.log(dim(' Token data not available from server.'));\n console.log(dim(' Showing session estimates:\\n'));\n\n console.log(` ${dim('Session calls:')} ${apiCallCount}`);\n console.log(` ${dim('Est. tokens:')} ~${apiCallCount * 150}`);\n console.log('');\n }\n}\n\nexport async function handleTelemetry() {\n const uptimeMs = Date.now() - sessionStart;\n const uptimeSec = Math.round(uptimeMs / 1000);\n const uptimeMin = Math.floor(uptimeSec / 60);\n const uptimeStr = uptimeMin > 0 ? `${uptimeMin}m ${uptimeSec % 60}s` : `${uptimeSec}s`;\n\n const avgLatency = apiCallCount > 0 ? Math.round(totalLatencyMs / apiCallCount) : 0;\n const errorRate = apiCallCount > 0 ? Math.round((errorCount / apiCallCount) * 100) : 0;\n\n console.log('');\n console.log(bold(' ╔══════════════════════════════════════╗'));\n console.log(bold(' ║ SESSION TELEMETRY ║'));\n console.log(bold(' ╚══════════════════════════════════════╝'));\n console.log('');\n\n console.log(` ${dim('Session:')} ${uptimeStr}`);\n console.log(` ${dim('API calls:')} ${apiCallCount}`);\n console.log(` ${dim('Avg latency:')} ${avgLatency}ms`);\n console.log(` ${dim('Errors:')} ${errorCount} (${errorRate}%)`);\n console.log('');\n\n console.log(dim(' ── Environment ──────────────────────'));\n console.log(` ${dim('Node:')} ${process.version}`);\n console.log(` ${dim('Platform:')} ${process.platform} ${process.arch}`);\n console.log(` ${dim('Memory:')} ${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB heap`);\n console.log(` ${dim('Config:')} ~/.langtrain/config.json`);\n console.log('');\n\n // API health check\n const config = getConfig();\n if (config.apiKey) {\n const s = spinner();\n s.start('Pinging API...');\n try {\n const axios = require('axios');\n const baseUrl = config.baseUrl || 'https://api.langtrain.xyz';\n const start = Date.now();\n await axios.get(`${baseUrl}/health`, { timeout: 5000 });\n const latency = Date.now() - start;\n s.stop(green(`API healthy (${latency}ms)`));\n } catch {\n s.stop(yellow('API unreachable'));\n }\n }\n console.log('');\n}\n","{\n \"name\": \"langtrain\",\n \"version\": \"0.2.1\",\n \"description\": \"Unified JavaScript SDK for Langtrain Ecosystem\",\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"langtrain\": \"./dist/cli.js\",\n \"lt\": \"./dist/cli.js\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n \"postinstall\": \"node dist/cli.js --first-run || true\"\n },\n \"keywords\": [\n \"langtrain\",\n \"langvision\",\n \"langtune\",\n \"sdk\",\n \"ai\",\n \"llm\",\n \"finetuning\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/langtrain-ai/langtrain-sdk.git\"\n },\n \"author\": \"Langtrain AI\",\n \"license\": \"MIT\",\n \"devDependencies\": {\n \"@types/form-data\": \"^2.2.1\",\n \"@types/gradient-string\": \"^1.1.6\",\n \"@types/node\": \"^25.2.3\",\n \"tsup\": \"^8.0.2\",\n \"typescript\": \"^5.4.2\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"^1.0.1\",\n \"axios\": \"^1.13.5\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.3\",\n \"form-data\": \"^4.0.5\",\n \"gradient-string\": \"^3.0.0\",\n \"kleur\": \"^4.1.5\",\n \"langtrain\": \"^0.1.15\",\n \"langtune\": \"^0.1.1\",\n \"langvision\": \"^0.1.1\"\n }\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { select, isCancel, outro, intro, colors, showBanner } from './ui';\nimport { ensureAuth, handleLogin, handleLogout, getSubscription, isAuthenticated } from './auth';\nimport { getMenu, MenuState } from './menu';\nimport { getConfig } from './config';\n\n// Handlers\nimport { handleSubscriptionStatus } from './handlers/subscription';\nimport { handleTuneFinetune, handleTuneGenerate, handleTuneList } from './handlers/tune';\nimport { handleVisionFinetune, handleVisionGenerate } from './handlers/vision';\nimport { handleAgentCreate, handleAgentDelete, handleAgentList } from './handlers/agent';\nimport { handleInit } from './handlers/init';\nimport { handleDoctor } from './handlers/doctor';\nimport { handleDataUpload, handleDataRefine } from './handlers/data';\nimport { handleDeploy } from './handlers/deploy';\nimport { handleDev } from './handlers/dev';\nimport { handleGuardrailList, handleGuardrailCreate } from './handlers/guardrails';\nimport { handleEnvMenu } from './handlers/env';\nimport { handleLogs } from './handlers/logs';\nimport { handleTokens, handleTelemetry } from './handlers/telemetry';\n\n// Clients\nimport { SubscriptionInfo, Langvision, Langtune, AgentClient, ModelClient, FileClient, TrainingClient, SecretClient } from '../index';\nimport packageJson from '../../package.json';\n\nfunction showStatusBar(plan: SubscriptionInfo | null) {\n const { dim, green, yellow, cyan, bold, gray } = colors;\n\n const planLabel = plan?.plan === 'pro'\n ? bold(green('PRO'))\n : plan?.plan === 'enterprise'\n ? bold(green('ENTERPRISE'))\n : dim('FREE');\n\n const tokensUsed = plan?.usage?.tokensUsedThisMonth || 0;\n const tokenLimit = plan?.usage?.tokenLimit || 10000;\n const pct = Math.round((tokensUsed / tokenLimit) * 100);\n const tokenBar = pct > 80 ? yellow(`${pct}%`) : green(`${pct}%`);\n\n console.log(dim(' ─────────────────────────────────────────────'));\n console.log(` ${dim('Plan:')} ${planLabel} ${dim('│')} ${dim('Tokens:')} ${tokensUsed.toLocaleString()}/${tokenLimit.toLocaleString()} ${tokenBar}`);\n console.log(dim(' ─────────────────────────────────────────────\\n'));\n}\n\nfunction buildClients(apiKey: string, baseUrl?: string) {\n return {\n vision: new Langvision({ apiKey }),\n tune: new Langtune({ apiKey }),\n agent: new AgentClient({ apiKey, baseUrl }),\n model: new ModelClient({ apiKey, baseUrl }),\n train: new TrainingClient({ apiKey, baseUrl }),\n secret: new SecretClient({ apiKey, baseUrl }),\n };\n}\n\nfunction getMessageForState(state: MenuState): string {\n switch (state) {\n case 'main': return 'What would you like to do?';\n case 'agents': return 'Agents:';\n case 'text': return 'Langtune (Text):';\n case 'vision': return 'Langvision (Vision):';\n case 'guard': return 'Guardrails:';\n case 'settings': return 'Settings:';\n default: return 'Select an option:';\n }\n}\n\nexport async function main() {\n const program = new Command();\n const version = packageJson.version;\n\n program\n .name('langtrain')\n .description('Langtrain CLI — Fine-tuning, Agents, and AI Ops')\n .version(version);\n\n // ── Standalone commands (work without interactive mode) ─────────────\n program.command('init')\n .description('Initialize a new Langtrain project')\n .action(handleInit);\n\n program.command('deploy')\n .description('Deploy configuration to Langtrain Cloud')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleDeploy(client);\n });\n\n program.command('dev')\n .description('Start local development server')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleDev(client);\n });\n\n program.command('env')\n .description('Manage secrets and environment variables')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new SecretClient({ apiKey, baseUrl: config.baseUrl });\n await handleEnvMenu(client);\n });\n\n program.command('logs [agent]')\n .description('Stream logs from a deployed agent')\n .action(async (agent) => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleLogs(client, agent);\n });\n\n program.command('login')\n .description('Authenticate with your API key')\n .action(async () => {\n await handleLogin();\n });\n\n program.command('logout')\n .description('Clear stored credentials')\n .action(async () => {\n await handleLogout();\n });\n\n program.command('tokens')\n .description('View token usage for current period')\n .action(handleTokens);\n\n // ── Data commands ──────────────────────────────────────────────────\n const dataCommand = program.command('data').description('Manage datasets');\n\n dataCommand.command('upload [file]')\n .description('Upload a dataset')\n .action(async () => {\n const config = getConfig();\n const client = new FileClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n await handleDataUpload(client);\n });\n\n dataCommand.command('refine [fileId]')\n .description('Refine a dataset using guardrails')\n .action(async (fileId) => {\n const config = getConfig();\n const client = new FileClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n await handleDataRefine(client, fileId);\n });\n\n // ── Guardrail commands ─────────────────────────────────────────────\n const guardCommand = program.command('guardrails').description('Manage data guardrails');\n\n guardCommand.command('list')\n .description('List available guardrails')\n .action(async () => await handleGuardrailList(null));\n\n guardCommand.command('create')\n .description('Create a new guardrail')\n .action(async () => await handleGuardrailCreate(null));\n\n // ── Interactive mode (default action) ──────────────────────────────\n program.action(async () => {\n showBanner(version);\n\n // First-run check\n const isFirstRun = process.argv.includes('--first-run');\n if (isFirstRun) {\n if (process.stdin.isTTY) {\n intro('Welcome to Langtrain! Let\\'s get you set up.');\n await handleLogin();\n } else {\n console.log('Langtrain installed! Run \"npx langtrain login\" to authenticate.');\n process.exit(0);\n }\n }\n\n // ── Auth-gated flow ───────────────────────────────────────────\n let config = getConfig();\n let apiKey = config.apiKey || '';\n let authed = isAuthenticated();\n let plan: SubscriptionInfo | null = null;\n\n // If authenticated, show status bar\n if (authed && apiKey) {\n try { plan = await getSubscription(apiKey); } catch { }\n showStatusBar(plan);\n } else {\n console.log(colors.dim(' Not logged in. Only basic options available.\\n'));\n }\n\n let clients = authed ? buildClients(apiKey, config.baseUrl) : null;\n\n // ── Navigation loop ──────────────────────────────────────────\n let currentState: MenuState = 'main';\n\n while (true) {\n const operation = await select({\n message: getMessageForState(currentState),\n options: getMenu(currentState, plan, authed)\n });\n\n if (isCancel(operation)) {\n if (currentState === 'main') {\n outro('Goodbye!');\n process.exit(0);\n } else {\n currentState = 'main';\n continue;\n }\n }\n\n const op = operation as string;\n\n // Navigation\n if (op === 'exit') { outro('Goodbye!'); process.exit(0); }\n if (op === 'back') { currentState = 'main'; continue; }\n if (op.startsWith('nav-')) { currentState = op.replace('nav-', '') as MenuState; continue; }\n\n // Actions\n try {\n switch (op) {\n // Auth\n case 'login':\n await handleLogin();\n config = getConfig();\n apiKey = config.apiKey || '';\n authed = isAuthenticated();\n if (authed) {\n try { plan = await getSubscription(apiKey); } catch { }\n clients = buildClients(apiKey, config.baseUrl);\n console.clear();\n showBanner(version);\n showStatusBar(plan);\n }\n break;\n\n case 'logout':\n await handleLogout();\n apiKey = '';\n authed = false;\n plan = null;\n clients = null;\n console.clear();\n showBanner(version);\n console.log(colors.dim(' Logged out. Only basic options available.\\n'));\n break;\n\n case 'docs':\n console.log(colors.cyan('\\n 📖 https://docs.langtrain.ai\\n'));\n break;\n\n // Status & info\n case 'status': await handleSubscriptionStatus(); break;\n case 'tokens': await handleTokens(); break;\n case 'telemetry': await handleTelemetry(); break;\n case 'doctor': await handleDoctor(); break;\n\n // Project\n case 'init': await handleInit(); break;\n case 'deploy': if (clients) await handleDeploy(clients.agent); break;\n case 'dev': if (clients) await handleDev(clients.agent); break;\n case 'env': if (clients) await handleEnvMenu(clients.secret); break;\n case 'logs': if (clients) await handleLogs(clients.agent); break;\n\n // Tune\n case 'tune-finetune': if (clients) await handleTuneFinetune(clients.tune, clients.model); break;\n case 'tune-list': if (clients) await handleTuneList(clients.train); break;\n case 'tune-generate': if (clients) await handleTuneGenerate(clients.tune); break;\n\n // Vision\n case 'vision-finetune': if (clients) await handleVisionFinetune(clients.vision, clients.model); break;\n case 'vision-generate': if (clients) await handleVisionGenerate(clients.vision); break;\n\n // Agents\n case 'agent-list': if (clients) await handleAgentList(clients.agent); break;\n case 'agent-create': if (clients) await handleAgentCreate(clients.agent, clients.model); break;\n case 'agent-delete': if (clients) await handleAgentDelete(clients.agent); break;\n\n // Data\n case 'data-upload':\n if (apiKey) await handleDataUpload(new FileClient({ apiKey }));\n break;\n case 'data-refine':\n if (apiKey) await handleDataRefine(new FileClient({ apiKey }));\n break;\n\n // Guardrails\n case 'guard-list': await handleGuardrailList(null); break;\n case 'guard-create': await handleGuardrailCreate(null); break;\n }\n } catch (error: any) {\n outro(colors.red(`Error: ${error.message}`));\n }\n }\n });\n\n main().catch(console.error);\n}\n"]}
1
+ {"version":3,"sources":["../src/cli/components/Table.ts","../src/cli/ui.ts","../src/cli/config.ts","../src/cli/auth.ts","../src/cli/menu.ts","../src/cli/handlers/subscription.ts","../src/cli/handlers/tune.ts","../src/cli/handlers/vision.ts","../src/cli/handlers/agent.ts","../src/cli/handlers/init.ts","../src/cli/handlers/doctor.ts","../src/cli/handlers/data.ts","../src/cli/handlers/deploy.ts","../src/cli/handlers/dev.ts","../src/cli/handlers/guardrails.ts","../src/cli/handlers/env.ts","../src/cli/handlers/logs.ts","../src/cli/handlers/telemetry.ts","../package.json","../src/cli/index.ts"],"names":["createTable","headers","Table","h","colors","showBanner","version","gradient","bgMagenta","black","intro","message","magenta","outro","gray","spinner","msg","green","showSuccess","showWarning","yellow","showInfo","blue","red","cyan","bold","dim","white","CONFIG_DIR","path","os","CONFIG_FILE","getConfig","fs","saveConfig","config","execAsync","promisify","exec","API_BASE","openBrowser","url","command","isAuthenticated","handleLogin","s","codeData","axios","device_code","user_code","verification_url","expires_in","interval","note","pollSpinner","startTime","timeout","tokenData","apiKey","verifySpinner","info","SubscriptionClient","planBadge","r","password","value","isCancel","cancel","handleLogout","getSubscription","client","e","getMenu","state","plan","planLabel","handleSubscriptionStatus","handleTuneFinetune","tune","modelClient","model","models","select","m","text","trainFile","epochs","track","upgrade","confirm","fileClient","FileClient","trainingClient","TrainingClient","fileResp","job","cont","s2","handleTuneGenerate","prompt","response","handleTuneList","workspaceId","jobs","table","j","statusColor","selectedJob","handleTuneStatus","jobId","id","action","handleTuneCancel","confirmCancel","handleVisionFinetune","vision","dataset","handleVisionGenerate","handleAgentCreate","name","description","systemPrompt","agents","wid","agent","handleAgentDelete","agentId","a","d","handleAgentList","handleAgentRun","agentName","initialMessage","conversationId","input","result","handleInit","cwd","overwrite","projectName","shouldLogin","configContent","handleDoctor","issues","nodeVersion","platform","arch","handleDataUpload","filePath","purpose","handleDataRefine","fileId","gClient","GuardrailClient","wId","files","selection","f","formatBytes","guardId","guards","g","bytes","decimals","k","dm","sizes","handleDeploy","agentConfig","existingAgents","existing","payload","handleDev","configPath","isDeploying","eventType","handleGuardrailList","handleGuardrailCreate","minLen","enablePii","patterns","regexList","p","handleEnvList","secrets","sec","handleEnvSet","keyVal","key","handleEnvMenu","handleLogs","found","logs","log","sessionStart","apiCallCount","errorCount","handleTokens","ue","baseUrl","usage","used","limit","pct","remaining","barWidth","filled","bar","barColor","handleTelemetry","uptimeMs","uptimeSec","uptimeMin","uptimeStr","avgLatency","errorRate","start","latency","package_default","showStatusBar","tokensUsed","tokenLimit","tokenBar","buildClients","Langvision","Langtune","AgentClient","ModelClient","SecretClient","getMessageForState","main","program","Command","dataCommand","guardCommand","authed","clients","currentState","operation","op","error"],"mappings":"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","file":"cli.js","sourcesContent":["import Table from 'cli-table3';\nimport { colors } from '../ui';\n\nexport function createTable(headers: string[]) {\n return new Table({\n head: headers.map(h => colors.magenta(colors.bold(h))),\n chars: {\n 'top': '─', 'top-mid': '┬', 'top-left': '┌', 'top-right': '┐',\n 'bottom': '─', 'bottom-mid': '┴', 'bottom-left': '└', 'bottom-right': '┘',\n 'left': '│', 'left-mid': '├', 'mid': '─', 'mid-mid': '┼',\n 'right': '│', 'right-mid': '┤', 'middle': '│'\n },\n style: {\n 'padding-left': 1,\n 'padding-right': 1,\n head: [], // handle colors manually\n border: ['gray']\n }\n });\n}\n","import { text, select, confirm, password, isCancel, cancel, note } from '@clack/prompts';\nimport { bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, magenta, white } from 'kleur/colors';\nimport gradient from 'gradient-string';\n\n// Re-export specific prompts to keep imports clean in other files\nexport { text, select, confirm, password, isCancel, cancel, note };\n\nexport function showBanner(version: string) {\n console.clear();\n const banner = `\n ██╗ █████╗ ███╗ ██╗ ██████╗████████╗██████╗ █████╗ ██╗███╗ ██╗\n ██║ ██╔══██╗████╗ ██║██╔════╝╚══██╔══╝██╔══██╗██╔══██╗██║████╗ ██║\n ██║ ███████║██╔██╗ ██║██║ ███╗ ██║ ██████╔╝███████║██║██╔██╗ ██║\n ██║ ██╔══██║██║╚██╗██║██║ ██║ ██║ ██╔══██╗██╔══██║██║██║╚██╗██║\n ███████╗██║ ██║██║ ╚████║╚██████╔╝ ██║ ██║ ██║██║ ██║██║██║ ╚████║\n ╚══════╝╚═╝ ╚═╝╚═╝ ╚═══╝ ╚═════╝ ╚═╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═╝╚═╝ ╚═══╝\n `;\n // Brand Gradient: Purple to Pink to Blue (Light Luxury)\n console.log(gradient(['#A855F7', '#EC4899', '#3B82F6'])(banner));\n\n // Elegant Badge: Black text on Magenta background\n console.log(`${bgMagenta(black(` Langtrain SDK v${version} `))}\\n`);\n}\n\nexport function intro(message: string) {\n console.log(magenta(`◆ ${message}`));\n}\n\nexport function outro(message: string) {\n console.log(gray(`└ ${message}`));\n}\n\nexport function spinner() {\n return {\n start: (msg: string) => process.stdout.write(`${magenta('●')} ${msg}\\r`),\n stop: (msg?: string) => {\n if (msg) console.log(`${green('✔')} ${msg}`);\n else console.log(''); // Newline\n },\n message: (msg: string) => process.stdout.write(`${magenta('●')} ${msg}\\r`)\n };\n}\n\nexport function showError(message: string) {\n console.log(red(`✖ Error: ${message}`));\n}\n\nexport function showSuccess(message: string) {\n console.log(green(`✔ ${message}`));\n}\n\nexport function showWarning(message: string) {\n console.log(yellow(`⚠ Warning: ${message}`));\n}\n\nexport function showInfo(message: string) {\n console.log(blue(`ℹ ${message}`));\n}\n\nexport function showDim(message: string) {\n console.log(dim(message));\n}\n\n// Re-export for backward compatibility\nexport { bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, gradient, magenta, white };\n\nexport const colors = {\n bgMagenta, black, red, green, yellow, gray, cyan, bold, dim, blue, magenta, white\n};\n\nexport * from './components/Table';\n\n","import fs from 'fs';\nimport path from 'path';\nimport os from 'os';\n\nconst CONFIG_DIR = path.join(os.homedir(), '.langtrain');\nconst CONFIG_FILE = path.join(CONFIG_DIR, 'config.json');\n\nexport interface CLIConfig {\n apiKey?: string;\n baseUrl?: string;\n [key: string]: any;\n}\n\nexport function getConfig(): CLIConfig {\n if (!fs.existsSync(CONFIG_FILE)) return {};\n try {\n return JSON.parse(fs.readFileSync(CONFIG_FILE, 'utf-8'));\n } catch {\n return {};\n }\n}\n\nexport function saveConfig(config: CLIConfig) {\n if (!fs.existsSync(CONFIG_DIR)) {\n fs.mkdirSync(CONFIG_DIR, { recursive: true });\n }\n fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));\n}\n","import { password, isCancel, cancel, intro, green, yellow, red, bgMagenta, black, spinner, gray, cyan, dim, bold, note } from './ui';\nimport { getConfig, saveConfig } from './config';\nimport { SubscriptionClient, SubscriptionInfo } from '../index';\nimport axios from 'axios';\nimport { exec } from 'child_process';\nimport { promisify } from 'util';\n\nconst execAsync = promisify(exec);\nconst API_BASE = 'https://api.langtrain.ai/api/v1';\n\nasync function openBrowser(url: string) {\n try {\n const command = process.platform === 'win32'\n ? `start ${url}`\n : process.platform === 'darwin'\n ? `open \"${url}\"`\n : `xdg-open \"${url}\"`;\n await execAsync(command);\n } catch {\n // Silently fail if browser can't open\n }\n}\n\n/**\n * Quick check if API key is stored (no network call).\n */\nexport function isAuthenticated(): boolean {\n const config = getConfig();\n return !!config.apiKey;\n}\n\n/**\n * Ensure auth — if not logged in, forces login flow.\n */\nexport async function ensureAuth(): Promise<string> {\n let config = getConfig();\n\n if (!config.apiKey) {\n console.log('');\n console.log(yellow(' Authentication required.'));\n console.log(gray(' Login to access all features.\\n'));\n await handleLogin();\n config = getConfig();\n }\n\n return config.apiKey as string;\n}\n\n/**\n * Interactive login — browser-based OAuth flow with API key fallback.\n */\nexport async function handleLogin() {\n const s = spinner();\n s.start('Connecting to Langtrain...');\n\n try {\n // 1. Request device code\n const { data: codeData } = await axios.post(`${API_BASE}/auth/device/code`);\n const { device_code, user_code, verification_url, expires_in, interval } = codeData;\n\n s.stop(green('Connected.'));\n\n console.log('\\n ' + bgMagenta(black(' AUTHENTICATION ')) + '\\n');\n console.log(` To log in, please open your browser to:\\n ${cyan(verification_url + '?code=' + user_code)}\\n`);\n\n note(\n `Confirmation Code:\\n${bold(user_code)}`,\n 'Verify in Browser'\n );\n\n console.log(gray(' Opening browser automatically...'));\n await openBrowser(`${verification_url}?code=${user_code}`);\n\n const pollSpinner = spinner();\n pollSpinner.start('Waiting for approval in browser...');\n\n // 2. Poll for token\n const startTime = Date.now();\n const timeout = expires_in * 1000;\n\n while (Date.now() - startTime < timeout) {\n try {\n const { data: tokenData } = await axios.post(`${API_BASE}/auth/device/token?device_code=${device_code}`);\n\n if (tokenData.status === 'approved') {\n const apiKey = tokenData.api_key;\n pollSpinner.stop(green('Approved!'));\n\n const verifySpinner = spinner();\n verifySpinner.start('Verifying credentials...');\n\n const client = new SubscriptionClient({ apiKey });\n const info = await client.getStatus();\n\n const planBadge = info.plan === 'pro'\n ? bgMagenta(black(' PRO '))\n : info.plan === 'enterprise'\n ? bgMagenta(black(' ENTERPRISE '))\n : ' FREE ';\n\n verifySpinner.stop(green(`Authenticated ${planBadge}`));\n\n const config = getConfig();\n saveConfig({ ...config, apiKey });\n console.log(green(' ✔ Credentials saved to ~/.langtrain/config.json\\n'));\n return;\n }\n\n if (tokenData.status === 'expired') {\n pollSpinner.stop(red('Device code expired.'));\n break;\n }\n\n // Wait for the requested interval\n await new Promise(r => setTimeout(r, interval * 1000));\n } catch (err) {\n // Ignore network errors during polling\n await new Promise(r => setTimeout(r, interval * 1000));\n }\n }\n\n pollSpinner.stop(yellow('Login timed out.'));\n } catch (err: any) {\n s.stop(red('Could not reach Langtrain server.'));\n }\n\n // 3. Fallback to manual entry if browser flow fails\n console.log(gray('\\n Browser login failed or timed out. Falling back to manual entry.'));\n\n while (true) {\n console.log(dim(' ─────────────────────────────────────'));\n console.log(gray(' Get your API Key at: ') + cyan('https://app.langtrain.xyz/home/api'));\n console.log(dim(' ─────────────────────────────────────\\n'));\n\n const apiKey = await password({\n message: 'Enter your Langtrain API Key:',\n validate(value) {\n if (!value || value.length === 0) return 'API Key is required';\n if (value.length < 10) return 'Invalid key format';\n },\n });\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled');\n process.exit(0);\n }\n\n const verifySpinner = spinner();\n verifySpinner.start('Verifying API Key...');\n\n try {\n const client = new SubscriptionClient({ apiKey: apiKey as string });\n const info = await client.getStatus();\n\n const planBadge = info.plan === 'pro'\n ? bgMagenta(black(' PRO '))\n : info.plan === 'enterprise'\n ? bgMagenta(black(' ENTERPRISE '))\n : ' FREE ';\n\n verifySpinner.stop(green(`Authenticated ${planBadge}`));\n\n const config = getConfig();\n saveConfig({ ...config, apiKey: apiKey as string });\n console.log(green(' ✔ Credentials saved to ~/.langtrain/config.json\\n'));\n return;\n } catch (e: any) {\n verifySpinner.stop(red('Invalid API Key. Please try again.'));\n }\n }\n}\n\n/**\n * Logout — clear stored credentials.\n */\nexport async function handleLogout() {\n const config = getConfig();\n delete config.apiKey;\n saveConfig(config);\n console.log(green('\\n ✔ Logged out. Credentials cleared.\\n'));\n}\n\n/**\n * Fetch subscription info for status bar display.\n */\nexport async function getSubscription(apiKey: string): Promise<SubscriptionInfo | null> {\n const client = new SubscriptionClient({ apiKey });\n const s = spinner();\n s.start('Checking subscription...');\n try {\n const info = await client.getStatus();\n\n const planBadge = info.plan === 'pro'\n ? bgMagenta(black(' PRO '))\n : info.plan === 'enterprise'\n ? bgMagenta(black(' ENTERPRISE '))\n : bold(' FREE ');\n\n s.stop(green(`Plan: ${planBadge}`));\n\n if (info.is_active === false) {\n console.log(yellow(' ⚠ Subscription inactive. Some features may be limited.\\n'));\n }\n\n return info;\n } catch (e: any) {\n s.stop(red('Failed to verify subscription.'));\n if (e.response && e.response.status === 401) {\n console.log(red(' API Key expired. Please login again.'));\n }\n return null;\n }\n}\n","import { SubscriptionInfo } from '../index';\n\nexport interface MenuOption {\n value: string;\n label: string;\n hint?: string;\n}\n\nexport type MenuState = 'main' | 'agents' | 'text' | 'vision' | 'guard' | 'settings';\n\nexport function getMenu(state: MenuState, plan: SubscriptionInfo | null, isAuthenticated: boolean): MenuOption[] {\n\n // ── Unauthenticated: Claude-style minimal menu ─────────────────────────\n if (!isAuthenticated) {\n return [\n { value: 'login', label: '→ Login', hint: 'Authenticate with your API key' },\n { value: 'docs', label: ' Documentation', hint: 'https://docs.langtrain.ai' },\n { value: 'exit', label: ' Exit' }\n ];\n }\n\n // ── Authenticated menus ────────────────────────────────────────────────\n const planLabel = plan?.plan === 'pro' ? 'PRO' : plan?.plan === 'enterprise' ? 'ENTERPRISE' : 'FREE';\n\n switch (state) {\n case 'main':\n return [\n { value: 'nav-agents', label: ' Agents', hint: 'Manage & deploy AI agents' },\n { value: 'nav-text', label: ' Langtune', hint: 'Text fine-tuning & generation' },\n { value: 'nav-vision', label: ' Langvision', hint: 'Vision fine-tuning & analysis' },\n { value: 'nav-guard', label: ' Guardrails', hint: 'Data quality & safety rules' },\n { value: 'init', label: ' Init Project', hint: 'Scaffold new Langtrain app' },\n { value: 'deploy', label: ' Deploy', hint: 'Push to Langtrain Cloud' },\n { value: 'dev', label: ' Dev Server', hint: 'Local watch mode' },\n { value: 'env', label: ' Secrets', hint: 'Manage environment variables' },\n { value: 'logs', label: ' Logs', hint: 'Stream agent logs' },\n { value: 'tokens', label: ' Token Usage', hint: 'View consumption this period' },\n { value: 'telemetry', label: ' Telemetry', hint: 'Session stats & API health' },\n { value: 'doctor', label: ' Doctor', hint: 'Check environment health' },\n { value: 'nav-settings', label: ' Settings', hint: `Plan: ${planLabel}` },\n { value: 'exit', label: ' Exit' }\n ];\n\n case 'agents':\n return [\n { value: 'agent-list', label: 'List & Run Agents', hint: 'Chat with active agents' },\n { value: 'agent-create', label: 'Create New Agent', hint: 'Deploy a new agent' },\n { value: 'agent-delete', label: 'Delete Agent', hint: 'Remove an agent' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'text':\n return [\n { value: 'tune-finetune', label: 'Fine-tune Text Model', hint: 'Create custom LLM' },\n { value: 'tune-list', label: 'List Jobs', hint: 'Check training status' },\n { value: 'tune-generate', label: 'Generate Text', hint: 'Test your models' },\n { value: 'data-upload', label: 'Upload Dataset', hint: 'Upload JSONL for training' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'guard':\n return [\n { value: 'guard-list', label: 'List Guardrails', hint: 'View active rules' },\n { value: 'guard-create', label: 'Create Guardrail', hint: 'Define new rules' },\n { value: 'data-refine', label: 'Refine Dataset', hint: 'Apply guardrail to data' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'vision':\n return [\n { value: 'vision-finetune', label: 'Fine-tune Vision Model', hint: 'Create custom VLM' },\n { value: 'vision-generate', label: 'Generate Vision Response', hint: 'Test vision models' },\n { value: 'back', label: '← Back' }\n ];\n\n case 'settings':\n return [\n { value: 'status', label: `Subscription (${planLabel})`, hint: 'View plan details' },\n { value: 'tokens', label: 'Token Usage', hint: 'View consumption' },\n { value: 'telemetry', label: 'Telemetry', hint: 'Session & API health' },\n { value: 'login', label: 'Update API Key', hint: 'Change credentials' },\n { value: 'logout', label: 'Logout', hint: 'Clear stored credentials' },\n { value: 'back', label: '← Back' }\n ];\n\n default:\n return [];\n }\n}\n","import { spinner, intro, red, green, gray, bgMagenta } from '../ui';\nimport { getConfig } from '../config';\nimport { SubscriptionClient } from '../../index';\n\nexport async function handleSubscriptionStatus() {\n const config = getConfig();\n if (!config.apiKey) {\n intro(red('Not logged in. Run \"login\" first.'));\n return;\n }\n const client = new SubscriptionClient({ apiKey: config.apiKey });\n const s = spinner();\n s.start('Fetching subscription status...');\n try {\n const info = await client.getStatus();\n s.stop(green('Subscription Status:'));\n\n console.log(gray('Plan: ') + (info.plan === 'pro' ? bgMagenta(' PRO ') : info.plan.toUpperCase()));\n console.log(gray('Active: ') + (info.is_active ? green('Yes') : red('No')));\n if (info.expires_at) console.log(gray('Expires: ') + new Date(info.expires_at).toLocaleDateString());\n\n console.log(gray('\\nLimits:'));\n console.log(` Models: ${info.limits.max_models === -1 ? 'Unlimited' : info.limits.max_models}`);\n console.log(` Training Jobs: ${info.limits.max_training_jobs}`);\n\n } catch (e: any) {\n s.stop(red('Failed to fetch status.'));\n console.error(e.message);\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, bgMagenta, black, gradient, gray, createTable } from '../ui';\nimport { getConfig } from '../config';\nimport { Langtune, ModelClient, SubscriptionClient, FileClient, TrainingClient } from '../../index';\n\n// Handler for Langtune Fine-tuning\nexport async function handleTuneFinetune(tune: Langtune, modelClient: ModelClient) {\n let model: string | symbol = '';\n\n const s = spinner();\n s.start('Fetching available text models...');\n try {\n const models = await modelClient.list('text');\n s.stop(`Found ${models.length} text models`);\n\n if (models.length > 0) {\n model = await select({\n message: 'Select base model:',\n options: models.map(m => ({ value: m.id, label: m.id, hint: m.owned_by }))\n });\n }\n } catch (e) {\n s.stop(yellow('Failed to fetch models. Using manual input.'));\n model = await text({\n message: 'Enter base model (e.g., gpt-3.5-turbo):',\n placeholder: 'gpt-3.5-turbo',\n validate(value) {\n if (!value || value.length === 0) return 'Value is required!';\n },\n });\n }\n\n if (isCancel(model)) {\n cancel('Operation cancelled.');\n process.exit(0);\n }\n\n const trainFile = await text({\n message: 'Enter path to training file:',\n placeholder: './data.jsonl',\n validate(value) {\n if (!value || value.length === 0) return 'Value is required!';\n },\n });\n if (isCancel(trainFile)) cancel('Operation cancelled.');\n\n const epochs = await text({\n message: 'Num Epochs:',\n placeholder: '3',\n initialValue: '3'\n });\n if (isCancel(epochs)) cancel('Operation cancelled.');\n\n const track = await select({\n message: 'Track this job on Langtrain Cloud?',\n options: [\n { value: 'yes', label: 'Yes', hint: 'Upload dataset and log job' },\n { value: 'no', label: 'No', hint: 'Local only' }\n ]\n });\n if (isCancel(track)) cancel('Operation cancelled.');\n\n if (track === 'yes') {\n const s = spinner();\n s.start('Connecting to Cloud...');\n try {\n const config = getConfig();\n if (!config.apiKey) throw new Error('API Key required. Run \"login\" first.');\n\n // Check Subscription\n const subClient = new SubscriptionClient({ apiKey: config.apiKey });\n const sub = await subClient.getStatus();\n if (!sub.features.includes('cloud_finetuning')) {\n s.stop(red('Feature \"cloud_finetuning\" is not available on your plan.'));\n const upgrade = await confirm({ message: 'Upgrade to Pro for cloud tracking?' });\n if (upgrade && !isCancel(upgrade)) {\n console.log(bgMagenta(black(' Visit https://langtrain.ai/dashboard/billing to upgrade. ')));\n }\n return;\n }\n\n const fileClient = new FileClient({ apiKey: config.apiKey });\n const trainingClient = new TrainingClient({ apiKey: config.apiKey });\n\n s.message('Uploading dataset...');\n const fileResp = await fileClient.upload(trainFile as string);\n\n s.message('Creating Job...');\n const job = await trainingClient.createJob({\n name: `cli-sft-${Date.now()}`,\n base_model: model as string,\n dataset_id: fileResp.id,\n task: 'text',\n hyperparameters: {\n n_epochs: parseInt(epochs as string)\n }\n });\n s.stop(green(`Job tracked: ${job.id}`));\n } catch (e: any) {\n s.stop(red(`Tracking failed: ${e.message}`));\n const cont = await confirm({ message: 'Continue with local training anyway?' });\n if (!cont || isCancel(cont)) return;\n }\n }\n\n const s2 = spinner();\n s2.start('Starting local fine-tuning...');\n\n try {\n const config: any = {\n model: model as string,\n trainFile: trainFile as string,\n preset: 'default', // simplified\n epochs: parseInt(epochs as string),\n batchSize: 1,\n learningRate: 2e-5,\n loraRank: 16,\n outputDir: './output'\n };\n\n await tune.finetune(config);\n s2.stop(green('Fine-tuning job started successfully!'));\n } catch (e: any) {\n s2.stop(red('Failed to start job.'));\n throw e;\n }\n}\n\n// Handler for Langtune Generation\nexport async function handleTuneGenerate(tune: Langtune) {\n const model = await text({\n message: 'Enter model path:',\n placeholder: './output/model',\n initialValue: './output/model'\n });\n if (isCancel(model)) cancel('Operation cancelled');\n\n const prompt = await text({\n message: 'Enter prompt:',\n placeholder: 'Hello world',\n });\n if (isCancel(prompt)) cancel('Operation cancelled');\n\n const s = spinner();\n s.start('Connecting to Langtrain Inference API...');\n\n try {\n const response = await tune.generate(model as string, { prompt: prompt as string });\n s.stop('Generation complete');\n intro('Response:');\n console.log(gradient.pastel(response));\n } catch (e: any) {\n s.stop(red('Generation failed.'));\n throw e;\n }\n}\n\nexport async function handleTuneList(trainingClient: TrainingClient) {\n const s = spinner();\n s.start('Fetching fine-tuning jobs...');\n\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n s.stop(yellow('Workspace ID required to list jobs.'));\n workspaceId = await text({ message: 'Enter Workspace ID:' });\n if (isCancel(workspaceId)) return;\n }\n\n try {\n const jobs = await trainingClient.listJobs(workspaceId as string);\n s.stop(`Found ${jobs.data.length} jobs`);\n\n if (jobs.data.length === 0) {\n console.log(yellow('No jobs found.'));\n return;\n }\n\n // Display Table\n const table = createTable(['ID', 'Status', 'Model', 'Progress', 'Created']);\n jobs.data.forEach(j => {\n const statusColor = j.status === 'succeeded' ? green : (j.status === 'failed' ? red : yellow);\n table.push([\n j.id.substring(0, 8) + '...',\n statusColor(j.status),\n j.base_model,\n (j.progress || 0) + '%',\n new Date(j.created_at).toLocaleDateString()\n ]);\n });\n console.log(table.toString());\n console.log('');\n\n const selectedJob = await select({\n message: 'Select a job to view details:',\n options: jobs.data.map(j => ({\n value: j.id,\n label: `${j.name || j.id} (${j.status})`,\n hint: `Created: ${new Date(j.created_at).toLocaleDateString()}`\n }))\n });\n\n if (isCancel(selectedJob)) return;\n\n await handleTuneStatus(trainingClient, selectedJob as string);\n\n } catch (e: any) {\n s.stop(red(`Failed to list jobs: ${e.message}`));\n }\n}\n\nexport async function handleTuneStatus(trainingClient: TrainingClient, jobId?: string) {\n let id = jobId;\n if (!id) {\n id = await text({ message: 'Enter Job ID:' }) as string;\n if (isCancel(id)) return;\n }\n\n const s = spinner();\n s.start(`Fetching status for ${id}...`);\n\n try {\n const job = await trainingClient.getJob(id);\n s.stop(`Job Status: ${job.status.toUpperCase()}`);\n\n console.log(gray('------------------------------------------------'));\n console.log(`${bgMagenta(black(' Job Details '))}`);\n console.log(`ID: ${job.id}`);\n console.log(`Name: ${job.name}`);\n console.log(`Status: ${job.status === 'succeeded' ? green(job.status) : job.status}`);\n console.log(`Model: ${job.base_model}`);\n console.log(`Progress: ${job.progress || 0}%`);\n if (job.error_message) console.log(red(`Error: ${job.error_message}`));\n console.log(gray('------------------------------------------------'));\n\n if (job.status === 'running' || job.status === 'queued') {\n const action = await select({\n message: 'Action:',\n options: [\n { value: 'refresh', label: 'Refresh Status' },\n { value: 'cancel', label: 'Cancel Job' },\n { value: 'back', label: 'Back' }\n ]\n });\n\n if (action === 'refresh') await handleTuneStatus(trainingClient, id);\n if (action === 'cancel') await handleTuneCancel(trainingClient, id);\n }\n\n } catch (e: any) {\n s.stop(red(`Failed to get job status: ${e.message}`));\n }\n}\n\nexport async function handleTuneCancel(trainingClient: TrainingClient, jobId: string) {\n const confirmCancel = await confirm({ message: 'Are you sure you want to cancel this job?' });\n if (!confirmCancel || isCancel(confirmCancel)) return;\n\n const s = spinner();\n s.start('Canceling job...');\n try {\n await trainingClient.cancelJob(jobId);\n s.stop(green('Job canceled successfully.'));\n } catch (e: any) {\n s.stop(red(`Failed to cancel job: ${e.message}`));\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, bgMagenta, black, gradient } from '../ui';\nimport { getConfig } from '../config';\nimport { Langvision, ModelClient, SubscriptionClient, FileClient, TrainingClient } from '../../index';\n\n// Handler for Langvision Fine-tuning\nexport async function handleVisionFinetune(vision: Langvision, modelClient: ModelClient) {\n let model: string | symbol = '';\n\n const s = spinner();\n s.start('Fetching available vision models...');\n try {\n const models = await modelClient.list('vision');\n s.stop(`Found ${models.length} vision models`);\n\n if (models.length > 0) {\n model = await select({\n message: 'Select base vision model:',\n options: models.map(m => ({ value: m.id, label: m.id, hint: m.owned_by }))\n });\n } else {\n model = await text({\n message: 'Enter base vision model:',\n placeholder: 'llava-v1.5-7b',\n initialValue: 'llava-v1.5-7b'\n });\n }\n } catch (e) {\n s.stop(yellow('Failed to fetch models. Using manual input.'));\n model = await text({\n message: 'Enter base vision model:',\n placeholder: 'llava-v1.5-7b',\n initialValue: 'llava-v1.5-7b'\n });\n }\n\n if (isCancel(model)) {\n cancel('Operation cancelled');\n process.exit(0);\n }\n\n const dataset = await text({\n message: 'Enter dataset path:',\n placeholder: './dataset',\n });\n if (isCancel(dataset)) cancel('Operation cancelled');\n\n const epochs = await text({\n message: 'Num Epochs:',\n placeholder: '3',\n initialValue: '3'\n });\n if (isCancel(epochs)) cancel('Operation cancelled');\n\n const track = await select({\n message: 'Track this job on Langtrain Cloud?',\n options: [\n { value: 'yes', label: 'Yes', hint: 'Upload dataset and log job' },\n { value: 'no', label: 'No', hint: 'Local only' }\n ]\n });\n if (isCancel(track)) cancel('Operation cancelled');\n\n if (track === 'yes') {\n const s = spinner();\n s.start('Connecting to Cloud...');\n try {\n const config = getConfig();\n if (!config.apiKey) throw new Error('API Key required. Run \"login\" first.');\n\n // Check Subscription\n const subClient = new SubscriptionClient({ apiKey: config.apiKey });\n const sub = await subClient.getStatus();\n if (!sub.features.includes('cloud_finetuning')) {\n s.stop(red('Feature \"cloud_finetuning\" is not available on your plan.'));\n const upgrade = await confirm({ message: 'Upgrade to Pro for cloud tracking?' });\n if (upgrade && !isCancel(upgrade)) {\n console.log(bgMagenta(black(' Visit https://langtrain.ai/dashboard/billing to upgrade. ')));\n }\n return;\n }\n\n const fileClient = new FileClient({ apiKey: config.apiKey });\n const trainingClient = new TrainingClient({ apiKey: config.apiKey });\n\n s.message('Uploading dataset...');\n const fileResp = await fileClient.upload(dataset as string, undefined, 'fine-tune-vision');\n\n s.message('Creating Job...');\n const job = await trainingClient.createJob({\n name: `cli-vision-${Date.now()}`,\n base_model: model as string,\n dataset_id: fileResp.id,\n task: 'vision',\n training_method: 'lora',\n hyperparameters: {\n n_epochs: parseInt(epochs as string)\n }\n });\n s.stop(green(`Job tracked: ${job.id}`));\n } catch (e: any) {\n s.stop(red(`Tracking failed: ${e.message}`));\n const cont = await confirm({ message: 'Continue with local training anyway?' });\n if (!cont || isCancel(cont)) return;\n }\n }\n\n const s2 = spinner();\n s2.start('Analyzing dataset structure...');\n await new Promise(r => setTimeout(r, 800));\n s2.message('Starting vision fine-tuning on Langtrain Cloud...');\n\n try {\n const config: any = {\n model: model as string,\n dataset: dataset as string,\n epochs: parseInt(epochs as string),\n batchSize: 1,\n learningRate: 2e-5,\n loraRank: 16,\n outputDir: './vision-output'\n };\n await vision.finetune(config);\n s2.stop(green('Vision fine-tuning started successfully!'));\n } catch (e: any) {\n s2.stop(red('Failed to start vision job.'));\n throw e;\n }\n}\n\n// Handler for Langvision Generation\nexport async function handleVisionGenerate(vision: Langvision) {\n const model = await text({\n message: 'Enter model path:',\n placeholder: './vision-output/model',\n initialValue: './vision-output/model'\n });\n if (isCancel(model)) cancel('Operation cancelled');\n\n const prompt = await text({\n message: 'Enter prompt/image path:', // Simplified for CLI\n placeholder: 'Describe this image...',\n });\n if (isCancel(prompt)) cancel('Operation cancelled');\n\n const s = spinner();\n s.start('Uploading image and context...');\n await new Promise(r => setTimeout(r, 600));\n s.message('Generating vision response...');\n\n try {\n const response = await vision.generate(model as string, { prompt: prompt as string });\n s.stop('Generation complete');\n intro('Response:');\n console.log(gradient.pastel(response));\n } catch (e: any) {\n s.stop(red('Generation failed.'));\n throw e;\n }\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray, bgMagenta, black, gradient, createTable } from '../ui';\nimport { AgentClient, ModelClient } from '../../index';\n\nexport async function handleAgentCreate(client: AgentClient, modelClient: ModelClient) {\n const name = await text({\n message: 'Agent Name:',\n placeholder: 'e.g. Support Bot',\n validate(value) {\n if (!value || value.length === 0) return 'API Key is required';\n },\n });\n if (isCancel(name)) {\n cancel('Operation cancelled');\n return;\n }\n\n const description = await text({\n message: 'Description:',\n placeholder: 'e.g. A helpful support assistant',\n });\n if (isCancel(description)) return;\n\n const systemPrompt = await text({\n message: 'System Prompt:',\n placeholder: 'e.g. You are a helpful assistant.',\n initialValue: 'You are a helpful assistant.'\n });\n if (isCancel(systemPrompt)) return;\n\n // Select model\n let model: string | symbol = 'gpt-4o';\n const s = spinner();\n s.start('Fetching agent models...');\n try {\n const models = await modelClient.list('agent');\n s.stop(`Found ${models.length} models`);\n if (models.length > 0) {\n model = await select({\n message: 'Select Agent Model:',\n options: models.map(m => ({ value: m.id, label: m.id }))\n });\n }\n } catch (e) {\n s.stop(yellow('Could not fetch models, using default.'));\n }\n\n if (isCancel(model)) return;\n\n const s2 = spinner();\n s2.start('Creating agent...');\n\n try {\n const agents = await client.list();\n let workspaceId = \"\";\n if (agents.length > 0) {\n workspaceId = agents[0].workspace_id;\n } else {\n s2.stop(yellow('Workspace ID needed (no existing agents found).'));\n const wid = await text({\n message: 'Enter Workspace ID (UUID):',\n validate(value) {\n if (!value || value.length === 0) return 'Required';\n },\n });\n if (isCancel(wid)) return;\n workspaceId = wid as string;\n s2.start('Creating agent...');\n }\n\n const agent = await client.create({\n workspace_id: workspaceId,\n name: name as string,\n description: description as string,\n config: {\n system_prompt: systemPrompt as string,\n model: model as string\n }\n });\n s2.stop(green(`Agent \"${agent.name}\" created successfully! ID: ${agent.id}`));\n } catch (e: any) {\n s2.stop(red('Failed to create agent.'));\n throw e;\n }\n}\n\nexport async function handleAgentDelete(client: AgentClient) {\n const s = spinner();\n s.start('Fetching agents...');\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n intro(yellow('No agents to delete.'));\n return;\n }\n\n const agentId = await select({\n message: 'Select an agent to DELETE:',\n options: agents.map(a => ({ value: a.id, label: a.name, hint: a.description || 'No description' }))\n });\n\n if (isCancel(agentId)) return;\n\n const confirmDel = await select({\n message: `Are you sure you want to delete this agent?`,\n options: [\n { value: 'yes', label: 'Yes, delete it', hint: 'Cannot be undone' },\n { value: 'no', label: 'No, keep it' }\n ]\n });\n\n if (confirmDel !== 'yes') {\n intro(gray('Deletion cancelled.'));\n return;\n }\n\n const d = spinner();\n d.start('Deleting agent...');\n try {\n await client.delete(agentId as string);\n d.stop(green('Agent deleted successfully.'));\n } catch (e: any) {\n d.stop(red('Failed to delete agent.'));\n throw e;\n }\n}\n\nexport async function handleAgentList(client: AgentClient) {\n const s = spinner();\n s.start('Fetching agents...');\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n intro(yellow('No agents found in your workspace.'));\n return;\n }\n\n // Display Table\n const table = createTable(['ID', 'Name', 'Model', 'Created']);\n agents.forEach(a => {\n table.push([\n a.id.substring(0, 8) + '...',\n a.name,\n (a.config as any)?.model || 'default',\n new Date(a.created_at).toLocaleDateString()\n ]);\n });\n console.log(table.toString());\n console.log(''); // spacer\n\n const agentId = await select({\n message: 'Select an agent to run:',\n options: agents.map(a => ({ value: a.id, label: a.name, hint: a.description || 'No description' }))\n });\n\n if (isCancel(agentId)) return;\n\n await handleAgentRun(client, agentId as string, agents.find(a => a.id === agentId)?.name || 'Agent');\n}\n\nexport async function handleAgentRun(client: AgentClient, agentId: string, agentName: string, initialMessage?: string) {\n intro(bgMagenta(black(` Chatting with ${agentName} `)));\n console.log(gray('Type \"exit\" to quit conversation.'));\n\n let conversationId: string | undefined = undefined;\n\n // Send initial message if provided\n if (initialMessage) {\n const s = spinner();\n s.start('Agent is analyzing...');\n try {\n const result = await client.execute(agentId, { prompt: initialMessage }, [], conversationId);\n s.stop();\n if ((result.output as any)?.response) {\n console.log(gradient.pastel(`Agent: ${(result.output as any).response}`));\n } else {\n console.log(gradient.pastel(`Agent: ${JSON.stringify(result.output)}`));\n }\n conversationId = result.conversation_id;\n } catch (e: any) {\n s.stop(red('Error running agent.'));\n console.error(e);\n }\n }\n\n while (true) {\n const input = await text({\n message: 'You:',\n placeholder: 'Type a message...',\n });\n\n if (isCancel(input) || input === 'exit') {\n break;\n }\n\n const s = spinner();\n s.start('Agent is thinking...');\n try {\n const result = await client.execute(agentId, { prompt: input }, [], conversationId);\n s.stop();\n\n if ((result.output as any)?.response) {\n console.log(gradient.pastel(`Agent: ${(result.output as any).response}`));\n } else {\n console.log(gradient.pastel(`Agent: ${JSON.stringify(result.output)}`));\n }\n\n conversationId = result.conversation_id;\n } catch (e: any) {\n s.stop(red('Error running agent.'));\n console.error(e);\n }\n }\n}\n","import path from 'path';\nimport fs from 'fs';\nimport { text, confirm, select, isCancel, cancel, intro, outro, showSuccess, showInfo, spinner, colors } from '../ui';\nimport { getConfig } from '../config';\nimport { handleLogin } from '../auth';\n\nexport async function handleInit() {\n intro('Initializing new Langtrain project...');\n\n const cwd = process.cwd();\n\n // 1. Check if already initialized\n if (fs.existsSync(path.join(cwd, 'langtrain.config.json'))) {\n showInfo('langtrain.config.json already exists in this directory.');\n const overwrite = await confirm({\n message: 'Do you want to re-initialize and overwrite the config?',\n initialValue: false\n });\n\n if (isCancel(overwrite) || !overwrite) {\n outro('Initialization cancelled.');\n return;\n }\n }\n\n // 2. Ask for Project Details\n const projectName = await text({\n message: 'What is the name of your project?',\n placeholder: 'my-ai-app',\n initialValue: path.basename(cwd),\n validate(value) {\n if (!value || value.length === 0) return 'Project name is required!';\n }\n });\n\n if (isCancel(projectName)) {\n cancel('Operation cancelled.');\n return;\n }\n\n let config = getConfig();\n let apiKey = config.apiKey;\n\n if (apiKey) {\n showSuccess('Found existing Langtrain credentials.');\n } else {\n const shouldLogin = await confirm({\n message: 'You are not logged in. Do you want to log in now?',\n initialValue: true\n });\n\n if (isCancel(shouldLogin)) {\n cancel('Operation cancelled.');\n return;\n }\n\n if (shouldLogin) {\n await handleLogin();\n config = getConfig(); // Reload config\n apiKey = config.apiKey;\n } else {\n apiKey = await text({\n message: 'Enter your Langtrain API Key (optional for local dev):',\n placeholder: 'lt_sk_...',\n initialValue: ''\n }) as string;\n\n if (isCancel(apiKey)) {\n cancel('Operation cancelled.');\n return;\n }\n }\n }\n\n // 3. Create Config File\n const s = spinner();\n s.start('Creating configuration...');\n\n const configContent = {\n name: projectName,\n apiKey: apiKey || undefined,\n environment: 'development',\n agents: [\n {\n name: 'support-bot',\n description: 'A helpful customer support assistant',\n config: {\n model: 'llama-3-8b',\n system_prompt: 'You are a helpful customer support assistant.',\n temperature: 0.7\n }\n }\n ]\n };\n\n fs.writeFileSync(path.join(cwd, 'langtrain.config.json'), JSON.stringify(configContent, null, 2));\n\n showSuccess('Project initialized successfully!');\n console.log(colors.dim('\\nNext steps:'));\n console.log(` 1. Run ${colors.cyan('lt deploy')} to push your agent to the cloud.`);\n console.log(` 2. Run ${colors.cyan('lt dev')} to start the local development loop.`);\n\n outro('Happy coding!');\n}\n","import { intro, outro, showSuccess, showError, showWarning, showInfo, spinner, colors } from '../ui';\nimport { getConfig } from '../config';\nimport { getSubscription } from '../auth';\nimport os from 'os';\n\nexport async function handleDoctor() {\n intro('Running Langtrain Doctor...');\n\n const s = spinner();\n let issues = 0;\n\n // 1. Check Node Environment\n s.start('Checking Node.js environment...');\n const nodeVersion = process.version;\n const platform = os.platform();\n const arch = os.arch();\n\n if (parseInt(nodeVersion.replace('v', '').split('.')[0]) < 18) {\n s.stop(colors.red(`Node.js version ${nodeVersion} is outdated. Please upgrade to v18+.`));\n issues++;\n } else {\n s.stop(`Node.js ${nodeVersion} (${platform} ${arch})`);\n }\n\n // 2. Check Configuration\n s.start('Checking configuration...');\n const config = getConfig();\n if (!config.apiKey) {\n s.stop(colors.yellow('API Key is missing. Run `langtrain login` or set LANGTRAIN_API_KEY.'));\n issues++;\n } else {\n s.stop('Configuration found.');\n\n // 3. Check API Connectivity\n s.start('Checking API connectivity...');\n try {\n const plan = await getSubscription(config.apiKey);\n s.stop(`Connected to Langtrain Cloud (Plan: ${colors.green(plan?.plan || 'unknown')})`);\n } catch (e: any) {\n s.stop(colors.red(`Failed to connect to Langtrain Cloud: ${e.message}`));\n issues++;\n }\n }\n\n console.log(''); // Spacer\n\n if (issues === 0) {\n showSuccess('Your Langtrain environment is healthy! Ready to build.');\n } else {\n showWarning(`Found ${issues} issue(s). Please resolve them for the best experience.`);\n }\n\n outro('Doctor check complete.');\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray } from '../ui';\nimport { getConfig } from '../config';\nimport { FileClient, AgentClient, GuardrailClient } from '../../index';\nimport { handleAgentRun } from './agent';\nimport fs from 'fs';\n\nexport async function handleDataUpload(client: FileClient) {\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n // Optional: ask for workspace ID or try to infer? \n // For upload, workspace_id is often optional (inferred from API key's default workspace)\n // But let's ask if user wants to specify.\n }\n\n const filePath = await text({\n message: 'Path to file:',\n placeholder: './dataset.jsonl',\n validate(value) {\n if (!value) return 'Required';\n if (!fs.existsSync(value)) return 'File not found';\n }\n });\n\n if (isCancel(filePath)) return;\n\n const purpose = await select({\n message: 'File Purpose:',\n options: [\n { value: 'fine-tune', label: 'Fine-tuning (JSONL)' },\n { value: 'vision-tune', label: 'Vision Tuning (Image/Zip)' },\n { value: 'agent-knowledge', label: 'Agent Knowledge' }\n ]\n });\n\n if (isCancel(purpose)) return;\n\n const s = spinner();\n s.start('Uploading file...');\n\n try {\n const result = await client.upload(filePath as string, workspaceId, purpose as string);\n s.stop(green('File uploaded successfully!'));\n console.log(gray(`ID: ${result.id}`));\n console.log(gray(`Name: ${result.filename}`));\n console.log(gray(`Bytes: ${result.bytes}`));\n } catch (e: any) {\n s.stop(red(`Upload failed: ${e.message}`));\n }\n}\n\nexport async function handleDataList(client: FileClient) {\n const config = getConfig();\n let workspaceId = config.workspace_id;\n\n if (!workspaceId) {\n // Try without workspace ID (some APIs return user's files)\n // or ask\n workspaceId = await text({ message: 'Enter Workspace ID (optional):', initialValue: '' });\n if (isCancel(workspaceId)) return;\n }\n\n const s = spinner();\n s.start('Fetching files...');\n\n try {\n const files = await client.list(workspaceId as string);\n s.stop(`Found ${files.length} files`);\n\n if (files.length === 0) {\n console.log(yellow('No files found.'));\n return;\n }\n\n const file = await select({\n message: 'Select file to analyze (or cancel to exit):',\n options: files.map(f => ({ value: f.id, label: `${f.filename} (${formatBytes(f.bytes)})` }))\n });\n\n if (isCancel(file)) return;\n\n await handleDataAnalyze(client, file as string);\n\n } catch (e: any) {\n s.stop(red(`Failed to list files: ${e.message}`));\n }\n}\n\nexport async function handleDataAnalyze(client: FileClient, fileId: string) {\n const config = getConfig();\n const s2 = spinner();\n s2.start('Connecting to Data Analyst...');\n\n try {\n const agentClient = new AgentClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n const agents = await agentClient.list();\n // Check name (name is optional in type but we know it exists for system agent)\n let analyst = agents.find(a => a.name && a.name === \"Langtrain Data Analyst\");\n\n if (!analyst) {\n s2.stop(yellow('Data Analyst agent (System) not found. Please contact admin to provision it.'));\n return;\n }\n\n s2.stop(green('Connected to Data Analyst.'));\n\n console.log(gray(`\\nAnalyzing dataset ${fileId}...\\n`));\n\n await handleAgentRun(agentClient, analyst.id, analyst.name, `Please analyze the dataset with ID: ${fileId}`);\n\n } catch (e: any) {\n s2.stop(red(`Failed to connect: ${e.message}`));\n }\n}\n\nexport async function handleDataRefine(client: FileClient, fileId?: string) {\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n // 0. Select File if not provided\n if (!fileId) {\n const s = spinner();\n s.start('Fetching files...');\n try {\n // Need workspace ID logic similar to List?\n // client.list takes workspaceId.\n const wId = config.workspace_id || '';\n const files = await client.list(wId);\n s.stop(`Found ${files.length} files`);\n\n if (files.length === 0) {\n console.log(yellow('No files found. Upload one first.'));\n return;\n }\n\n const selection = await select({\n message: 'Select file to refine:',\n options: files.map(f => ({ value: f.id, label: `${f.filename} (${formatBytes(f.bytes)})` }))\n });\n\n if (isCancel(selection)) return;\n fileId = selection as string;\n\n } catch (e: any) {\n s.stop(red(`Failed to fetch files: ${e.message}`));\n return;\n }\n }\n\n // 1. Select Guardrail\n const s = spinner();\n s.start('Fetching guardrails...');\n let guardId = \"\";\n try {\n const guards = await gClient.list();\n s.stop(`Found ${guards.length} guardrails`);\n\n if (guards.length === 0) {\n console.log(yellow('No guardrails found. Please create one first using \"lt guardrails create\".'));\n return;\n }\n\n const selection = await select({\n message: 'Select a Guardrail to apply:',\n options: guards.map((g: any) => ({\n value: g.id,\n label: g.name,\n hint: g.description\n }))\n });\n\n if (isCancel(selection)) return;\n guardId = selection as string;\n\n } catch (e: any) {\n s.stop(red(`Failed to fetch guardrails: ${e.message}`));\n return;\n }\n\n // 2. Apply\n const s2 = spinner();\n s2.start('Applying guardrail (filtering dataset)...');\n\n try {\n const result = await gClient.apply(fileId, guardId);\n s2.stop(green('Dataset refined successfully!'));\n\n console.log(gray('Stats:'));\n console.log(`Original Rows: ${result.original_rows}`);\n console.log(`Filtered Rows: ${result.filtered_rows}`);\n console.log(red(`Removed: ${result.removed_rows} rows`));\n console.log(green(`New Dataset ID: ${result.new_dataset_id}`));\n\n } catch (e: any) {\n s2.stop(red(`Failed to refine dataset: ${e.message}`));\n }\n}\n\nfunction formatBytes(bytes: number, decimals = 2) {\n if (!+bytes) return '0 Bytes';\n const k = 1024;\n const dm = decimals < 0 ? 0 : decimals;\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB'];\n const i = Math.floor(Math.log(bytes) / Math.log(k));\n return `${parseFloat((bytes / Math.pow(k, i)).toFixed(dm))} ${sizes[i]}`;\n}\n","import { intro, outro, spinner, green, red, yellow, showSuccess } from '../ui';\nimport { getConfig } from '../config';\nimport { AgentClient, AgentCreate } from '../../index';\n\nexport async function handleDeploy(client: AgentClient) {\n intro('Deploying configuration to Langtrain Cloud...');\n\n const config = getConfig();\n const agents = config.agents || [];\n\n if (agents.length === 0) {\n intro(yellow('No agents found in langtrain.config.json'));\n return;\n }\n\n // Iterate and deploy\n for (const agentConfig of agents) {\n const s = spinner();\n s.start(`Deploying agent: ${agentConfig.name}...`);\n\n try {\n // Check if agent exists (by name? logic needed)\n // Ideally we store ID in config after create, but for now let's just create new or try to find by name.\n // Listing all agents is expensive if many, but safe for now.\n const existingAgents = await client.list();\n const existing = existingAgents.find(a => a.name === agentConfig.name);\n\n if (existing) {\n // Update (Note: SDK didn't expose update in my view_file, assuming create or need to add update)\n // If update not available, we skip or warn.\n // Let's assume we can't update yet as per SDK view.\n // So we just skip if exists.\n s.stop(yellow(`Agent ${agentConfig.name} already exists (ID: ${existing.id}). Skipping update (not supported yet).`));\n } else {\n // Create\n const payload: AgentCreate = {\n workspace_id: config.workspace_id || (existingAgents[0]?.workspace_id) || '', // Need a way to get workspace!\n name: agentConfig.name,\n description: agentConfig.description,\n config: agentConfig.config\n };\n\n // Fallback for workspace_id\n if (!payload.workspace_id) {\n // Try to get from first agent or error\n // Realistically, user needs to set workspace_id in config or we infer from API key scope.\n // Let's warn.\n s.stop(red(`Failed: Workspace ID missing in config for ${agentConfig.name}`));\n continue;\n }\n\n await client.create(payload);\n s.stop(green(`Agent ${agentConfig.name} deployed successfully!`));\n }\n\n } catch (e: any) {\n s.stop(red(`Failed to deploy ${agentConfig.name}: ${e.message}`));\n }\n }\n\n showSuccess('Deployment complete.');\n}\n","import { intro, outro, spinner, green, red, yellow, showInfo, gray } from '../ui';\nimport { AgentClient } from '../../index';\nimport { handleDeploy } from './deploy';\nimport fs from 'fs';\nimport path from 'path';\n\nexport async function handleDev(client: AgentClient) {\n intro('Starting Langtrain Development Server...');\n\n const configPath = path.join(process.cwd(), 'langtrain.config.json');\n if (!fs.existsSync(configPath)) {\n intro(red('langtrain.config.json not found. Run \"lt init\" first.'));\n return;\n }\n\n console.log(gray(`Watching ${configPath} for changes...`));\n\n let isDeploying = false;\n\n // Initial Deploy\n await handleDeploy(client);\n\n fs.watch(configPath, async (eventType) => {\n if (eventType === 'change' && !isDeploying) {\n isDeploying = true;\n console.log(yellow('Configuration changed. Redeploying...'));\n // Wait a bit for file write to complete\n await new Promise(r => setTimeout(r, 500));\n try {\n await handleDeploy(client);\n } catch (e: any) {\n console.error(red(`Deploy failed: ${e.message}`));\n } finally {\n isDeploying = false;\n console.log(gray(`Watching ${configPath}...`));\n }\n }\n });\n\n // Keep process alive\n await new Promise(() => { });\n}\n","import { text, select, confirm, isCancel, cancel, spinner, intro, red, green, yellow, gray } from '../ui';\nimport { getConfig } from '../config';\nimport { GuardrailClient } from '../../index';\n\nexport async function handleGuardrailList(client: any) { // using any to match index signature, but we instantiate specific client inside\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n const s = spinner();\n s.start('Fetching guardrails...');\n\n try {\n const guards = await gClient.list();\n s.stop(`Found ${guards.length} guardrails`);\n\n if (guards.length === 0) {\n console.log(yellow('No guardrails found. Create one with \"lt guardrails create\".'));\n return;\n }\n\n guards.forEach((g: any) => {\n console.log(green(`• ${g.name}`) + gray(` (ID: ${g.id})`));\n if (g.description) console.log(gray(` ${g.description}`));\n console.log(gray(` Config: PII=${g.config.pii_enabled}, MinLen=${g.config.min_length}`));\n console.log('');\n });\n\n } catch (e: any) {\n s.stop(red(`Failed to list guardrails: ${e.message}`));\n }\n}\n\nexport async function handleGuardrailCreate(client: any) {\n const config = getConfig();\n const gClient = new GuardrailClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n\n intro('Create a new Data Guardrail');\n\n const name = await text({\n message: 'Guardrail Name:',\n placeholder: 'e.g. Strict Safety Policy',\n validate(value) {\n if (!value) return 'Name is required';\n }\n });\n if (isCancel(name)) return;\n\n const description = await text({\n message: 'Description (optional):',\n placeholder: 'Filters PII and short text',\n });\n if (isCancel(description)) return;\n\n // Interactive Config\n const minLen = await text({\n message: 'Minimum Text Length (0 for no limit):',\n initialValue: '0',\n validate(value) {\n if (isNaN(Number(value))) return 'Must be a number';\n }\n });\n if (isCancel(minLen)) return;\n\n const enablePii = await confirm({\n message: 'Enable PII Filtering (Email/Phone)?',\n initialValue: false\n });\n if (isCancel(enablePii)) return;\n\n const patterns = await text({\n message: 'Regex Patterns to Block (comma separated, optional):',\n placeholder: 'e.g. bad_word, another_one',\n });\n if (isCancel(patterns)) return;\n\n const s = spinner();\n s.start('Creating guardrail...');\n\n try {\n const regexList = (patterns as string).split(',').map(p => p.trim()).filter(p => p.length > 0);\n\n const payload = {\n name,\n description,\n config: {\n min_length: Number(minLen),\n pii_enabled: enablePii,\n regex_patterns: regexList,\n profanity_enabled: false\n }\n };\n\n const result = await gClient.create(payload);\n s.stop(green(`Guardrail \"${result.name}\" created successfully!`));\n console.log(gray(`ID: ${result.id}`));\n\n } catch (e: any) {\n s.stop(red(`Failed to create guardrail: ${e.message}`));\n }\n}\n","import { intro, outro, spinner, green, red, yellow, showInfo, gray, showSuccess } from '../ui';\nimport { SecretClient } from '../../index';\nimport { text, confirm, select, isCancel, cancel } from '../ui';\nimport { getConfig } from '../config';\n\nexport async function handleEnvList(client: SecretClient) {\n const s = spinner();\n s.start('Fetching secrets...');\n const config = getConfig();\n try {\n const secrets = await client.list(config.workspace_id);\n s.stop(`Found ${secrets.length} secrets`);\n\n if (secrets.length === 0) {\n console.log(gray('No secrets found. Use \"lt env set\" to add one.'));\n return;\n }\n\n console.log(gray('------------------------------------------------'));\n secrets.forEach(sec => {\n console.log(`${sec.key.padEnd(30)} ${gray('******')}`);\n });\n console.log(gray('------------------------------------------------'));\n\n } catch (e: any) {\n s.stop(red(`Failed to list secrets: ${e.message}`));\n }\n}\n\nexport async function handleEnvSet(client: SecretClient, keyVal?: string) {\n let key = '';\n let value = '';\n\n if (keyVal && keyVal.includes('=')) {\n const parts = keyVal.split('=');\n key = parts[0];\n value = parts.slice(1).join('=');\n } else {\n key = await text({ message: 'Secret Key:', placeholder: 'OPENAI_API_KEY' }) as string;\n if (isCancel(key)) return;\n\n value = await text({ message: 'Secret Value:', placeholder: 'sk-...' }) as string;\n if (isCancel(value)) return;\n }\n\n const s = spinner();\n s.start(`Setting ${key}...`);\n const config = getConfig();\n\n try {\n await client.set(key, value, config.workspace_id);\n s.stop(green(`Secret ${key} set successfully.`));\n } catch (e: any) {\n s.stop(red(`Failed to set secret: ${e.message}`));\n }\n}\n\n// Interactive menu for env\nexport async function handleEnvMenu(client: SecretClient) {\n const action = await select({\n message: 'Manage Secrets',\n options: [\n { value: 'list', label: 'List Secrets' },\n { value: 'set', label: 'Set Secret' },\n { value: 'remove', label: 'Remove Secret' },\n { value: 'back', label: 'Back' }\n ]\n });\n\n if (isCancel(action) || action === 'back') return;\n\n if (action === 'list') await handleEnvList(client);\n if (action === 'set') await handleEnvSet(client);\n if (action === 'remove') {\n const key = await text({ message: 'Key to remove:' });\n if (!isCancel(key)) {\n const s = spinner();\n s.start('Removing...');\n try {\n // need workspace_id\n const config = getConfig();\n await client.delete(key as string, config.workspace_id);\n s.stop(green('Removed.'));\n } catch (e: any) {\n s.stop(red(`Failed: ${e.message}`));\n }\n }\n }\n}\n","import { intro, spinner, red, gray, yellow, bgMagenta, black, green } from '../ui';\nimport { AgentClient } from '../../index';\nimport { select, text, isCancel } from '../ui';\n\nexport async function handleLogs(client: AgentClient, agentName?: string) {\n const s = spinner();\n\n let agentId = '';\n\n if (agentName) {\n s.start('Finding agent...');\n try {\n const agents = await client.list();\n const found = agents.find(a => a.name === agentName || a.id === agentName);\n if (found) agentId = found.id;\n else {\n s.stop(red(`Agent \"${agentName}\" not found.`));\n return;\n }\n s.stop(green(`Found agent: ${found.name}`));\n } catch (e: any) {\n s.stop(red(`Failed to list agents: ${e.message}`));\n return;\n }\n } else {\n // Interactive select\n s.start('Fetching agents...');\n try {\n const agents = await client.list();\n s.stop(`Found ${agents.length} agents`);\n\n if (agents.length === 0) {\n console.log(yellow('No agents found.'));\n return;\n }\n\n const selection = await select({\n message: 'Select agent to view logs:',\n options: agents.map(a => ({ value: a.id, label: a.name }))\n });\n\n if (isCancel(selection)) return;\n agentId = selection as string;\n } catch (e: any) {\n s.stop(red(`Failed to list agents: ${e.message}`));\n return;\n }\n }\n\n const s2 = spinner();\n s2.start('Fetching logs...');\n try {\n const logs = await client.logs(agentId); // Assumes we added logs() to AgentClient\n s2.stop('Logs fetched.');\n\n console.log(gray('------------------------------------------------'));\n console.log(`${bgMagenta(black(' Recent Logs '))}`);\n if (logs.logs && logs.logs.length > 0) {\n logs.logs.forEach(log => console.log(log));\n } else {\n console.log(gray('(No logs found)'));\n }\n console.log(gray('------------------------------------------------'));\n\n } catch (e: any) {\n s2.stop(red(`Failed to fetch logs: ${e.message}`));\n }\n}\n","import { green, dim, cyan, bold, yellow, gray, spinner } from '../ui';\nimport { getConfig } from '../config';\n\n// Session-level telemetry tracker\nlet sessionStart = Date.now();\nlet apiCallCount = 0;\nlet totalLatencyMs = 0;\nlet errorCount = 0;\n\nexport function trackApiCall(latencyMs: number, isError: boolean = false) {\n apiCallCount++;\n totalLatencyMs += latencyMs;\n if (isError) errorCount++;\n}\n\nexport async function handleTokens() {\n const config = getConfig();\n const apiKey = config.apiKey;\n\n console.log('');\n console.log(bold(' ╔══════════════════════════════════════╗'));\n console.log(bold(' ║ TOKEN USAGE ║'));\n console.log(bold(' ╚══════════════════════════════════════╝'));\n console.log('');\n\n if (!apiKey) {\n console.log(yellow(' Login required to view token usage.\\n'));\n return;\n }\n\n const s = spinner();\n s.start('Fetching token usage...');\n\n try {\n const axios = require('axios');\n const baseUrl = config.baseUrl || 'https://api.langtrain.xyz';\n const res = await axios.get(`${baseUrl}/v1/usage/tokens`, {\n headers: { Authorization: `Bearer ${apiKey}` }\n });\n\n const usage = res.data;\n s.stop(green('Token usage retrieved'));\n console.log('');\n\n const used = usage.tokens_used || 0;\n const limit = usage.token_limit || 10000;\n const pct = Math.round((used / limit) * 100);\n const remaining = Math.max(0, limit - used);\n\n // Visual bar\n const barWidth = 30;\n const filled = Math.round((pct / 100) * barWidth);\n const bar = '█'.repeat(filled) + '░'.repeat(barWidth - filled);\n const barColor = pct > 90 ? '\\x1b[31m' : pct > 70 ? '\\x1b[33m' : '\\x1b[32m';\n\n console.log(` ${dim('Period:')} ${usage.period || 'Current Month'}`);\n console.log(` ${dim('Used:')} ${used.toLocaleString()} tokens`);\n console.log(` ${dim('Limit:')} ${limit.toLocaleString()} tokens`);\n console.log(` ${dim('Remaining:')} ${remaining.toLocaleString()} tokens`);\n console.log(` ${dim('Usage:')} ${barColor}${bar}\\x1b[0m ${pct}%`);\n console.log('');\n\n if (usage.breakdown) {\n console.log(dim(' ── Breakdown ────────────────────────'));\n console.log(` ${dim('Training:')} ${(usage.breakdown.training || 0).toLocaleString()}`);\n console.log(` ${dim('Inference:')} ${(usage.breakdown.inference || 0).toLocaleString()}`);\n console.log(` ${dim('Agents:')} ${(usage.breakdown.agents || 0).toLocaleString()}`);\n console.log('');\n }\n } catch (e: any) {\n s.stop('');\n // Show mock data if API not available\n console.log(dim(' Token data not available from server.'));\n console.log(dim(' Showing session estimates:\\n'));\n\n console.log(` ${dim('Session calls:')} ${apiCallCount}`);\n console.log(` ${dim('Est. tokens:')} ~${apiCallCount * 150}`);\n console.log('');\n }\n}\n\nexport async function handleTelemetry() {\n const uptimeMs = Date.now() - sessionStart;\n const uptimeSec = Math.round(uptimeMs / 1000);\n const uptimeMin = Math.floor(uptimeSec / 60);\n const uptimeStr = uptimeMin > 0 ? `${uptimeMin}m ${uptimeSec % 60}s` : `${uptimeSec}s`;\n\n const avgLatency = apiCallCount > 0 ? Math.round(totalLatencyMs / apiCallCount) : 0;\n const errorRate = apiCallCount > 0 ? Math.round((errorCount / apiCallCount) * 100) : 0;\n\n console.log('');\n console.log(bold(' ╔══════════════════════════════════════╗'));\n console.log(bold(' ║ SESSION TELEMETRY ║'));\n console.log(bold(' ╚══════════════════════════════════════╝'));\n console.log('');\n\n console.log(` ${dim('Session:')} ${uptimeStr}`);\n console.log(` ${dim('API calls:')} ${apiCallCount}`);\n console.log(` ${dim('Avg latency:')} ${avgLatency}ms`);\n console.log(` ${dim('Errors:')} ${errorCount} (${errorRate}%)`);\n console.log('');\n\n console.log(dim(' ── Environment ──────────────────────'));\n console.log(` ${dim('Node:')} ${process.version}`);\n console.log(` ${dim('Platform:')} ${process.platform} ${process.arch}`);\n console.log(` ${dim('Memory:')} ${Math.round(process.memoryUsage().heapUsed / 1024 / 1024)}MB heap`);\n console.log(` ${dim('Config:')} ~/.langtrain/config.json`);\n console.log('');\n\n // API health check\n const config = getConfig();\n if (config.apiKey) {\n const s = spinner();\n s.start('Pinging API...');\n try {\n const axios = require('axios');\n const baseUrl = config.baseUrl || 'https://api.langtrain.xyz';\n const start = Date.now();\n await axios.get(`${baseUrl}/health`, { timeout: 5000 });\n const latency = Date.now() - start;\n s.stop(green(`API healthy (${latency}ms)`));\n } catch {\n s.stop(yellow('API unreachable'));\n }\n }\n console.log('');\n}\n","{\n \"name\": \"langtrain\",\n \"version\": \"0.2.2\",\n \"description\": \"Unified JavaScript SDK for Langtrain Ecosystem\",\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"types\": \"./dist/index.d.ts\",\n \"bin\": {\n \"langtrain\": \"./dist/cli.js\",\n \"lt\": \"./dist/cli.js\"\n },\n \"scripts\": {\n \"build\": \"tsup\",\n \"dev\": \"tsup --watch\",\n \"test\": \"echo \\\"Error: no test specified\\\" && exit 1\",\n \"postinstall\": \"node dist/cli.js --first-run || true\"\n },\n \"keywords\": [\n \"langtrain\",\n \"langvision\",\n \"langtune\",\n \"sdk\",\n \"ai\",\n \"llm\",\n \"finetuning\"\n ],\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"git+https://github.com/langtrain-ai/langtrain-sdk.git\"\n },\n \"author\": \"Langtrain AI\",\n \"license\": \"MIT\",\n \"devDependencies\": {\n \"@types/form-data\": \"^2.2.1\",\n \"@types/gradient-string\": \"^1.1.6\",\n \"@types/node\": \"^25.2.3\",\n \"tsup\": \"^8.0.2\",\n \"typescript\": \"^5.4.2\"\n },\n \"dependencies\": {\n \"@clack/prompts\": \"^1.0.1\",\n \"axios\": \"^1.13.5\",\n \"cli-table3\": \"^0.6.5\",\n \"commander\": \"^14.0.3\",\n \"form-data\": \"^4.0.5\",\n \"gradient-string\": \"^3.0.0\",\n \"kleur\": \"^4.1.5\",\n \"langtrain\": \"^0.1.15\",\n \"langtune\": \"^0.1.1\",\n \"langvision\": \"^0.1.1\"\n }\n}\n","#!/usr/bin/env node\nimport { Command } from 'commander';\nimport { select, isCancel, outro, intro, colors, showBanner } from './ui';\nimport { ensureAuth, handleLogin, handleLogout, getSubscription, isAuthenticated } from './auth';\nimport { getMenu, MenuState } from './menu';\nimport { getConfig } from './config';\n\n// Handlers\nimport { handleSubscriptionStatus } from './handlers/subscription';\nimport { handleTuneFinetune, handleTuneGenerate, handleTuneList } from './handlers/tune';\nimport { handleVisionFinetune, handleVisionGenerate } from './handlers/vision';\nimport { handleAgentCreate, handleAgentDelete, handleAgentList } from './handlers/agent';\nimport { handleInit } from './handlers/init';\nimport { handleDoctor } from './handlers/doctor';\nimport { handleDataUpload, handleDataRefine } from './handlers/data';\nimport { handleDeploy } from './handlers/deploy';\nimport { handleDev } from './handlers/dev';\nimport { handleGuardrailList, handleGuardrailCreate } from './handlers/guardrails';\nimport { handleEnvMenu } from './handlers/env';\nimport { handleLogs } from './handlers/logs';\nimport { handleTokens, handleTelemetry } from './handlers/telemetry';\n\n// Clients\nimport { SubscriptionInfo, Langvision, Langtune, AgentClient, ModelClient, FileClient, TrainingClient, SecretClient } from '../index';\nimport packageJson from '../../package.json';\n\nfunction showStatusBar(plan: SubscriptionInfo | null) {\n const { dim, green, yellow, cyan, bold, gray } = colors;\n\n const planLabel = plan?.plan === 'pro'\n ? bold(green('PRO'))\n : plan?.plan === 'enterprise'\n ? bold(green('ENTERPRISE'))\n : dim('FREE');\n\n const tokensUsed = plan?.usage?.tokensUsedThisMonth || 0;\n const tokenLimit = plan?.usage?.tokenLimit || 10000;\n const pct = Math.round((tokensUsed / tokenLimit) * 100);\n const tokenBar = pct > 80 ? yellow(`${pct}%`) : green(`${pct}%`);\n\n console.log(dim(' ─────────────────────────────────────────────'));\n console.log(` ${dim('Plan:')} ${planLabel} ${dim('│')} ${dim('Tokens:')} ${tokensUsed.toLocaleString()}/${tokenLimit.toLocaleString()} ${tokenBar}`);\n console.log(dim(' ─────────────────────────────────────────────\\n'));\n}\n\nfunction buildClients(apiKey: string, baseUrl?: string) {\n return {\n vision: new Langvision({ apiKey }),\n tune: new Langtune({ apiKey }),\n agent: new AgentClient({ apiKey, baseUrl }),\n model: new ModelClient({ apiKey, baseUrl }),\n train: new TrainingClient({ apiKey, baseUrl }),\n secret: new SecretClient({ apiKey, baseUrl }),\n };\n}\n\nfunction getMessageForState(state: MenuState): string {\n switch (state) {\n case 'main': return 'What would you like to do?';\n case 'agents': return 'Agents:';\n case 'text': return 'Langtune (Text):';\n case 'vision': return 'Langvision (Vision):';\n case 'guard': return 'Guardrails:';\n case 'settings': return 'Settings:';\n default: return 'Select an option:';\n }\n}\n\nexport async function main() {\n const program = new Command();\n const version = packageJson.version;\n\n program\n .name('langtrain')\n .description('Langtrain CLI — Fine-tuning, Agents, and AI Ops')\n .version(version);\n\n // ── Standalone commands (work without interactive mode) ─────────────\n program.command('init')\n .description('Initialize a new Langtrain project')\n .action(handleInit);\n\n program.command('deploy')\n .description('Deploy configuration to Langtrain Cloud')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleDeploy(client);\n });\n\n program.command('dev')\n .description('Start local development server')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleDev(client);\n });\n\n program.command('env')\n .description('Manage secrets and environment variables')\n .action(async () => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new SecretClient({ apiKey, baseUrl: config.baseUrl });\n await handleEnvMenu(client);\n });\n\n program.command('logs [agent]')\n .description('Stream logs from a deployed agent')\n .action(async (agent) => {\n const config = getConfig();\n const apiKey = config.apiKey || '';\n const client = new AgentClient({ apiKey, baseUrl: config.baseUrl });\n await handleLogs(client, agent);\n });\n\n program.command('login')\n .description('Authenticate with your API key')\n .action(async () => {\n await handleLogin();\n });\n\n program.command('logout')\n .description('Clear stored credentials')\n .action(async () => {\n await handleLogout();\n });\n\n program.command('tokens')\n .description('View token usage for current period')\n .action(handleTokens);\n\n // ── Data commands ──────────────────────────────────────────────────\n const dataCommand = program.command('data').description('Manage datasets');\n\n dataCommand.command('upload [file]')\n .description('Upload a dataset')\n .action(async () => {\n const config = getConfig();\n const client = new FileClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n await handleDataUpload(client);\n });\n\n dataCommand.command('refine [fileId]')\n .description('Refine a dataset using guardrails')\n .action(async (fileId) => {\n const config = getConfig();\n const client = new FileClient({ apiKey: config.apiKey || '', baseUrl: config.baseUrl });\n await handleDataRefine(client, fileId);\n });\n\n // ── Guardrail commands ─────────────────────────────────────────────\n const guardCommand = program.command('guardrails').description('Manage data guardrails');\n\n guardCommand.command('list')\n .description('List available guardrails')\n .action(async () => await handleGuardrailList(null));\n\n guardCommand.command('create')\n .description('Create a new guardrail')\n .action(async () => await handleGuardrailCreate(null));\n\n // ── Interactive mode (default action) ──────────────────────────────\n program.action(async () => {\n showBanner(version);\n\n // First-run check\n const isFirstRun = process.argv.includes('--first-run');\n if (isFirstRun) {\n if (process.stdin.isTTY) {\n intro('Welcome to Langtrain! Let\\'s get you set up.');\n await handleLogin();\n } else {\n console.log('Langtrain installed! Run \"npx langtrain login\" to authenticate.');\n process.exit(0);\n }\n }\n\n // ── Auth-gated flow ───────────────────────────────────────────\n let config = getConfig();\n let apiKey = config.apiKey || '';\n let authed = isAuthenticated();\n let plan: SubscriptionInfo | null = null;\n\n // If authenticated, show status bar\n if (authed && apiKey) {\n try { plan = await getSubscription(apiKey); } catch { }\n showStatusBar(plan);\n } else {\n console.log(colors.dim(' Not logged in. Only basic options available.\\n'));\n }\n\n let clients = authed ? buildClients(apiKey, config.baseUrl) : null;\n\n // ── Navigation loop ──────────────────────────────────────────\n let currentState: MenuState = 'main';\n\n while (true) {\n const operation = await select({\n message: getMessageForState(currentState),\n options: getMenu(currentState, plan, authed)\n });\n\n if (isCancel(operation)) {\n if (currentState === 'main') {\n outro('Goodbye!');\n process.exit(0);\n } else {\n currentState = 'main';\n continue;\n }\n }\n\n const op = operation as string;\n\n // Navigation\n if (op === 'exit') { outro('Goodbye!'); process.exit(0); }\n if (op === 'back') { currentState = 'main'; continue; }\n if (op.startsWith('nav-')) { currentState = op.replace('nav-', '') as MenuState; continue; }\n\n // Actions\n try {\n switch (op) {\n // Auth\n case 'login':\n await handleLogin();\n config = getConfig();\n apiKey = config.apiKey || '';\n authed = isAuthenticated();\n if (authed) {\n try { plan = await getSubscription(apiKey); } catch { }\n clients = buildClients(apiKey, config.baseUrl);\n console.clear();\n showBanner(version);\n showStatusBar(plan);\n }\n break;\n\n case 'logout':\n await handleLogout();\n apiKey = '';\n authed = false;\n plan = null;\n clients = null;\n console.clear();\n showBanner(version);\n console.log(colors.dim(' Logged out. Only basic options available.\\n'));\n break;\n\n case 'docs':\n console.log(colors.cyan('\\n 📖 https://docs.langtrain.ai\\n'));\n break;\n\n // Status & info\n case 'status': await handleSubscriptionStatus(); break;\n case 'tokens': await handleTokens(); break;\n case 'telemetry': await handleTelemetry(); break;\n case 'doctor': await handleDoctor(); break;\n\n // Project\n case 'init': await handleInit(); break;\n case 'deploy': if (clients) await handleDeploy(clients.agent); break;\n case 'dev': if (clients) await handleDev(clients.agent); break;\n case 'env': if (clients) await handleEnvMenu(clients.secret); break;\n case 'logs': if (clients) await handleLogs(clients.agent); break;\n\n // Tune\n case 'tune-finetune': if (clients) await handleTuneFinetune(clients.tune, clients.model); break;\n case 'tune-list': if (clients) await handleTuneList(clients.train); break;\n case 'tune-generate': if (clients) await handleTuneGenerate(clients.tune); break;\n\n // Vision\n case 'vision-finetune': if (clients) await handleVisionFinetune(clients.vision, clients.model); break;\n case 'vision-generate': if (clients) await handleVisionGenerate(clients.vision); break;\n\n // Agents\n case 'agent-list': if (clients) await handleAgentList(clients.agent); break;\n case 'agent-create': if (clients) await handleAgentCreate(clients.agent, clients.model); break;\n case 'agent-delete': if (clients) await handleAgentDelete(clients.agent); break;\n\n // Data\n case 'data-upload':\n if (apiKey) await handleDataUpload(new FileClient({ apiKey }));\n break;\n case 'data-refine':\n if (apiKey) await handleDataRefine(new FileClient({ apiKey }));\n break;\n\n // Guardrails\n case 'guard-list': await handleGuardrailList(null); break;\n case 'guard-create': await handleGuardrailCreate(null); break;\n }\n } catch (error: any) {\n outro(colors.red(`Error: ${error.message}`));\n }\n }\n });\n\n main().catch(console.error);\n}\n"]}