UNPKG

phind-ai-provider

Version:

phind ai provider compatible with vercel ai sdk

6 lines 3.43 kB
(function(g,f){typeof exports==='object'&&typeof module!=='undefined'?module.exports=f():typeof define==='function'&&define.amd?define(f):(g=typeof globalThis!=='undefined'?globalThis:g||self,g.phind=f());})(this,(function(){'use strict';var h=(p,e)=>()=>(e||p((e={exports:{}}).exports,e),e.exports);var m=h(c=>{Object.defineProperty(c,"__esModule",{value:true});c.PhindAIService=void 0;var l=class p{specificationVersion="v1";defaultObjectGenerationMode="json";supportsImageUrls=false;supportsStructuredOutputs=false;modelId;static API_URL="https://https.extension.phind.com/agent/";headers={"Content-Type":"application/json",Accept:"*/*","Accept-Encoding":"Identity","User-Agent":""};constructor(e="Phind-70B"){this.modelId=e;}get provider(){return "phind"}_normalizeMessages(e){return typeof e=="string"?[{role:"user",content:e}]:e.map(s=>{let t=s.content;return Array.isArray(t)?t=t.map(n=>typeof n=="string"?n:n.text??"").join(" "):t=String(t),{role:s.role,content:t}})}async doGenerate(e){let s=this._normalizeMessages(e.prompt);return {text:await this.chat(s),finishReason:"stop",usage:{promptTokens:NaN,completionTokens:NaN},rawCall:{rawPrompt:e.prompt,rawSettings:{}},rawResponse:{},request:{},response:{},warnings:[]}}async doStream(e){let s=this._normalizeMessages(e.prompt),t=await this.chatReader(s);return {stream:new ReadableStream({async start(r){let a=new TextDecoder;for(;;){let{done:o,value:i}=await t.read();if(o)break;let w=a.decode(i,{stream:true}).split(` `);for(let f of w){let u=f;u&&r.enqueue({type:"text-delta",textDelta:u});}}r.enqueue({type:"finish",finishReason:"stop",usage:{promptTokens:NaN,completionTokens:NaN}}),r.close(),t.releaseLock();}}),rawCall:{rawPrompt:e.prompt,rawSettings:{}},rawResponse:{},request:{},warnings:[]}}async chat(e){let n=(await(await this._fetchChatResponse(e)).text()).split(` `);return this._mapResponse(n)}async chatReader(e){let t=(await this._fetchChatResponse(e)).body.getReader();return this.streamMapResponse(t,this._mapResponse)}async*chatStream(e){let s=await this.chatReader(e),t=new TextDecoder;for(;;){let{done:n,value:r}=await s.read();if(n)break;let a=t.decode(r,{stream:true}).split(` `);for(let o of a){let i=o;i&&(yield i);}}s.releaseLock();}async streamMapResponse(e,s){return new ReadableStream({async start(t){let n=new TextDecoder;for(;;){let{done:r,value:a}=await e.read();if(r)break;let o=s(n.decode(a,{stream:true}).split(` `));t.enqueue(new TextEncoder().encode(o));}t.close(),e.releaseLock();}}).getReader()}async _fetchChatResponse(e){let s={additional_extension_context:"",allow_magic_buttons:true,is_vscode_extension:true,message_history:e,requested_model:this.modelId,user_input:e.filter(n=>n.role==="user").pop()?.content??""},t=await fetch(p.API_URL,{method:"POST",headers:this.headers,body:JSON.stringify(s)});if(!t.ok){let n=await t.text();throw console.error("Phind Error:",n),new Error(`Failed to generate text (Phind): ${t.status} ${t.statusText}`)}return t}_mapResponse(e){let s="";for(let t of e)if(!(!t.startsWith("data: ")||t.includes("[DONE]")))try{s+=JSON.parse(t.substring(5))?.choices?.[0]?.delta?.content??"";}catch{}return s.replace(/\\n/g,` `)}};c.PhindAIService=l;});var y=h(d=>{Object.defineProperty(d,"__esModule",{value:true});d.PhindAIService=void 0;var g=m();Object.defineProperty(d,"PhindAIService",{enumerable:true,get:function(){return g.PhindAIService}});});var index_bundle_min = y();return index_bundle_min;}));