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

4 lines 4.36 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class;/* 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. */ var _chunkPLYVWSF7cjs = require('./chunk-PLYVWSF7.cjs');var _chunkK5NJVUL4cjs = require('./chunk-K5NJVUL4.cjs');var _chunkP4NH5RQRcjs = require('./chunk-P4NH5RQR.cjs');var _prompts = require('@inquirer/prompts');var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);var p= (_class =class{constructor() { _class.prototype.__init.call(this); }__init() {this.validator=new _chunkPLYVWSF7cjs.a}async getProfile(e){if(e){if(!this.isValidProfileName(e))throw new Error(`Invalid profile name: ${e}`);return e}return _prompts.input.call(void 0, {message:"Profile Name:",default:_chunkP4NH5RQRcjs.d,validate:t=>t.trim()?this.isValidProfileName(t.trim())?!0:"Profile name can only contain letters, numbers, hyphens, and underscores":"Profile name is required"})}async selectProvider(e){let a=_chunkK5NJVUL4cjs.e.call(void 0, ).map(r=>({name:`${r.displayName} (${r.name})`,value:r.name}));return _prompts.select.call(void 0, {message:"Select AI Provider:",choices:a,default:e})}async selectModel(e,t){let a=_chunkK5NJVUL4cjs.d.call(void 0, e);if(!a)throw new Error(`Unknown provider: ${e}`);let r=a.models.map(n=>({name:n.displayName||n.name,value:n.name,description:n.description||""}));if(r.length===0)throw new Error(`No models available for provider: ${e}`);return _prompts.select.call(void 0, {message:`Select ${a.displayName} Model:`,choices:r,default:t})}async getApiKey(e,t){let a=t?`${_optionalChain([_chunkK5NJVUL4cjs.d.call(void 0, t), 'optionalAccess', _ => _.displayName])||t} API Key:`:"API Key:",r;if(e&&await _prompts.confirm.call(void 0, {message:`Use existing API key (${this.maskApiKey(e)})?`,default:!0}))return e;do r=await _prompts.password.call(void 0, {message:a,mask:"*",validate:n=>{if(!n.trim())return"API key is required";if(t){let i=this.validator.validateApiKey(n.trim(),t);if(!i.isValid)return i.errors[0]||"Invalid API key";i.warnings.length>0&&console.log(_chalk2.default.yellow(`Warning: ${i.warnings.join(", ")}`))}return!0}});while(!r.trim());return r.trim()}async getTemperature(e=.7){let t=await _prompts.input.call(void 0, {message:"Temperature (0.0 - 2.0):",default:e.toString(),validate:a=>{let r=Number.parseFloat(a);return Number.isNaN(r)?"Temperature must be a number":r<0||r>2?"Temperature must be between 0.0 and 2.0":!0}});return Number.parseFloat(t)}async getMaxTokens(e=2048){let t=await _prompts.input.call(void 0, {message:"Max Tokens (1 - 100000):",default:e.toString(),validate:a=>{let r=Number.parseInt(a,10);return Number.isNaN(r)?"Max tokens must be a number":r<1||r>1e5?"Max tokens must be between 1 and 100000":!0}});return Number.parseInt(t,10)}async getLanguage(e=_chunkP4NH5RQRcjs.g){return _prompts.select.call(void 0, {message:"Response Language:",choices:[{name:"English",value:"english"},{name:"Arabic",value:"arabic"}],default:e})}isValidProfileName(e){return/^[a-zA-Z0-9_-]+$/.test(e)&&e.length<=50}maskApiKey(e){return e.length<=8?"*".repeat(e.length):`${e.slice(0,4)}${"*".repeat(e.length-8)}${e.slice(-4)}`}}, _class);exports.a = p; /* 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-SUWS4T5H.cjs.map