UNPKG

phind-ai-provider

Version:

phind ai provider compatible with vercel ai sdk

7 lines (6 loc) 3.14 kB
var h=(p,e)=>()=>(e||p((e={exports:{}}).exports,e),e.exports);var m=h(c=>{"use strict";Object.defineProperty(c,"__esModule",{value:!0});c.PhindAIService=void 0;var l=class p{specificationVersion="v1";defaultObjectGenerationMode="json";supportsImageUrls=!1;supportsStructuredOutputs=!1;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:!0}).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:!0}).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:!0}).split(` `));t.enqueue(new TextEncoder().encode(o))}t.close(),e.releaseLock()}}).getReader()}async _fetchChatResponse(e){let s={additional_extension_context:"",allow_magic_buttons:!0,is_vscode_extension:!0,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:!0});d.PhindAIService=void 0;var g=m();Object.defineProperty(d,"PhindAIService",{enumerable:!0,get:function(){return g.PhindAIService}})});export default y();