langtrain 0.1.23 → 0.1.24
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/chunk-Q5EF25B2.js +3 -0
- package/dist/chunk-Q5EF25B2.js.map +1 -0
- package/dist/chunk-XRT7LLNF.mjs +3 -0
- package/dist/chunk-XRT7LLNF.mjs.map +1 -0
- package/dist/cli.js +6 -6
- package/dist/cli.js.map +1 -1
- package/dist/cli.mjs +6 -6
- package/dist/cli.mjs.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.mjs +1 -1
- package/package.json +4 -4
- package/tsup.config.ts +0 -1
- package/.github/workflows/publish.yml +0 -39
- package/dist/chunk-PGDJTY7T.mjs +0 -13
- package/dist/chunk-PGDJTY7T.mjs.map +0 -1
- package/dist/chunk-TZNQ5KWQ.js +0 -13
- package/dist/chunk-TZNQ5KWQ.js.map +0 -1
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
'use strict';var U=require('axios'),G=require('form-data'),x=require('fs'),langvision=require('langvision'),langtune=require('langtune');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}function _interopNamespace(e){if(e&&e.__esModule)return e;var n=Object.create(null);if(e){Object.keys(e).forEach(function(k){if(k!=='default'){var d=Object.getOwnPropertyDescriptor(e,k);Object.defineProperty(n,k,d.get?d:{enumerable:true,get:function(){return e[k]}});}})}n.default=e;return Object.freeze(n)}var U__default=/*#__PURE__*/_interopDefault(U);var G__default=/*#__PURE__*/_interopDefault(G);var x__default=/*#__PURE__*/_interopDefault(x);var langvision__namespace=/*#__PURE__*/_interopNamespace(langvision);var langtune__namespace=/*#__PURE__*/_interopNamespace(langtune);var c=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var i=(n,e)=>()=>(n&&(e=n(n=0)),e);var g=(n,e)=>{for(var t in e)c(n,t,{get:e[t],enumerable:true});},T=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of k(e))!K.call(n,r)&&r!==t&&c(n,r,{get:()=>e[r],enumerable:!(s=F(e,r))||s.enumerable});return n};var X=n=>T(c({},"__esModule",{value:true}),n);var h={};g(h,{AgentClient:()=>exports.d});exports.d=void 0;var l=i(()=>{exports.d=class{constructor(e){this.config=e;this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/agents",{params:t})).data.agents}async get(e){return (await this.client.get(`/agents/${e}`)).data}async create(e){return (await this.client.post("/agents/",e)).data}async delete(e){await this.client.delete(`/agents/${e}`);}async execute(e,t,s=[],r){return (await this.client.post(`/agents/${e}/execute`,{input:t,messages:s,conversation_id:r})).data}async logs(e,t=100){return (await this.client.get(`/agents/${e}/logs`,{params:{limit:t}})).data}};});exports.f=void 0;var _=i(()=>{exports.f=class{constructor(e){this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey}});}async upload(e,t,s="fine-tune"){let r=new G__default.default;if(typeof e=="string"){if(!x__default.default.existsSync(e))throw new Error(`File not found: ${e}`);r.append("file",x__default.default.createReadStream(e));}else throw new Error("File path required");return t&&r.append("workspace_id",t),r.append("purpose",s),(await this.client.post("/files",r,{headers:{...r.getHeaders()}})).data}async list(e,t){let s={workspace_id:e};return t&&(s.purpose=t),(await this.client.get("/files",{params:s})).data.data}};});exports.g=void 0;var w=i(()=>{exports.g=class{constructor(e){this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async createJob(e){return (await this.client.post("/finetune/jobs",e)).data}async listJobs(e,t=10){return (await this.client.get("/finetune/jobs",{params:{workspace_id:e,limit:t}})).data}async getJob(e){return (await this.client.get(`/finetune/jobs/${e}`)).data}async cancelJob(e){return (await this.client.post(`/finetune/jobs/${e}/cancel`)).data}};});exports.h=void 0;var A=i(()=>{exports.h=class{constructor(e){this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async getStatus(){return (await this.client.get("/subscription/status")).data}async checkFeature(e){return (await this.client.get(`/subscription/check/${e}`)).data}async getLimits(){return (await this.client.get("/subscription/analytics")).data}};});var P={};g(P,{ModelClient:()=>exports.i});exports.i=void 0;var y=i(()=>{exports.i=class{constructor(e){this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};e&&(t.task=e);try{return (await this.client.get("/models",{params:t})).data.data}catch(s){throw s}}async get(e){return (await this.client.get(`/models/${e}`)).data}};});var v={};g(v,{SecretClient:()=>exports.k});exports.k=void 0;var b=i(()=>{exports.k=class{constructor(e){this.config=e;this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/secrets",{params:t})).data.secrets}async set(e,t,s){return (await this.client.post("/secrets",{key:e,value:t,workspaceId:s})).data}async delete(e,t){let s={key:e};t&&(s.workspace_id=t),await this.client.delete(`/secrets/${e}`,{params:s});}};});exports.m=void 0;var C=i(()=>{exports.m=class{constructor(e){this.config=e;this.client=U__default.default.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/guardrails/",{params:t})).data}async get(e){return (await this.client.get(`/guardrails/${e}`)).data}async create(e){return (await this.client.post("/guardrails/",e)).data}async delete(e){await this.client.delete(`/guardrails/${e}`);}async apply(e,t){return (await this.client.post("/guardrails/apply",{dataset_id:e,guardrail_id:t})).data}};});var M=i(()=>{l();_();w();A();y();b();C();l();y();b();});
|
|
2
|
+
exports.n=langvision__namespace;Object.defineProperty(exports,"p",{enumerable:true,get:function(){return langvision.Langvision}});exports.o=langtune__namespace;Object.defineProperty(exports,"q",{enumerable:true,get:function(){return langtune.Langtune}});exports.a=i;exports.b=g;exports.c=X;exports.e=h;exports.j=P;exports.l=v;exports.r=M;//# sourceMappingURL=chunk-Q5EF25B2.js.map
|
|
3
|
+
//# sourceMappingURL=chunk-Q5EF25B2.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/agent.ts","../src/lib/files.ts","../src/lib/training.ts","../src/lib/subscription.ts","../src/lib/models.ts","../src/lib/secrets.ts","../src/lib/guardrails.ts","../src/index.ts"],"names":["agent_exports","__export","AgentClient","init_agent","__esmMin","config","axios","workspaceId","params","agentId","agent","input","messages","conversationId","limit","FileClient","init_files","file","purpose","form","FormData","fs","TrainingClient","init_training","job","jobId","SubscriptionClient","init_subscription","feature","models_exports","ModelClient","init_models","task","error","modelId","secrets_exports","SecretClient","init_secrets","key","value","GuardrailClient","init_guardrails","guardrailId","data","datasetId","init_src"],"mappings":"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","file":"chunk-Q5EF25B2.js","sourcesContent":["import axios, { AxiosInstance } from 'axios';\n\nexport interface Agent {\n id: string;\n workspace_id: string;\n name: string;\n description?: string;\n model_id?: string;\n config: Record<string, unknown>;\n is_active: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface AgentRun {\n id: string;\n conversation_id: string;\n success: boolean;\n output?: unknown;\n error?: string;\n latency_ms: number;\n tokens_used: number;\n}\n\nexport class AgentClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Agent[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n\n const response = await this.client.get<{ agents: Agent[] }>('/agents', { params });\n return response.data.agents;\n }\n\n async get(agentId: string): Promise<Agent> {\n const response = await this.client.get<Agent>(`/agents/${agentId}`);\n return response.data;\n }\n\n async create(agent: AgentCreate): Promise<Agent> {\n const response = await this.client.post<Agent>('/agents/', agent);\n return response.data;\n }\n\n async delete(agentId: string): Promise<void> {\n await this.client.delete(`/agents/${agentId}`);\n }\n\n async execute(agentId: string, input: any, messages: any[] = [], conversationId?: string): Promise<AgentRun> {\n const response = await this.client.post<AgentRun>(`/agents/${agentId}/execute`, {\n input,\n messages,\n conversation_id: conversationId\n });\n return response.data;\n }\n\n async logs(agentId: string, limit: number = 100): Promise<{ logs: string[] }> {\n const response = await this.client.get<{ logs: string[] }>(`/agents/${agentId}/logs`, {\n params: { limit }\n });\n return response.data;\n }\n}\n\nexport interface AgentConfig {\n system_prompt?: string;\n temperature?: number;\n max_tokens?: number;\n tools?: string[];\n [key: string]: any;\n}\n\nexport interface AgentCreate {\n workspace_id: string; // UUID\n name: string;\n description?: string;\n model_id?: string; // UUID\n config?: AgentConfig;\n}\n","import axios, { AxiosInstance } from 'axios';\nimport FormData from 'form-data';\nimport fs from 'fs';\n\nexport class FileClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n }\n });\n }\n\n async upload(file: any, workspaceId?: string, purpose: string = 'fine-tune'): Promise<FileResponse> {\n const form = new FormData();\n // Check if file is a path or buffer. Assuming path for CLI\n if (typeof file === 'string') {\n if (!fs.existsSync(file)) throw new Error(`File not found: ${file}`);\n form.append('file', fs.createReadStream(file));\n } else {\n // Handle buffer or other types if needed, but for now strict to path\n throw new Error('File path required');\n }\n\n if (workspaceId) form.append('workspace_id', workspaceId);\n form.append('purpose', purpose);\n\n const response = await this.client.post('/files', form, {\n headers: {\n ...form.getHeaders()\n }\n });\n return response.data;\n }\n\n async list(workspaceId: string, purpose?: string): Promise<FileResponse[]> {\n const params: any = { workspace_id: workspaceId };\n if (purpose) params.purpose = purpose;\n const response = await this.client.get('/files', { params });\n return response.data.data;\n }\n}\n\nexport interface FileResponse {\n id: string;\n filename: string;\n purpose: string;\n bytes: number;\n created_at: string;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport class TrainingClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async createJob(job: FineTuneJobCreate): Promise<FineTuneJobResponse> {\n const response = await this.client.post('/finetune/jobs', job);\n return response.data;\n }\n\n async listJobs(workspaceId: string, limit: number = 10): Promise<FineTuneJobList> {\n const response = await this.client.get('/finetune/jobs', {\n params: { workspace_id: workspaceId, limit }\n });\n return response.data;\n }\n\n async getJob(jobId: string): Promise<FineTuneJobResponse> {\n const response = await this.client.get(`/finetune/jobs/${jobId}`);\n return response.data;\n }\n\n async cancelJob(jobId: string): Promise<FineTuneJobResponse> {\n const response = await this.client.post(`/finetune/jobs/${jobId}/cancel`);\n return response.data;\n }\n}\n\nexport interface FineTuneJobCreate {\n name?: string;\n base_model: string;\n model_id?: string;\n dataset_id: string;\n guardrail_id?: string;\n task?: 'text' | 'vision';\n training_method?: 'sft' | 'dpo' | 'rlhf' | 'lora' | 'qlora';\n hyperparameters?: any;\n [key: string]: any;\n}\n\nexport interface FineTuneJobResponse {\n id: string;\n name: string;\n status: string;\n progress: number;\n error_message?: string;\n created_at: string;\n [key: string]: any;\n}\n\nexport interface FineTuneJobList {\n data: FineTuneJobResponse[];\n has_more: boolean;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport class SubscriptionClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async getStatus(): Promise<SubscriptionInfo> {\n const response = await this.client.get('/subscription/status');\n return response.data;\n }\n\n async checkFeature(feature: string): Promise<FeatureCheck> {\n const response = await this.client.get(`/subscription/check/${feature}`);\n return response.data;\n }\n\n async getLimits(): Promise<any> {\n const response = await this.client.get('/subscription/analytics');\n return response.data;\n }\n}\n\nexport interface SubscriptionInfo {\n is_active: boolean;\n plan: string;\n plan_name: string;\n expires_at?: string;\n features: string[];\n limits: any;\n}\n\nexport interface FeatureCheck {\n feature: string;\n allowed: boolean;\n limit?: number;\n used?: number;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface Permission {\n id: string;\n object: string;\n created: number;\n allow_create_engine: boolean;\n allow_sampling: boolean;\n allow_logprobs: boolean;\n allow_search_indices: boolean;\n allow_view: boolean;\n allow_fine_tuning: boolean;\n organization: string;\n group: any;\n is_blocking: boolean;\n}\n\nexport interface Model {\n id: string;\n object: string; // 'model'\n created: number;\n owned_by: string;\n permission: Permission[];\n root: string;\n parent: string | null;\n task?: 'text' | 'vision' | 'agent';\n}\n\nexport class ModelClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(task?: string): Promise<Model[]> {\n const params: any = {};\n if (task) params.task = task;\n\n try {\n const response = await this.client.get<{ data: Model[] }>('/models', { params });\n return response.data.data;\n } catch (error) {\n // Fallback if endpoint doesn't support filtering or fails\n // Verify if /models exists, otherwise return empty or throw\n // customized error handling could go here\n throw error;\n }\n }\n\n async get(modelId: string): Promise<Model> {\n const response = await this.client.get<Model>(`/models/${modelId}`);\n return response.data;\n }\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface Secret {\n key: string;\n created_at: string;\n updated_at: string;\n}\n\nexport class SecretClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Secret[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n const response = await this.client.get<{ secrets: Secret[] }>('/secrets', { params });\n return response.data.secrets;\n }\n\n async set(key: string, value: string, workspaceId?: string): Promise<Secret> {\n const response = await this.client.post<Secret>('/secrets', { key, value, workspaceId });\n return response.data;\n }\n\n async delete(key: string, workspaceId?: string): Promise<void> {\n const params: any = { key };\n if (workspaceId) params.workspace_id = workspaceId;\n await this.client.delete(`/secrets/${key}`, { params });\n }\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface GuardrailConfig {\n pii_enabled: boolean;\n pii_entities?: string[];\n profanity_enabled: boolean;\n profanity_threshold?: number;\n blocked_topics?: string[];\n regex_patterns?: string[];\n min_length?: number;\n max_length?: number;\n}\n\nexport interface Guardrail {\n id: string;\n workspace_id: string;\n name: string;\n description?: string;\n config: GuardrailConfig;\n is_active: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface GuardrailCreate {\n name: string;\n description?: string;\n config: GuardrailConfig;\n}\n\nexport class GuardrailClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Guardrail[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n const response = await this.client.get<Guardrail[]>('/guardrails/', { params });\n return response.data;\n }\n\n async get(guardrailId: string): Promise<Guardrail> {\n const response = await this.client.get<Guardrail>(`/guardrails/${guardrailId}`);\n return response.data;\n }\n\n async create(data: GuardrailCreate): Promise<Guardrail> {\n const response = await this.client.post<Guardrail>('/guardrails/', data);\n return response.data;\n }\n\n async delete(guardrailId: string): Promise<void> {\n await this.client.delete(`/guardrails/${guardrailId}`);\n }\n\n async apply(datasetId: string, guardrailId: string): Promise<any> {\n const response = await this.client.post('/guardrails/apply', {\n dataset_id: datasetId,\n guardrail_id: guardrailId\n });\n return response.data;\n }\n}\n","\n// Export Clients\nexport { Langvision } from 'langvision';\nexport { Langtune } from 'langtune';\n\n// Export Agent Client\nexport { AgentClient, Agent, AgentRun, AgentCreate } from './lib/agent';\nexport { FileClient, FileResponse } from './lib/files';\nexport { TrainingClient, FineTuneJobCreate, FineTuneJobResponse } from './lib/training';\nexport { SubscriptionClient, SubscriptionInfo, FeatureCheck } from './lib/subscription';\nexport { ModelClient, Model } from './lib/models';\nexport { SecretClient, Secret } from './lib/secrets';\nexport { GuardrailClient, Guardrail, GuardrailConfig, GuardrailCreate } from './lib/guardrails';\n\n// Export Types with Namespaces to avoid collisions\nimport * as Vision from 'langvision';\nimport * as Text from 'langtune';\nimport * as AgentTypes from './lib/agent';\nimport * as ModelTypes from './lib/models';\nimport * as SecretTypes from './lib/secrets';\n\nexport { Vision, Text, AgentTypes, ModelTypes, SecretTypes };\n"]}
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
import U from'axios';import G from'form-data';import x from'fs';import*as langvision from'langvision';export{langvision as n };export{Langvision as p}from'langvision';import*as langtune from'langtune';export{langtune as o };export{Langtune as q}from'langtune';var c=Object.defineProperty;var F=Object.getOwnPropertyDescriptor;var k=Object.getOwnPropertyNames;var K=Object.prototype.hasOwnProperty;var i=(n,e)=>()=>(n&&(e=n(n=0)),e);var g=(n,e)=>{for(var t in e)c(n,t,{get:e[t],enumerable:true});},T=(n,e,t,s)=>{if(e&&typeof e=="object"||typeof e=="function")for(let r of k(e))!K.call(n,r)&&r!==t&&c(n,r,{get:()=>e[r],enumerable:!(s=F(e,r))||s.enumerable});return n};var X=n=>T(c({},"__esModule",{value:true}),n);var h={};g(h,{AgentClient:()=>a});var a,l=i(()=>{a=class{constructor(e){this.config=e;this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/agents",{params:t})).data.agents}async get(e){return (await this.client.get(`/agents/${e}`)).data}async create(e){return (await this.client.post("/agents/",e)).data}async delete(e){await this.client.delete(`/agents/${e}`);}async execute(e,t,s=[],r){return (await this.client.post(`/agents/${e}/execute`,{input:t,messages:s,conversation_id:r})).data}async logs(e,t=100){return (await this.client.get(`/agents/${e}/logs`,{params:{limit:t}})).data}};});var d,_=i(()=>{d=class{constructor(e){this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey}});}async upload(e,t,s="fine-tune"){let r=new G;if(typeof e=="string"){if(!x.existsSync(e))throw new Error(`File not found: ${e}`);r.append("file",x.createReadStream(e));}else throw new Error("File path required");return t&&r.append("workspace_id",t),r.append("purpose",s),(await this.client.post("/files",r,{headers:{...r.getHeaders()}})).data}async list(e,t){let s={workspace_id:e};return t&&(s.purpose=t),(await this.client.get("/files",{params:s})).data.data}};});var u,w=i(()=>{u=class{constructor(e){this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async createJob(e){return (await this.client.post("/finetune/jobs",e)).data}async listJobs(e,t=10){return (await this.client.get("/finetune/jobs",{params:{workspace_id:e,limit:t}})).data}async getJob(e){return (await this.client.get(`/finetune/jobs/${e}`)).data}async cancelJob(e){return (await this.client.post(`/finetune/jobs/${e}/cancel`)).data}};});var m,A=i(()=>{m=class{constructor(e){this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async getStatus(){return (await this.client.get("/subscription/status")).data}async checkFeature(e){return (await this.client.get(`/subscription/check/${e}`)).data}async getLimits(){return (await this.client.get("/subscription/analytics")).data}};});var P={};g(P,{ModelClient:()=>o});var o,y=i(()=>{o=class{constructor(e){this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};e&&(t.task=e);try{return (await this.client.get("/models",{params:t})).data.data}catch(s){throw s}}async get(e){return (await this.client.get(`/models/${e}`)).data}};});var v={};g(v,{SecretClient:()=>p});var p,b=i(()=>{p=class{constructor(e){this.config=e;this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/secrets",{params:t})).data.secrets}async set(e,t,s){return (await this.client.post("/secrets",{key:e,value:t,workspaceId:s})).data}async delete(e,t){let s={key:e};t&&(s.workspace_id=t),await this.client.delete(`/secrets/${e}`,{params:s});}};});var f,C=i(()=>{f=class{constructor(e){this.config=e;this.client=U.create({baseURL:e.baseUrl||"https://api.langtrain.ai/api/v1",headers:{"X-API-Key":e.apiKey,"Content-Type":"application/json"}});}async list(e){let t={};return e&&(t.workspace_id=e),(await this.client.get("/guardrails/",{params:t})).data}async get(e){return (await this.client.get(`/guardrails/${e}`)).data}async create(e){return (await this.client.post("/guardrails/",e)).data}async delete(e){await this.client.delete(`/guardrails/${e}`);}async apply(e,t){return (await this.client.post("/guardrails/apply",{dataset_id:e,guardrail_id:t})).data}};});var M=i(()=>{l();_();w();A();y();b();C();l();y();b();});
|
|
2
|
+
export{i as a,g as b,X as c,a as d,h as e,d as f,u as g,m as h,o as i,P as j,p as k,v as l,f as m,M as r};//# sourceMappingURL=chunk-XRT7LLNF.mjs.map
|
|
3
|
+
//# sourceMappingURL=chunk-XRT7LLNF.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/agent.ts","../src/lib/files.ts","../src/lib/training.ts","../src/lib/subscription.ts","../src/lib/models.ts","../src/lib/secrets.ts","../src/lib/guardrails.ts","../src/index.ts"],"names":["agent_exports","__export","AgentClient","init_agent","__esmMin","config","axios","workspaceId","params","agentId","agent","input","messages","conversationId","limit","FileClient","init_files","file","purpose","form","FormData","fs","TrainingClient","init_training","job","jobId","SubscriptionClient","init_subscription","feature","models_exports","ModelClient","init_models","task","error","modelId","secrets_exports","SecretClient","init_secrets","key","value","GuardrailClient","init_guardrails","guardrailId","data","datasetId","init_src"],"mappings":"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","file":"chunk-XRT7LLNF.mjs","sourcesContent":["import axios, { AxiosInstance } from 'axios';\n\nexport interface Agent {\n id: string;\n workspace_id: string;\n name: string;\n description?: string;\n model_id?: string;\n config: Record<string, unknown>;\n is_active: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface AgentRun {\n id: string;\n conversation_id: string;\n success: boolean;\n output?: unknown;\n error?: string;\n latency_ms: number;\n tokens_used: number;\n}\n\nexport class AgentClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Agent[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n\n const response = await this.client.get<{ agents: Agent[] }>('/agents', { params });\n return response.data.agents;\n }\n\n async get(agentId: string): Promise<Agent> {\n const response = await this.client.get<Agent>(`/agents/${agentId}`);\n return response.data;\n }\n\n async create(agent: AgentCreate): Promise<Agent> {\n const response = await this.client.post<Agent>('/agents/', agent);\n return response.data;\n }\n\n async delete(agentId: string): Promise<void> {\n await this.client.delete(`/agents/${agentId}`);\n }\n\n async execute(agentId: string, input: any, messages: any[] = [], conversationId?: string): Promise<AgentRun> {\n const response = await this.client.post<AgentRun>(`/agents/${agentId}/execute`, {\n input,\n messages,\n conversation_id: conversationId\n });\n return response.data;\n }\n\n async logs(agentId: string, limit: number = 100): Promise<{ logs: string[] }> {\n const response = await this.client.get<{ logs: string[] }>(`/agents/${agentId}/logs`, {\n params: { limit }\n });\n return response.data;\n }\n}\n\nexport interface AgentConfig {\n system_prompt?: string;\n temperature?: number;\n max_tokens?: number;\n tools?: string[];\n [key: string]: any;\n}\n\nexport interface AgentCreate {\n workspace_id: string; // UUID\n name: string;\n description?: string;\n model_id?: string; // UUID\n config?: AgentConfig;\n}\n","import axios, { AxiosInstance } from 'axios';\nimport FormData from 'form-data';\nimport fs from 'fs';\n\nexport class FileClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n }\n });\n }\n\n async upload(file: any, workspaceId?: string, purpose: string = 'fine-tune'): Promise<FileResponse> {\n const form = new FormData();\n // Check if file is a path or buffer. Assuming path for CLI\n if (typeof file === 'string') {\n if (!fs.existsSync(file)) throw new Error(`File not found: ${file}`);\n form.append('file', fs.createReadStream(file));\n } else {\n // Handle buffer or other types if needed, but for now strict to path\n throw new Error('File path required');\n }\n\n if (workspaceId) form.append('workspace_id', workspaceId);\n form.append('purpose', purpose);\n\n const response = await this.client.post('/files', form, {\n headers: {\n ...form.getHeaders()\n }\n });\n return response.data;\n }\n\n async list(workspaceId: string, purpose?: string): Promise<FileResponse[]> {\n const params: any = { workspace_id: workspaceId };\n if (purpose) params.purpose = purpose;\n const response = await this.client.get('/files', { params });\n return response.data.data;\n }\n}\n\nexport interface FileResponse {\n id: string;\n filename: string;\n purpose: string;\n bytes: number;\n created_at: string;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport class TrainingClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async createJob(job: FineTuneJobCreate): Promise<FineTuneJobResponse> {\n const response = await this.client.post('/finetune/jobs', job);\n return response.data;\n }\n\n async listJobs(workspaceId: string, limit: number = 10): Promise<FineTuneJobList> {\n const response = await this.client.get('/finetune/jobs', {\n params: { workspace_id: workspaceId, limit }\n });\n return response.data;\n }\n\n async getJob(jobId: string): Promise<FineTuneJobResponse> {\n const response = await this.client.get(`/finetune/jobs/${jobId}`);\n return response.data;\n }\n\n async cancelJob(jobId: string): Promise<FineTuneJobResponse> {\n const response = await this.client.post(`/finetune/jobs/${jobId}/cancel`);\n return response.data;\n }\n}\n\nexport interface FineTuneJobCreate {\n name?: string;\n base_model: string;\n model_id?: string;\n dataset_id: string;\n guardrail_id?: string;\n task?: 'text' | 'vision';\n training_method?: 'sft' | 'dpo' | 'rlhf' | 'lora' | 'qlora';\n hyperparameters?: any;\n [key: string]: any;\n}\n\nexport interface FineTuneJobResponse {\n id: string;\n name: string;\n status: string;\n progress: number;\n error_message?: string;\n created_at: string;\n [key: string]: any;\n}\n\nexport interface FineTuneJobList {\n data: FineTuneJobResponse[];\n has_more: boolean;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport class SubscriptionClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async getStatus(): Promise<SubscriptionInfo> {\n const response = await this.client.get('/subscription/status');\n return response.data;\n }\n\n async checkFeature(feature: string): Promise<FeatureCheck> {\n const response = await this.client.get(`/subscription/check/${feature}`);\n return response.data;\n }\n\n async getLimits(): Promise<any> {\n const response = await this.client.get('/subscription/analytics');\n return response.data;\n }\n}\n\nexport interface SubscriptionInfo {\n is_active: boolean;\n plan: string;\n plan_name: string;\n expires_at?: string;\n features: string[];\n limits: any;\n}\n\nexport interface FeatureCheck {\n feature: string;\n allowed: boolean;\n limit?: number;\n used?: number;\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface Permission {\n id: string;\n object: string;\n created: number;\n allow_create_engine: boolean;\n allow_sampling: boolean;\n allow_logprobs: boolean;\n allow_search_indices: boolean;\n allow_view: boolean;\n allow_fine_tuning: boolean;\n organization: string;\n group: any;\n is_blocking: boolean;\n}\n\nexport interface Model {\n id: string;\n object: string; // 'model'\n created: number;\n owned_by: string;\n permission: Permission[];\n root: string;\n parent: string | null;\n task?: 'text' | 'vision' | 'agent';\n}\n\nexport class ModelClient {\n private client: AxiosInstance;\n\n constructor(config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(task?: string): Promise<Model[]> {\n const params: any = {};\n if (task) params.task = task;\n\n try {\n const response = await this.client.get<{ data: Model[] }>('/models', { params });\n return response.data.data;\n } catch (error) {\n // Fallback if endpoint doesn't support filtering or fails\n // Verify if /models exists, otherwise return empty or throw\n // customized error handling could go here\n throw error;\n }\n }\n\n async get(modelId: string): Promise<Model> {\n const response = await this.client.get<Model>(`/models/${modelId}`);\n return response.data;\n }\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface Secret {\n key: string;\n created_at: string;\n updated_at: string;\n}\n\nexport class SecretClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Secret[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n const response = await this.client.get<{ secrets: Secret[] }>('/secrets', { params });\n return response.data.secrets;\n }\n\n async set(key: string, value: string, workspaceId?: string): Promise<Secret> {\n const response = await this.client.post<Secret>('/secrets', { key, value, workspaceId });\n return response.data;\n }\n\n async delete(key: string, workspaceId?: string): Promise<void> {\n const params: any = { key };\n if (workspaceId) params.workspace_id = workspaceId;\n await this.client.delete(`/secrets/${key}`, { params });\n }\n}\n","import axios, { AxiosInstance } from 'axios';\n\nexport interface GuardrailConfig {\n pii_enabled: boolean;\n pii_entities?: string[];\n profanity_enabled: boolean;\n profanity_threshold?: number;\n blocked_topics?: string[];\n regex_patterns?: string[];\n min_length?: number;\n max_length?: number;\n}\n\nexport interface Guardrail {\n id: string;\n workspace_id: string;\n name: string;\n description?: string;\n config: GuardrailConfig;\n is_active: boolean;\n created_at: string;\n updated_at: string;\n}\n\nexport interface GuardrailCreate {\n name: string;\n description?: string;\n config: GuardrailConfig;\n}\n\nexport class GuardrailClient {\n private client: AxiosInstance;\n\n constructor(private config: { apiKey: string, baseUrl?: string }) {\n this.client = axios.create({\n baseURL: config.baseUrl || 'https://api.langtrain.ai/api/v1',\n headers: {\n 'X-API-Key': config.apiKey,\n 'Content-Type': 'application/json'\n }\n });\n }\n\n async list(workspaceId?: string): Promise<Guardrail[]> {\n const params: any = {};\n if (workspaceId) params.workspace_id = workspaceId;\n const response = await this.client.get<Guardrail[]>('/guardrails/', { params });\n return response.data;\n }\n\n async get(guardrailId: string): Promise<Guardrail> {\n const response = await this.client.get<Guardrail>(`/guardrails/${guardrailId}`);\n return response.data;\n }\n\n async create(data: GuardrailCreate): Promise<Guardrail> {\n const response = await this.client.post<Guardrail>('/guardrails/', data);\n return response.data;\n }\n\n async delete(guardrailId: string): Promise<void> {\n await this.client.delete(`/guardrails/${guardrailId}`);\n }\n\n async apply(datasetId: string, guardrailId: string): Promise<any> {\n const response = await this.client.post('/guardrails/apply', {\n dataset_id: datasetId,\n guardrail_id: guardrailId\n });\n return response.data;\n }\n}\n","\n// Export Clients\nexport { Langvision } from 'langvision';\nexport { Langtune } from 'langtune';\n\n// Export Agent Client\nexport { AgentClient, Agent, AgentRun, AgentCreate } from './lib/agent';\nexport { FileClient, FileResponse } from './lib/files';\nexport { TrainingClient, FineTuneJobCreate, FineTuneJobResponse } from './lib/training';\nexport { SubscriptionClient, SubscriptionInfo, FeatureCheck } from './lib/subscription';\nexport { ModelClient, Model } from './lib/models';\nexport { SecretClient, Secret } from './lib/secrets';\nexport { GuardrailClient, Guardrail, GuardrailConfig, GuardrailCreate } from './lib/guardrails';\n\n// Export Types with Namespaces to avoid collisions\nimport * as Vision from 'langvision';\nimport * as Text from 'langtune';\nimport * as AgentTypes from './lib/agent';\nimport * as ModelTypes from './lib/models';\nimport * as SecretTypes from './lib/secrets';\n\nexport { Vision, Text, AgentTypes, ModelTypes, SecretTypes };\n"]}
|
package/dist/cli.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
'use strict';var
|
|
2
|
+
'use strict';var chunkQ5EF25B2_js=require('./chunk-Q5EF25B2.js'),Ge=require('cli-table3'),prompts=require('@clack/prompts'),colors=require('kleur/colors'),K=require('gradient-string'),G=require('fs'),se=require('path'),Pe=require('os'),commander=require('commander');function _interopDefault(e){return e&&e.__esModule?e:{default:e}}var Ge__default=/*#__PURE__*/_interopDefault(Ge);var K__default=/*#__PURE__*/_interopDefault(K);var G__default=/*#__PURE__*/_interopDefault(G);var se__default=/*#__PURE__*/_interopDefault(se);var Pe__default=/*#__PURE__*/_interopDefault(Pe);function q(a){return new Ge__default.default({head:a.map(r=>F.magenta(F.bold(r))),chars:{top:"\u2500","top-mid":"\u252C","top-left":"\u250C","top-right":"\u2510",bottom:"\u2500","bottom-mid":"\u2534","bottom-left":"\u2514","bottom-right":"\u2518",left:"\u2502","left-mid":"\u251C",mid:"\u2500","mid-mid":"\u253C",right:"\u2502","right-mid":"\u2524",middle:"\u2502"},style:{"padding-left":1,"padding-right":1,head:[],border:["gray"]}})}var me=chunkQ5EF25B2_js.a(()=>{$();});function we(a){console.clear(),console.log(K__default.default(["#A855F7","#EC4899","#3B82F6"])(`
|
|
3
3
|
\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2557 \u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2557\u2588\u2588\u2588\u2557 \u2588\u2588\u2557
|
|
4
4
|
\u2588\u2588\u2551 \u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2554\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u2550\u2588\u2588\u2554\u2550\u2550\u255D\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2554\u2550\u2550\u2588\u2588\u2557\u2588\u2588\u2551\u2588\u2588\u2588\u2588\u2557 \u2588\u2588\u2551
|
|
5
5
|
\u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2588\u2557 \u2588\u2588\u2551 \u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2554\u2588\u2588\u2557 \u2588\u2588\u2551
|
|
@@ -7,11 +7,11 @@
|
|
|
7
7
|
\u2588\u2588\u2588\u2588\u2588\u2588\u2588\u2557\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551\u255A\u2588\u2588\u2588\u2588\u2588\u2588\u2554\u255D \u2588\u2588\u2551 \u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551 \u2588\u2588\u2551\u2588\u2588\u2551\u2588\u2588\u2551 \u255A\u2588\u2588\u2588\u2588\u2551
|
|
8
8
|
\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D \u255A\u2550\u2550\u2550\u2550\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u255D\u255A\u2550\u255D\u255A\u2550\u255D \u255A\u2550\u2550\u2550\u255D
|
|
9
9
|
`)),console.log(`${colors.bgMagenta(colors.black(` Langtrain SDK v${a} `))}
|
|
10
|
-
`);}function w(a){console.log(colors.magenta(`\u25C6 ${a}`));}function _(a){console.log(colors.gray(`\u2514 ${a}`));}function u(){return {start:a=>process.stdout.write(`${colors.magenta("\u25CF")} ${a}\r`),stop:a=>{console.log(a?`${colors.green("\u2714")} ${a}`:"");},message:a=>process.stdout.write(`${colors.magenta("\u25CF")} ${a}\r`)}}function R(a){console.log(colors.green(`\u2714 ${a}`));}function be(a){console.log(colors.yellow(`\u26A0 Warning: ${a}`));}function ve(a){console.log(colors.blue(`\u2139 ${a}`));}var F,$=
|
|
10
|
+
`);}function w(a){console.log(colors.magenta(`\u25C6 ${a}`));}function _(a){console.log(colors.gray(`\u2514 ${a}`));}function u(){return {start:a=>process.stdout.write(`${colors.magenta("\u25CF")} ${a}\r`),stop:a=>{console.log(a?`${colors.green("\u2714")} ${a}`:"");},message:a=>process.stdout.write(`${colors.magenta("\u25CF")} ${a}\r`)}}function R(a){console.log(colors.green(`\u2714 ${a}`));}function be(a){console.log(colors.yellow(`\u26A0 Warning: ${a}`));}function ve(a){console.log(colors.blue(`\u2139 ${a}`));}var F,$=chunkQ5EF25B2_js.a(()=>{me();F={bgMagenta:colors.bgMagenta,black:colors.black,red:colors.red,green:colors.green,yellow:colors.yellow,gray:colors.gray,cyan:colors.cyan,bold:colors.bold,dim:colors.dim,blue:colors.blue,magenta:colors.magenta,white:colors.white};});function f(){if(!G__default.default.existsSync(ae))return {};try{return JSON.parse(G__default.default.readFileSync(ae,"utf-8"))}catch{return {}}}function $e(a){G__default.default.existsSync(ne)||G__default.default.mkdirSync(ne,{recursive:true}),G__default.default.writeFileSync(ae,JSON.stringify(a,null,2));}var ne,ae,I=chunkQ5EF25B2_js.a(()=>{ne=se__default.default.join(Pe__default.default.homedir(),".langtrain"),ae=se__default.default.join(ne,"config.json");});async function Ke(a,r){let t=await prompts.text({message:"Agent Name:",placeholder:"e.g. Support Bot",validate(l){if(!l||l.length===0)return "API Key is required"}});if(prompts.isCancel(t)){prompts.cancel("Operation cancelled");return}let e=await prompts.text({message:"Description:",placeholder:"e.g. A helpful support assistant"});if(prompts.isCancel(e))return;let n=await prompts.text({message:"System Prompt:",placeholder:"e.g. You are a helpful assistant.",initialValue:"You are a helpful assistant."});if(prompts.isCancel(n))return;let i="gpt-4o",o=u();o.start("Fetching agent models...");try{let l=await r.list("agent");o.stop(`Found ${l.length} models`),l.length>0&&(i=await prompts.select({message:"Select Agent Model:",options:l.map(c=>({value:c.id,label:c.id}))}));}catch{o.stop(colors.yellow("Could not fetch models, using default."));}if(prompts.isCancel(i))return;let s=u();s.start("Creating agent...");try{let l=await a.list(),c="";if(l.length>0)c=l[0].workspace_id;else {s.stop(colors.yellow("Workspace ID needed (no existing agents found)."));let k=await prompts.text({message:"Enter Workspace ID (UUID):",validate(S){if(!S||S.length===0)return "Required"}});if(prompts.isCancel(k))return;c=k,s.start("Creating agent...");}let v=await a.create({workspace_id:c,name:t,description:e,config:{system_prompt:n,model:i}});s.stop(colors.green(`Agent "${v.name}" created successfully! ID: ${v.id}`));}catch(l){throw s.stop(colors.red("Failed to create agent.")),l}}async function Ue(a){let r=u();r.start("Fetching agents...");let t=await a.list();if(r.stop(`Found ${t.length} agents`),t.length===0){w(colors.yellow("No agents to delete."));return}let e=await prompts.select({message:"Select an agent to DELETE:",options:t.map(o=>({value:o.id,label:o.name,hint:o.description||"No description"}))});if(prompts.isCancel(e))return;if(await prompts.select({message:"Are you sure you want to delete this agent?",options:[{value:"yes",label:"Yes, delete it",hint:"Cannot be undone"},{value:"no",label:"No, keep it"}]})!=="yes"){w(colors.gray("Deletion cancelled."));return}let i=u();i.start("Deleting agent...");try{await a.delete(e),i.stop(colors.green("Agent deleted successfully."));}catch(o){throw i.stop(colors.red("Failed to delete agent.")),o}}async function _e(a){let r=u();r.start("Fetching agents...");let t=await a.list();if(r.stop(`Found ${t.length} agents`),t.length===0){w(colors.yellow("No agents found in your workspace."));return}let e=q(["ID","Name","Model","Created"]);t.forEach(i=>{e.push([i.id.substring(0,8)+"...",i.name,i.config?.model||"default",new Date(i.created_at).toLocaleDateString()]);}),console.log(e.toString()),console.log("");let n=await prompts.select({message:"Select an agent to run:",options:t.map(i=>({value:i.id,label:i.name,hint:i.description||"No description"}))});prompts.isCancel(n)||await oe(a,n,t.find(i=>i.id===n)?.name||"Agent");}async function oe(a,r,t,e){w(colors.bgMagenta(colors.black(` Chatting with ${t} `))),console.log(colors.gray('Type "exit" to quit conversation.'));let n;if(e){let i=u();i.start("Agent is analyzing...");try{let o=await a.execute(r,{prompt:e},[],n);i.stop(),o.output?.response?console.log(K__default.default.pastel(`Agent: ${o.output.response}`)):console.log(K__default.default.pastel(`Agent: ${JSON.stringify(o.output)}`)),n=o.conversation_id;}catch(o){i.stop(colors.red("Error running agent.")),console.error(o);}}for(;;){let i=await prompts.text({message:"You:",placeholder:"Type a message..."});if(prompts.isCancel(i)||i==="exit")break;let o=u();o.start("Agent is thinking...");try{let s=await a.execute(r,{prompt:i},[],n);o.stop(),s.output?.response?console.log(K__default.default.pastel(`Agent: ${s.output.response}`)):console.log(K__default.default.pastel(`Agent: ${JSON.stringify(s.output)}`)),n=s.conversation_id;}catch(s){o.stop(colors.red("Error running agent.")),console.error(s);}}}var ie=chunkQ5EF25B2_js.a(()=>{$();});var Te={};chunkQ5EF25B2_js.b(Te,{handleDataAnalyze:()=>Re,handleDataList:()=>Qe,handleDataRefine:()=>H,handleDataUpload:()=>Y});async function Y(a){let t=f().workspace_id,e=await prompts.text({message:"Path to file:",placeholder:"./dataset.jsonl",validate(o){if(!o)return "Required";if(!G__default.default.existsSync(o))return "File not found"}});if(prompts.isCancel(e))return;let n=await prompts.select({message:"File Purpose:",options:[{value:"fine-tune",label:"Fine-tuning (JSONL)"},{value:"vision-tune",label:"Vision Tuning (Image/Zip)"},{value:"agent-knowledge",label:"Agent Knowledge"}]});if(prompts.isCancel(n))return;let i=u();i.start("Uploading file...");try{let o=await a.upload(e,t,n);i.stop(colors.green("File uploaded successfully!")),console.log(colors.gray(`ID: ${o.id}`)),console.log(colors.gray(`Name: ${o.filename}`)),console.log(colors.gray(`Bytes: ${o.bytes}`));}catch(o){i.stop(colors.red(`Upload failed: ${o.message}`));}}async function Qe(a){let t=f().workspace_id;if(!t&&(t=await prompts.text({message:"Enter Workspace ID (optional):",initialValue:""}),prompts.isCancel(t)))return;let e=u();e.start("Fetching files...");try{let n=await a.list(t);if(e.stop(`Found ${n.length} files`),n.length===0){console.log(colors.yellow("No files found."));return}let i=await prompts.select({message:"Select file to analyze (or cancel to exit):",options:n.map(o=>({value:o.id,label:`${o.filename} (${Ne(o.bytes)})`}))});if(prompts.isCancel(i))return;await Re(a,i);}catch(n){e.stop(colors.red(`Failed to list files: ${n.message}`));}}async function Re(a,r){let t=f(),e=u();e.start("Connecting to Data Analyst...");try{let n=new chunkQ5EF25B2_js.d({apiKey:t.apiKey||"",baseUrl:t.baseUrl}),o=(await n.list()).find(s=>s.name&&s.name==="Langtrain Data Analyst");if(!o){e.stop(colors.yellow("Data Analyst agent (System) not found. Please contact admin to provision it."));return}e.stop(colors.green("Connected to Data Analyst.")),console.log(colors.gray(`
|
|
11
11
|
Analyzing dataset ${r}...
|
|
12
|
-
`)),await oe(n,o.id,o.name,`Please analyze the dataset with ID: ${r}`);}catch(n){e.stop(colors.red(`Failed to connect: ${n.message}`));}}async function H(a,r){let t=f(),e=new
|
|
12
|
+
`)),await oe(n,o.id,o.name,`Please analyze the dataset with ID: ${r}`);}catch(n){e.stop(colors.red(`Failed to connect: ${n.message}`));}}async function H(a,r){let t=f(),e=new chunkQ5EF25B2_js.m({apiKey:t.apiKey||"",baseUrl:t.baseUrl});if(!r){let s=u();s.start("Fetching files...");try{let l=t.workspace_id||"",c=await a.list(l);if(s.stop(`Found ${c.length} files`),c.length===0){console.log(colors.yellow("No files found. Upload one first."));return}let v=await prompts.select({message:"Select file to refine:",options:c.map(k=>({value:k.id,label:`${k.filename} (${Ne(k.bytes)})`}))});if(prompts.isCancel(v))return;r=v;}catch(l){s.stop(colors.red(`Failed to fetch files: ${l.message}`));return}}let n=u();n.start("Fetching guardrails...");let i="";try{let s=await e.list();if(n.stop(`Found ${s.length} guardrails`),s.length===0){console.log(colors.yellow('No guardrails found. Please create one first using "lt guardrails create".'));return}let l=await prompts.select({message:"Select a Guardrail to apply:",options:s.map(c=>({value:c.id,label:c.name,hint:c.description}))});if(prompts.isCancel(l))return;i=l;}catch(s){n.stop(colors.red(`Failed to fetch guardrails: ${s.message}`));return}let o=u();o.start("Applying guardrail (filtering dataset)...");try{let s=await e.apply(r,i);o.stop(colors.green("Dataset refined successfully!")),console.log(colors.gray("Stats:")),console.log(`Original Rows: ${s.original_rows}`),console.log(`Filtered Rows: ${s.filtered_rows}`),console.log(colors.red(`Removed: ${s.removed_rows} rows`)),console.log(colors.green(`New Dataset ID: ${s.new_dataset_id}`));}catch(s){o.stop(colors.red(`Failed to refine dataset: ${s.message}`));}}function Ne(a,r=2){if(!+a)return "0 Bytes";let t=1024,e=r<0?0:r,n=["Bytes","KB","MB","GB","TB"],i=Math.floor(Math.log(a)/Math.log(t));return `${parseFloat((a/Math.pow(t,i)).toFixed(e))} ${n[i]}`}var le=chunkQ5EF25B2_js.a(()=>{$();I();chunkQ5EF25B2_js.r();ie();});$();$();$();I();chunkQ5EF25B2_js.r();async function J(){for(;;){console.log(colors.gray(`
|
|
13
13
|
Get your API Key at: https://langtrain.xyz/settings/keys
|
|
14
|
-
`));let a=await prompts.password({message:"Enter your Langtrain API Key:",validate(t){if(!t||t.length===0)return "API Key is required"}});prompts.isCancel(a)&&(prompts.cancel("Operation cancelled"),process.exit(0));let r=u();r.start("Verifying API Key...");try{let e=await new
|
|
15
|
-
Limits:`)),console.log(` Models: ${e.limits.max_models===-1?"Unlimited":e.limits.max_models}`),console.log(` Training Jobs: ${e.limits.max_training_jobs}`);}catch(e){t.stop(colors.red("Failed to fetch status.")),console.error(e.message);}}$();I();chunkTZNQ5KWQ_js.r();async function ke(a,r){let t="",e=u();e.start("Fetching available text models...");try{let l=await r.list("text");e.stop(`Found ${l.length} text models`),l.length>0&&(t=await prompts.select({message:"Select base model:",options:l.map(c=>({value:c.id,label:c.id,hint:c.owned_by}))}));}catch{e.stop(colors.yellow("Failed to fetch models. Using manual input.")),t=await prompts.text({message:"Enter base model (e.g., gpt-3.5-turbo):",placeholder:"gpt-3.5-turbo",validate(c){if(!c||c.length===0)return "Value is required!"}});}prompts.isCancel(t)&&(prompts.cancel("Operation cancelled."),process.exit(0));let n=await prompts.text({message:"Enter path to training file:",placeholder:"./data.jsonl",validate(l){if(!l||l.length===0)return "Value is required!"}});prompts.isCancel(n)&&prompts.cancel("Operation cancelled.");let i=await prompts.text({message:"Num Epochs:",placeholder:"3",initialValue:"3"});prompts.isCancel(i)&&prompts.cancel("Operation cancelled.");let o=await prompts.select({message:"Track this job on Langtrain Cloud?",options:[{value:"yes",label:"Yes",hint:"Upload dataset and log job"},{value:"no",label:"No",hint:"Local only"}]});if(prompts.isCancel(o)&&prompts.cancel("Operation cancelled."),o==="yes"){let l=u();l.start("Connecting to Cloud...");try{let c=f();if(!c.apiKey)throw new Error('API Key required. Run "login" first.');if(!(await new chunkTZNQ5KWQ_js.l({apiKey:c.apiKey}).getStatus()).features.includes("cloud_finetuning")){l.stop(colors.red('Feature "cloud_finetuning" is not available on your plan.'));let T=await prompts.confirm({message:"Upgrade to Pro for cloud tracking?"});T&&!prompts.isCancel(T)&&console.log(colors.bgMagenta(colors.black(" Visit https://langtrain.ai/dashboard/billing to upgrade. ")));return}let S=new chunkTZNQ5KWQ_js.j({apiKey:c.apiKey}),j=new chunkTZNQ5KWQ_js.k({apiKey:c.apiKey});l.message("Uploading dataset...");let Q=await S.upload(n);l.message("Creating Job...");let Z=await j.createJob({name:`cli-sft-${Date.now()}`,base_model:t,dataset_id:Q.id,task:"text",hyperparameters:{n_epochs:parseInt(i)}});l.stop(colors.green(`Job tracked: ${Z.id}`));}catch(c){l.stop(colors.red(`Tracking failed: ${c.message}`));let v=await prompts.confirm({message:"Continue with local training anyway?"});if(!v||prompts.isCancel(v))return}}let s=u();s.start("Starting local fine-tuning...");try{let l={model:t,trainFile:n,preset:"default",epochs:parseInt(i),batchSize:1,learningRate:2e-5,loraRank:16,outputDir:"./output"};await a.finetune(l),s.stop(colors.green("Fine-tuning job started successfully!"));}catch(l){throw s.stop(colors.red("Failed to start job.")),l}}async function Fe(a){let r=await prompts.text({message:"Enter model path:",placeholder:"./output/model",initialValue:"./output/model"});prompts.isCancel(r)&&prompts.cancel("Operation cancelled");let t=await prompts.text({message:"Enter prompt:",placeholder:"Hello world"});prompts.isCancel(t)&&prompts.cancel("Operation cancelled");let e=u();e.start("Connecting to Langtrain Inference API...");try{let n=await a.generate(r,{prompt:t});e.stop("Generation complete"),w("Response:"),console.log(K__default.default.pastel(n));}catch(n){throw e.stop(colors.red("Generation failed.")),n}}async function Ae(a){let r=u();r.start("Fetching fine-tuning jobs...");let e=f().workspace_id;if(!(!e&&(r.stop(colors.yellow("Workspace ID required to list jobs.")),e=await prompts.text({message:"Enter Workspace ID:"}),prompts.isCancel(e))))try{let n=await a.listJobs(e);if(r.stop(`Found ${n.data.length} jobs`),n.data.length===0){console.log(colors.yellow("No jobs found."));return}let i=q(["ID","Status","Model","Progress","Created"]);n.data.forEach(s=>{let l=s.status==="succeeded"?colors.green:s.status==="failed"?colors.red:colors.yellow;i.push([s.id.substring(0,8)+"...",l(s.status),s.base_model,(s.progress||0)+"%",new Date(s.created_at).toLocaleDateString()]);}),console.log(i.toString()),console.log("");let o=await prompts.select({message:"Select a job to view details:",options:n.data.map(s=>({value:s.id,label:`${s.name||s.id} (${s.status})`,hint:`Created: ${new Date(s.created_at).toLocaleDateString()}`}))});if(prompts.isCancel(o))return;await Ie(a,o);}catch(n){r.stop(colors.red(`Failed to list jobs: ${n.message}`));}}async function Ie(a,r){let t=r;if(!t&&(t=await prompts.text({message:"Enter Job ID:"}),prompts.isCancel(t)))return;let e=u();e.start(`Fetching status for ${t}...`);try{let n=await a.getJob(t);if(e.stop(`Job Status: ${n.status.toUpperCase()}`),console.log(colors.gray("------------------------------------------------")),console.log(`${colors.bgMagenta(colors.black(" Job Details "))}`),console.log(`ID: ${n.id}`),console.log(`Name: ${n.name}`),console.log(`Status: ${n.status==="succeeded"?colors.green(n.status):n.status}`),console.log(`Model: ${n.base_model}`),console.log(`Progress: ${n.progress||0}%`),n.error_message&&console.log(colors.red(`Error: ${n.error_message}`)),console.log(colors.gray("------------------------------------------------")),n.status==="running"||n.status==="queued"){let i=await prompts.select({message:"Action:",options:[{value:"refresh",label:"Refresh Status"},{value:"cancel",label:"Cancel Job"},{value:"back",label:"Back"}]});i==="refresh"&&await Ie(a,t),i==="cancel"&&await Ye(a,t);}}catch(n){e.stop(colors.red(`Failed to get job status: ${n.message}`));}}async function Ye(a,r){let t=await prompts.confirm({message:"Are you sure you want to cancel this job?"});if(!t||prompts.isCancel(t))return;let e=u();e.start("Canceling job...");try{await a.cancelJob(r),e.stop(colors.green("Job canceled successfully."));}catch(n){e.stop(colors.red(`Failed to cancel job: ${n.message}`));}}$();I();chunkTZNQ5KWQ_js.r();async function Le(a,r){let t="",e=u();e.start("Fetching available vision models...");try{let l=await r.list("vision");e.stop(`Found ${l.length} vision models`),l.length>0?t=await prompts.select({message:"Select base vision model:",options:l.map(c=>({value:c.id,label:c.id,hint:c.owned_by}))}):t=await prompts.text({message:"Enter base vision model:",placeholder:"llava-v1.5-7b",initialValue:"llava-v1.5-7b"});}catch{e.stop(colors.yellow("Failed to fetch models. Using manual input.")),t=await prompts.text({message:"Enter base vision model:",placeholder:"llava-v1.5-7b",initialValue:"llava-v1.5-7b"});}prompts.isCancel(t)&&(prompts.cancel("Operation cancelled"),process.exit(0));let n=await prompts.text({message:"Enter dataset path:",placeholder:"./dataset"});prompts.isCancel(n)&&prompts.cancel("Operation cancelled");let i=await prompts.text({message:"Num Epochs:",placeholder:"3",initialValue:"3"});prompts.isCancel(i)&&prompts.cancel("Operation cancelled");let o=await prompts.select({message:"Track this job on Langtrain Cloud?",options:[{value:"yes",label:"Yes",hint:"Upload dataset and log job"},{value:"no",label:"No",hint:"Local only"}]});if(prompts.isCancel(o)&&prompts.cancel("Operation cancelled"),o==="yes"){let l=u();l.start("Connecting to Cloud...");try{let c=f();if(!c.apiKey)throw new Error('API Key required. Run "login" first.');if(!(await new chunkTZNQ5KWQ_js.l({apiKey:c.apiKey}).getStatus()).features.includes("cloud_finetuning")){l.stop(colors.red('Feature "cloud_finetuning" is not available on your plan.'));let T=await prompts.confirm({message:"Upgrade to Pro for cloud tracking?"});T&&!prompts.isCancel(T)&&console.log(colors.bgMagenta(colors.black(" Visit https://langtrain.ai/dashboard/billing to upgrade. ")));return}let S=new chunkTZNQ5KWQ_js.j({apiKey:c.apiKey}),j=new chunkTZNQ5KWQ_js.k({apiKey:c.apiKey});l.message("Uploading dataset...");let Q=await S.upload(n,void 0,"fine-tune-vision");l.message("Creating Job...");let Z=await j.createJob({name:`cli-vision-${Date.now()}`,base_model:t,dataset_id:Q.id,task:"vision",training_method:"lora",hyperparameters:{n_epochs:parseInt(i)}});l.stop(colors.green(`Job tracked: ${Z.id}`));}catch(c){l.stop(colors.red(`Tracking failed: ${c.message}`));let v=await prompts.confirm({message:"Continue with local training anyway?"});if(!v||prompts.isCancel(v))return}}let s=u();s.start("Analyzing dataset structure..."),await new Promise(l=>setTimeout(l,800)),s.message("Starting vision fine-tuning on Langtrain Cloud...");try{let l={model:t,dataset:n,epochs:parseInt(i),batchSize:1,learningRate:2e-5,loraRank:16,outputDir:"./vision-output"};await a.finetune(l),s.stop(colors.green("Vision fine-tuning started successfully!"));}catch(l){throw s.stop(colors.red("Failed to start vision job.")),l}}async function De(a){let r=await prompts.text({message:"Enter model path:",placeholder:"./vision-output/model",initialValue:"./vision-output/model"});prompts.isCancel(r)&&prompts.cancel("Operation cancelled");let t=await prompts.text({message:"Enter prompt/image path:",placeholder:"Describe this image..."});prompts.isCancel(t)&&prompts.cancel("Operation cancelled");let e=u();e.start("Uploading image and context..."),await new Promise(n=>setTimeout(n,600)),e.message("Generating vision response...");try{let n=await a.generate(r,{prompt:t});e.stop("Generation complete"),w("Response:"),console.log(K__default.default.pastel(n));}catch(n){throw e.stop(colors.red("Generation failed.")),n}}ie();$();I();async function re(){w("Initializing new Langtrain project...");let a=process.cwd();if(G__default.default.existsSync(se__default.default.join(a,"langtrain.config.json"))){ve("langtrain.config.json already exists in this directory.");let o=await prompts.confirm({message:"Do you want to re-initialize and overwrite the config?",initialValue:false});if(prompts.isCancel(o)||!o){_("Initialization cancelled.");return}}let r=await prompts.text({message:"What is the name of your project?",placeholder:"my-ai-app",initialValue:se__default.default.basename(a),validate(o){if(!o||o.length===0)return "Project name is required!"}});if(prompts.isCancel(r)){prompts.cancel("Operation cancelled.");return}let t=f(),e=t.apiKey;if(e)R("Found existing Langtrain credentials.");else {let o=await prompts.confirm({message:"You are not logged in. Do you want to log in now?",initialValue:true});if(prompts.isCancel(o)){prompts.cancel("Operation cancelled.");return}if(o)await J(),t=f(),e=t.apiKey;else if(e=await prompts.text({message:"Enter your Langtrain API Key (optional for local dev):",placeholder:"lt_sk_...",initialValue:""}),prompts.isCancel(e)){prompts.cancel("Operation cancelled.");return}}u().start("Creating configuration...");let i={name:r,apiKey:e||void 0,environment:"development",agents:[{name:"support-bot",description:"A helpful customer support assistant",config:{model:"llama-3-8b",system_prompt:"You are a helpful customer support assistant.",temperature:.7}}]};G__default.default.writeFileSync(se__default.default.join(a,"langtrain.config.json"),JSON.stringify(i,null,2)),R("Project initialized successfully!"),console.log(F.dim(`
|
|
16
|
-
Next steps:`)),console.log(` 1. Run ${F.cyan("lt deploy")} to push your agent to the cloud.`),console.log(` 2. Run ${F.cyan("lt dev")} to start the local development loop.`),_("Happy coding!");}$();I();async function Ee(){w("Running Langtrain Doctor...");let a=u(),r=0;a.start("Checking Node.js environment...");let t=process.version,e=Pe__default.default.platform(),n=Pe__default.default.arch();parseInt(t.replace("v","").split(".")[0])<18?(a.stop(F.red(`Node.js version ${t} is outdated. Please upgrade to v18+.`)),r++):a.stop(`Node.js ${t} (${e} ${n})`),a.start("Checking configuration...");let i=f();if(!i.apiKey)a.stop(F.yellow("API Key is missing. Run `langtrain login` or set LANGTRAIN_API_KEY.")),r++;else {a.stop("Configuration found."),a.start("Checking API connectivity...");try{let o=await B(i.apiKey);a.stop(`Connected to Langtrain Cloud (Plan: ${F.green(o?.plan||"unknown")})`);}catch(o){a.stop(F.red(`Failed to connect to Langtrain Cloud: ${o.message}`)),r++;}}console.log(""),r===0?R("Your Langtrain environment is healthy! Ready to build."):be(`Found ${r} issue(s). Please resolve them for the best experience.`),_("Doctor check complete.");}le();$();I();async function N(a){w("Deploying configuration to Langtrain Cloud...");let r=f(),t=r.agents||[];if(t.length===0){w(colors.yellow("No agents found in langtrain.config.json"));return}for(let e of t){let n=u();n.start(`Deploying agent: ${e.name}...`);try{let i=await a.list(),o=i.find(s=>s.name===e.name);if(o)n.stop(colors.yellow(`Agent ${e.name} already exists (ID: ${o.id}). Skipping update (not supported yet).`));else {let s={workspace_id:r.workspace_id||i[0]?.workspace_id||"",name:e.name,description:e.description,config:e.config};if(!s.workspace_id){n.stop(colors.red(`Failed: Workspace ID missing in config for ${e.name}`));continue}await a.create(s),n.stop(colors.green(`Agent ${e.name} deployed successfully!`));}}catch(i){n.stop(colors.red(`Failed to deploy ${e.name}: ${i.message}`));}}R("Deployment complete.");}$();async function ce(a){w("Starting Langtrain Development Server...");let r=se__default.default.join(process.cwd(),"langtrain.config.json");if(!G__default.default.existsSync(r)){w(colors.red('langtrain.config.json not found. Run "lt init" first.'));return}console.log(colors.gray(`Watching ${r} for changes...`));let t=false;await N(a),G__default.default.watch(r,async e=>{if(e==="change"&&!t){t=true,console.log(colors.yellow("Configuration changed. Redeploying...")),await new Promise(n=>setTimeout(n,500));try{await N(a);}catch(n){console.error(colors.red(`Deploy failed: ${n.message}`));}finally{t=false,console.log(colors.gray(`Watching ${r}...`));}}}),await new Promise(()=>{});}$();I();chunkTZNQ5KWQ_js.r();async function ge(a){let r=f(),t=new chunkTZNQ5KWQ_js.q({apiKey:r.apiKey||"",baseUrl:r.baseUrl}),e=u();e.start("Fetching guardrails...");try{let n=await t.list();if(e.stop(`Found ${n.length} guardrails`),n.length===0){console.log(colors.yellow('No guardrails found. Create one with "lt guardrails create".'));return}n.forEach(i=>{console.log(colors.green(`\u2022 ${i.name}`)+colors.gray(` (ID: ${i.id})`)),i.description&&console.log(colors.gray(` ${i.description}`)),console.log(colors.gray(` Config: PII=${i.config.pii_enabled}, MinLen=${i.config.min_length}`)),console.log("");});}catch(n){e.stop(colors.red(`Failed to list guardrails: ${n.message}`));}}async function pe(a){let r=f(),t=new chunkTZNQ5KWQ_js.q({apiKey:r.apiKey||"",baseUrl:r.baseUrl});w("Create a new Data Guardrail");let e=await prompts.text({message:"Guardrail Name:",placeholder:"e.g. Strict Safety Policy",validate(c){if(!c)return "Name is required"}});if(prompts.isCancel(e))return;let n=await prompts.text({message:"Description (optional):",placeholder:"Filters PII and short text"});if(prompts.isCancel(n))return;let i=await prompts.text({message:"Minimum Text Length (0 for no limit):",initialValue:"0",validate(c){if(isNaN(Number(c)))return "Must be a number"}});if(prompts.isCancel(i))return;let o=await prompts.confirm({message:"Enable PII Filtering (Email/Phone)?",initialValue:false});if(prompts.isCancel(o))return;let s=await prompts.text({message:"Regex Patterns to Block (comma separated, optional):",placeholder:"e.g. bad_word, another_one"});if(prompts.isCancel(s))return;let l=u();l.start("Creating guardrail...");try{let c=s.split(",").map(S=>S.trim()).filter(S=>S.length>0),v={name:e,description:n,config:{min_length:Number(i),pii_enabled:o,regex_patterns:c,profanity_enabled:!1}},k=await t.create(v);l.stop(colors.green(`Guardrail "${k.name}" created successfully!`)),console.log(colors.gray(`ID: ${k.id}`));}catch(c){l.stop(colors.red(`Failed to create guardrail: ${c.message}`));}}$();$();I();async function Xe(a){let r=u();r.start("Fetching secrets...");let t=f();try{let e=await a.list(t.workspace_id);if(r.stop(`Found ${e.length} secrets`),e.length===0){console.log(colors.gray('No secrets found. Use "lt env set" to add one.'));return}console.log(colors.gray("------------------------------------------------")),e.forEach(n=>{console.log(`${n.key.padEnd(30)} ${colors.gray("******")}`);}),console.log(colors.gray("------------------------------------------------"));}catch(e){r.stop(colors.red(`Failed to list secrets: ${e.message}`));}}async function et(a,r){let t="",e="";if(t=await prompts.text({message:"Secret Key:",placeholder:"OPENAI_API_KEY"}),prompts.isCancel(t)||(e=await prompts.text({message:"Secret Value:",placeholder:"sk-..."}),prompts.isCancel(e)))return;let n=u();n.start(`Setting ${t}...`);let i=f();try{await a.set(t,e,i.workspace_id),n.stop(colors.green(`Secret ${t} set successfully.`));}catch(o){n.stop(colors.red(`Failed to set secret: ${o.message}`));}}async function ue(a){let r=await prompts.select({message:"Manage Secrets",options:[{value:"list",label:"List Secrets"},{value:"set",label:"Set Secret"},{value:"remove",label:"Remove Secret"},{value:"back",label:"Back"}]});if(!(prompts.isCancel(r)||r==="back")&&(r==="list"&&await Xe(a),r==="set"&&await et(a),r==="remove")){let t=await prompts.text({message:"Key to remove:"});if(!prompts.isCancel(t)){let e=u();e.start("Removing...");try{let n=f();await a.delete(t,n.workspace_id),e.stop(colors.green("Removed."));}catch(n){e.stop(colors.red(`Failed: ${n.message}`));}}}}$();$();async function de(a,r){let t=u(),e="";if(r){t.start("Finding agent...");try{let o=(await a.list()).find(s=>s.name===r||s.id===r);if(o)e=o.id;else {t.stop(colors.red(`Agent "${r}" not found.`));return}t.stop(colors.green(`Found agent: ${o.name}`));}catch(i){t.stop(colors.red(`Failed to list agents: ${i.message}`));return}}else {t.start("Fetching agents...");try{let i=await a.list();if(t.stop(`Found ${i.length} agents`),i.length===0){console.log(colors.yellow("No agents found."));return}let o=await prompts.select({message:"Select agent to view logs:",options:i.map(s=>({value:s.id,label:s.name}))});if(prompts.isCancel(o))return;e=o;}catch(i){t.stop(colors.red(`Failed to list agents: ${i.message}`));return}}let n=u();n.start("Fetching logs...");try{let i=await a.logs(e);n.stop("Logs fetched."),console.log(colors.gray("------------------------------------------------")),console.log(`${colors.bgMagenta(colors.black(" Recent Logs "))}`),i.logs&&i.logs.length>0?i.logs.forEach(o=>console.log(o)):console.log(colors.gray("(No logs found)")),console.log(colors.gray("------------------------------------------------"));}catch(i){n.stop(colors.red(`Failed to fetch logs: ${i.message}`));}}chunkTZNQ5KWQ_js.r();var fe={version:"0.1.21",description:"Unified JavaScript SDK for Langtrain Ecosystem"};async function at(){let a=new commander.Command,r=fe.version;a.name("langtrain").description(fe.description).version(r),a.command("init").description("Initialize a new Langtrain project").action(re),a.command("deploy").description("Deploy configuration to Langtrain Cloud").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkTZNQ5KWQ_js.h({apiKey:o,baseUrl:i.baseUrl});await N(s);}),a.command("dev").description("Start local development server (Watch Mode)").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkTZNQ5KWQ_js.h({apiKey:o,baseUrl:i.baseUrl});await ce(s);}),a.command("env").description("Manage secrets and environment variables").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkTZNQ5KWQ_js.o({apiKey:o,baseUrl:i.baseUrl});await ue(s);}),a.command("logs [agent]").description("Stream logs from a deployed agent").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkTZNQ5KWQ_js.h({apiKey:s,baseUrl:o.baseUrl});await de(l,i);}),a.action(async()=>{we(r),process.argv.includes("--first-run")&&(process.stdin.isTTY?(w("Welcome to Langtrain! Let's get you set up."),await J()):(console.log('Langtrain installed! Run "npx langtrain login" to authenticate.'),process.exit(0)));let o=f(),s=o.apiKey||"",l=null;if(s)try{l=await B(s);}catch{}let c={vision:new chunkTZNQ5KWQ_js.d({apiKey:s}),tune:new chunkTZNQ5KWQ_js.f({apiKey:s}),agent:new chunkTZNQ5KWQ_js.h({apiKey:s,baseUrl:o.baseUrl}),model:new chunkTZNQ5KWQ_js.m({apiKey:s,baseUrl:o.baseUrl}),train:new chunkTZNQ5KWQ_js.k({apiKey:s,baseUrl:o.baseUrl}),secret:new chunkTZNQ5KWQ_js.o({apiKey:s,baseUrl:o.baseUrl})},v="main";for(;;){let k=await prompts.select({message:n(v),options:Se(v,l,!!s)});if(prompts.isCancel(k))if(v==="main")_("Goodbye!"),process.exit(0);else {v="main";continue}let S=k;if(S==="exit"&&(_("Goodbye!"),process.exit(0)),S==="back"){v="main";continue}if(S.startsWith("nav-")){v=S.replace("nav-","");continue}try{switch(S){case "login":await J(),o=f(),s=o.apiKey||"",c={vision:new chunkTZNQ5KWQ_js.d({apiKey:s}),tune:new chunkTZNQ5KWQ_js.f({apiKey:s}),agent:new chunkTZNQ5KWQ_js.h({apiKey:s,baseUrl:o.baseUrl}),model:new chunkTZNQ5KWQ_js.m({apiKey:s,baseUrl:o.baseUrl}),train:new chunkTZNQ5KWQ_js.k({apiKey:s,baseUrl:o.baseUrl}),secret:new chunkTZNQ5KWQ_js.o({apiKey:s,baseUrl:o.baseUrl})};try{l=await B(s);}catch{}break;case "status":await xe();break;case "init":await re();break;case "deploy":await N(c.agent);break;case "dev":await ce(c.agent);break;case "env":await ue(c.secret);break;case "logs":await de(c.agent);break;case "doctor":await Ee();break;case "tune-finetune":await ke(c.tune,c.model);break;case "tune-list":await Ae(c.train);break;case "tune-generate":await Fe(c.tune);break;case "vision-finetune":await Le(c.vision,c.model);break;case "vision-generate":await De(c.vision);break;case "agent-list":await _e(c.agent);break;case "agent-create":await Ke(c.agent,c.model);break;case "agent-delete":await Ue(c.agent);break;case "data-upload":await Y(new chunkTZNQ5KWQ_js.j({apiKey:s}));break;case "guard-list":await ge(null);break;case "guard-create":await pe(null);break;case "data-refine":await H(new chunkTZNQ5KWQ_js.j({apiKey:s}));break}}catch(j){_(F.red(`Error: ${j.message}`));}}});let t=a.command("data").description("Manage datasets");t.command("upload [file]").description("Upload a dataset").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkTZNQ5KWQ_js.j({apiKey:s,baseUrl:o.baseUrl});await Y(l);}),t.command("analyze").description("Analyze a dataset with AI").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkTZNQ5KWQ_js.j({apiKey:o,baseUrl:i.baseUrl}),{handleDataList:l}=(le(),chunkTZNQ5KWQ_js.c(je));await l(s);}),t.command("refine [fileId]").description("Refine a dataset using guardrails").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkTZNQ5KWQ_js.j({apiKey:s,baseUrl:o.baseUrl});await H(l,i);});let e=a.command("guardrails").description("Manage data guardrails");e.command("list").description("List available guardrails").action(async()=>{await ge();}),e.command("create").description("Create a new guardrail").action(async()=>{await pe();}),at().catch(console.error);function n(i){switch(i){case "main":return "Main Menu:";case "agents":return "Agents & Tools:";case "text":return "Langtune (Text Operations):";case "vision":return "Langvision (Vision Operations):";case "settings":return "Settings:";default:return "Select an option:"}}}exports.main=at;//# sourceMappingURL=cli.js.map
|
|
14
|
+
`));let a=await prompts.password({message:"Enter your Langtrain API Key:",validate(t){if(!t||t.length===0)return "API Key is required"}});prompts.isCancel(a)&&(prompts.cancel("Operation cancelled"),process.exit(0));let r=u();r.start("Verifying API Key...");try{let e=await new chunkQ5EF25B2_js.h({apiKey:a}).getStatus();r.stop(colors.green(`Authenticated as ${e.plan==="pro"?"PRO":e.plan.toUpperCase()}`));let n=f();$e({...n,apiKey:a});return}catch{r.stop(colors.red("Invalid API Key. Please try again."));}}}async function B(a){let r=new chunkQ5EF25B2_js.h({apiKey:a}),t=u();t.start("Verifying subscription plan...");try{let e=await r.getStatus(),n=e.plan==="pro"?colors.bgMagenta(" PRO "):e.plan.toUpperCase();return t.stop(colors.green(`Authenticated as ${n}`)),e.is_active===!1&&console.log(colors.yellow("Warning: Your subscription is not active. Some features may be limited.")),e}catch(e){return t.stop(colors.red("Failed to verify subscription.")),e.response&&e.response.status===401&&console.log(colors.red("Invalid API Key. Please run login again.")),null}}function Se(a,r,t){r?.plan==="pro"||r?.plan==="enterprise";switch(a){case "main":let n=[{value:"nav-agents",label:"Agents",hint:"Manage & Chat with AI Agents"},{value:"nav-text",label:"Langtune (Text)",hint:"Fine-tuning & Generation"},{value:"nav-vision",label:"Langvision (Vision)",hint:"Vision Analysis & Tuning"},{value:"nav-guard",label:"Data Guardrails",hint:"Quality & Safety Rules"},{value:"init",label:"Initialize Project",hint:"Scaffold new Langtrain app"},{value:"deploy",label:"Deploy",hint:"Push config to Cloud"},{value:"dev",label:"Start Dev Server",hint:"Watch mode"},{value:"env",label:"Secrets (Env)",hint:"Manage API Keys"},{value:"logs",label:"Logs",hint:"View Agent Logs"},{value:"doctor",label:"Doctor",hint:"Check environment health"},{value:"nav-settings",label:"Settings",hint:"Subscription & Auth"}];return t||n.unshift({value:"login",label:"Login to Langtrain",hint:"Required for most features"}),n.push({value:"exit",label:"Exit"}),n;case "agents":return [{value:"agent-list",label:"List & Run Agents",hint:"Chat with active agents"},{value:"agent-create",label:"Create New Agent",hint:"Deploy a new agent"},{value:"agent-delete",label:"Delete Agent",hint:"Remove an agent"},{value:"back",label:"\u2190 Back to Main Menu"}];case "text":return [{value:"tune-finetune",label:"Fine-tune Text Model",hint:"Create custom LLM"},{value:"tune-list",label:"List Jobs",hint:"Check training status"},{value:"tune-generate",label:"Generate Text",hint:"Test your models"},{value:"data-upload",label:"Upload Dataset",hint:"Upload JSONL for training"},{value:"back",label:"\u2190 Back to Main Menu"}];case "guard":return [{value:"guard-list",label:"List Guardrails",hint:"View active rules"},{value:"guard-create",label:"Create Guardrail",hint:"Define new rules"},{value:"data-refine",label:"Refine Dataset",hint:"Apply guardrail to data"},{value:"back",label:"\u2190 Back to Main Menu"}];case "vision":return [{value:"vision-finetune",label:"Fine-tune Vision Model",hint:"Create custom VLM"},{value:"vision-generate",label:"Generate Vision Response",hint:"Test vision models"},{value:"back",label:"\u2190 Back to Main Menu"}];case "settings":return [{value:"status",label:t?`Subscription Status (${r?.plan||"Free"})`:"Check Status (Login required)"},{value:"login",label:t?"Update API Key":"Login"},{value:"back",label:"\u2190 Back to Main Menu"}];default:return []}}I();$();I();chunkQ5EF25B2_js.r();async function xe(){let a=f();if(!a.apiKey){w(colors.red('Not logged in. Run "login" first.'));return}let r=new chunkQ5EF25B2_js.h({apiKey:a.apiKey}),t=u();t.start("Fetching subscription status...");try{let e=await r.getStatus();t.stop(colors.green("Subscription Status:")),console.log(colors.gray("Plan: ")+(e.plan==="pro"?colors.bgMagenta(" PRO "):e.plan.toUpperCase())),console.log(colors.gray("Active: ")+(e.is_active?colors.green("Yes"):colors.red("No"))),e.expires_at&&console.log(colors.gray("Expires: ")+new Date(e.expires_at).toLocaleDateString()),console.log(colors.gray(`
|
|
15
|
+
Limits:`)),console.log(` Models: ${e.limits.max_models===-1?"Unlimited":e.limits.max_models}`),console.log(` Training Jobs: ${e.limits.max_training_jobs}`);}catch(e){t.stop(colors.red("Failed to fetch status.")),console.error(e.message);}}$();I();chunkQ5EF25B2_js.r();async function ke(a,r){let t="",e=u();e.start("Fetching available text models...");try{let l=await r.list("text");e.stop(`Found ${l.length} text models`),l.length>0&&(t=await prompts.select({message:"Select base model:",options:l.map(c=>({value:c.id,label:c.id,hint:c.owned_by}))}));}catch{e.stop(colors.yellow("Failed to fetch models. Using manual input.")),t=await prompts.text({message:"Enter base model (e.g., gpt-3.5-turbo):",placeholder:"gpt-3.5-turbo",validate(c){if(!c||c.length===0)return "Value is required!"}});}prompts.isCancel(t)&&(prompts.cancel("Operation cancelled."),process.exit(0));let n=await prompts.text({message:"Enter path to training file:",placeholder:"./data.jsonl",validate(l){if(!l||l.length===0)return "Value is required!"}});prompts.isCancel(n)&&prompts.cancel("Operation cancelled.");let i=await prompts.text({message:"Num Epochs:",placeholder:"3",initialValue:"3"});prompts.isCancel(i)&&prompts.cancel("Operation cancelled.");let o=await prompts.select({message:"Track this job on Langtrain Cloud?",options:[{value:"yes",label:"Yes",hint:"Upload dataset and log job"},{value:"no",label:"No",hint:"Local only"}]});if(prompts.isCancel(o)&&prompts.cancel("Operation cancelled."),o==="yes"){let l=u();l.start("Connecting to Cloud...");try{let c=f();if(!c.apiKey)throw new Error('API Key required. Run "login" first.');if(!(await new chunkQ5EF25B2_js.h({apiKey:c.apiKey}).getStatus()).features.includes("cloud_finetuning")){l.stop(colors.red('Feature "cloud_finetuning" is not available on your plan.'));let j=await prompts.confirm({message:"Upgrade to Pro for cloud tracking?"});j&&!prompts.isCancel(j)&&console.log(colors.bgMagenta(colors.black(" Visit https://langtrain.ai/dashboard/billing to upgrade. ")));return}let S=new chunkQ5EF25B2_js.f({apiKey:c.apiKey}),T=new chunkQ5EF25B2_js.g({apiKey:c.apiKey});l.message("Uploading dataset...");let Q=await S.upload(n);l.message("Creating Job...");let Z=await T.createJob({name:`cli-sft-${Date.now()}`,base_model:t,dataset_id:Q.id,task:"text",hyperparameters:{n_epochs:parseInt(i)}});l.stop(colors.green(`Job tracked: ${Z.id}`));}catch(c){l.stop(colors.red(`Tracking failed: ${c.message}`));let v=await prompts.confirm({message:"Continue with local training anyway?"});if(!v||prompts.isCancel(v))return}}let s=u();s.start("Starting local fine-tuning...");try{let l={model:t,trainFile:n,preset:"default",epochs:parseInt(i),batchSize:1,learningRate:2e-5,loraRank:16,outputDir:"./output"};await a.finetune(l),s.stop(colors.green("Fine-tuning job started successfully!"));}catch(l){throw s.stop(colors.red("Failed to start job.")),l}}async function Fe(a){let r=await prompts.text({message:"Enter model path:",placeholder:"./output/model",initialValue:"./output/model"});prompts.isCancel(r)&&prompts.cancel("Operation cancelled");let t=await prompts.text({message:"Enter prompt:",placeholder:"Hello world"});prompts.isCancel(t)&&prompts.cancel("Operation cancelled");let e=u();e.start("Connecting to Langtrain Inference API...");try{let n=await a.generate(r,{prompt:t});e.stop("Generation complete"),w("Response:"),console.log(K__default.default.pastel(n));}catch(n){throw e.stop(colors.red("Generation failed.")),n}}async function Ae(a){let r=u();r.start("Fetching fine-tuning jobs...");let e=f().workspace_id;if(!(!e&&(r.stop(colors.yellow("Workspace ID required to list jobs.")),e=await prompts.text({message:"Enter Workspace ID:"}),prompts.isCancel(e))))try{let n=await a.listJobs(e);if(r.stop(`Found ${n.data.length} jobs`),n.data.length===0){console.log(colors.yellow("No jobs found."));return}let i=q(["ID","Status","Model","Progress","Created"]);n.data.forEach(s=>{let l=s.status==="succeeded"?colors.green:s.status==="failed"?colors.red:colors.yellow;i.push([s.id.substring(0,8)+"...",l(s.status),s.base_model,(s.progress||0)+"%",new Date(s.created_at).toLocaleDateString()]);}),console.log(i.toString()),console.log("");let o=await prompts.select({message:"Select a job to view details:",options:n.data.map(s=>({value:s.id,label:`${s.name||s.id} (${s.status})`,hint:`Created: ${new Date(s.created_at).toLocaleDateString()}`}))});if(prompts.isCancel(o))return;await Ie(a,o);}catch(n){r.stop(colors.red(`Failed to list jobs: ${n.message}`));}}async function Ie(a,r){let t=r;if(!t&&(t=await prompts.text({message:"Enter Job ID:"}),prompts.isCancel(t)))return;let e=u();e.start(`Fetching status for ${t}...`);try{let n=await a.getJob(t);if(e.stop(`Job Status: ${n.status.toUpperCase()}`),console.log(colors.gray("------------------------------------------------")),console.log(`${colors.bgMagenta(colors.black(" Job Details "))}`),console.log(`ID: ${n.id}`),console.log(`Name: ${n.name}`),console.log(`Status: ${n.status==="succeeded"?colors.green(n.status):n.status}`),console.log(`Model: ${n.base_model}`),console.log(`Progress: ${n.progress||0}%`),n.error_message&&console.log(colors.red(`Error: ${n.error_message}`)),console.log(colors.gray("------------------------------------------------")),n.status==="running"||n.status==="queued"){let i=await prompts.select({message:"Action:",options:[{value:"refresh",label:"Refresh Status"},{value:"cancel",label:"Cancel Job"},{value:"back",label:"Back"}]});i==="refresh"&&await Ie(a,t),i==="cancel"&&await Ye(a,t);}}catch(n){e.stop(colors.red(`Failed to get job status: ${n.message}`));}}async function Ye(a,r){let t=await prompts.confirm({message:"Are you sure you want to cancel this job?"});if(!t||prompts.isCancel(t))return;let e=u();e.start("Canceling job...");try{await a.cancelJob(r),e.stop(colors.green("Job canceled successfully."));}catch(n){e.stop(colors.red(`Failed to cancel job: ${n.message}`));}}$();I();chunkQ5EF25B2_js.r();async function Le(a,r){let t="",e=u();e.start("Fetching available vision models...");try{let l=await r.list("vision");e.stop(`Found ${l.length} vision models`),l.length>0?t=await prompts.select({message:"Select base vision model:",options:l.map(c=>({value:c.id,label:c.id,hint:c.owned_by}))}):t=await prompts.text({message:"Enter base vision model:",placeholder:"llava-v1.5-7b",initialValue:"llava-v1.5-7b"});}catch{e.stop(colors.yellow("Failed to fetch models. Using manual input.")),t=await prompts.text({message:"Enter base vision model:",placeholder:"llava-v1.5-7b",initialValue:"llava-v1.5-7b"});}prompts.isCancel(t)&&(prompts.cancel("Operation cancelled"),process.exit(0));let n=await prompts.text({message:"Enter dataset path:",placeholder:"./dataset"});prompts.isCancel(n)&&prompts.cancel("Operation cancelled");let i=await prompts.text({message:"Num Epochs:",placeholder:"3",initialValue:"3"});prompts.isCancel(i)&&prompts.cancel("Operation cancelled");let o=await prompts.select({message:"Track this job on Langtrain Cloud?",options:[{value:"yes",label:"Yes",hint:"Upload dataset and log job"},{value:"no",label:"No",hint:"Local only"}]});if(prompts.isCancel(o)&&prompts.cancel("Operation cancelled"),o==="yes"){let l=u();l.start("Connecting to Cloud...");try{let c=f();if(!c.apiKey)throw new Error('API Key required. Run "login" first.');if(!(await new chunkQ5EF25B2_js.h({apiKey:c.apiKey}).getStatus()).features.includes("cloud_finetuning")){l.stop(colors.red('Feature "cloud_finetuning" is not available on your plan.'));let j=await prompts.confirm({message:"Upgrade to Pro for cloud tracking?"});j&&!prompts.isCancel(j)&&console.log(colors.bgMagenta(colors.black(" Visit https://langtrain.ai/dashboard/billing to upgrade. ")));return}let S=new chunkQ5EF25B2_js.f({apiKey:c.apiKey}),T=new chunkQ5EF25B2_js.g({apiKey:c.apiKey});l.message("Uploading dataset...");let Q=await S.upload(n,void 0,"fine-tune-vision");l.message("Creating Job...");let Z=await T.createJob({name:`cli-vision-${Date.now()}`,base_model:t,dataset_id:Q.id,task:"vision",training_method:"lora",hyperparameters:{n_epochs:parseInt(i)}});l.stop(colors.green(`Job tracked: ${Z.id}`));}catch(c){l.stop(colors.red(`Tracking failed: ${c.message}`));let v=await prompts.confirm({message:"Continue with local training anyway?"});if(!v||prompts.isCancel(v))return}}let s=u();s.start("Analyzing dataset structure..."),await new Promise(l=>setTimeout(l,800)),s.message("Starting vision fine-tuning on Langtrain Cloud...");try{let l={model:t,dataset:n,epochs:parseInt(i),batchSize:1,learningRate:2e-5,loraRank:16,outputDir:"./vision-output"};await a.finetune(l),s.stop(colors.green("Vision fine-tuning started successfully!"));}catch(l){throw s.stop(colors.red("Failed to start vision job.")),l}}async function De(a){let r=await prompts.text({message:"Enter model path:",placeholder:"./vision-output/model",initialValue:"./vision-output/model"});prompts.isCancel(r)&&prompts.cancel("Operation cancelled");let t=await prompts.text({message:"Enter prompt/image path:",placeholder:"Describe this image..."});prompts.isCancel(t)&&prompts.cancel("Operation cancelled");let e=u();e.start("Uploading image and context..."),await new Promise(n=>setTimeout(n,600)),e.message("Generating vision response...");try{let n=await a.generate(r,{prompt:t});e.stop("Generation complete"),w("Response:"),console.log(K__default.default.pastel(n));}catch(n){throw e.stop(colors.red("Generation failed.")),n}}ie();$();I();async function re(){w("Initializing new Langtrain project...");let a=process.cwd();if(G__default.default.existsSync(se__default.default.join(a,"langtrain.config.json"))){ve("langtrain.config.json already exists in this directory.");let o=await prompts.confirm({message:"Do you want to re-initialize and overwrite the config?",initialValue:false});if(prompts.isCancel(o)||!o){_("Initialization cancelled.");return}}let r=await prompts.text({message:"What is the name of your project?",placeholder:"my-ai-app",initialValue:se__default.default.basename(a),validate(o){if(!o||o.length===0)return "Project name is required!"}});if(prompts.isCancel(r)){prompts.cancel("Operation cancelled.");return}let t=f(),e=t.apiKey;if(e)R("Found existing Langtrain credentials.");else {let o=await prompts.confirm({message:"You are not logged in. Do you want to log in now?",initialValue:true});if(prompts.isCancel(o)){prompts.cancel("Operation cancelled.");return}if(o)await J(),t=f(),e=t.apiKey;else if(e=await prompts.text({message:"Enter your Langtrain API Key (optional for local dev):",placeholder:"lt_sk_...",initialValue:""}),prompts.isCancel(e)){prompts.cancel("Operation cancelled.");return}}u().start("Creating configuration...");let i={name:r,apiKey:e||void 0,environment:"development",agents:[{name:"support-bot",description:"A helpful customer support assistant",config:{model:"llama-3-8b",system_prompt:"You are a helpful customer support assistant.",temperature:.7}}]};G__default.default.writeFileSync(se__default.default.join(a,"langtrain.config.json"),JSON.stringify(i,null,2)),R("Project initialized successfully!"),console.log(F.dim(`
|
|
16
|
+
Next steps:`)),console.log(` 1. Run ${F.cyan("lt deploy")} to push your agent to the cloud.`),console.log(` 2. Run ${F.cyan("lt dev")} to start the local development loop.`),_("Happy coding!");}$();I();async function Ee(){w("Running Langtrain Doctor...");let a=u(),r=0;a.start("Checking Node.js environment...");let t=process.version,e=Pe__default.default.platform(),n=Pe__default.default.arch();parseInt(t.replace("v","").split(".")[0])<18?(a.stop(F.red(`Node.js version ${t} is outdated. Please upgrade to v18+.`)),r++):a.stop(`Node.js ${t} (${e} ${n})`),a.start("Checking configuration...");let i=f();if(!i.apiKey)a.stop(F.yellow("API Key is missing. Run `langtrain login` or set LANGTRAIN_API_KEY.")),r++;else {a.stop("Configuration found."),a.start("Checking API connectivity...");try{let o=await B(i.apiKey);a.stop(`Connected to Langtrain Cloud (Plan: ${F.green(o?.plan||"unknown")})`);}catch(o){a.stop(F.red(`Failed to connect to Langtrain Cloud: ${o.message}`)),r++;}}console.log(""),r===0?R("Your Langtrain environment is healthy! Ready to build."):be(`Found ${r} issue(s). Please resolve them for the best experience.`),_("Doctor check complete.");}le();$();I();async function N(a){w("Deploying configuration to Langtrain Cloud...");let r=f(),t=r.agents||[];if(t.length===0){w(colors.yellow("No agents found in langtrain.config.json"));return}for(let e of t){let n=u();n.start(`Deploying agent: ${e.name}...`);try{let i=await a.list(),o=i.find(s=>s.name===e.name);if(o)n.stop(colors.yellow(`Agent ${e.name} already exists (ID: ${o.id}). Skipping update (not supported yet).`));else {let s={workspace_id:r.workspace_id||i[0]?.workspace_id||"",name:e.name,description:e.description,config:e.config};if(!s.workspace_id){n.stop(colors.red(`Failed: Workspace ID missing in config for ${e.name}`));continue}await a.create(s),n.stop(colors.green(`Agent ${e.name} deployed successfully!`));}}catch(i){n.stop(colors.red(`Failed to deploy ${e.name}: ${i.message}`));}}R("Deployment complete.");}$();async function ce(a){w("Starting Langtrain Development Server...");let r=se__default.default.join(process.cwd(),"langtrain.config.json");if(!G__default.default.existsSync(r)){w(colors.red('langtrain.config.json not found. Run "lt init" first.'));return}console.log(colors.gray(`Watching ${r} for changes...`));let t=false;await N(a),G__default.default.watch(r,async e=>{if(e==="change"&&!t){t=true,console.log(colors.yellow("Configuration changed. Redeploying...")),await new Promise(n=>setTimeout(n,500));try{await N(a);}catch(n){console.error(colors.red(`Deploy failed: ${n.message}`));}finally{t=false,console.log(colors.gray(`Watching ${r}...`));}}}),await new Promise(()=>{});}$();I();chunkQ5EF25B2_js.r();async function ge(a){let r=f(),t=new chunkQ5EF25B2_js.m({apiKey:r.apiKey||"",baseUrl:r.baseUrl}),e=u();e.start("Fetching guardrails...");try{let n=await t.list();if(e.stop(`Found ${n.length} guardrails`),n.length===0){console.log(colors.yellow('No guardrails found. Create one with "lt guardrails create".'));return}n.forEach(i=>{console.log(colors.green(`\u2022 ${i.name}`)+colors.gray(` (ID: ${i.id})`)),i.description&&console.log(colors.gray(` ${i.description}`)),console.log(colors.gray(` Config: PII=${i.config.pii_enabled}, MinLen=${i.config.min_length}`)),console.log("");});}catch(n){e.stop(colors.red(`Failed to list guardrails: ${n.message}`));}}async function pe(a){let r=f(),t=new chunkQ5EF25B2_js.m({apiKey:r.apiKey||"",baseUrl:r.baseUrl});w("Create a new Data Guardrail");let e=await prompts.text({message:"Guardrail Name:",placeholder:"e.g. Strict Safety Policy",validate(c){if(!c)return "Name is required"}});if(prompts.isCancel(e))return;let n=await prompts.text({message:"Description (optional):",placeholder:"Filters PII and short text"});if(prompts.isCancel(n))return;let i=await prompts.text({message:"Minimum Text Length (0 for no limit):",initialValue:"0",validate(c){if(isNaN(Number(c)))return "Must be a number"}});if(prompts.isCancel(i))return;let o=await prompts.confirm({message:"Enable PII Filtering (Email/Phone)?",initialValue:false});if(prompts.isCancel(o))return;let s=await prompts.text({message:"Regex Patterns to Block (comma separated, optional):",placeholder:"e.g. bad_word, another_one"});if(prompts.isCancel(s))return;let l=u();l.start("Creating guardrail...");try{let c=s.split(",").map(S=>S.trim()).filter(S=>S.length>0),v={name:e,description:n,config:{min_length:Number(i),pii_enabled:o,regex_patterns:c,profanity_enabled:!1}},k=await t.create(v);l.stop(colors.green(`Guardrail "${k.name}" created successfully!`)),console.log(colors.gray(`ID: ${k.id}`));}catch(c){l.stop(colors.red(`Failed to create guardrail: ${c.message}`));}}$();$();I();async function Xe(a){let r=u();r.start("Fetching secrets...");let t=f();try{let e=await a.list(t.workspace_id);if(r.stop(`Found ${e.length} secrets`),e.length===0){console.log(colors.gray('No secrets found. Use "lt env set" to add one.'));return}console.log(colors.gray("------------------------------------------------")),e.forEach(n=>{console.log(`${n.key.padEnd(30)} ${colors.gray("******")}`);}),console.log(colors.gray("------------------------------------------------"));}catch(e){r.stop(colors.red(`Failed to list secrets: ${e.message}`));}}async function et(a,r){let t="",e="";if(t=await prompts.text({message:"Secret Key:",placeholder:"OPENAI_API_KEY"}),prompts.isCancel(t)||(e=await prompts.text({message:"Secret Value:",placeholder:"sk-..."}),prompts.isCancel(e)))return;let n=u();n.start(`Setting ${t}...`);let i=f();try{await a.set(t,e,i.workspace_id),n.stop(colors.green(`Secret ${t} set successfully.`));}catch(o){n.stop(colors.red(`Failed to set secret: ${o.message}`));}}async function ue(a){let r=await prompts.select({message:"Manage Secrets",options:[{value:"list",label:"List Secrets"},{value:"set",label:"Set Secret"},{value:"remove",label:"Remove Secret"},{value:"back",label:"Back"}]});if(!(prompts.isCancel(r)||r==="back")&&(r==="list"&&await Xe(a),r==="set"&&await et(a),r==="remove")){let t=await prompts.text({message:"Key to remove:"});if(!prompts.isCancel(t)){let e=u();e.start("Removing...");try{let n=f();await a.delete(t,n.workspace_id),e.stop(colors.green("Removed."));}catch(n){e.stop(colors.red(`Failed: ${n.message}`));}}}}$();$();async function de(a,r){let t=u(),e="";if(r){t.start("Finding agent...");try{let o=(await a.list()).find(s=>s.name===r||s.id===r);if(o)e=o.id;else {t.stop(colors.red(`Agent "${r}" not found.`));return}t.stop(colors.green(`Found agent: ${o.name}`));}catch(i){t.stop(colors.red(`Failed to list agents: ${i.message}`));return}}else {t.start("Fetching agents...");try{let i=await a.list();if(t.stop(`Found ${i.length} agents`),i.length===0){console.log(colors.yellow("No agents found."));return}let o=await prompts.select({message:"Select agent to view logs:",options:i.map(s=>({value:s.id,label:s.name}))});if(prompts.isCancel(o))return;e=o;}catch(i){t.stop(colors.red(`Failed to list agents: ${i.message}`));return}}let n=u();n.start("Fetching logs...");try{let i=await a.logs(e);n.stop("Logs fetched."),console.log(colors.gray("------------------------------------------------")),console.log(`${colors.bgMagenta(colors.black(" Recent Logs "))}`),i.logs&&i.logs.length>0?i.logs.forEach(o=>console.log(o)):console.log(colors.gray("(No logs found)")),console.log(colors.gray("------------------------------------------------"));}catch(i){n.stop(colors.red(`Failed to fetch logs: ${i.message}`));}}chunkQ5EF25B2_js.r();var fe={version:"0.1.23",description:"Unified JavaScript SDK for Langtrain Ecosystem"};async function at(){let a=new commander.Command,r=fe.version;a.name("langtrain").description(fe.description).version(r),a.command("init").description("Initialize a new Langtrain project").action(re),a.command("deploy").description("Deploy configuration to Langtrain Cloud").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkQ5EF25B2_js.d({apiKey:o,baseUrl:i.baseUrl});await N(s);}),a.command("dev").description("Start local development server (Watch Mode)").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkQ5EF25B2_js.d({apiKey:o,baseUrl:i.baseUrl});await ce(s);}),a.command("env").description("Manage secrets and environment variables").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkQ5EF25B2_js.k({apiKey:o,baseUrl:i.baseUrl});await ue(s);}),a.command("logs [agent]").description("Stream logs from a deployed agent").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkQ5EF25B2_js.d({apiKey:s,baseUrl:o.baseUrl});await de(l,i);}),a.action(async()=>{we(r),process.argv.includes("--first-run")&&(process.stdin.isTTY?(w("Welcome to Langtrain! Let's get you set up."),await J()):(console.log('Langtrain installed! Run "npx langtrain login" to authenticate.'),process.exit(0)));let o=f(),s=o.apiKey||"",l=null;if(s)try{l=await B(s);}catch{}let c={vision:new chunkQ5EF25B2_js.p({apiKey:s}),tune:new chunkQ5EF25B2_js.q({apiKey:s}),agent:new chunkQ5EF25B2_js.d({apiKey:s,baseUrl:o.baseUrl}),model:new chunkQ5EF25B2_js.i({apiKey:s,baseUrl:o.baseUrl}),train:new chunkQ5EF25B2_js.g({apiKey:s,baseUrl:o.baseUrl}),secret:new chunkQ5EF25B2_js.k({apiKey:s,baseUrl:o.baseUrl})},v="main";for(;;){let k=await prompts.select({message:n(v),options:Se(v,l,!!s)});if(prompts.isCancel(k))if(v==="main")_("Goodbye!"),process.exit(0);else {v="main";continue}let S=k;if(S==="exit"&&(_("Goodbye!"),process.exit(0)),S==="back"){v="main";continue}if(S.startsWith("nav-")){v=S.replace("nav-","");continue}try{switch(S){case "login":await J(),o=f(),s=o.apiKey||"",c={vision:new chunkQ5EF25B2_js.p({apiKey:s}),tune:new chunkQ5EF25B2_js.q({apiKey:s}),agent:new chunkQ5EF25B2_js.d({apiKey:s,baseUrl:o.baseUrl}),model:new chunkQ5EF25B2_js.i({apiKey:s,baseUrl:o.baseUrl}),train:new chunkQ5EF25B2_js.g({apiKey:s,baseUrl:o.baseUrl}),secret:new chunkQ5EF25B2_js.k({apiKey:s,baseUrl:o.baseUrl})};try{l=await B(s);}catch{}break;case "status":await xe();break;case "init":await re();break;case "deploy":await N(c.agent);break;case "dev":await ce(c.agent);break;case "env":await ue(c.secret);break;case "logs":await de(c.agent);break;case "doctor":await Ee();break;case "tune-finetune":await ke(c.tune,c.model);break;case "tune-list":await Ae(c.train);break;case "tune-generate":await Fe(c.tune);break;case "vision-finetune":await Le(c.vision,c.model);break;case "vision-generate":await De(c.vision);break;case "agent-list":await _e(c.agent);break;case "agent-create":await Ke(c.agent,c.model);break;case "agent-delete":await Ue(c.agent);break;case "data-upload":await Y(new chunkQ5EF25B2_js.f({apiKey:s}));break;case "guard-list":await ge(null);break;case "guard-create":await pe(null);break;case "data-refine":await H(new chunkQ5EF25B2_js.f({apiKey:s}));break}}catch(T){_(F.red(`Error: ${T.message}`));}}});let t=a.command("data").description("Manage datasets");t.command("upload [file]").description("Upload a dataset").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkQ5EF25B2_js.f({apiKey:s,baseUrl:o.baseUrl});await Y(l);}),t.command("analyze").description("Analyze a dataset with AI").action(async()=>{let i=f(),o=i.apiKey||"",s=new chunkQ5EF25B2_js.f({apiKey:o,baseUrl:i.baseUrl}),{handleDataList:l}=(le(),chunkQ5EF25B2_js.c(Te));await l(s);}),t.command("refine [fileId]").description("Refine a dataset using guardrails").action(async i=>{let o=f(),s=o.apiKey||"",l=new chunkQ5EF25B2_js.f({apiKey:s,baseUrl:o.baseUrl});await H(l,i);});let e=a.command("guardrails").description("Manage data guardrails");e.command("list").description("List available guardrails").action(async()=>{await ge();}),e.command("create").description("Create a new guardrail").action(async()=>{await pe();}),at().catch(console.error);function n(i){switch(i){case "main":return "Main Menu:";case "agents":return "Agents & Tools:";case "text":return "Langtune (Text Operations):";case "vision":return "Langvision (Vision Operations):";case "settings":return "Settings:";default:return "Select an option:"}}}exports.main=at;//# sourceMappingURL=cli.js.map
|
|
17
17
|
//# sourceMappingURL=cli.js.map
|