UNPKG

rawi

Version:

Rawi (راوي) is the developer-friendly AI CLI that brings the power of 12 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into

9 lines 8.37 kB
/* Rawi (راوي) is the developer-friendly AI CLI that brings the power of 12 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into an intelligent development workspace. */ import{a as t}from"./chunk-ZNEVPN2P.js";import a from"chalk";import{Command as o}from"commander";var v=()=>{let u=new o("configure");return u.description([a.bold("Configure AI provider settings and manage profiles."),"",a.gray("Set up providers, models, credentials, and advanced options."),a.gray("Supports interactive and manual configuration."),a.gray("Use --list to see all profiles, --show for details.")].join(` `)).option("-p, --profile <profile>",a.white("Profile name to configure"),"default").option("--provider <provider>",a.white("AI provider (openai, anthropic, google, ollama, xai, azure, bedrock, qwen, deepseek, mistral, cerebras, lmstudio)")).option("--model <model>",a.white("AI model name")).option("--api-key <apiKey>",a.white("API key for the provider (not needed for Ollama)")).option("--base-url <baseURL>",a.white("Base URL for provider API (see docs for defaults)")).option("--resource-name <resourceName>",a.white("Resource name for Azure OpenAI (required for Azure)")).option("--api-version <apiVersion>",a.white("API version for Azure OpenAI (default: 2024-10-01-preview)")).option("--region <region>",a.white("AWS region for Amazon Bedrock (default: us-east-1)")).option("--access-key-id <accessKeyId>",a.white("AWS access key ID for Amazon Bedrock")).option("--secret-access-key <secretAccessKey>",a.white("AWS secret access key for Amazon Bedrock")).option("--session-token <sessionToken>",a.white("AWS session token for Amazon Bedrock (optional)")).option("--use-provider-chain",a.white("Use AWS credential provider chain instead of explicit credentials")).option("--temperature <temperature>",a.white("Sampling temperature (0-2, higher = more creative)"),Number.parseFloat).option("--max-tokens <maxTokens>",a.white("Maximum tokens for response"),Number.parseInt).option("--language <language>",a.white("Language (english, arabic)"),"english").option("-s, --show",a.white("Show current configuration for the selected profile")).option("-l, --list",a.white("List all configuration profiles")).option("-d, --delete <profile>",a.white("Delete a configuration profile")).addHelpText("after",[a.bold.cyan(` See also:`),a.gray(" rawi provider --list"),a.gray(" rawi act --list"),a.gray(" rawi ask --profile <profile>"),a.gray(" rawi configure --show --profile <profile>"),"",a.dim("For more examples, see: docs/configuration.md")].join(` `)).action(async e=>{let g=new t;try{if(e.show){g.showConfig(e.profile==="default"?void 0:e.profile);return}if(e.list){let l=g.listProfiles();if(l.length===0){console.log(a.yellow("No configuration profiles found."));return}console.log(a.bold("Available profiles:")),l.forEach(i=>console.log(` - ${i}`));return}if(e.delete){let l=g.deleteProfile(e.delete);console.log(l?a.green(`Profile '${e.delete}' deleted successfully.`):a.red(`Failed to delete profile '${e.delete}'.`));return}if(e.language){let l=["english","arabic"];if(!l.includes(e.language)){console.error(a.red(`Invalid language: ${e.language}`)),console.log(a.yellow("Available languages:"),l.join(", "));return}}let s={profile:e.profile,provider:e.provider,model:e.model,apiKey:e.apiKey,baseURL:e.baseUrl,resourceName:e.resourceName,apiVersion:e.apiVersion,region:e.region,accessKeyId:e.accessKeyId,secretAccessKey:e.secretAccessKey,sessionToken:e.sessionToken,useProviderChain:e.useProviderChain,temperature:e.temperature,maxTokens:e.maxTokens,language:e.language};if(e.provider){let l,i;if(e.provider==="ollama"){l=!!e.model;let r={};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:Object.keys(r).length>0?r:void 0}}else if(e.provider==="azure"){l=!!(e.provider&&e.model&&e.apiKey&&e.resourceName),l||(e.model||console.error("For Azure, you must specify your deployment name using --model"),e.resourceName||console.error("For Azure, you must specify your resource name using --resource-name"),e.apiKey||console.error("For Azure, you must specify your API key using --api-key"));let r={resourceName:e.resourceName};e.apiVersion&&(r.apiVersion=e.apiVersion),i={provider:e.provider,model:e.model,apiKey:e.apiKey,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="bedrock"){let r=!!(e.accessKeyId&&e.secretAccessKey),n=!!e.useProviderChain;l=!!(e.provider&&e.model&&(r||n)),l||(e.model||console.error("For Bedrock, you must specify a model using --model"),!r&&!n&&console.error(`For Bedrock, you must either: - Provide explicit credentials: --access-key-id and --secret-access-key - Use provider chain: --use-provider-chain`));let d={};e.region&&(d.region=e.region),n?d.useProviderChain=!0:r&&(d.accessKeyId=e.accessKeyId,d.secretAccessKey=e.secretAccessKey,e.sessionToken&&(d.sessionToken=e.sessionToken)),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:Object.keys(d).length>0?d:void 0}}else if(e.provider==="qwen"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="xai"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="openai"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="anthropic"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="google"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="deepseek"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="mistral"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="cerebras"){l=!!(e.model&&e.apiKey);let r={apiKey:e.apiKey};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english",providerSettings:r}}else if(e.provider==="lmstudio"){l=!!e.model;let r={};e.baseUrl&&(r.baseURL=e.baseUrl),i={provider:e.provider,model:e.model,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048},Object.keys(r).length>0?i.providerSettings=r:i.providerSettings=void 0}else l=!!(e.provider&&e.model&&e.apiKey),i={provider:e.provider,model:e.model,apiKey:e.apiKey,temperature:e.temperature||.7,maxTokens:e.maxTokens||2048,language:e.language||"english"};l?g.manualConfigure(i,e.profile):await g.interactiveConfigure(s)}else await g.interactiveConfigure(s)}catch(s){console.error("Configuration failed:",s),process.exit(1)}}),u};export{v as a}; /* Rawi (راوي) is the developer-friendly AI CLI that brings the power of 12 major AI providers directly to your terminal. With seamless shell integration, persistent conversations, and 200+ specialized prompt templates, Rawi transforms your command line into an intelligent development workspace. */ //# sourceMappingURL=chunk-6SXKP6NI.js.map