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
1 lines • 5.89 kB
Source Map (JSON)
{"version":3,"sources":["/home/mkabumattar/work/withrawi/rawi/dist/chunk-OOLTO3KM.cjs","../src/core/providers/mistral.provider.ts"],"names":["mistralModelIds","mistralModels","name","mistralProvider","streamWithMistral","credentials","prompt","settings","apiKey","baseURL","createMistral","result","streamText","error"],"mappings":"AAAA;AACA,wDAAwC,0CCDE,wBAEH,IAoB1BA,CAAAA,CAAkB,CAC7B,qBAAA,CACA,qBAAA,CACA,sBAAA,CACA,uBAAA,CACA,qBAAA,CACA,qBAAA,CACA,sBAAA,CACA,sBAAA,CACA,sBAAA,CACA,uBAAA,CACA,sBAAA,CACA,uBAAA,CACA,kBAAA,CACA,iBAAA,CACA,mBAAA,CACA,oBACF,CAAA,CAEaC,CAAAA,aAA6BD,CAAAA,CAAgB,GAAA,CAAKE,CAAAA,EAAAA,CAAU,CACvE,IAAA,CAAAA,CAAAA,CACA,WAAA,CAAaA,CACf,CAAA,CAAE,CAAA,CAEWC,CAAAA,aAAkB,CAC7B,IAAA,CAAM,SAAA,CACN,WAAA,CAAa,sBAAA,CACb,MAAA,CAAQF,CACV,CAAA,CAEaG,CAAAA,aAAoB,KAAA,CAC/BC,CAAAA,CACAC,CAAAA,CAAAA,EAC+B,CAC/B,GAAI,CACF,IAAMC,CAAAA,CAAWF,CAAAA,CAAY,gBAAA,CAIvBG,CAAAA,iBAASD,CAAAA,2BAAU,QAAA,EAAUF,CAAAA,CAAY,MAAA,CAE/C,EAAA,CAAI,CAACG,CAAAA,CACH,MAAM,IAAI,KAAA,CAAM,iCAAiC,CAAA,CAGnD,IAAMC,CAAAA,iBAAUF,CAAAA,6BAAU,SAAA,EAAW,2BAAA,CAE/BJ,CAAAA,CAAkBO,oCAAAA,CACtB,MAAA,CAAQF,CAAAA,CACR,OAAA,CAASC,CACX,CAAC,CAAA,CAEKE,CAAAA,CAASC,4BAAAA,CACb,KAAA,CAAOT,CAAAA,CAAgBE,CAAAA,CAAY,KAAK,CAAA,CACxC,MAAA,CAAAC,CAAAA,CACA,WAAA,CAAaD,CAAAA,CAAY,WAAA,EAAe,EAAA,CACxC,eAAA,CAAiBA,CAAAA,CAAY,SAAA,EAAa,IAC5C,CAAC,CAAA,CAED,MAAO,CACL,UAAA,CAAYM,CAAAA,CAAO,UAAA,CACnB,YAAA,CAAcA,CAAAA,CAAO,IACvB,CACF,CAAA,KAAA,CAASE,CAAAA,CAAO,CACd,MAAM,IAAI,KAAA,CACR,CAAA,qCAAA,EACEA,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,MAAA,CAAOA,CAAK,CACvD,CAAA,CAAA;ADvFkhC","file":"/home/mkabumattar/work/withrawi/rawi/dist/chunk-OOLTO3KM.cjs","sourcesContent":[null,"import {createMistral, type mistral} from '@ai-sdk/mistral';\nimport type {ModelMessage} from 'ai';\nimport {generateText, streamText} from 'ai';\nimport {parseCommandFromResponse} from '../exec/parser.js';\nimport type {\n LooseToStrict,\n MistralSettings,\n ModelInfo,\n RawiCredentials,\n StreamingResponse,\n} from '../shared/index.js';\nimport type {\n ChatCredentials,\n ChatProvider,\n ChatStreamOptions,\n ExecGenerationOptions,\n ExecGenerationResult,\n} from './types.js';\n\ntype LooseMistralModelId = Parameters<typeof mistral>[0];\nexport type MistralModelId = LooseToStrict<LooseMistralModelId>;\n\nexport const mistralModelIds = [\n 'ministral-3b-latest',\n 'ministral-8b-latest',\n 'mistral-large-latest',\n 'mistral-medium-latest',\n 'mistral-medium-2508',\n 'mistral-medium-2505',\n 'mistral-small-latest',\n 'pixtral-large-latest',\n 'magistral-small-2507',\n 'magistral-medium-2507',\n 'magistral-small-2506',\n 'magistral-medium-2506',\n 'pixtral-12b-2409',\n 'open-mistral-7b',\n 'open-mixtral-8x7b',\n 'open-mixtral-8x22b',\n] as const;\n\nexport const mistralModels: ModelInfo[] = mistralModelIds.map((name) => ({\n name,\n displayName: name,\n}));\n\nexport const mistralProvider = {\n name: 'mistral' as const,\n displayName: '🟠 Mistral AI',\n models: mistralModels,\n};\n\nexport const streamWithMistral = async (\n credentials: RawiCredentials,\n prompt: string,\n): Promise<StreamingResponse> => {\n try {\n const settings = credentials.providerSettings as\n | MistralSettings\n | undefined;\n\n const apiKey = settings?.apiKey || credentials.apiKey;\n\n if (!apiKey) {\n throw new Error('API key is required for Mistral');\n }\n\n const baseURL = settings?.baseURL || 'https://api.mistral.ai/v1';\n\n const mistralProvider = createMistral({\n apiKey: apiKey,\n baseURL: baseURL,\n });\n\n const result = streamText({\n model: mistralProvider(credentials.model),\n prompt,\n temperature: credentials.temperature || 0.7,\n maxOutputTokens: credentials.maxTokens || 2048,\n });\n\n return {\n textStream: result.textStream,\n fullResponse: result.text,\n };\n } catch (error) {\n throw new Error(\n `Error calling Mistral streaming API: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n};\n\nexport const mistralChatProvider: ChatProvider = {\n name: 'mistral',\n displayName: '🟠 Mistral AI',\n\n async streamChat(\n credentials: ChatCredentials,\n messages: ModelMessage[],\n options: ChatStreamOptions = {},\n ): Promise<AsyncIterable<string>> {\n const settings = credentials.providerSettings || {};\n const apiKey = settings.apiKey || credentials.apiKey;\n\n if (!apiKey) {\n throw new Error('API key is required for Mistral');\n }\n\n const mistralProvider = createMistral({\n apiKey: apiKey,\n });\n\n const result = streamText({\n model: mistralProvider(credentials.model),\n messages,\n temperature: credentials.temperature || options.temperature || 0.7,\n maxOutputTokens: credentials.maxTokens || options.maxTokens || 2048,\n });\n\n return result.textStream;\n },\n};\n\nexport const generateWithMistral = async (\n options: ExecGenerationOptions,\n): Promise<ExecGenerationResult> => {\n const startTime = Date.now();\n\n try {\n const settings = options.credentials.providerSettings as\n | MistralSettings\n | undefined;\n\n const apiKey = settings?.apiKey || options.credentials.apiKey;\n\n if (!apiKey) {\n throw new Error('API key is required for Mistral');\n }\n\n const mistralProvider = createMistral({\n apiKey: apiKey,\n });\n\n const result = await generateText({\n model: mistralProvider(options.credentials.model),\n system: options.systemPrompt,\n prompt: options.userPrompt,\n });\n\n const generationTime = Date.now() - startTime;\n\n const command = parseCommandFromResponse(result.text);\n\n return {\n command,\n generationTime,\n };\n } catch (error) {\n throw new Error(`Mistral exec generation failed: ${error}`);\n }\n};\n"]}