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

8 lines 12 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; } 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 _chunkO3NIUWMWcjs = require('./chunk-O3NIUWMW.cjs');var _chunk5SUCR572cjs = require('./chunk-5SUCR572.cjs');var _chunkSUWS4T5Hcjs = require('./chunk-SUWS4T5H.cjs');var _chunkPLYVWSF7cjs = require('./chunk-PLYVWSF7.cjs');var _chunkGXNVCCHScjs = require('./chunk-GXNVCCHS.cjs');var _chunkOJLMC7PNcjs = require('./chunk-OJLMC7PN.cjs');var _chunkP4NH5RQRcjs = require('./chunk-P4NH5RQR.cjs');var _chalk = require('chalk'); var _chalk2 = _interopRequireDefault(_chalk);var h= (_class =class extends _chunkO3NIUWMWcjs.a{constructor(...args) { super(...args); _class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this); }__init() {this.interactive=new _chunkSUWS4T5Hcjs.a}__init2() {this.providerConfig=new _chunkGXNVCCHScjs.a}__init3() {this.display=new _chunk5SUCR572cjs.a}__init4() {this.validator=new _chunkPLYVWSF7cjs.a}async interactiveConfigure(r={}){console.log(_chalk2.default.bold.blue("\\n\u{1F527} Configuring Rawi")),console.log(_chalk2.default.gray("Please provide your AI service configuration:\\n"));try{let t=await this.interactive.getProfile(r.profile);_chunkOJLMC7PNcjs.b.start("config-load","Loading existing configuration...");let e=this.getCredentials(t);e?_chunkOJLMC7PNcjs.b.succeed("config-load",`Found existing configuration for profile '${t}'`):_chunkOJLMC7PNcjs.b.succeed("config-load","Creating new configuration profile");try{let i=await this.interactive.selectProvider(r.provider||_optionalChain([e, 'optionalAccess', _ => _.provider]));_chunkOJLMC7PNcjs.b.start("provider-validation",`Validating ${i} provider configuration...`),await new Promise(c=>setTimeout(c,500)),_chunkOJLMC7PNcjs.b.succeed("provider-validation",`${i} provider validated`);let a=await this.interactive.selectModel(i,r.model||_optionalChain([e, 'optionalAccess', _2 => _2.model])),o={provider:i,model:a,temperature:await this.interactive.getTemperature(_nullishCoalesce(_nullishCoalesce(r.temperature, () => (_optionalChain([e, 'optionalAccess', _3 => _3.temperature]))), () => (.7))),maxTokens:await this.interactive.getMaxTokens(_nullishCoalesce(_nullishCoalesce(r.maxTokens, () => (_optionalChain([e, 'optionalAccess', _4 => _4.maxTokens]))), () => (2048))),language:await this.interactive.getLanguage(_nullishCoalesce(_nullishCoalesce(r.language, () => (_optionalChain([e, 'optionalAccess', _5 => _5.language]))), () => (_chunkP4NH5RQRcjs.g)))};await this.configureProviderSettings(o,i,r,e);let s=this.validator.validateCredentials(o);if(!s.isValid)throw this.display.displayError("Configuration validation failed:",s.errors.join(", ")),new Error("Invalid configuration");if(s.warnings.length>0)for(let c of s.warnings)this.display.displayWarning(c);this.setCredentials(o,t),_chunkOJLMC7PNcjs.b.start("config-save","Saving configuration...");try{_chunkOJLMC7PNcjs.b.succeed("config-save","Configuration saved successfully!"),console.log(_chalk2.default.gray(`Profile: ${t}`)),this.display.displayConfigurationSummary(o),console.log(_chalk2.default.gray(`\\nConfig file: ${this.configFile}`)),this.display.displaySuccess("Configuration completed successfully!")}catch(c){throw _chunkOJLMC7PNcjs.b.fail("config-save","Failed to save configuration"),c}}catch(i){if(i instanceof Error&&i.name==="ExitPromptError"){console.log(_chalk2.default.yellow("\\n\u{1F44B} Configuration cancelled. Exiting..."));return}throw i}}catch(t){if(t===""){console.log(_chalk2.default.yellow("\\n\u274C Configuration cancelled."));return}let e=t instanceof Error?t.message:String(t);throw this.display.displayError("Configuration failed",e),t}}async configureProviderSettings(r,t,e,i){switch(t){case"ollama":await this.configureOllama(r,e,i);break;case"lmstudio":await this.configureLMStudio(r,e,i);break;case"azure":await this.configureAzure(r,e,i);break;case"bedrock":await this.configureBedrock(r,e,i);break;case"qwen":await this.configureQwen(r,e,i);break;case"xai":await this.configureXAI(r,e,i);break;case"deepseek":await this.configureDeepSeek(r,e,i);break;case"mistral":await this.configureMistral(r,e,i);break;case"cerebras":await this.configureCerebras(r,e,i);break;case"openai":await this.configureOpenAI(r,e,i);break;case"anthropic":await this.configureAnthropic(r,e,i);break;case"google":await this.configureGoogle(r,e,i);break;default:r.apiKey=await this.interactive.getApiKey(e.apiKey||_optionalChain([i, 'optionalAccess', _6 => _6.apiKey]),t);break}}async configureOllama(r,t,e){let i=await this.providerConfig.getBaseURL(t.baseURL||(_optionalChain([e, 'optionalAccess', _7 => _7.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0));i&&(r.providerSettings={baseURL:i})}async configureLMStudio(r,t,e){let i=await this.providerConfig.getBaseURL(t.baseURL||(_optionalChain([e, 'optionalAccess', _8 => _8.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0));i&&(r.providerSettings={baseURL:i})}async configureAzure(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _9 => _9.apiKey]),"azure"),a=await this.providerConfig.getAPIEndpoint(t.resourceName||(_optionalChain([e, 'optionalAccess', _10 => _10.providerSettings])&&"resourceName"in e.providerSettings?e.providerSettings.resourceName:void 0));if(r.apiKey=i,a){let o={resourceName:a};r.providerSettings=o}}async configureBedrock(r,t,e){let i=await this.providerConfig.getAccessKey(t.accessKeyId||(_optionalChain([e, 'optionalAccess', _11 => _11.providerSettings])&&"accessKeyId"in e.providerSettings?e.providerSettings.accessKeyId:void 0)),a=await this.providerConfig.getSecretAccessKey(t.secretAccessKey||(_optionalChain([e, 'optionalAccess', _12 => _12.providerSettings])&&"secretAccessKey"in e.providerSettings?e.providerSettings.secretAccessKey:void 0)),o=await this.providerConfig.getRegion(t.region||(_optionalChain([e, 'optionalAccess', _13 => _13.providerSettings])&&"region"in e.providerSettings?e.providerSettings.region:void 0)),s=await this.providerConfig.getSessionToken(t.sessionToken||(_optionalChain([e, 'optionalAccess', _14 => _14.providerSettings])&&"sessionToken"in e.providerSettings?e.providerSettings.sessionToken:void 0)),c={};i&&(c.accessKeyId=i),a&&(c.secretAccessKey=a),o&&(c.region=o),s&&(c.sessionToken=s),r.providerSettings=c}async configureQwen(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _15 => _15.apiKey]),"qwen"),a={apiKey:i};r.apiKey=i,r.providerSettings=a}async configureXAI(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _16 => _16.apiKey]),"xai"),a={apiKey:i};r.apiKey=i,r.providerSettings=a}async configureDeepSeek(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _17 => _17.apiKey]),"deepseek"),a={apiKey:i};r.apiKey=i,r.providerSettings=a}async configureMistral(r,t,e){let i=t.apiKey||(_optionalChain([e, 'optionalAccess', _18 => _18.providerSettings])&&"apiKey"in e.providerSettings?e.providerSettings.apiKey:_optionalChain([e, 'optionalAccess', _19 => _19.apiKey])),a=await this.interactive.getApiKey(i,"mistral"),o=await this.providerConfig.getBaseURL(t.baseURL||(_optionalChain([e, 'optionalAccess', _20 => _20.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),s={apiKey:a};o&&(s.baseURL=o),r.providerSettings=s}async configureCerebras(r,t,e){let i=t.apiKey||(_optionalChain([e, 'optionalAccess', _21 => _21.providerSettings])&&"apiKey"in e.providerSettings?e.providerSettings.apiKey:_optionalChain([e, 'optionalAccess', _22 => _22.apiKey])),a=await this.interactive.getApiKey(i,"cerebras"),o=await this.providerConfig.getBaseURL(t.baseURL||(_optionalChain([e, 'optionalAccess', _23 => _23.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),s={apiKey:a};o&&(s.baseURL=o),r.providerSettings=s}async configureOpenAI(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _24 => _24.apiKey]),"openai"),a={apiKey:i};r.apiKey=i,r.providerSettings=a}async configureAnthropic(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _25 => _25.apiKey]),"anthropic"),a={apiKey:i};r.apiKey=i,r.providerSettings=a}async configureGoogle(r,t,e){let i=await this.interactive.getApiKey(t.apiKey||_optionalChain([e, 'optionalAccess', _26 => _26.apiKey]),"google"),a=await this.providerConfig.getAPIEndpoint(t.baseURL||(_optionalChain([e, 'optionalAccess', _27 => _27.providerSettings])&&"baseURL"in e.providerSettings?e.providerSettings.baseURL:void 0)),o={apiKey:i};a&&(o.baseURL=a),r.apiKey=i,r.providerSettings=o}showConfig(r,t=!1){this.showConfiguration(r,t).catch(e=>{let i=e instanceof Error?e.message:String(e);this.display.displayError("Error showing configuration",i)})}async showConfiguration(r,t=!1){_chunkOJLMC7PNcjs.b.start("config-show","Loading configuration...");try{let e=this.readConfig(),i=Object.keys(e);if(i.length===0){_chunkOJLMC7PNcjs.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(_chunkOJLMC7PNcjs.b.succeed("config-show","Configuration loaded"),r){if(!(r in e)){console.log(_chalk2.default.red(`Profile '${r}' not found.`)),console.log(_chalk2.default.gray("Available profiles:")),this.display.displayProfiles(i);return}console.log(_chalk2.default.blue(` Profile: ${r}`)),this.display.displayCredentials(e[r])}else{console.log(_chalk2.default.blue(` All Profiles:`));for(let a of i)console.log(_chalk2.default.white(` \u2022 Profile: ${a}`)),this.display.displayCredentials(e[a])}}catch(e){_chunkOJLMC7PNcjs.b.fail("config-show","Failed to load configuration");let i=e instanceof Error?e.message:String(e);this.display.displayError("Error reading configuration",i)}}manualConfigure(r,t="default"){try{let e=this.validator.validateCredentials(r);if(!e.isValid)throw this.display.displayError("Configuration validation failed:",e.errors.join(", ")),new Error("Invalid configuration");if(e.warnings.length>0)for(let i of e.warnings)this.display.displayWarning(i);this.setCredentials(r,t),this.display.displaySuccess("Configuration saved successfully!"),console.log(_chalk2.default.gray(`Profile: ${t}`)),this.display.displayConfigurationSummary(r),console.log(_chalk2.default.gray(` Config file: ${this.configFile}`))}catch(e){let i=e instanceof Error?e.message:String(e);throw this.display.displayError("Manual configuration failed",i),e}}}, _class);exports.a = h; /* 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-JIQYHHMV.cjs.map