UNPKG

rawi

Version:

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

8 lines 10.8 kB
"use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } 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; }/* Rawi (راوي) is the developer-friendly AI CLI that brings the power of 11 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 _chunkAFYLVLTKcjs = require('./chunk-AFYLVLTK.cjs');var _chunkAZDGR6RHcjs = require('./chunk-AZDGR6RH.cjs');var _chunkOK6HOE55cjs = require('./chunk-OK6HOE55.cjs');var _chunk47VNWSY7cjs = require('./chunk-47VNWSY7.cjs');var _chunkYEL2W4UFcjs = require('./chunk-YEL2W4UF.cjs');var _chunkG3NONHT6cjs = require('./chunk-G3NONHT6.cjs');var _chunkFAD6MIW3cjs = require('./chunk-FAD6MIW3.cjs');var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);var h=class extends _chunkAFYLVLTKcjs.a{#e=new _chunkOK6HOE55cjs.a;#o=new _chunkYEL2W4UFcjs.a;#i=new _chunkAZDGR6RHcjs.a;#r=new _chunk47VNWSY7cjs.a;async interactiveConfigure(o={}){console.log(_chalk2.default.bold.blue("\u{1F527} Configuring Rawi")),console.log(_chalk2.default.gray("Please provide your AI service configuration:"));try{let r=await this.#e.getProfile(o.profile);_chunkG3NONHT6cjs.b.start("config-load","Loading existing configuration...");let e=this.getCredentials(r);e?_chunkG3NONHT6cjs.b.succeed("config-load",`Found existing configuration for profile '${r}'`):_chunkG3NONHT6cjs.b.succeed("config-load","Creating new configuration profile");try{let i=await this.#e.selectProvider(o.provider||_optionalChain([e, 'optionalAccess', _ => _.provider]));_chunkG3NONHT6cjs.b.start("provider-validation",`Validating ${i} provider configuration...`),await new Promise(c=>setTimeout(c,500)),_chunkG3NONHT6cjs.b.succeed("provider-validation",`${i} provider validated`);let t=await this.#e.selectModel(i,o.model||_optionalChain([e, 'optionalAccess', _2 => _2.model])),a={provider:i,model:t,temperature:await this.#e.getTemperature(_nullishCoalesce(_nullishCoalesce(o.temperature, () => (_optionalChain([e, 'optionalAccess', _3 => _3.temperature]))), () => (.7))),maxTokens:await this.#e.getMaxTokens(_nullishCoalesce(_nullishCoalesce(o.maxTokens, () => (_optionalChain([e, 'optionalAccess', _4 => _4.maxTokens]))), () => (2048))),language:await this.#e.getLanguage(_nullishCoalesce(_nullishCoalesce(o.language, () => (_optionalChain([e, 'optionalAccess', _5 => _5.language]))), () => (_chunkFAD6MIW3cjs.g)))};await this.#t(a,i,o,e);let n=this.#r.validateCredentials(a);if(!n.isValid)throw this.#i.displayError("Configuration validation failed:",n.errors.join(", ")),new Error("Invalid configuration");if(n.warnings.length>0)for(let c of n.warnings)this.#i.displayWarning(c);this.setCredentials(a,r),_chunkG3NONHT6cjs.b.start("config-save","Saving configuration...");try{_chunkG3NONHT6cjs.b.succeed("config-save","Configuration saved successfully!"),console.log(_chalk2.default.gray(`Profile: ${r}`)),this.#i.displayConfigurationSummary(a),console.log(_chalk2.default.gray(`Config file: ${this.configFile}`)),this.#i.displaySuccess("Configuration completed successfully!")}catch(c){throw _chunkG3NONHT6cjs.b.fail("config-save","Failed to save configuration"),c}}catch(i){if(i instanceof Error&&i.name==="ExitPromptError"){console.log(_chalk2.default.yellow("\u{1F44B} Configuration cancelled. Exiting..."));return}throw i}}catch(r){if(r===""){console.log(_chalk2.default.yellow("\u274C Configuration cancelled."));return}let e=r instanceof Error?r.message:String(r);throw this.#i.displayError("Configuration failed",e),r}}async#t(o,r,e,i){switch(r){case"ollama":await this.#a(o,e,i);break;case"lmstudio":await this.#s(o,e,i);break;case"azure":await this.#n(o,e,i);break;case"bedrock":await this.#g(o,e,i);break;case"xai":await this.#c(o,e,i);break;case"deepseek":await this.#f(o,e,i);break;case"mistral":await this.#p(o,e,i);break;case"cerebras":await this.#d(o,e,i);break;case"openai":await this.#l(o,e,i);break;case"anthropic":await this.#u(o,e,i);break;case"google":await this.#y(o,e,i);break;default:o.apiKey=await this.#e.getApiKey(e.apiKey||_optionalChain([i, 'optionalAccess', _6 => _6.apiKey]),r);break}}async#a(o,r,e){let i=await this.#o.getBaseURL(r.baseURL||(_optionalChain([e, 'optionalAccess', _7 => _7.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0));i&&(o.providerSettings={baseURL:i})}async#s(o,r,e){let i=await this.#o.getBaseURL(r.baseURL||(_optionalChain([e, 'optionalAccess', _8 => _8.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0));i&&(o.providerSettings={baseURL:i})}async#n(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _9 => _9.apiKey]),"azure"),t=await this.#o.getAPIEndpoint(r.resourceName||(_optionalChain([e, 'optionalAccess', _10 => _10.providerSettings])&&"resourceName"in e.providerSettings?e.providerSettings.resourceName:void 0));if(o.apiKey=i,t){let a={resourceName:t};o.providerSettings=a}}async#g(o,r,e){let i=await this.#o.getAccessKey(r.accessKeyId||(_optionalChain([e, 'optionalAccess', _11 => _11.providerSettings])&&"accessKeyId"in e.providerSettings?e.providerSettings.accessKeyId:void 0)),t=await this.#o.getSecretAccessKey(r.secretAccessKey||(_optionalChain([e, 'optionalAccess', _12 => _12.providerSettings])&&"secretAccessKey"in e.providerSettings?e.providerSettings.secretAccessKey:void 0)),a=await this.#o.getRegion(r.region||(_optionalChain([e, 'optionalAccess', _13 => _13.providerSettings])&&"region"in e.providerSettings?e.providerSettings.region:void 0)),n=await this.#o.getSessionToken(r.sessionToken||(_optionalChain([e, 'optionalAccess', _14 => _14.providerSettings])&&"sessionToken"in e.providerSettings?e.providerSettings.sessionToken:void 0)),c={};i&&(c.accessKeyId=i),t&&(c.secretAccessKey=t),a&&(c.region=a),n&&(c.sessionToken=n),o.providerSettings=c}async#c(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _15 => _15.apiKey]),"xai"),t={apiKey:i};o.apiKey=i,o.providerSettings=t}async#f(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _16 => _16.apiKey]),"deepseek"),t={apiKey:i};o.apiKey=i,o.providerSettings=t}async#p(o,r,e){let i=r.apiKey||(_optionalChain([e, 'optionalAccess', _17 => _17.providerSettings])&&"apiKey"in e.providerSettings?e.providerSettings.apiKey:_optionalChain([e, 'optionalAccess', _18 => _18.apiKey])),t=await this.#e.getApiKey(i,"mistral"),a=await this.#o.getBaseURL(r.baseURL||(_optionalChain([e, 'optionalAccess', _19 => _19.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),n={apiKey:t};a&&(n.baseURL=a),o.providerSettings=n}async#d(o,r,e){let i=r.apiKey||(_optionalChain([e, 'optionalAccess', _20 => _20.providerSettings])&&"apiKey"in e.providerSettings?e.providerSettings.apiKey:_optionalChain([e, 'optionalAccess', _21 => _21.apiKey])),t=await this.#e.getApiKey(i,"cerebras"),a=await this.#o.getBaseURL(r.baseURL||(_optionalChain([e, 'optionalAccess', _22 => _22.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),n={apiKey:t};a&&(n.baseURL=a),o.providerSettings=n}async#l(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _23 => _23.apiKey]),"openai"),t={apiKey:i};o.apiKey=i,o.providerSettings=t}async#u(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _24 => _24.apiKey]),"anthropic"),t={apiKey:i};o.apiKey=i,o.providerSettings=t}async#y(o,r,e){let i=await this.#e.getApiKey(r.apiKey||_optionalChain([e, 'optionalAccess', _25 => _25.apiKey]),"google"),t=await this.#o.getAPIEndpoint(r.baseURL||(_optionalChain([e, 'optionalAccess', _26 => _26.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),a={apiKey:i};t&&(a.baseURL=t),o.apiKey=i,o.providerSettings=a}showConfig(o,r=!1){this.showConfiguration(o,r).catch(e=>{let i=e instanceof Error?e.message:String(e);this.#i.displayError("Error showing configuration",i)})}async showConfiguration(o,r=!1){_chunkG3NONHT6cjs.b.start("config-show","Loading configuration...");try{let e=this.readConfig(),i=Object.keys(e);if(i.length===0){_chunkG3NONHT6cjs.b.stop("config-show"),console.log(_chalk2.default.yellow("No configuration profiles found.")),console.log(_chalk2.default.gray('Use "rawi configure" to create your first profile.'));return}if(_chunkG3NONHT6cjs.b.succeed("config-show","Configuration loaded"),o){if(!(o in e)){console.log(_chalk2.default.red(`Profile '${o}' not found.`)),console.log(_chalk2.default.gray("Available profiles:")),this.#i.displayProfiles(i);return}console.log(_chalk2.default.blue(` Profile: ${o}`)),this.#i.displayCredentials(e[o])}else{console.log(_chalk2.default.blue(` All Profiles:`));for(let t of i)console.log(_chalk2.default.white(` \u2022 Profile: ${t}`)),this.#i.displayCredentials(e[t])}}catch(e){_chunkG3NONHT6cjs.b.fail("config-show","Failed to load configuration");let i=e instanceof Error?e.message:String(e);this.#i.displayError("Error reading configuration",i)}}manualConfigure(o,r="default"){try{let e=this.#r.validateCredentials(o);if(!e.isValid)throw this.#i.displayError("Configuration validation failed:",e.errors.join(", ")),new Error("Invalid configuration");if(e.warnings.length>0)for(let i of e.warnings)this.#i.displayWarning(i);this.setCredentials(o,r),this.#i.displaySuccess("Configuration saved successfully!"),console.log(_chalk2.default.gray(`Profile: ${r}`)),this.#i.displayConfigurationSummary(o),console.log(_chalk2.default.gray(` Config file: ${this.configFile}`))}catch(e){let i=e instanceof Error?e.message:String(e);throw this.#i.displayError("Manual configuration failed",i),e}}};exports.a = h; /* Rawi (راوي) is the developer-friendly AI CLI that brings the power of 11 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-G5AO4Y3M.cjs.map