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
1 lines • 4.69 kB
Source Map (JSON)
{"version":3,"sources":["/home/mkabumattar/withrawi/rawi/dist/chunk-JZN45U2H.cjs","../src/core/providers/openai.provider.ts"],"names":["openAIModelIds","openaiModels","name","openaiProvider","streamWithOpenAI","credentials","prompt","settings","apiKey","baseURL","createOpenAI","result","streamText","error"],"mappings":"AAAA;ACCA,wCAA2B,wBACF,IAYnBA,CAAAA,CAAiB,CACrB,IAAA,CACA,eAAA,CACA,SAAA,CACA,oBAAA,CACA,YAAA,CACA,uBAAA,CACA,SAAA,CACA,oBAAA,CACA,IAAA,CACA,eAAA,CACA,SAAA,CACA,oBAAA,CACA,SAAA,CACA,oBAAA,CACA,cAAA,CACA,yBAAA,CACA,cAAA,CACA,yBAAA,CACA,QAAA,CACA,mBAAA,CACA,mBAAA,CACA,mBAAA,CACA,sBAAA,CACA,iCAAA,CACA,iCAAA,CACA,uBAAA,CACA,kCAAA,CACA,4BAAA,CACA,uCAAA,CACA,aAAA,CACA,wBAAA,CACA,aAAA,CACA,wBAAA,CACA,qBAAA,CACA,oBAAA,CACA,oBAAA,CACA,OAAA,CACA,YAAA,CACA,iBAAA,CACA,4BAAA,CACA,oBAAA,CACA,eAAA,CACA,oBAAA,CACA,mBACF,CAAA,CAEaC,CAAAA,aAA4BD,CAAAA,CAAe,GAAA,CAAKE,CAAAA,EAAAA,CAAU,CACrE,IAAA,CAAAA,CAAAA,CACA,WAAA,CAAaA,CACf,CAAA,CAAE,CAAA,CAEWC,CAAAA,aAAiB,CAC5B,IAAA,CAAM,QAAA,CACN,WAAA,CAAa,wBAAA,CACb,MAAA,CAAQF,CACV,CAAA,CAEaG,CAAAA,aAAmB,KAAA,CAC9BC,CAAAA,CACAC,CAAAA,CAAAA,EAC+B,CAC/B,GAAI,CACF,IAAMC,CAAAA,CAAWF,CAAAA,CAAY,gBAAA,CAEvBG,CAAAA,iBAASD,CAAAA,2BAAU,QAAA,EAAUF,CAAAA,CAAY,MAAA,CAE/C,EAAA,CAAI,CAACA,CAAAA,CAAY,MAAA,CACf,MAAM,IAAI,KAAA,CAAM,gCAAgC,CAAA,CAGlD,IAAMI,CAAAA,iBAAUF,CAAAA,6BAAU,SAAA,EAAW,2BAAA,CAE/BJ,CAAAA,CAAiBO,kCAAAA,CACrB,MAAA,CAAQF,CAAAA,CACR,OAAA,CAASC,CACX,CAAC,CAAA,CAEKE,CAAAA,CAASC,4BAAAA,CACb,KAAA,CAAOT,CAAAA,CAAeE,CAAAA,CAAY,KAAK,CAAA,CACvC,MAAA,CAAAC,CAAAA,CACA,WAAA,CAAaD,CAAAA,CAAY,WAAA,EAAe,EAAA,CACxC,SAAA,CAAWA,CAAAA,CAAY,SAAA,EAAa,IACtC,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,oCAAA,EACEA,EAAAA,WAAiB,KAAA,CAAQA,CAAAA,CAAM,OAAA,CAAU,MAAA,CAAOA,CAAK,CACvD,CAAA,CAAA;ADzGi9C","file":"/home/mkabumattar/withrawi/rawi/dist/chunk-JZN45U2H.cjs","sourcesContent":[null,"import type {openai} from '@ai-sdk/openai';\nimport {createOpenAI} from '@ai-sdk/openai';\nimport {streamText} from 'ai';\nimport type {\n LooseToStrict,\n ModelInfo,\n OpenAISettings,\n RawiCredentials,\n StreamingResponse,\n} from '../shared/index.js';\n\ntype LooseOpenAIModelId = Parameters<typeof openai>[0];\nexport type OpenAIModelId = LooseToStrict<LooseOpenAIModelId>;\n\nconst openAIModelIds = [\n 'o1',\n 'o1-2024-12-17',\n 'o1-mini',\n 'o1-mini-2024-09-12',\n 'o1-preview',\n 'o1-preview-2024-09-12',\n 'o3-mini',\n 'o3-mini-2025-01-31',\n 'o3',\n 'o3-2025-04-16',\n 'o4-mini',\n 'o4-mini-2025-04-16',\n 'gpt-4.1',\n 'gpt-4.1-2025-04-14',\n 'gpt-4.1-mini',\n 'gpt-4.1-mini-2025-04-14',\n 'gpt-4.1-nano',\n 'gpt-4.1-nano-2025-04-14',\n 'gpt-4o',\n 'gpt-4o-2024-05-13',\n 'gpt-4o-2024-08-06',\n 'gpt-4o-2024-11-20',\n 'gpt-4o-audio-preview',\n 'gpt-4o-audio-preview-2024-10-01',\n 'gpt-4o-audio-preview-2024-12-17',\n 'gpt-4o-search-preview',\n 'gpt-4o-search-preview-2025-03-11',\n 'gpt-4o-mini-search-preview',\n 'gpt-4o-mini-search-preview-2025-03-11',\n 'gpt-4o-mini',\n 'gpt-4o-mini-2024-07-18',\n 'gpt-4-turbo',\n 'gpt-4-turbo-2024-04-09',\n 'gpt-4-turbo-preview',\n 'gpt-4-0125-preview',\n 'gpt-4-1106-preview',\n 'gpt-4',\n 'gpt-4-0613',\n 'gpt-4.5-preview',\n 'gpt-4.5-preview-2025-02-27',\n 'gpt-3.5-turbo-0125',\n 'gpt-3.5-turbo',\n 'gpt-3.5-turbo-1106',\n 'chatgpt-4o-latest',\n] as const;\n\nexport const openaiModels: ModelInfo[] = openAIModelIds.map((name) => ({\n name,\n displayName: name,\n}));\n\nexport const openaiProvider = {\n name: 'openai' as const,\n displayName: '🔵 OpenAI (GPT)',\n models: openaiModels,\n};\n\nexport const streamWithOpenAI = async (\n credentials: RawiCredentials,\n prompt: string,\n): Promise<StreamingResponse> => {\n try {\n const settings = credentials.providerSettings as OpenAISettings | undefined;\n\n const apiKey = settings?.apiKey || credentials.apiKey;\n\n if (!credentials.apiKey) {\n throw new Error('API key is required for OpenAI');\n }\n\n const baseURL = settings?.baseURL || 'https://api.openai.com/v1';\n\n const openaiProvider = createOpenAI({\n apiKey: apiKey,\n baseURL: baseURL,\n });\n\n const result = streamText({\n model: openaiProvider(credentials.model),\n prompt,\n temperature: credentials.temperature || 0.7,\n maxTokens: 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 OpenAI streaming API: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n }\n};\n"]}