blink 0.1.53 → 0.1.54

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,17 @@
1
- Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../cookie-BtKXrFr6.cjs`);let t=require(`util`);t=e.__toESM(t);var n=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),r=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},i=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){if(r===void 0)continue;if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r)}return t},a=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},o=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function s(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function c(e,t){if(!s(e)&&!s(t))return t;let n={...e};for(let e in t){let r=t[e];s(n[e])&&s(r)?n[e]=c(n[e],r):n[e]=r}return n}var l=(e,t)=>{let n=new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return l(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}});return n},u=class{url;method;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t){this.url=e,this.method=t}fetch=async(t,n)=>{if(t){if(t.query&&(this.queryParams=i(t.query)),t.form){let e=new FormData;for(let[n,r]of Object.entries(t.form))if(Array.isArray(r))for(let t of r)e.append(n,t);else e.append(n,r);this.rBody=e}t.json&&(this.rBody=JSON.stringify(t.json),this.cType=`application/json`),t.param&&(this.pathParams=t.param)}let a=this.method.toUpperCase(),s={...t?.header,...typeof n?.headers==`function`?await n.headers():n?.headers};if(t?.cookie){let n=[];for(let[r,i]of Object.entries(t.cookie))n.push(e.serialize(r,i,{path:`/`}));s.Cookie=n.join(`,`)}this.cType&&(s[`Content-Type`]=this.cType);let c=new Headers(s??void 0),l=this.url;l=o(l),l=r(l,this.pathParams),this.queryParams&&(l=l+`?`+this.queryParams.toString()),a=this.method.toUpperCase();let u=!(a===`GET`||a===`HEAD`);return(n?.fetch||fetch)(l,{body:u?this.rBody:void 0,method:a,headers:c,...n?.init})}},d=(e,t)=>l(function s(l){let d=[...l.path],f=d.slice(-3).reverse();if(f[0]===`toString`)return f[1]===`name`?f[2]||``:s.toString();if(f[0]===`valueOf`)return f[1]===`name`?f[2]||``:s;let p=``;if(/^\$/.test(f[0])){let e=d.pop();e&&(p=e.replace(/^\$/,``))}let m=d.join(`/`),h=n(e,m);if(p===`url`){let e=h;return l.args[0]&&(l.args[0].param&&(e=r(h,l.args[0].param)),l.args[0].query&&(e=e+`?`+i(l.args[0].query).toString())),e=o(e),new URL(e)}if(p===`ws`){let e=a(l.args[0]&&l.args[0].param?r(h,l.args[0].param):h,`ws`),n=new URL(e),i=l.args[0]?.query;i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)});let o=(...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e);return o(n.toString())}let g=new u(h,p);if(p){t??={};let e=c(t,{...l.args[1]});return g.fetch(l.args[0],e)}return g},[]);const f=process.env[e.APIServerURLEnvironmentVariable],p=d(f??``,{fetch:f?void 0:async()=>{throw console.warn(`Your code is attempting to use the Blink API server, but no API server is configured for this Blink agent.`),Error(`No API server is configured for this Blink agent. External APIs are not available.`)}}),m=Object.freeze({upsert:async e=>{let t=await p.chat[`:id`].$post({param:{id:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}return{id:e}},message:async(e,t,n)=>{let r=await p.chat[`:id`].sendMessages.$post({param:{id:e},json:{messages:[t],behavior:n?.behavior??`enqueue`}});if(r.status!==204){let e=await r.json();throw Error(e.error)}}}),h=Object.freeze({kv:Object.freeze({get:async e=>{let t=await p.storage.kv[`:key`].$get({param:{key:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}let n=await t.json();return n.value},set:async(e,t)=>{let n=await p.storage.kv[`:key`].$post({param:{key:e},json:{value:t}});if(n.status!==204){let e=await n.json();throw Error(e.error)}},del:async e=>{let t=await p.storage.kv[`:key`].$delete({param:{key:e}});if(t.status!==204){let e=await t.json();throw Error(e.error)}}})}),g={with(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.with(t)}return n},prefix(e,t){let n={};for(let[r,i]of Object.entries(e))n[`${t}${r}`]=i;return n}};function _(e){return{version:`v0`,supportsRequests:e.onRequest!==void 0,supportsCompletions:e.experimental_provideCompletions!==void 0,fetch:async n=>{let r=new URL(n.url);if(r.pathname.startsWith(`/_agent/`))switch(r.pathname){case`/_agent/send-messages`:return v(n,e);case`/_agent/completions`:return y(n,e);case`/_agent/health`:return new Response(`OK`,{status:200});default:return new Response(`Not found`,{status:404})}if(e.onRequest){let r;try{r=await e.onRequest(n)}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}if(r)return r}return new Response(`Not found`,{status:404})}}}async function v(e,n){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});let r;try{r=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await n.sendMessages({messages:r.messages,chat:r.chat})}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}if(i instanceof Response)return i;let a;if(i instanceof ReadableStream)a=i;else{if(typeof i!=`object`||!(`toUIMessageStream`in i))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);a=i.toUIMessageStream()}return new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
1
+ Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../cookie-Dx2Kx4Zh.cjs`);let t=require(`zod/v4`);t=e.__toESM(t);let n=require(`zod/v3`);n=e.__toESM(n);let r=require(`util`);r=e.__toESM(r);function i(e){return typeof e==`object`&&!!e&&typeof e[Symbol.asyncIterator]==`function`}function a(...e){return e.reduce((e,t)=>({...e,...t??{}}),{})}function o(e){return Object.fromEntries([...e.headers])}function s(e=globalThis){var t,n,r;return e.window?`runtime/browser`:(t=e.navigator)?.userAgent?`runtime/${e.navigator.userAgent.toLowerCase()}`:(r=(n=e.process)?.versions)?.node?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?`runtime/vercel-edge`:`runtime/unknown`}function c(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>t!=null))}function l(e,...t){let n=c(e??{}),r=new Headers(n),i=r.get(`user-agent`)||``;return r.set(`user-agent`,[i,...t].filter(Boolean).join(` `)),Object.fromEntries(r)}var u=({prefix:t,size:n=16,alphabet:r=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,separator:i=`-`}={})=>{let a=()=>{let e=r.length,t=Array(n);for(let i=0;i<n;i++)t[i]=r[Math.random()*e|0];return t.join(``)};if(t==null)return a;if(r.includes(i))throw new e.InvalidArgumentError({argument:`separator`,message:`The separator "${i}" must not be part of the alphabet "${r}".`});return()=>`${t}${i}${a()}`},d=u();function f(e){return(e instanceof Error||e instanceof DOMException)&&(e.name===`AbortError`||e.name===`ResponseAborted`||e.name===`TimeoutError`)}var p=[`fetch failed`,`failed to fetch`];function m({error:t,url:n,requestBodyValues:r}){if(f(t))return t;if(t instanceof TypeError&&p.includes(t.message.toLowerCase())){let i=t.cause;if(i!=null)return new e.APICallError({message:`Cannot connect to API: ${i.message}`,cause:i,url:n,requestBodyValues:r,isRetryable:!0})}return t}var h=`3.0.10`,g=/"__proto__"\s*:/,_=/"constructor"\s*:/;function v(e){let t=JSON.parse(e);return typeof t!=`object`||!t||g.test(e)===!1&&_.test(e)===!1?t:y(t)}function y(e){let t=[e];for(;t.length;){let e=t;t=[];for(let n of e){if(Object.prototype.hasOwnProperty.call(n,`__proto__`)||Object.prototype.hasOwnProperty.call(n,`constructor`)&&Object.prototype.hasOwnProperty.call(n.constructor,`prototype`))throw SyntaxError(`Object contains forbidden prototype property`);for(let e in n){let r=n[e];r&&typeof r==`object`&&t.push(r)}}}return e}function b(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return v(e)}finally{Error.stackTraceLimit=t}}var x=Symbol.for(`vercel.ai.validator`);function S(e){return{[x]:!0,validate:e}}function C(e){return typeof e==`object`&&!!e&&x in e&&e[x]===!0&&`validate`in e}function w(e){return C(e)?e:T(e)}function T(t){return S(async n=>{let r=await t[`~standard`].validate(n);return r.issues==null?{success:!0,value:r.value}:{success:!1,error:new e.TypeValidationError({value:n,cause:r.issues})}})}async function E({value:t,schema:n}){let r=await D({value:t,schema:n});if(!r.success)throw e.TypeValidationError.wrap({value:t,cause:r.error});return r.value}async function D({value:t,schema:n}){let r=w(n);try{if(r.validate==null)return{success:!0,value:t,rawValue:t};let n=await r.validate(t);return n.success?{success:!0,value:n.value,rawValue:t}:{success:!1,error:e.TypeValidationError.wrap({value:t,cause:n.error}),rawValue:t}}catch(n){return{success:!1,error:e.TypeValidationError.wrap({value:t,cause:n}),rawValue:t}}}async function O({text:t,schema:n}){try{let e=b(t);return n==null?e:E({value:e,schema:n})}catch(n){throw e.JSONParseError.isInstance(n)||e.TypeValidationError.isInstance(n)?n:new e.JSONParseError({text:t,cause:n})}}async function k({text:t,schema:n}){try{let e=b(t);return n==null?{success:!0,value:e,rawValue:e}:await D({value:e,schema:n})}catch(n){return{success:!1,error:e.JSONParseError.isInstance(n)?n:new e.JSONParseError({text:t,cause:n}),rawValue:void 0}}}function A(e){try{return b(e),!0}catch{return!1}}function j({stream:t,schema:n}){return t.pipeThrough(new TextDecoderStream).pipeThrough(new e.EventSourceParserStream).pipeThrough(new TransformStream({async transform({data:e},t){e!==`[DONE]`&&t.enqueue(await k({text:e,schema:n}))}}))}async function M({provider:t,providerOptions:n,schema:r}){if(n?.[t]==null)return;let i=await D({value:n[t],schema:r});if(!i.success)throw new e.InvalidArgumentError({argument:`providerOptions`,message:`invalid ${t} provider options`,cause:i.error});return i.value}var ee=()=>globalThis.fetch,N=async({url:e,headers:t,body:n,failedResponseHandler:r,successfulResponseHandler:i,abortSignal:a,fetch:o})=>te({url:e,headers:{"Content-Type":`application/json`,...t},body:{content:JSON.stringify(n),values:n},failedResponseHandler:r,successfulResponseHandler:i,abortSignal:a,fetch:o}),te=async({url:t,headers:n={},body:r,successfulResponseHandler:i,failedResponseHandler:a,abortSignal:c,fetch:u=ee()})=>{try{let d=await u(t,{method:`POST`,headers:l(n,`ai-sdk/provider-utils/${h}`,s()),body:r.content,signal:c}),p=o(d);if(!d.ok){let n;try{n=await a({response:d,url:t,requestBodyValues:r.values})}catch(n){throw f(n)||e.APICallError.isInstance(n)?n:new e.APICallError({message:`Failed to process error response`,cause:n,statusCode:d.status,url:t,responseHeaders:p,requestBodyValues:r.values})}throw n.value}try{return await i({response:d,url:t,requestBodyValues:r.values})}catch(n){throw n instanceof Error&&(f(n)||e.APICallError.isInstance(n))?n:new e.APICallError({message:`Failed to process successful response`,cause:n,statusCode:d.status,url:t,responseHeaders:p,requestBodyValues:r.values})}}catch(e){throw m({error:e,url:t,requestBodyValues:r.values})}},P=({errorSchema:t,errorToMessage:n,isRetryable:r})=>async({response:i,url:a,requestBodyValues:s})=>{let c=await i.text(),l=o(i);if(c.trim()===``)return{responseHeaders:l,value:new e.APICallError({message:i.statusText,url:a,requestBodyValues:s,statusCode:i.status,responseHeaders:l,responseBody:c,isRetryable:r?.(i)})};try{let o=await O({text:c,schema:t});return{responseHeaders:l,value:new e.APICallError({message:n(o),url:a,requestBodyValues:s,statusCode:i.status,responseHeaders:l,responseBody:c,data:o,isRetryable:r?.(i,o)})}}catch{return{responseHeaders:l,value:new e.APICallError({message:i.statusText,url:a,requestBodyValues:s,statusCode:i.status,responseHeaders:l,responseBody:c,isRetryable:r?.(i)})}}},F=t=>async({response:n})=>{let r=o(n);if(n.body==null)throw new e.EmptyResponseBodyError({});return{responseHeaders:r,value:j({stream:n.body,schema:t})}},I=t=>async({response:n,url:r,requestBodyValues:i})=>{let a=await n.text(),s=await k({text:a,schema:t}),c=o(n);if(!s.success)throw new e.APICallError({message:`Invalid JSON response`,cause:s.error,statusCode:n.status,responseHeaders:c,responseBody:a,url:r,requestBodyValues:i});return{responseHeaders:c,value:s.value,rawValue:s.rawValue}},ne=Symbol(`Let zodToJsonSchema decide on which parser to use`),re=Symbol.for(`vercel.ai.schema`),{btoa:ie,atob:ae}=globalThis;function oe(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCodePoint(e[n]);return ie(t)}function se(e){return e instanceof Uint8Array?oe(e):e}function ce(e){return e?.replace(/\/$/,``)}function L(e){var t,n;return(n=(t=e?.providerOptions)?.openaiCompatible)??{}}function le(t){let n=[];for(let{role:r,content:i,...a}of t){let t=L({...a});switch(r){case`system`:n.push({role:`system`,content:i,...t});break;case`user`:if(i.length===1&&i[0].type===`text`){n.push({role:`user`,content:i[0].text,...L(i[0])});break}n.push({role:`user`,content:i.map(t=>{let n=L(t);switch(t.type){case`text`:return{type:`text`,text:t.text,...n};case`file`:if(t.mediaType.startsWith(`image/`)){let e=t.mediaType===`image/*`?`image/jpeg`:t.mediaType;return{type:`image_url`,image_url:{url:t.data instanceof URL?t.data.toString():`data:${e};base64,${se(t.data)}`},...n}}else throw new e.UnsupportedFunctionalityError({functionality:`file part media type ${t.mediaType}`})}}),...t});break;case`assistant`:{let e=``,r=[];for(let t of i){let n=L(t);switch(t.type){case`text`:e+=t.text;break;case`tool-call`:r.push({id:t.toolCallId,type:`function`,function:{name:t.toolName,arguments:JSON.stringify(t.input)},...n});break}}n.push({role:`assistant`,content:e,tool_calls:r.length>0?r:void 0,...t});break}case`tool`:for(let e of i){let t=e.output,r;switch(t.type){case`text`:case`error-text`:r=t.value;break;case`content`:case`json`:case`error-json`:r=JSON.stringify(t.value);break}let i=L(e);n.push({role:`tool`,tool_call_id:e.toolCallId,content:r,...i})}break;default:{let e=r;throw Error(`Unsupported role: ${e}`)}}}return n}function R({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n==null?void 0:new Date(n*1e3)}}function z(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`unknown`}}var B=t.z.object({user:t.z.string().optional(),reasoningEffort:t.z.string().optional()}),ue=t.z.object({error:t.z.object({message:t.z.string(),type:t.z.string().nullish(),param:t.z.any().nullish(),code:t.z.union([t.z.string(),t.z.number()]).nullish()})}),V={errorSchema:ue,errorToMessage:e=>e.error.message};function de({tools:t,toolChoice:n}){t=t?.length?t:void 0;let r=[];if(t==null)return{tools:void 0,toolChoice:void 0,toolWarnings:r};let i=[];for(let e of t)e.type===`provider-defined`?r.push({type:`unsupported-tool`,tool:e}):i.push({type:`function`,function:{name:e.name,description:e.description,parameters:e.inputSchema}});if(n==null)return{tools:i,toolChoice:void 0,toolWarnings:r};let a=n.type;switch(a){case`auto`:case`none`:case`required`:return{tools:i,toolChoice:a,toolWarnings:r};case`tool`:return{tools:i,toolChoice:{type:`function`,function:{name:n.toolName}},toolWarnings:r};default:{let t=a;throw new e.UnsupportedFunctionalityError({functionality:`tool choice type: ${t}`})}}}var fe=class{constructor(e,t){this.specificationVersion=`v2`;var n,r;this.modelId=e,this.config=t;let i=(n=t.errorStructure)??V;this.chunkSchema=me(i.errorSchema),this.failedResponseHandler=P(i),this.supportsStructuredOutputs=(r=t.supportsStructuredOutputs)??!1}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}get supportedUrls(){var e,t,n;return(n=(t=(e=this.config).supportedUrls)?.call(e))??{}}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,providerOptions:s,stopSequences:c,responseFormat:l,seed:u,toolChoice:d,tools:f}){var p,m,h,g;let _=[],v=Object.assign((p=await M({provider:`openai-compatible`,providerOptions:s,schema:B}))??{},(m=await M({provider:this.providerOptionsName,providerOptions:s,schema:B}))??{});i!=null&&_.push({type:`unsupported-setting`,setting:`topK`}),l?.type===`json`&&l.schema!=null&&!this.supportsStructuredOutputs&&_.push({type:`unsupported-setting`,setting:`responseFormat`,details:`JSON response format schema is only supported with structuredOutputs`});let{tools:y,toolChoice:b,toolWarnings:x}=de({tools:f,toolChoice:d});return{args:{model:this.modelId,user:v.user,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,response_format:l?.type===`json`?this.supportsStructuredOutputs===!0&&l.schema!=null?{type:`json_schema`,json_schema:{schema:l.schema,name:(h=l.name)??`response`,description:l.description}}:{type:`json_object`}:void 0,stop:c,seed:u,...Object.fromEntries(Object.entries((g=s?.[this.providerOptionsName])??{}).filter(([e])=>!Object.keys(B.shape).includes(e))),reasoning_effort:v.reasoningEffort,messages:le(e),tools:y,tool_choice:b},warnings:[..._,...x]}}async doGenerate(e){var t,n,r,i,o,s,c,l,u,f,p,m,h,g,_,v,y;let{args:b,warnings:x}=await this.getArgs({...e}),S=JSON.stringify(b),{responseHeaders:C,value:w,rawValue:T}=await N({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:a(this.config.headers(),e.headers),body:b,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:I(pe),abortSignal:e.abortSignal,fetch:this.config.fetch}),E=w.choices[0],D=[],O=E.message.content;O!=null&&O.length>0&&D.push({type:`text`,text:O});let k=(t=E.message.reasoning_content)??E.message.reasoning;if(k!=null&&k.length>0&&D.push({type:`reasoning`,text:k}),E.message.tool_calls!=null)for(let e of E.message.tool_calls)D.push({type:`tool-call`,toolCallId:(n=e.id)??d(),toolName:e.function.name,input:e.function.arguments});let A={[this.providerOptionsName]:{},...await(i=(r=this.config.metadataExtractor)?.extractMetadata)?.call(r,{parsedBody:T})},j=(o=w.usage)?.completion_tokens_details;return j?.accepted_prediction_tokens!=null&&(A[this.providerOptionsName].acceptedPredictionTokens=j?.accepted_prediction_tokens),j?.rejected_prediction_tokens!=null&&(A[this.providerOptionsName].rejectedPredictionTokens=j?.rejected_prediction_tokens),{content:D,finishReason:z(E.finish_reason),usage:{inputTokens:(c=(s=w.usage)?.prompt_tokens)??void 0,outputTokens:(u=(l=w.usage)?.completion_tokens)??void 0,totalTokens:(p=(f=w.usage)?.total_tokens)??void 0,reasoningTokens:(g=(h=(m=w.usage)?.completion_tokens_details)?.reasoning_tokens)??void 0,cachedInputTokens:(y=(v=(_=w.usage)?.prompt_tokens_details)?.cached_tokens)??void 0},providerMetadata:A,request:{body:S},response:{...R(w),headers:C,body:T},warnings:x}}async doStream(t){var n;let{args:r,warnings:i}=await this.getArgs({...t}),o={...r,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},s=(n=this.config.metadataExtractor)?.createStreamExtractor(),{responseHeaders:c,value:l}=await N({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:a(this.config.headers(),t.headers),body:o,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:F(this.chunkSchema),abortSignal:t.abortSignal,fetch:this.config.fetch}),u=[],f=`unknown`,p={completionTokens:void 0,completionTokensDetails:{reasoningTokens:void 0,acceptedPredictionTokens:void 0,rejectedPredictionTokens:void 0},promptTokens:void 0,promptTokensDetails:{cachedTokens:void 0},totalTokens:void 0},m=!0,h=this.providerOptionsName,g=!1,_=!1;return{stream:l.pipeThrough(new TransformStream({start(e){e.enqueue({type:`stream-start`,warnings:i})},transform(n,r){var i,a,o,c,l,h,v,y,b,x,S,C,w;if(t.includeRawChunks&&r.enqueue({type:`raw`,rawValue:n.rawValue}),!n.success){f=`error`,r.enqueue({type:`error`,error:n.error});return}let T=n.value;if(s?.processChunk(n.rawValue),`error`in T){f=`error`,r.enqueue({type:`error`,error:T.error.message});return}if(m&&(m=!1,r.enqueue({type:`response-metadata`,...R(T)})),T.usage!=null){let{prompt_tokens:e,completion_tokens:t,total_tokens:n,prompt_tokens_details:r,completion_tokens_details:i}=T.usage;p.promptTokens=e??void 0,p.completionTokens=t??void 0,p.totalTokens=n??void 0,i?.reasoning_tokens!=null&&(p.completionTokensDetails.reasoningTokens=i?.reasoning_tokens),i?.accepted_prediction_tokens!=null&&(p.completionTokensDetails.acceptedPredictionTokens=i?.accepted_prediction_tokens),i?.rejected_prediction_tokens!=null&&(p.completionTokensDetails.rejectedPredictionTokens=i?.rejected_prediction_tokens),r?.cached_tokens!=null&&(p.promptTokensDetails.cachedTokens=r?.cached_tokens)}let E=T.choices[0];if(E?.finish_reason!=null&&(f=z(E.finish_reason)),E?.delta==null)return;let D=E.delta,O=(i=D.reasoning_content)??D.reasoning;if(O&&(g||=(r.enqueue({type:`reasoning-start`,id:`reasoning-0`}),!0),r.enqueue({type:`reasoning-delta`,id:`reasoning-0`,delta:O})),D.content&&(_||=(r.enqueue({type:`text-start`,id:`txt-0`}),!0),r.enqueue({type:`text-delta`,id:`txt-0`,delta:D.content})),D.tool_calls!=null)for(let t of D.tool_calls){let n=t.index;if(u[n]==null){if(t.id==null)throw new e.InvalidResponseDataError({data:t,message:`Expected 'id' to be a string.`});if((a=t.function)?.name==null)throw new e.InvalidResponseDataError({data:t,message:`Expected 'function.name' to be a string.`});r.enqueue({type:`tool-input-start`,id:t.id,toolName:t.function.name}),u[n]={id:t.id,type:`function`,function:{name:t.function.name,arguments:(o=t.function.arguments)??``},hasFinished:!1};let i=u[n];(c=i.function)?.name!=null&&(l=i.function)?.arguments!=null&&(i.function.arguments.length>0&&r.enqueue({type:`tool-input-delta`,id:i.id,delta:i.function.arguments}),A(i.function.arguments)&&(r.enqueue({type:`tool-input-end`,id:i.id}),r.enqueue({type:`tool-call`,toolCallId:(h=i.id)??d(),toolName:i.function.name,input:i.function.arguments}),i.hasFinished=!0));continue}let i=u[n];if(i.hasFinished)continue;(v=t.function)?.arguments!=null&&(i.function.arguments+=(b=(y=t.function)?.arguments)??``),r.enqueue({type:`tool-input-delta`,id:i.id,delta:(x=t.function.arguments)??``}),(S=i.function)?.name!=null&&(C=i.function)?.arguments!=null&&A(i.function.arguments)&&(r.enqueue({type:`tool-input-end`,id:i.id}),r.enqueue({type:`tool-call`,toolCallId:(w=i.id)??d(),toolName:i.function.name,input:i.function.arguments}),i.hasFinished=!0)}},flush(e){var t,n,r,i,a,o;g&&e.enqueue({type:`reasoning-end`,id:`reasoning-0`}),_&&e.enqueue({type:`text-end`,id:`txt-0`});for(let n of u.filter(e=>!e.hasFinished))e.enqueue({type:`tool-input-end`,id:n.id}),e.enqueue({type:`tool-call`,toolCallId:(t=n.id)??d(),toolName:n.function.name,input:n.function.arguments});let c={[h]:{},...s?.buildMetadata()};p.completionTokensDetails.acceptedPredictionTokens!=null&&(c[h].acceptedPredictionTokens=p.completionTokensDetails.acceptedPredictionTokens),p.completionTokensDetails.rejectedPredictionTokens!=null&&(c[h].rejectedPredictionTokens=p.completionTokensDetails.rejectedPredictionTokens),e.enqueue({type:`finish`,finishReason:f,usage:{inputTokens:(n=p.promptTokens)??void 0,outputTokens:(r=p.completionTokens)??void 0,totalTokens:(i=p.totalTokens)??void 0,reasoningTokens:(a=p.completionTokensDetails.reasoningTokens)??void 0,cachedInputTokens:(o=p.promptTokensDetails.cachedTokens)??void 0},providerMetadata:c})}})),request:{body:o},response:{headers:c}}}},H=t.z.object({prompt_tokens:t.z.number().nullish(),completion_tokens:t.z.number().nullish(),total_tokens:t.z.number().nullish(),prompt_tokens_details:t.z.object({cached_tokens:t.z.number().nullish()}).nullish(),completion_tokens_details:t.z.object({reasoning_tokens:t.z.number().nullish(),accepted_prediction_tokens:t.z.number().nullish(),rejected_prediction_tokens:t.z.number().nullish()}).nullish()}).nullish(),pe=t.z.object({id:t.z.string().nullish(),created:t.z.number().nullish(),model:t.z.string().nullish(),choices:t.z.array(t.z.object({message:t.z.object({role:t.z.literal(`assistant`).nullish(),content:t.z.string().nullish(),reasoning_content:t.z.string().nullish(),reasoning:t.z.string().nullish(),tool_calls:t.z.array(t.z.object({id:t.z.string().nullish(),function:t.z.object({name:t.z.string(),arguments:t.z.string()})})).nullish()}),finish_reason:t.z.string().nullish()})),usage:H}),me=e=>t.z.union([t.z.object({id:t.z.string().nullish(),created:t.z.number().nullish(),model:t.z.string().nullish(),choices:t.z.array(t.z.object({delta:t.z.object({role:t.z.enum([`assistant`]).nullish(),content:t.z.string().nullish(),reasoning_content:t.z.string().nullish(),reasoning:t.z.string().nullish(),tool_calls:t.z.array(t.z.object({index:t.z.number(),id:t.z.string().nullish(),function:t.z.object({name:t.z.string().nullish(),arguments:t.z.string().nullish()})})).nullish()}).nullish(),finish_reason:t.z.string().nullish()})),usage:H}),e]);function he({prompt:t,user:n=`user`,assistant:r=`assistant`}){let i=``;t[0].role===`system`&&(i+=`${t[0].content}
2
2
 
3
- `)}})).pipeThrough(new TextEncoderStream),{headers:x})}async function y(e,n){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});if(!n.experimental_provideCompletions)return new Response(`Completions not supported`,{status:404});let r;try{r=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await n.experimental_provideCompletions({messages:r.messages,input:r.input,caret:r.caret,selection:r.selection})}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}let a=await i;return a instanceof ReadableStream?new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
3
+ `,t=t.slice(1));for(let{role:a,content:o}of t)switch(a){case`system`:throw new e.InvalidPromptError({message:"Unexpected system message in prompt: ${content}",prompt:t});case`user`:{let e=o.map(e=>{switch(e.type){case`text`:return e.text}}).filter(Boolean).join(``);i+=`${n}:
4
+ ${e}
4
5
 
5
- `)}})).pipeThrough(new TextEncoderStream),{headers:x}):new Response(JSON.stringify(a),{headers:{"content-type":`application/json`}})}function b(t,n){return t.headers.set(e.StreamResponseFormatHeader,n),t}const x={"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-accel-buffering":`no`};var S={agent:_,chat:m,storage:h,tools:g};exports.agent=_,exports.chat=m,exports.default=S,exports.storage=h,exports.tools=g,exports.withResponseFormat=b;
6
+ `;break}case`assistant`:{let t=o.map(t=>{switch(t.type){case`text`:return t.text;case`tool-call`:throw new e.UnsupportedFunctionalityError({functionality:`tool-call messages`})}}).join(``);i+=`${r}:
7
+ ${t}
8
+
9
+ `;break}case`tool`:throw new e.UnsupportedFunctionalityError({functionality:`tool messages`});default:{let e=a;throw Error(`Unsupported role: ${e}`)}}return i+=`${r}:
10
+ `,{prompt:i,stopSequences:[`
11
+ ${n}:`]}}function U({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n==null?void 0:new Date(n*1e3)}}function W(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`unknown`}}var ge=t.z.object({echo:t.z.boolean().optional(),logitBias:t.z.record(t.z.string(),t.z.number()).optional(),suffix:t.z.string().optional(),user:t.z.string().optional()}),_e=class{constructor(e,t){this.specificationVersion=`v2`;var n;this.modelId=e,this.config=t;let r=(n=t.errorStructure)??V;this.chunkSchema=ye(r.errorSchema),this.failedResponseHandler=P(r)}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}get supportedUrls(){var e,t,n;return(n=(t=(e=this.config).supportedUrls)?.call(e))??{}}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,stopSequences:s,responseFormat:c,seed:l,providerOptions:u,tools:d,toolChoice:f}){var p;let m=[],h=(p=await M({provider:this.providerOptionsName,providerOptions:u,schema:ge}))??{};i!=null&&m.push({type:`unsupported-setting`,setting:`topK`}),d?.length&&m.push({type:`unsupported-setting`,setting:`tools`}),f!=null&&m.push({type:`unsupported-setting`,setting:`toolChoice`}),c!=null&&c.type!==`text`&&m.push({type:`unsupported-setting`,setting:`responseFormat`,details:`JSON response format is not supported.`});let{prompt:g,stopSequences:_}=he({prompt:e}),v=[..._??[],...s??[]];return{args:{model:this.modelId,echo:h.echo,logit_bias:h.logitBias,suffix:h.suffix,user:h.user,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,seed:l,...u?.[this.providerOptionsName],prompt:g,stop:v.length>0?v:void 0},warnings:m}}async doGenerate(e){var t,n,r,i,o,s;let{args:c,warnings:l}=await this.getArgs(e),{responseHeaders:u,value:d,rawValue:f}=await N({url:this.config.url({path:`/completions`,modelId:this.modelId}),headers:a(this.config.headers(),e.headers),body:c,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:I(ve),abortSignal:e.abortSignal,fetch:this.config.fetch}),p=d.choices[0],m=[];return p.text!=null&&p.text.length>0&&m.push({type:`text`,text:p.text}),{content:m,usage:{inputTokens:(n=(t=d.usage)?.prompt_tokens)??void 0,outputTokens:(i=(r=d.usage)?.completion_tokens)??void 0,totalTokens:(s=(o=d.usage)?.total_tokens)??void 0},finishReason:W(p.finish_reason),request:{body:c},response:{...U(d),headers:u,body:f},warnings:l}}async doStream(e){let{args:t,warnings:n}=await this.getArgs(e),r={...t,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},{responseHeaders:i,value:o}=await N({url:this.config.url({path:`/completions`,modelId:this.modelId}),headers:a(this.config.headers(),e.headers),body:r,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:F(this.chunkSchema),abortSignal:e.abortSignal,fetch:this.config.fetch}),s=`unknown`,c={inputTokens:void 0,outputTokens:void 0,totalTokens:void 0},l=!0;return{stream:o.pipeThrough(new TransformStream({start(e){e.enqueue({type:`stream-start`,warnings:n})},transform(t,n){var r,i,a;if(e.includeRawChunks&&n.enqueue({type:`raw`,rawValue:t.rawValue}),!t.success){s=`error`,n.enqueue({type:`error`,error:t.error});return}let o=t.value;if(`error`in o){s=`error`,n.enqueue({type:`error`,error:o.error});return}l&&(l=!1,n.enqueue({type:`response-metadata`,...U(o)}),n.enqueue({type:`text-start`,id:`0`})),o.usage!=null&&(c.inputTokens=(r=o.usage.prompt_tokens)??void 0,c.outputTokens=(i=o.usage.completion_tokens)??void 0,c.totalTokens=(a=o.usage.total_tokens)??void 0);let u=o.choices[0];u?.finish_reason!=null&&(s=W(u.finish_reason)),u?.text!=null&&n.enqueue({type:`text-delta`,id:`0`,delta:u.text})},flush(e){l||e.enqueue({type:`text-end`,id:`0`}),e.enqueue({type:`finish`,finishReason:s,usage:c})}})),request:{body:r},response:{headers:i}}}},G=t.z.object({prompt_tokens:t.z.number(),completion_tokens:t.z.number(),total_tokens:t.z.number()}),ve=t.z.object({id:t.z.string().nullish(),created:t.z.number().nullish(),model:t.z.string().nullish(),choices:t.z.array(t.z.object({text:t.z.string(),finish_reason:t.z.string()})),usage:G.nullish()}),ye=e=>t.z.union([t.z.object({id:t.z.string().nullish(),created:t.z.number().nullish(),model:t.z.string().nullish(),choices:t.z.array(t.z.object({text:t.z.string(),finish_reason:t.z.string().nullish(),index:t.z.number()})),usage:G.nullish()}),e]),K=t.z.object({dimensions:t.z.number().optional(),user:t.z.string().optional()}),be=class{constructor(e,t){this.specificationVersion=`v2`,this.modelId=e,this.config=t}get provider(){return this.config.provider}get maxEmbeddingsPerCall(){var e;return(e=this.config.maxEmbeddingsPerCall)??2048}get supportsParallelCalls(){var e;return(e=this.config.supportsParallelCalls)??!0}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}async doEmbed({values:t,headers:n,abortSignal:r,providerOptions:i}){var o,s,c;let l=Object.assign((o=await M({provider:`openai-compatible`,providerOptions:i,schema:K}))??{},(s=await M({provider:this.providerOptionsName,providerOptions:i,schema:K}))??{});if(t.length>this.maxEmbeddingsPerCall)throw new e.TooManyEmbeddingValuesForCallError({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:t});let{responseHeaders:u,value:d,rawValue:f}=await N({url:this.config.url({path:`/embeddings`,modelId:this.modelId}),headers:a(this.config.headers(),n),body:{model:this.modelId,input:t,encoding_format:`float`,dimensions:l.dimensions,user:l.user},failedResponseHandler:P((c=this.config.errorStructure)??V),successfulResponseHandler:I(xe),abortSignal:r,fetch:this.config.fetch});return{embeddings:d.data.map(e=>e.embedding),usage:d.usage?{tokens:d.usage.prompt_tokens}:void 0,providerMetadata:d.providerMetadata,response:{headers:u,body:f}}}},xe=t.z.object({data:t.z.array(t.z.object({embedding:t.z.array(t.z.number())})),usage:t.z.object({prompt_tokens:t.z.number()}).nullish(),providerMetadata:t.z.record(t.z.string(),t.z.record(t.z.string(),t.z.any())).optional()}),Se=class{constructor(e,t){this.modelId=e,this.config=t,this.specificationVersion=`v2`,this.maxImagesPerCall=10}get provider(){return this.config.provider}async doGenerate({prompt:e,n:t,size:n,aspectRatio:r,seed:i,providerOptions:o,headers:s,abortSignal:c}){var l,u,d,f,p;let m=[];r!=null&&m.push({type:`unsupported-setting`,setting:`aspectRatio`,details:"This model does not support aspect ratio. Use `size` instead."}),i!=null&&m.push({type:`unsupported-setting`,setting:`seed`});let h=(d=(u=(l=this.config._internal)?.currentDate)?.call(l))??new Date,{value:g,responseHeaders:_}=await N({url:this.config.url({path:`/images/generations`,modelId:this.modelId}),headers:a(this.config.headers(),s),body:{model:this.modelId,prompt:e,n:t,size:n,...(f=o.openai)??{},response_format:`b64_json`},failedResponseHandler:P((p=this.config.errorStructure)??V),successfulResponseHandler:I(Ce),abortSignal:c,fetch:this.config.fetch});return{images:g.data.map(e=>e.b64_json),warnings:m,response:{timestamp:h,modelId:this.modelId,headers:_}}}},Ce=t.z.object({data:t.z.array(t.z.object({b64_json:t.z.string()}))}),we=`1.0.19`;function Te(e){let t=ce(e.baseURL),n=e.name,r={...e.apiKey&&{Authorization:`Bearer ${e.apiKey}`},...e.headers},i=()=>l(r,`ai-sdk/openai-compatible/${we}`),a=r=>({provider:`${n}.${r}`,url:({path:n})=>{let r=new URL(`${t}${n}`);return e.queryParams&&(r.search=new URLSearchParams(e.queryParams).toString()),r.toString()},headers:i,fetch:e.fetch}),o=e=>s(e),s=t=>new fe(t,{...a(`chat`),includeUsage:e.includeUsage,supportsStructuredOutputs:e.supportsStructuredOutputs}),c=t=>new _e(t,{...a(`completion`),includeUsage:e.includeUsage}),u=e=>new be(e,{...a(`embedding`)}),d=e=>new Se(e,a(`image`)),f=e=>o(e);return f.languageModel=o,f.chatModel=s,f.completionModel=c,f.textEmbeddingModel=u,f.imageModel=d,f}var Ee=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),q=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},J=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){if(r===void 0)continue;if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r)}return t},De=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},Y=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function X(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Oe(e,t){if(!X(e)&&!X(t))return t;let n={...e};for(let e in t){let r=t[e];X(n[e])&&X(r)?n[e]=Oe(n[e],r):n[e]=r}return n}var ke=(e,t)=>{let n=new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return ke(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}});return n},Ae=class{url;method;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t){this.url=e,this.method=t}fetch=async(t,n)=>{if(t){if(t.query&&(this.queryParams=J(t.query)),t.form){let e=new FormData;for(let[n,r]of Object.entries(t.form))if(Array.isArray(r))for(let t of r)e.append(n,t);else e.append(n,r);this.rBody=e}t.json&&(this.rBody=JSON.stringify(t.json),this.cType=`application/json`),t.param&&(this.pathParams=t.param)}let r=this.method.toUpperCase(),i={...t?.header,...typeof n?.headers==`function`?await n.headers():n?.headers};if(t?.cookie){let n=[];for(let[r,i]of Object.entries(t.cookie))n.push(e.serialize(r,i,{path:`/`}));i.Cookie=n.join(`,`)}this.cType&&(i[`Content-Type`]=this.cType);let a=new Headers(i??void 0),o=this.url;o=Y(o),o=q(o,this.pathParams),this.queryParams&&(o=o+`?`+this.queryParams.toString()),r=this.method.toUpperCase();let s=!(r===`GET`||r===`HEAD`);return(n?.fetch||fetch)(o,{body:s?this.rBody:void 0,method:r,headers:a,...n?.init})}},je=(e,t)=>ke(function n(r){let i=[...r.path],a=i.slice(-3).reverse();if(a[0]===`toString`)return a[1]===`name`?a[2]||``:n.toString();if(a[0]===`valueOf`)return a[1]===`name`?a[2]||``:n;let o=``;if(/^\$/.test(a[0])){let e=i.pop();e&&(o=e.replace(/^\$/,``))}let s=i.join(`/`),c=Ee(e,s);if(o===`url`){let e=c;return r.args[0]&&(r.args[0].param&&(e=q(c,r.args[0].param)),r.args[0].query&&(e=e+`?`+J(r.args[0].query).toString())),e=Y(e),new URL(e)}if(o===`ws`){let e=De(r.args[0]&&r.args[0].param?q(c,r.args[0].param):c,`ws`),n=new URL(e),i=r.args[0]?.query;i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)});let a=(...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e);return a(n.toString())}let l=new Ae(c,o);if(o){t??={};let e=Oe(t,{...r.args[1]});return l.fetch(r.args[0],e)}return l},[]);const Me=process.env[e.APIServerURLEnvironmentVariable],Z=je(Me??``,{fetch:Me?void 0:async()=>{throw console.warn(`Your code is attempting to use the Blink API server, but no API server is configured for this Blink agent.`),Error(`No API server is configured for this Blink agent. External APIs are not available.`)}}),Ne=Object.freeze({upsert:async e=>{let t=await Z.chat[`:id`].$post({param:{id:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}return{id:e}},message:async(e,t,n)=>{let r=await Z.chat[`:id`].sendMessages.$post({param:{id:e},json:{messages:[t],behavior:n?.behavior??`enqueue`}});if(r.status!==204){let e=await r.json();throw Error(e.error)}}}),Pe=Object.freeze({kv:Object.freeze({get:async e=>{let t=await Z.storage.kv[`:key`].$get({param:{key:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}let n=await t.json();return n.value},set:async(e,t)=>{let n=await Z.storage.kv[`:key`].$post({param:{key:e},json:{value:t}});if(n.status!==204){let e=await n.json();throw Error(e.error)}},del:async e=>{let t=await Z.storage.kv[`:key`].$delete({param:{key:e}});if(t.status!==204){let e=await t.json();throw Error(e.error)}}})});var Fe=class extends Error{constructor(e,t){super(e),this.response=t}};const Q={withContext(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.withContext(t)}return n},with(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.withContext(t)}return n},async withApproval(t){let n={};for(let[e,r]of Object.entries(t.tools))n[e]={...r,execute:()=>{let e={type:`tool-approval`,outcome:`pending`};return e}};let r=t.messages[t.messages.length-1];if(!r?.parts)return n;let a=[];for(let n of r.parts){if(!e.isToolUIPart(n))continue;let r=e.getToolName(n),i=t.tools[r];if(!i||n.state!==`output-available`||!i.execute||!Ie(n.output))continue;n.output.outcome===`approved`&&a.push({toolName:e.getToolName(n),tool:i,input:n.input,toolCallId:n.toolCallId})}if(a.length>0){let n=e.createUIMessageStream({execute:async({writer:n})=>{n.write({type:`start-step`}),await Promise.all(a.map(async r=>{if(!r.tool.execute)throw Error(`Tool does not support execute.`);n.write({type:`tool-input-available`,toolCallId:r.toolCallId,toolName:r.toolName,input:r.input});try{let a=await r.tool.execute(r.input,{toolCallId:r.toolCallId,messages:e.convertToModelMessages(t.messages,{tools:t.tools}),abortSignal:t.abortSignal});if(i(a))for await(let e of a)n.write({type:`tool-output-available`,toolCallId:r.toolCallId,output:e,preliminary:!0});n.write({type:`tool-output-available`,toolCallId:r.toolCallId,output:a})}catch(e){n.write({type:`tool-output-error`,toolCallId:r.toolCallId,errorText:e instanceof Error?e.message:String(e)})}})),n.write({type:`finish`})}});throw new Fe(`Executing tools`,n)}return n},prefix(e,t){let n={};for(let[r,i]of Object.entries(e))n[`${t}${r}`]=i;return n}};function Ie(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`tool-approval`}function Le(e){return{version:`v0`,supportsRequests:e.onRequest!==void 0,supportsCompletions:e.experimental_provideCompletions!==void 0,fetch:async t=>{let n=new URL(t.url);if(n.pathname.startsWith(`/_agent/`))switch(n.pathname){case`/_agent/send-messages`:return Re(t,e);case`/_agent/completions`:return ze(t,e);case`/_agent/health`:return new Response(`OK`,{status:200});default:return new Response(`Not found`,{status:404})}if(e.onRequest){let n;try{n=await e.onRequest(t)}catch(e){return new Response(JSON.stringify({error:r.default.inspect(e)}),{status:500})}if(n)return n}return new Response(`Not found`,{status:404})}}}async function Re(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await t.sendMessages({messages:n.messages,chat:n.chat})}catch(e){if(e instanceof Fe)i=e.response;else return new Response(JSON.stringify({error:r.default.inspect(e)}),{status:500})}if(i instanceof Response)return i;let a;if(i instanceof ReadableStream)a=i;else{if(typeof i!=`object`||!(`toUIMessageStream`in i))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);a=i.toUIMessageStream()}return new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
12
+
13
+ `)}})).pipeThrough(new TextEncoderStream),{headers:$})}async function ze(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});if(!t.experimental_provideCompletions)return new Response(`Completions not supported`,{status:404});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await t.experimental_provideCompletions({messages:n.messages,input:n.input,caret:n.caret,selection:n.selection})}catch(e){return new Response(JSON.stringify({error:r.default.inspect(e)}),{status:500})}let a=await i;return a instanceof ReadableStream?new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
14
+
15
+ `)}})).pipeThrough(new TextEncoderStream),{headers:$}):new Response(JSON.stringify(a),{headers:{"content-type":`application/json`}})}function Be(t,n){return t.headers.set(e.StreamResponseFormatHeader,n),t}const $={"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-accel-buffering":`no`},Ve=e=>{let t=process.env.BLINK_TOKEN??process.env.BLINK_INVOCATION_AUTH_TOKEN;if(!t)throw Error(`You must be authenticated with Blink to use the model gateway.
16
+
17
+ Feel free to use other providers like OpenAI, Anthropic, or Google.`);return Te({baseURL:`https://blink.so/api/ai-gateway/v1`,apiKey:t,name:e,headers:{BLINK_ORGANIZATION_ID:`44d4baab-ed54-453f-8ffc-a8c9f3d05483`}})(e)};var He={agent:Le,chat:Ne,storage:Pe,tools:Q};exports.agent=Le,exports.chat=Ne,exports.default=He,exports.isToolApprovalOutput=Ie,exports.model=Ve,exports.storage=Pe,exports.tools=Q,exports.withResponseFormat=Be;
@@ -1,3 +1,4 @@
1
+ import * as _ai_sdk_provider0 from "@ai-sdk/provider";
1
2
  import * as ai0 from "ai";
2
3
  import { AsyncIterableStream, InferUIMessageChunk, Tool, ToolSet, UIDataTypes, UIMessage, UIMessagePart, UITools } from "ai";
3
4
 
@@ -27,27 +28,48 @@ declare const chat: Readonly<{
27
28
  //#endregion
28
29
  //#region src/api/tools.d.ts
29
30
  /**
30
- * ToolWith is a tool that supports the "with" method.
31
+ * ToolWithContext is a tool that supports the "withContext" method.
31
32
  *
32
33
  * @param CONTEXT The context type.
33
34
  * @param TOOL The tool type.
34
35
  * @returns The tool with the given context.
35
36
  */
36
- type ToolWith<CONTEXT, TOOL extends Tool> = TOOL & {
37
- with(context: CONTEXT): TOOL;
37
+ type ToolWithContext<CONTEXT, TOOL extends Tool> = TOOL & {
38
+ withContext(context: CONTEXT): TOOL;
38
39
  };
39
40
  /**
40
41
  * Tools are helpers for managing tools.
41
42
  */
42
43
  declare const tools: {
43
44
  /**
44
- * with adds context to a set of tools that supports the "with" method.
45
+ * withContext adds context to a set of tools that supports the "withContext" method.
45
46
  *
46
47
  * @param context
47
48
  * @param tools
48
49
  * @returns
49
50
  */
51
+ withContext<const TOOLS extends ToolsWithContext>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: Tool };
52
+ /**
53
+ * @internal
54
+ * @deprecated Use withContext instead - it's the same thing.
55
+ */
50
56
  with<const TOOLS extends ToolsWithContext>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: Tool };
57
+ /**
58
+ * withApproval ensures a set of tools need explicit user approval
59
+ * before they are executed.
60
+ *
61
+ * This works by replacing the execution of all provided tools with
62
+ * special output that interfaces must handle.
63
+ *
64
+ * On approval, the tool will be executed with the verbatim input.
65
+ *
66
+ * @returns Tools that should be sent in `streamText`.
67
+ */
68
+ withApproval<TOOLS extends ToolSet, MESSAGE extends UIMessage>(options: {
69
+ messages: MESSAGE[];
70
+ tools: TOOLS;
71
+ abortSignal?: AbortSignal;
72
+ }): Promise<TOOLS>;
51
73
  /**
52
74
  * prefix adds a prefix to all the tools in a tool set.
53
75
  *
@@ -58,11 +80,25 @@ declare const tools: {
58
80
  prefix(tools: ToolSet, prefix: string): ToolSet;
59
81
  };
60
82
  type ToolsWithContext = Record<string, Tool & {
61
- with(context: unknown): Tool;
83
+ withContext(context: unknown): Tool;
62
84
  }>;
63
85
  type ContextFromTools<TOOLS extends ToolsWithContext> = TOOLS[keyof TOOLS] extends {
64
- with(context: infer C): any;
86
+ withContext(context: infer C): any;
65
87
  } ? C : never;
88
+ /**
89
+ * ToolApprovalOutput is the output of a tool that requires approval.
90
+ *
91
+ * This should be consumed by the UI to display an approval prompt.
92
+ */
93
+ interface ToolApprovalOutput {
94
+ type: "tool-approval";
95
+ outcome: "pending" | "approved" | "rejected";
96
+ reason?: string;
97
+ }
98
+ /**
99
+ * isToolApprovalOutput checks if an output is a tool approval output.
100
+ */
101
+ declare function isToolApprovalOutput(output: unknown): output is ToolApprovalOutput;
66
102
  //#endregion
67
103
  //#region src/api/storage.d.ts
68
104
  /**
@@ -192,6 +228,7 @@ declare function withResponseFormat(response: Response, format: StreamResponseFo
192
228
  * @param modelName - See: https://vercel.com/ai-gateway/models
193
229
  * @returns An AI SDK model that is authenticated through Blink.
194
230
  */
231
+ declare const model: (modelName: string) => _ai_sdk_provider0.LanguageModelV2;
195
232
  declare const _default: {
196
233
  agent: typeof agent;
197
234
  chat: Readonly<{
@@ -206,13 +243,23 @@ declare const _default: {
206
243
  }>;
207
244
  }>;
208
245
  tools: {
246
+ withContext<const TOOLS extends {
247
+ [x: string]: ai0.Tool & {
248
+ withContext(context: unknown): ai0.Tool;
249
+ };
250
+ }>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: ai0.Tool };
209
251
  with<const TOOLS extends {
210
252
  [x: string]: ai0.Tool & {
211
- with(context: unknown): ai0.Tool;
253
+ withContext(context: unknown): ai0.Tool;
212
254
  };
213
255
  }>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: ai0.Tool };
256
+ withApproval<TOOLS extends ai0.ToolSet, MESSAGE extends UIMessage>(options: {
257
+ messages: MESSAGE[];
258
+ tools: TOOLS;
259
+ abortSignal?: AbortSignal;
260
+ }): Promise<TOOLS>;
214
261
  prefix(tools: ai0.ToolSet, prefix: string): ai0.ToolSet;
215
262
  };
216
263
  };
217
264
  //#endregion
218
- export { Agent, AgentDefaultExport, Chat, ContextFromTools, ExperimentalCompletion, ExperimentalProvideCompletionsOptions, ExperimentalProvideCompletionsResponse, Message, MessageOptions, SendMessagesOptions, SendMessagesResponse, StreamResponseFormat, ToolWith, agent, chat, _default as default, storage, tools, withResponseFormat };
265
+ export { Agent, AgentDefaultExport, Chat, ContextFromTools, ExperimentalCompletion, ExperimentalProvideCompletionsOptions, ExperimentalProvideCompletionsResponse, Message, MessageOptions, SendMessagesOptions, SendMessagesResponse, StreamResponseFormat, ToolApprovalOutput, ToolWithContext, agent, chat, _default as default, isToolApprovalOutput, model, storage, tools, withResponseFormat };
@@ -1,3 +1,4 @@
1
+ import * as _ai_sdk_provider0 from "@ai-sdk/provider";
1
2
  import * as ai0 from "ai";
2
3
  import { AsyncIterableStream, InferUIMessageChunk, Tool, ToolSet, UIDataTypes, UIMessage, UIMessagePart, UITools } from "ai";
3
4
 
@@ -27,27 +28,48 @@ declare const chat: Readonly<{
27
28
  //#endregion
28
29
  //#region src/api/tools.d.ts
29
30
  /**
30
- * ToolWith is a tool that supports the "with" method.
31
+ * ToolWithContext is a tool that supports the "withContext" method.
31
32
  *
32
33
  * @param CONTEXT The context type.
33
34
  * @param TOOL The tool type.
34
35
  * @returns The tool with the given context.
35
36
  */
36
- type ToolWith<CONTEXT, TOOL extends Tool> = TOOL & {
37
- with(context: CONTEXT): TOOL;
37
+ type ToolWithContext<CONTEXT, TOOL extends Tool> = TOOL & {
38
+ withContext(context: CONTEXT): TOOL;
38
39
  };
39
40
  /**
40
41
  * Tools are helpers for managing tools.
41
42
  */
42
43
  declare const tools: {
43
44
  /**
44
- * with adds context to a set of tools that supports the "with" method.
45
+ * withContext adds context to a set of tools that supports the "withContext" method.
45
46
  *
46
47
  * @param context
47
48
  * @param tools
48
49
  * @returns
49
50
  */
51
+ withContext<const TOOLS extends ToolsWithContext>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: Tool };
52
+ /**
53
+ * @internal
54
+ * @deprecated Use withContext instead - it's the same thing.
55
+ */
50
56
  with<const TOOLS extends ToolsWithContext>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: Tool };
57
+ /**
58
+ * withApproval ensures a set of tools need explicit user approval
59
+ * before they are executed.
60
+ *
61
+ * This works by replacing the execution of all provided tools with
62
+ * special output that interfaces must handle.
63
+ *
64
+ * On approval, the tool will be executed with the verbatim input.
65
+ *
66
+ * @returns Tools that should be sent in `streamText`.
67
+ */
68
+ withApproval<TOOLS extends ToolSet, MESSAGE extends UIMessage>(options: {
69
+ messages: MESSAGE[];
70
+ tools: TOOLS;
71
+ abortSignal?: AbortSignal;
72
+ }): Promise<TOOLS>;
51
73
  /**
52
74
  * prefix adds a prefix to all the tools in a tool set.
53
75
  *
@@ -58,11 +80,25 @@ declare const tools: {
58
80
  prefix(tools: ToolSet, prefix: string): ToolSet;
59
81
  };
60
82
  type ToolsWithContext = Record<string, Tool & {
61
- with(context: unknown): Tool;
83
+ withContext(context: unknown): Tool;
62
84
  }>;
63
85
  type ContextFromTools<TOOLS extends ToolsWithContext> = TOOLS[keyof TOOLS] extends {
64
- with(context: infer C): any;
86
+ withContext(context: infer C): any;
65
87
  } ? C : never;
88
+ /**
89
+ * ToolApprovalOutput is the output of a tool that requires approval.
90
+ *
91
+ * This should be consumed by the UI to display an approval prompt.
92
+ */
93
+ interface ToolApprovalOutput {
94
+ type: "tool-approval";
95
+ outcome: "pending" | "approved" | "rejected";
96
+ reason?: string;
97
+ }
98
+ /**
99
+ * isToolApprovalOutput checks if an output is a tool approval output.
100
+ */
101
+ declare function isToolApprovalOutput(output: unknown): output is ToolApprovalOutput;
66
102
  //#endregion
67
103
  //#region src/api/storage.d.ts
68
104
  /**
@@ -192,6 +228,7 @@ declare function withResponseFormat(response: Response, format: StreamResponseFo
192
228
  * @param modelName - See: https://vercel.com/ai-gateway/models
193
229
  * @returns An AI SDK model that is authenticated through Blink.
194
230
  */
231
+ declare const model: (modelName: string) => _ai_sdk_provider0.LanguageModelV2;
195
232
  declare const _default: {
196
233
  agent: typeof agent;
197
234
  chat: Readonly<{
@@ -206,13 +243,23 @@ declare const _default: {
206
243
  }>;
207
244
  }>;
208
245
  tools: {
246
+ withContext<const TOOLS extends {
247
+ [x: string]: ai0.Tool & {
248
+ withContext(context: unknown): ai0.Tool;
249
+ };
250
+ }>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: ai0.Tool };
209
251
  with<const TOOLS extends {
210
252
  [x: string]: ai0.Tool & {
211
- with(context: unknown): ai0.Tool;
253
+ withContext(context: unknown): ai0.Tool;
212
254
  };
213
255
  }>(tools: TOOLS, context: ContextFromTools<TOOLS>): { [K in keyof TOOLS]: ai0.Tool };
256
+ withApproval<TOOLS extends ai0.ToolSet, MESSAGE extends UIMessage>(options: {
257
+ messages: MESSAGE[];
258
+ tools: TOOLS;
259
+ abortSignal?: AbortSignal;
260
+ }): Promise<TOOLS>;
214
261
  prefix(tools: ai0.ToolSet, prefix: string): ai0.ToolSet;
215
262
  };
216
263
  };
217
264
  //#endregion
218
- export { Agent, AgentDefaultExport, Chat, ContextFromTools, ExperimentalCompletion, ExperimentalProvideCompletionsOptions, ExperimentalProvideCompletionsResponse, Message, MessageOptions, SendMessagesOptions, SendMessagesResponse, StreamResponseFormat, ToolWith, agent, chat, _default as default, storage, tools, withResponseFormat };
265
+ export { Agent, AgentDefaultExport, Chat, ContextFromTools, ExperimentalCompletion, ExperimentalProvideCompletionsOptions, ExperimentalProvideCompletionsResponse, Message, MessageOptions, SendMessagesOptions, SendMessagesResponse, StreamResponseFormat, ToolApprovalOutput, ToolWithContext, agent, chat, _default as default, isToolApprovalOutput, model, storage, tools, withResponseFormat };
package/dist/api/index.js CHANGED
@@ -1,5 +1,17 @@
1
- import{APIServerURLEnvironmentVariable as e,StreamResponseFormatHeader as t,serialize as n}from"../cookie-CyZUsiHM.js";import r from"util";var i=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),a=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},o=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){if(r===void 0)continue;if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r)}return t},s=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},c=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function l(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function u(e,t){if(!l(e)&&!l(t))return t;let n={...e};for(let e in t){let r=t[e];l(n[e])&&l(r)?n[e]=u(n[e],r):n[e]=r}return n}var d=(e,t)=>{let n=new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return d(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}});return n},f=class{url;method;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t){this.url=e,this.method=t}fetch=async(e,t)=>{if(e){if(e.query&&(this.queryParams=o(e.query)),e.form){let t=new FormData;for(let[n,r]of Object.entries(e.form))if(Array.isArray(r))for(let e of r)t.append(n,e);else t.append(n,r);this.rBody=t}e.json&&(this.rBody=JSON.stringify(e.json),this.cType=`application/json`),e.param&&(this.pathParams=e.param)}let r=this.method.toUpperCase(),i={...e?.header,...typeof t?.headers==`function`?await t.headers():t?.headers};if(e?.cookie){let t=[];for(let[r,i]of Object.entries(e.cookie))t.push(n(r,i,{path:`/`}));i.Cookie=t.join(`,`)}this.cType&&(i[`Content-Type`]=this.cType);let s=new Headers(i??void 0),l=this.url;l=c(l),l=a(l,this.pathParams),this.queryParams&&(l=l+`?`+this.queryParams.toString()),r=this.method.toUpperCase();let u=!(r===`GET`||r===`HEAD`);return(t?.fetch||fetch)(l,{body:u?this.rBody:void 0,method:r,headers:s,...t?.init})}},p=(e,t)=>d(function n(r){let l=[...r.path],d=l.slice(-3).reverse();if(d[0]===`toString`)return d[1]===`name`?d[2]||``:n.toString();if(d[0]===`valueOf`)return d[1]===`name`?d[2]||``:n;let p=``;if(/^\$/.test(d[0])){let e=l.pop();e&&(p=e.replace(/^\$/,``))}let m=l.join(`/`),h=i(e,m);if(p===`url`){let e=h;return r.args[0]&&(r.args[0].param&&(e=a(h,r.args[0].param)),r.args[0].query&&(e=e+`?`+o(r.args[0].query).toString())),e=c(e),new URL(e)}if(p===`ws`){let e=s(r.args[0]&&r.args[0].param?a(h,r.args[0].param):h,`ws`),n=new URL(e),i=r.args[0]?.query;i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)});let o=(...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e);return o(n.toString())}let g=new f(h,p);if(p){t??={};let e=u(t,{...r.args[1]});return g.fetch(r.args[0],e)}return g},[]);const m=process.env[e],h=p(m??``,{fetch:m?void 0:async()=>{throw console.warn(`Your code is attempting to use the Blink API server, but no API server is configured for this Blink agent.`),Error(`No API server is configured for this Blink agent. External APIs are not available.`)}}),g=Object.freeze({upsert:async e=>{let t=await h.chat[`:id`].$post({param:{id:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}return{id:e}},message:async(e,t,n)=>{let r=await h.chat[`:id`].sendMessages.$post({param:{id:e},json:{messages:[t],behavior:n?.behavior??`enqueue`}});if(r.status!==204){let e=await r.json();throw Error(e.error)}}}),_=Object.freeze({kv:Object.freeze({get:async e=>{let t=await h.storage.kv[`:key`].$get({param:{key:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}let n=await t.json();return n.value},set:async(e,t)=>{let n=await h.storage.kv[`:key`].$post({param:{key:e},json:{value:t}});if(n.status!==204){let e=await n.json();throw Error(e.error)}},del:async e=>{let t=await h.storage.kv[`:key`].$delete({param:{key:e}});if(t.status!==204){let e=await t.json();throw Error(e.error)}}})}),v={with(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.with(t)}return n},prefix(e,t){let n={};for(let[r,i]of Object.entries(e))n[`${t}${r}`]=i;return n}};function y(e){return{version:`v0`,supportsRequests:e.onRequest!==void 0,supportsCompletions:e.experimental_provideCompletions!==void 0,fetch:async t=>{let n=new URL(t.url);if(n.pathname.startsWith(`/_agent/`))switch(n.pathname){case`/_agent/send-messages`:return b(t,e);case`/_agent/completions`:return x(t,e);case`/_agent/health`:return new Response(`OK`,{status:200});default:return new Response(`Not found`,{status:404})}if(e.onRequest){let n;try{n=await e.onRequest(t)}catch(e){return new Response(JSON.stringify({error:r.inspect(e)}),{status:500})}if(n)return n}return new Response(`Not found`,{status:404})}}}async function b(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await t.sendMessages({messages:n.messages,chat:n.chat})}catch(e){return new Response(JSON.stringify({error:r.inspect(e)}),{status:500})}if(i instanceof Response)return i;let a;if(i instanceof ReadableStream)a=i;else{if(typeof i!=`object`||!(`toUIMessageStream`in i))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);a=i.toUIMessageStream()}return new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
1
+ import{APICallError as e,APIServerURLEnvironmentVariable as t,EmptyResponseBodyError as n,EventSourceParserStream as r,InvalidArgumentError as i,InvalidPromptError as a,InvalidResponseDataError as o,JSONParseError as s,StreamResponseFormatHeader as c,TooManyEmbeddingValuesForCallError as l,TypeValidationError as u,UnsupportedFunctionalityError as d,convertToModelMessages as f,createUIMessageStream as p,getToolName as m,isToolUIPart as h,serialize as g}from"../cookie-CB9k3Awr.js";import{z as _}from"zod/v4";import{ZodFirstPartyTypeKind as v}from"zod/v3";import y from"util";function b(e){return typeof e==`object`&&!!e&&typeof e[Symbol.asyncIterator]==`function`}function x(...e){return e.reduce((e,t)=>({...e,...t??{}}),{})}function S(e){return Object.fromEntries([...e.headers])}function C(e=globalThis){var t,n,r;return e.window?`runtime/browser`:(t=e.navigator)?.userAgent?`runtime/${e.navigator.userAgent.toLowerCase()}`:(r=(n=e.process)?.versions)?.node?`runtime/node.js/${e.process.version.substring(0)}`:e.EdgeRuntime?`runtime/vercel-edge`:`runtime/unknown`}function w(e){return Object.fromEntries(Object.entries(e).filter(([e,t])=>t!=null))}function T(e,...t){let n=w(e??{}),r=new Headers(n),i=r.get(`user-agent`)||``;return r.set(`user-agent`,[i,...t].filter(Boolean).join(` `)),Object.fromEntries(r)}var E=({prefix:e,size:t=16,alphabet:n=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,separator:r=`-`}={})=>{let a=()=>{let e=n.length,r=Array(t);for(let i=0;i<t;i++)r[i]=n[Math.random()*e|0];return r.join(``)};if(e==null)return a;if(n.includes(r))throw new i({argument:`separator`,message:`The separator "${r}" must not be part of the alphabet "${n}".`});return()=>`${e}${r}${a()}`},D=E();function O(e){return(e instanceof Error||e instanceof DOMException)&&(e.name===`AbortError`||e.name===`ResponseAborted`||e.name===`TimeoutError`)}var k=[`fetch failed`,`failed to fetch`];function A({error:t,url:n,requestBodyValues:r}){if(O(t))return t;if(t instanceof TypeError&&k.includes(t.message.toLowerCase())){let i=t.cause;if(i!=null)return new e({message:`Cannot connect to API: ${i.message}`,cause:i,url:n,requestBodyValues:r,isRetryable:!0})}return t}var j=`3.0.10`,ee=/"__proto__"\s*:/,te=/"constructor"\s*:/;function ne(e){let t=JSON.parse(e);return typeof t!=`object`||!t||ee.test(e)===!1&&te.test(e)===!1?t:re(t)}function re(e){let t=[e];for(;t.length;){let e=t;t=[];for(let n of e){if(Object.prototype.hasOwnProperty.call(n,`__proto__`)||Object.prototype.hasOwnProperty.call(n,`constructor`)&&Object.prototype.hasOwnProperty.call(n.constructor,`prototype`))throw SyntaxError(`Object contains forbidden prototype property`);for(let e in n){let r=n[e];r&&typeof r==`object`&&t.push(r)}}}return e}function M(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return ne(e)}finally{Error.stackTraceLimit=t}}var N=Symbol.for(`vercel.ai.validator`);function ie(e){return{[N]:!0,validate:e}}function ae(e){return typeof e==`object`&&!!e&&N in e&&e[N]===!0&&`validate`in e}function oe(e){return ae(e)?e:se(e)}function se(e){return ie(async t=>{let n=await e[`~standard`].validate(t);return n.issues==null?{success:!0,value:n.value}:{success:!1,error:new u({value:t,cause:n.issues})}})}async function ce({value:e,schema:t}){let n=await P({value:e,schema:t});if(!n.success)throw u.wrap({value:e,cause:n.error});return n.value}async function P({value:e,schema:t}){let n=oe(t);try{if(n.validate==null)return{success:!0,value:e,rawValue:e};let t=await n.validate(e);return t.success?{success:!0,value:t.value,rawValue:e}:{success:!1,error:u.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:u.wrap({value:e,cause:t}),rawValue:e}}}async function le({text:e,schema:t}){try{let n=M(e);return t==null?n:ce({value:n,schema:t})}catch(t){throw s.isInstance(t)||u.isInstance(t)?t:new s({text:e,cause:t})}}async function ue({text:e,schema:t}){try{let n=M(e);return t==null?{success:!0,value:n,rawValue:n}:await P({value:n,schema:t})}catch(t){return{success:!1,error:s.isInstance(t)?t:new s({text:e,cause:t}),rawValue:void 0}}}function F(e){try{return M(e),!0}catch{return!1}}function de({stream:e,schema:t}){return e.pipeThrough(new TextDecoderStream).pipeThrough(new r).pipeThrough(new TransformStream({async transform({data:e},n){e!==`[DONE]`&&n.enqueue(await ue({text:e,schema:t}))}}))}async function I({provider:e,providerOptions:t,schema:n}){if(t?.[e]==null)return;let r=await P({value:t[e],schema:n});if(!r.success)throw new i({argument:`providerOptions`,message:`invalid ${e} provider options`,cause:r.error});return r.value}var fe=()=>globalThis.fetch,L=async({url:e,headers:t,body:n,failedResponseHandler:r,successfulResponseHandler:i,abortSignal:a,fetch:o})=>pe({url:e,headers:{"Content-Type":`application/json`,...t},body:{content:JSON.stringify(n),values:n},failedResponseHandler:r,successfulResponseHandler:i,abortSignal:a,fetch:o}),pe=async({url:t,headers:n={},body:r,successfulResponseHandler:i,failedResponseHandler:a,abortSignal:o,fetch:s=fe()})=>{try{let c=await s(t,{method:`POST`,headers:T(n,`ai-sdk/provider-utils/${j}`,C()),body:r.content,signal:o}),l=S(c);if(!c.ok){let n;try{n=await a({response:c,url:t,requestBodyValues:r.values})}catch(n){throw O(n)||e.isInstance(n)?n:new e({message:`Failed to process error response`,cause:n,statusCode:c.status,url:t,responseHeaders:l,requestBodyValues:r.values})}throw n.value}try{return await i({response:c,url:t,requestBodyValues:r.values})}catch(n){throw n instanceof Error&&(O(n)||e.isInstance(n))?n:new e({message:`Failed to process successful response`,cause:n,statusCode:c.status,url:t,responseHeaders:l,requestBodyValues:r.values})}}catch(e){throw A({error:e,url:t,requestBodyValues:r.values})}},R=({errorSchema:t,errorToMessage:n,isRetryable:r})=>async({response:i,url:a,requestBodyValues:o})=>{let s=await i.text(),c=S(i);if(s.trim()===``)return{responseHeaders:c,value:new e({message:i.statusText,url:a,requestBodyValues:o,statusCode:i.status,responseHeaders:c,responseBody:s,isRetryable:r?.(i)})};try{let l=await le({text:s,schema:t});return{responseHeaders:c,value:new e({message:n(l),url:a,requestBodyValues:o,statusCode:i.status,responseHeaders:c,responseBody:s,data:l,isRetryable:r?.(i,l)})}}catch{return{responseHeaders:c,value:new e({message:i.statusText,url:a,requestBodyValues:o,statusCode:i.status,responseHeaders:c,responseBody:s,isRetryable:r?.(i)})}}},z=e=>async({response:t})=>{let r=S(t);if(t.body==null)throw new n({});return{responseHeaders:r,value:de({stream:t.body,schema:e})}},B=t=>async({response:n,url:r,requestBodyValues:i})=>{let a=await n.text(),o=await ue({text:a,schema:t}),s=S(n);if(!o.success)throw new e({message:`Invalid JSON response`,cause:o.error,statusCode:n.status,responseHeaders:s,responseBody:a,url:r,requestBodyValues:i});return{responseHeaders:s,value:o.value,rawValue:o.rawValue}},{btoa:me,atob:he}=globalThis;function ge(e){let t=``;for(let n=0;n<e.length;n++)t+=String.fromCodePoint(e[n]);return me(t)}function _e(e){return e instanceof Uint8Array?ge(e):e}function ve(e){return e?.replace(/\/$/,``)}function V(e){var t,n;return(n=(t=e?.providerOptions)?.openaiCompatible)??{}}function ye(e){let t=[];for(let{role:n,content:r,...i}of e){let e=V({...i});switch(n){case`system`:t.push({role:`system`,content:r,...e});break;case`user`:if(r.length===1&&r[0].type===`text`){t.push({role:`user`,content:r[0].text,...V(r[0])});break}t.push({role:`user`,content:r.map(e=>{let t=V(e);switch(e.type){case`text`:return{type:`text`,text:e.text,...t};case`file`:if(e.mediaType.startsWith(`image/`)){let n=e.mediaType===`image/*`?`image/jpeg`:e.mediaType;return{type:`image_url`,image_url:{url:e.data instanceof URL?e.data.toString():`data:${n};base64,${_e(e.data)}`},...t}}else throw new d({functionality:`file part media type ${e.mediaType}`})}}),...e});break;case`assistant`:{let n=``,i=[];for(let e of r){let t=V(e);switch(e.type){case`text`:n+=e.text;break;case`tool-call`:i.push({id:e.toolCallId,type:`function`,function:{name:e.toolName,arguments:JSON.stringify(e.input)},...t});break}}t.push({role:`assistant`,content:n,tool_calls:i.length>0?i:void 0,...e});break}case`tool`:for(let e of r){let n=e.output,r;switch(n.type){case`text`:case`error-text`:r=n.value;break;case`content`:case`json`:case`error-json`:r=JSON.stringify(n.value);break}let i=V(e);t.push({role:`tool`,tool_call_id:e.toolCallId,content:r,...i})}break;default:{let e=n;throw Error(`Unsupported role: ${e}`)}}}return t}function H({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n==null?void 0:new Date(n*1e3)}}function U(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`unknown`}}var W=_.object({user:_.string().optional(),reasoningEffort:_.string().optional()}),be=_.object({error:_.object({message:_.string(),type:_.string().nullish(),param:_.any().nullish(),code:_.union([_.string(),_.number()]).nullish()})}),G={errorSchema:be,errorToMessage:e=>e.error.message};function xe({tools:e,toolChoice:t}){e=e?.length?e:void 0;let n=[];if(e==null)return{tools:void 0,toolChoice:void 0,toolWarnings:n};let r=[];for(let t of e)t.type===`provider-defined`?n.push({type:`unsupported-tool`,tool:t}):r.push({type:`function`,function:{name:t.name,description:t.description,parameters:t.inputSchema}});if(t==null)return{tools:r,toolChoice:void 0,toolWarnings:n};let i=t.type;switch(i){case`auto`:case`none`:case`required`:return{tools:r,toolChoice:i,toolWarnings:n};case`tool`:return{tools:r,toolChoice:{type:`function`,function:{name:t.toolName}},toolWarnings:n};default:{let e=i;throw new d({functionality:`tool choice type: ${e}`})}}}var Se=class{constructor(e,t){this.specificationVersion=`v2`;var n,r;this.modelId=e,this.config=t;let i=(n=t.errorStructure)??G;this.chunkSchema=we(i.errorSchema),this.failedResponseHandler=R(i),this.supportsStructuredOutputs=(r=t.supportsStructuredOutputs)??!1}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}get supportedUrls(){var e,t,n;return(n=(t=(e=this.config).supportedUrls)?.call(e))??{}}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,providerOptions:s,stopSequences:c,responseFormat:l,seed:u,toolChoice:d,tools:f}){var p,m,h,g;let _=[],v=Object.assign((p=await I({provider:`openai-compatible`,providerOptions:s,schema:W}))??{},(m=await I({provider:this.providerOptionsName,providerOptions:s,schema:W}))??{});i!=null&&_.push({type:`unsupported-setting`,setting:`topK`}),l?.type===`json`&&l.schema!=null&&!this.supportsStructuredOutputs&&_.push({type:`unsupported-setting`,setting:`responseFormat`,details:`JSON response format schema is only supported with structuredOutputs`});let{tools:y,toolChoice:b,toolWarnings:x}=xe({tools:f,toolChoice:d});return{args:{model:this.modelId,user:v.user,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,response_format:l?.type===`json`?this.supportsStructuredOutputs===!0&&l.schema!=null?{type:`json_schema`,json_schema:{schema:l.schema,name:(h=l.name)??`response`,description:l.description}}:{type:`json_object`}:void 0,stop:c,seed:u,...Object.fromEntries(Object.entries((g=s?.[this.providerOptionsName])??{}).filter(([e])=>!Object.keys(W.shape).includes(e))),reasoning_effort:v.reasoningEffort,messages:ye(e),tools:y,tool_choice:b},warnings:[..._,...x]}}async doGenerate(e){var t,n,r,i,a,o,s,c,l,u,d,f,p,m,h,g,_;let{args:v,warnings:y}=await this.getArgs({...e}),b=JSON.stringify(v),{responseHeaders:S,value:C,rawValue:w}=await L({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:x(this.config.headers(),e.headers),body:v,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:B(Ce),abortSignal:e.abortSignal,fetch:this.config.fetch}),T=C.choices[0],E=[],O=T.message.content;O!=null&&O.length>0&&E.push({type:`text`,text:O});let k=(t=T.message.reasoning_content)??T.message.reasoning;if(k!=null&&k.length>0&&E.push({type:`reasoning`,text:k}),T.message.tool_calls!=null)for(let e of T.message.tool_calls)E.push({type:`tool-call`,toolCallId:(n=e.id)??D(),toolName:e.function.name,input:e.function.arguments});let A={[this.providerOptionsName]:{},...await(i=(r=this.config.metadataExtractor)?.extractMetadata)?.call(r,{parsedBody:w})},j=(a=C.usage)?.completion_tokens_details;return j?.accepted_prediction_tokens!=null&&(A[this.providerOptionsName].acceptedPredictionTokens=j?.accepted_prediction_tokens),j?.rejected_prediction_tokens!=null&&(A[this.providerOptionsName].rejectedPredictionTokens=j?.rejected_prediction_tokens),{content:E,finishReason:U(T.finish_reason),usage:{inputTokens:(s=(o=C.usage)?.prompt_tokens)??void 0,outputTokens:(l=(c=C.usage)?.completion_tokens)??void 0,totalTokens:(d=(u=C.usage)?.total_tokens)??void 0,reasoningTokens:(m=(p=(f=C.usage)?.completion_tokens_details)?.reasoning_tokens)??void 0,cachedInputTokens:(_=(g=(h=C.usage)?.prompt_tokens_details)?.cached_tokens)??void 0},providerMetadata:A,request:{body:b},response:{...H(C),headers:S,body:w},warnings:y}}async doStream(e){var t;let{args:n,warnings:r}=await this.getArgs({...e}),i={...n,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},a=(t=this.config.metadataExtractor)?.createStreamExtractor(),{responseHeaders:s,value:c}=await L({url:this.config.url({path:`/chat/completions`,modelId:this.modelId}),headers:x(this.config.headers(),e.headers),body:i,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:z(this.chunkSchema),abortSignal:e.abortSignal,fetch:this.config.fetch}),l=[],u=`unknown`,d={completionTokens:void 0,completionTokensDetails:{reasoningTokens:void 0,acceptedPredictionTokens:void 0,rejectedPredictionTokens:void 0},promptTokens:void 0,promptTokensDetails:{cachedTokens:void 0},totalTokens:void 0},f=!0,p=this.providerOptionsName,m=!1,h=!1;return{stream:c.pipeThrough(new TransformStream({start(e){e.enqueue({type:`stream-start`,warnings:r})},transform(t,n){var r,i,s,c,p,g,_,v,y,b,x,S,C;if(e.includeRawChunks&&n.enqueue({type:`raw`,rawValue:t.rawValue}),!t.success){u=`error`,n.enqueue({type:`error`,error:t.error});return}let w=t.value;if(a?.processChunk(t.rawValue),`error`in w){u=`error`,n.enqueue({type:`error`,error:w.error.message});return}if(f&&(f=!1,n.enqueue({type:`response-metadata`,...H(w)})),w.usage!=null){let{prompt_tokens:e,completion_tokens:t,total_tokens:n,prompt_tokens_details:r,completion_tokens_details:i}=w.usage;d.promptTokens=e??void 0,d.completionTokens=t??void 0,d.totalTokens=n??void 0,i?.reasoning_tokens!=null&&(d.completionTokensDetails.reasoningTokens=i?.reasoning_tokens),i?.accepted_prediction_tokens!=null&&(d.completionTokensDetails.acceptedPredictionTokens=i?.accepted_prediction_tokens),i?.rejected_prediction_tokens!=null&&(d.completionTokensDetails.rejectedPredictionTokens=i?.rejected_prediction_tokens),r?.cached_tokens!=null&&(d.promptTokensDetails.cachedTokens=r?.cached_tokens)}let T=w.choices[0];if(T?.finish_reason!=null&&(u=U(T.finish_reason)),T?.delta==null)return;let E=T.delta,O=(r=E.reasoning_content)??E.reasoning;if(O&&(m||=(n.enqueue({type:`reasoning-start`,id:`reasoning-0`}),!0),n.enqueue({type:`reasoning-delta`,id:`reasoning-0`,delta:O})),E.content&&(h||=(n.enqueue({type:`text-start`,id:`txt-0`}),!0),n.enqueue({type:`text-delta`,id:`txt-0`,delta:E.content})),E.tool_calls!=null)for(let e of E.tool_calls){let t=e.index;if(l[t]==null){if(e.id==null)throw new o({data:e,message:`Expected 'id' to be a string.`});if((i=e.function)?.name==null)throw new o({data:e,message:`Expected 'function.name' to be a string.`});n.enqueue({type:`tool-input-start`,id:e.id,toolName:e.function.name}),l[t]={id:e.id,type:`function`,function:{name:e.function.name,arguments:(s=e.function.arguments)??``},hasFinished:!1};let r=l[t];(c=r.function)?.name!=null&&(p=r.function)?.arguments!=null&&(r.function.arguments.length>0&&n.enqueue({type:`tool-input-delta`,id:r.id,delta:r.function.arguments}),F(r.function.arguments)&&(n.enqueue({type:`tool-input-end`,id:r.id}),n.enqueue({type:`tool-call`,toolCallId:(g=r.id)??D(),toolName:r.function.name,input:r.function.arguments}),r.hasFinished=!0));continue}let r=l[t];if(r.hasFinished)continue;(_=e.function)?.arguments!=null&&(r.function.arguments+=(y=(v=e.function)?.arguments)??``),n.enqueue({type:`tool-input-delta`,id:r.id,delta:(b=e.function.arguments)??``}),(x=r.function)?.name!=null&&(S=r.function)?.arguments!=null&&F(r.function.arguments)&&(n.enqueue({type:`tool-input-end`,id:r.id}),n.enqueue({type:`tool-call`,toolCallId:(C=r.id)??D(),toolName:r.function.name,input:r.function.arguments}),r.hasFinished=!0)}},flush(e){var t,n,r,i,o,s;m&&e.enqueue({type:`reasoning-end`,id:`reasoning-0`}),h&&e.enqueue({type:`text-end`,id:`txt-0`});for(let n of l.filter(e=>!e.hasFinished))e.enqueue({type:`tool-input-end`,id:n.id}),e.enqueue({type:`tool-call`,toolCallId:(t=n.id)??D(),toolName:n.function.name,input:n.function.arguments});let c={[p]:{},...a?.buildMetadata()};d.completionTokensDetails.acceptedPredictionTokens!=null&&(c[p].acceptedPredictionTokens=d.completionTokensDetails.acceptedPredictionTokens),d.completionTokensDetails.rejectedPredictionTokens!=null&&(c[p].rejectedPredictionTokens=d.completionTokensDetails.rejectedPredictionTokens),e.enqueue({type:`finish`,finishReason:u,usage:{inputTokens:(n=d.promptTokens)??void 0,outputTokens:(r=d.completionTokens)??void 0,totalTokens:(i=d.totalTokens)??void 0,reasoningTokens:(o=d.completionTokensDetails.reasoningTokens)??void 0,cachedInputTokens:(s=d.promptTokensDetails.cachedTokens)??void 0},providerMetadata:c})}})),request:{body:i},response:{headers:s}}}},K=_.object({prompt_tokens:_.number().nullish(),completion_tokens:_.number().nullish(),total_tokens:_.number().nullish(),prompt_tokens_details:_.object({cached_tokens:_.number().nullish()}).nullish(),completion_tokens_details:_.object({reasoning_tokens:_.number().nullish(),accepted_prediction_tokens:_.number().nullish(),rejected_prediction_tokens:_.number().nullish()}).nullish()}).nullish(),Ce=_.object({id:_.string().nullish(),created:_.number().nullish(),model:_.string().nullish(),choices:_.array(_.object({message:_.object({role:_.literal(`assistant`).nullish(),content:_.string().nullish(),reasoning_content:_.string().nullish(),reasoning:_.string().nullish(),tool_calls:_.array(_.object({id:_.string().nullish(),function:_.object({name:_.string(),arguments:_.string()})})).nullish()}),finish_reason:_.string().nullish()})),usage:K}),we=e=>_.union([_.object({id:_.string().nullish(),created:_.number().nullish(),model:_.string().nullish(),choices:_.array(_.object({delta:_.object({role:_.enum([`assistant`]).nullish(),content:_.string().nullish(),reasoning_content:_.string().nullish(),reasoning:_.string().nullish(),tool_calls:_.array(_.object({index:_.number(),id:_.string().nullish(),function:_.object({name:_.string().nullish(),arguments:_.string().nullish()})})).nullish()}).nullish(),finish_reason:_.string().nullish()})),usage:K}),e]);function Te({prompt:e,user:t=`user`,assistant:n=`assistant`}){let r=``;e[0].role===`system`&&(r+=`${e[0].content}
2
2
 
3
- `)}})).pipeThrough(new TextEncoderStream),{headers:C})}async function x(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});if(!t.experimental_provideCompletions)return new Response(`Completions not supported`,{status:404});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let i;try{i=await t.experimental_provideCompletions({messages:n.messages,input:n.input,caret:n.caret,selection:n.selection})}catch(e){return new Response(JSON.stringify({error:r.inspect(e)}),{status:500})}let a=await i;return a instanceof ReadableStream?new Response(a.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
3
+ `,e=e.slice(1));for(let{role:i,content:o}of e)switch(i){case`system`:throw new a({message:"Unexpected system message in prompt: ${content}",prompt:e});case`user`:{let e=o.map(e=>{switch(e.type){case`text`:return e.text}}).filter(Boolean).join(``);r+=`${t}:
4
+ ${e}
4
5
 
5
- `)}})).pipeThrough(new TextEncoderStream),{headers:C}):new Response(JSON.stringify(a),{headers:{"content-type":`application/json`}})}function S(e,n){return e.headers.set(t,n),e}const C={"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-accel-buffering":`no`};var w={agent:y,chat:g,storage:_,tools:v};export{y as agent,g as chat,w as default,_ as storage,v as tools,S as withResponseFormat};
6
+ `;break}case`assistant`:{let e=o.map(e=>{switch(e.type){case`text`:return e.text;case`tool-call`:throw new d({functionality:`tool-call messages`})}}).join(``);r+=`${n}:
7
+ ${e}
8
+
9
+ `;break}case`tool`:throw new d({functionality:`tool messages`});default:{let e=i;throw Error(`Unsupported role: ${e}`)}}return r+=`${n}:
10
+ `,{prompt:r,stopSequences:[`
11
+ ${t}:`]}}function q({id:e,model:t,created:n}){return{id:e??void 0,modelId:t??void 0,timestamp:n==null?void 0:new Date(n*1e3)}}function J(e){switch(e){case`stop`:return`stop`;case`length`:return`length`;case`content_filter`:return`content-filter`;case`function_call`:case`tool_calls`:return`tool-calls`;default:return`unknown`}}var Ee=_.object({echo:_.boolean().optional(),logitBias:_.record(_.string(),_.number()).optional(),suffix:_.string().optional(),user:_.string().optional()}),De=class{constructor(e,t){this.specificationVersion=`v2`;var n;this.modelId=e,this.config=t;let r=(n=t.errorStructure)??G;this.chunkSchema=ke(r.errorSchema),this.failedResponseHandler=R(r)}get provider(){return this.config.provider}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}get supportedUrls(){var e,t,n;return(n=(t=(e=this.config).supportedUrls)?.call(e))??{}}async getArgs({prompt:e,maxOutputTokens:t,temperature:n,topP:r,topK:i,frequencyPenalty:a,presencePenalty:o,stopSequences:s,responseFormat:c,seed:l,providerOptions:u,tools:d,toolChoice:f}){var p;let m=[],h=(p=await I({provider:this.providerOptionsName,providerOptions:u,schema:Ee}))??{};i!=null&&m.push({type:`unsupported-setting`,setting:`topK`}),d?.length&&m.push({type:`unsupported-setting`,setting:`tools`}),f!=null&&m.push({type:`unsupported-setting`,setting:`toolChoice`}),c!=null&&c.type!==`text`&&m.push({type:`unsupported-setting`,setting:`responseFormat`,details:`JSON response format is not supported.`});let{prompt:g,stopSequences:_}=Te({prompt:e}),v=[..._??[],...s??[]];return{args:{model:this.modelId,echo:h.echo,logit_bias:h.logitBias,suffix:h.suffix,user:h.user,max_tokens:t,temperature:n,top_p:r,frequency_penalty:a,presence_penalty:o,seed:l,...u?.[this.providerOptionsName],prompt:g,stop:v.length>0?v:void 0},warnings:m}}async doGenerate(e){var t,n,r,i,a,o;let{args:s,warnings:c}=await this.getArgs(e),{responseHeaders:l,value:u,rawValue:d}=await L({url:this.config.url({path:`/completions`,modelId:this.modelId}),headers:x(this.config.headers(),e.headers),body:s,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:B(Oe),abortSignal:e.abortSignal,fetch:this.config.fetch}),f=u.choices[0],p=[];return f.text!=null&&f.text.length>0&&p.push({type:`text`,text:f.text}),{content:p,usage:{inputTokens:(n=(t=u.usage)?.prompt_tokens)??void 0,outputTokens:(i=(r=u.usage)?.completion_tokens)??void 0,totalTokens:(o=(a=u.usage)?.total_tokens)??void 0},finishReason:J(f.finish_reason),request:{body:s},response:{...q(u),headers:l,body:d},warnings:c}}async doStream(e){let{args:t,warnings:n}=await this.getArgs(e),r={...t,stream:!0,stream_options:this.config.includeUsage?{include_usage:!0}:void 0},{responseHeaders:i,value:a}=await L({url:this.config.url({path:`/completions`,modelId:this.modelId}),headers:x(this.config.headers(),e.headers),body:r,failedResponseHandler:this.failedResponseHandler,successfulResponseHandler:z(this.chunkSchema),abortSignal:e.abortSignal,fetch:this.config.fetch}),o=`unknown`,s={inputTokens:void 0,outputTokens:void 0,totalTokens:void 0},c=!0;return{stream:a.pipeThrough(new TransformStream({start(e){e.enqueue({type:`stream-start`,warnings:n})},transform(t,n){var r,i,a;if(e.includeRawChunks&&n.enqueue({type:`raw`,rawValue:t.rawValue}),!t.success){o=`error`,n.enqueue({type:`error`,error:t.error});return}let l=t.value;if(`error`in l){o=`error`,n.enqueue({type:`error`,error:l.error});return}c&&(c=!1,n.enqueue({type:`response-metadata`,...q(l)}),n.enqueue({type:`text-start`,id:`0`})),l.usage!=null&&(s.inputTokens=(r=l.usage.prompt_tokens)??void 0,s.outputTokens=(i=l.usage.completion_tokens)??void 0,s.totalTokens=(a=l.usage.total_tokens)??void 0);let u=l.choices[0];u?.finish_reason!=null&&(o=J(u.finish_reason)),u?.text!=null&&n.enqueue({type:`text-delta`,id:`0`,delta:u.text})},flush(e){c||e.enqueue({type:`text-end`,id:`0`}),e.enqueue({type:`finish`,finishReason:o,usage:s})}})),request:{body:r},response:{headers:i}}}},Y=_.object({prompt_tokens:_.number(),completion_tokens:_.number(),total_tokens:_.number()}),Oe=_.object({id:_.string().nullish(),created:_.number().nullish(),model:_.string().nullish(),choices:_.array(_.object({text:_.string(),finish_reason:_.string()})),usage:Y.nullish()}),ke=e=>_.union([_.object({id:_.string().nullish(),created:_.number().nullish(),model:_.string().nullish(),choices:_.array(_.object({text:_.string(),finish_reason:_.string().nullish(),index:_.number()})),usage:Y.nullish()}),e]),Ae=_.object({dimensions:_.number().optional(),user:_.string().optional()}),je=class{constructor(e,t){this.specificationVersion=`v2`,this.modelId=e,this.config=t}get provider(){return this.config.provider}get maxEmbeddingsPerCall(){var e;return(e=this.config.maxEmbeddingsPerCall)??2048}get supportsParallelCalls(){var e;return(e=this.config.supportsParallelCalls)??!0}get providerOptionsName(){return this.config.provider.split(`.`)[0].trim()}async doEmbed({values:e,headers:t,abortSignal:n,providerOptions:r}){var i,a,o;let s=Object.assign((i=await I({provider:`openai-compatible`,providerOptions:r,schema:Ae}))??{},(a=await I({provider:this.providerOptionsName,providerOptions:r,schema:Ae}))??{});if(e.length>this.maxEmbeddingsPerCall)throw new l({provider:this.provider,modelId:this.modelId,maxEmbeddingsPerCall:this.maxEmbeddingsPerCall,values:e});let{responseHeaders:c,value:u,rawValue:d}=await L({url:this.config.url({path:`/embeddings`,modelId:this.modelId}),headers:x(this.config.headers(),t),body:{model:this.modelId,input:e,encoding_format:`float`,dimensions:s.dimensions,user:s.user},failedResponseHandler:R((o=this.config.errorStructure)??G),successfulResponseHandler:B(Me),abortSignal:n,fetch:this.config.fetch});return{embeddings:u.data.map(e=>e.embedding),usage:u.usage?{tokens:u.usage.prompt_tokens}:void 0,providerMetadata:u.providerMetadata,response:{headers:c,body:d}}}},Me=_.object({data:_.array(_.object({embedding:_.array(_.number())})),usage:_.object({prompt_tokens:_.number()}).nullish(),providerMetadata:_.record(_.string(),_.record(_.string(),_.any())).optional()}),Ne=class{constructor(e,t){this.modelId=e,this.config=t,this.specificationVersion=`v2`,this.maxImagesPerCall=10}get provider(){return this.config.provider}async doGenerate({prompt:e,n:t,size:n,aspectRatio:r,seed:i,providerOptions:a,headers:o,abortSignal:s}){var c,l,u,d,f;let p=[];r!=null&&p.push({type:`unsupported-setting`,setting:`aspectRatio`,details:"This model does not support aspect ratio. Use `size` instead."}),i!=null&&p.push({type:`unsupported-setting`,setting:`seed`});let m=(u=(l=(c=this.config._internal)?.currentDate)?.call(c))??new Date,{value:h,responseHeaders:g}=await L({url:this.config.url({path:`/images/generations`,modelId:this.modelId}),headers:x(this.config.headers(),o),body:{model:this.modelId,prompt:e,n:t,size:n,...(d=a.openai)??{},response_format:`b64_json`},failedResponseHandler:R((f=this.config.errorStructure)??G),successfulResponseHandler:B(Pe),abortSignal:s,fetch:this.config.fetch});return{images:h.data.map(e=>e.b64_json),warnings:p,response:{timestamp:m,modelId:this.modelId,headers:g}}}},Pe=_.object({data:_.array(_.object({b64_json:_.string()}))}),Fe=`1.0.19`;function Ie(e){let t=ve(e.baseURL),n=e.name,r={...e.apiKey&&{Authorization:`Bearer ${e.apiKey}`},...e.headers},i=()=>T(r,`ai-sdk/openai-compatible/${Fe}`),a=r=>({provider:`${n}.${r}`,url:({path:n})=>{let r=new URL(`${t}${n}`);return e.queryParams&&(r.search=new URLSearchParams(e.queryParams).toString()),r.toString()},headers:i,fetch:e.fetch}),o=e=>s(e),s=t=>new Se(t,{...a(`chat`),includeUsage:e.includeUsage,supportsStructuredOutputs:e.supportsStructuredOutputs}),c=t=>new De(t,{...a(`completion`),includeUsage:e.includeUsage}),l=e=>new je(e,{...a(`embedding`)}),u=e=>new Ne(e,a(`image`)),d=e=>o(e);return d.languageModel=o,d.chatModel=s,d.completionModel=c,d.textEmbeddingModel=l,d.imageModel=u,d}var Le=(e,t)=>(e=e.replace(/\/+$/,``),e+=`/`,t=t.replace(/^\/+/,``),e+t),X=(e,t)=>{for(let[n,r]of Object.entries(t)){let t=RegExp(`/:`+n+`(?:{[^/]+})?\\??`);e=e.replace(t,r?`/${r}`:``)}return e},Re=e=>{let t=new URLSearchParams;for(let[n,r]of Object.entries(e)){if(r===void 0)continue;if(Array.isArray(r))for(let e of r)t.append(n,e);else t.set(n,r)}return t},ze=(e,t)=>{switch(t){case`ws`:return e.replace(/^http/,`ws`);case`http`:return e.replace(/^ws/,`http`)}},Z=e=>/^https?:\/\/[^\/]+?\/index(?=\?|$)/.test(e)?e.replace(/\/index(?=\?|$)/,`/`):e.replace(/\/index(?=\?|$)/,``);function Q(e){return typeof e==`object`&&!!e&&!Array.isArray(e)}function Be(e,t){if(!Q(e)&&!Q(t))return t;let n={...e};for(let e in t){let r=t[e];Q(n[e])&&Q(r)?n[e]=Be(n[e],r):n[e]=r}return n}var Ve=(e,t)=>{let n=new Proxy(()=>{},{get(n,r){if(!(typeof r!=`string`||r===`then`))return Ve(e,[...t,r])},apply(n,r,i){return e({path:t,args:i})}});return n},He=class{url;method;queryParams=void 0;pathParams={};rBody;cType=void 0;constructor(e,t){this.url=e,this.method=t}fetch=async(e,t)=>{if(e){if(e.query&&(this.queryParams=Re(e.query)),e.form){let t=new FormData;for(let[n,r]of Object.entries(e.form))if(Array.isArray(r))for(let e of r)t.append(n,e);else t.append(n,r);this.rBody=t}e.json&&(this.rBody=JSON.stringify(e.json),this.cType=`application/json`),e.param&&(this.pathParams=e.param)}let n=this.method.toUpperCase(),r={...e?.header,...typeof t?.headers==`function`?await t.headers():t?.headers};if(e?.cookie){let t=[];for(let[n,r]of Object.entries(e.cookie))t.push(g(n,r,{path:`/`}));r.Cookie=t.join(`,`)}this.cType&&(r[`Content-Type`]=this.cType);let i=new Headers(r??void 0),a=this.url;a=Z(a),a=X(a,this.pathParams),this.queryParams&&(a=a+`?`+this.queryParams.toString()),n=this.method.toUpperCase();let o=!(n===`GET`||n===`HEAD`);return(t?.fetch||fetch)(a,{body:o?this.rBody:void 0,method:n,headers:i,...t?.init})}},Ue=(e,t)=>Ve(function n(r){let i=[...r.path],a=i.slice(-3).reverse();if(a[0]===`toString`)return a[1]===`name`?a[2]||``:n.toString();if(a[0]===`valueOf`)return a[1]===`name`?a[2]||``:n;let o=``;if(/^\$/.test(a[0])){let e=i.pop();e&&(o=e.replace(/^\$/,``))}let s=i.join(`/`),c=Le(e,s);if(o===`url`){let e=c;return r.args[0]&&(r.args[0].param&&(e=X(c,r.args[0].param)),r.args[0].query&&(e=e+`?`+Re(r.args[0].query).toString())),e=Z(e),new URL(e)}if(o===`ws`){let e=ze(r.args[0]&&r.args[0].param?X(c,r.args[0].param):c,`ws`),n=new URL(e),i=r.args[0]?.query;i&&Object.entries(i).forEach(([e,t])=>{Array.isArray(t)?t.forEach(t=>n.searchParams.append(e,t)):n.searchParams.set(e,t)});let a=(...e)=>t?.webSocket!==void 0&&typeof t.webSocket==`function`?t.webSocket(...e):new WebSocket(...e);return a(n.toString())}let l=new He(c,o);if(o){t??={};let e=Be(t,{...r.args[1]});return l.fetch(r.args[0],e)}return l},[]);const We=process.env[t],$=Ue(We??``,{fetch:We?void 0:async()=>{throw console.warn(`Your code is attempting to use the Blink API server, but no API server is configured for this Blink agent.`),Error(`No API server is configured for this Blink agent. External APIs are not available.`)}}),Ge=Object.freeze({upsert:async e=>{let t=await $.chat[`:id`].$post({param:{id:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}return{id:e}},message:async(e,t,n)=>{let r=await $.chat[`:id`].sendMessages.$post({param:{id:e},json:{messages:[t],behavior:n?.behavior??`enqueue`}});if(r.status!==204){let e=await r.json();throw Error(e.error)}}}),Ke=Object.freeze({kv:Object.freeze({get:async e=>{let t=await $.storage.kv[`:key`].$get({param:{key:e}});if(t.status!==200){let e=await t.json();throw Error(e.error)}let n=await t.json();return n.value},set:async(e,t)=>{let n=await $.storage.kv[`:key`].$post({param:{key:e},json:{value:t}});if(n.status!==204){let e=await n.json();throw Error(e.error)}},del:async e=>{let t=await $.storage.kv[`:key`].$delete({param:{key:e}});if(t.status!==204){let e=await t.json();throw Error(e.error)}}})});var qe=class extends Error{constructor(e,t){super(e),this.response=t}};const Je={withContext(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.withContext(t)}return n},with(e,t){let n={};for(let r of Object.keys(e)){let i=e[r];n[r]=i.withContext(t)}return n},async withApproval(e){let t={};for(let[n,r]of Object.entries(e.tools))t[n]={...r,execute:()=>{let e={type:`tool-approval`,outcome:`pending`};return e}};let n=e.messages[e.messages.length-1];if(!n?.parts)return t;let r=[];for(let t of n.parts){if(!h(t))continue;let n=m(t),i=e.tools[n];if(!i||t.state!==`output-available`||!i.execute||!Ye(t.output))continue;t.output.outcome===`approved`&&r.push({toolName:m(t),tool:i,input:t.input,toolCallId:t.toolCallId})}if(r.length>0){let t=p({execute:async({writer:t})=>{t.write({type:`start-step`}),await Promise.all(r.map(async n=>{if(!n.tool.execute)throw Error(`Tool does not support execute.`);t.write({type:`tool-input-available`,toolCallId:n.toolCallId,toolName:n.toolName,input:n.input});try{let r=await n.tool.execute(n.input,{toolCallId:n.toolCallId,messages:f(e.messages,{tools:e.tools}),abortSignal:e.abortSignal});if(b(r))for await(let e of r)t.write({type:`tool-output-available`,toolCallId:n.toolCallId,output:e,preliminary:!0});t.write({type:`tool-output-available`,toolCallId:n.toolCallId,output:r})}catch(e){t.write({type:`tool-output-error`,toolCallId:n.toolCallId,errorText:e instanceof Error?e.message:String(e)})}})),t.write({type:`finish`})}});throw new qe(`Executing tools`,t)}return t},prefix(e,t){let n={};for(let[r,i]of Object.entries(e))n[`${t}${r}`]=i;return n}};function Ye(e){return typeof e==`object`&&!!e&&`type`in e&&e.type===`tool-approval`}function Xe(e){return{version:`v0`,supportsRequests:e.onRequest!==void 0,supportsCompletions:e.experimental_provideCompletions!==void 0,fetch:async t=>{let n=new URL(t.url);if(n.pathname.startsWith(`/_agent/`))switch(n.pathname){case`/_agent/send-messages`:return Ze(t,e);case`/_agent/completions`:return Qe(t,e);case`/_agent/health`:return new Response(`OK`,{status:200});default:return new Response(`Not found`,{status:404})}if(e.onRequest){let n;try{n=await e.onRequest(t)}catch(e){return new Response(JSON.stringify({error:y.inspect(e)}),{status:500})}if(n)return n}return new Response(`Not found`,{status:404})}}}async function Ze(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let r;try{r=await t.sendMessages({messages:n.messages,chat:n.chat})}catch(e){if(e instanceof qe)r=e.response;else return new Response(JSON.stringify({error:y.inspect(e)}),{status:500})}if(r instanceof Response)return r;let i;if(r instanceof ReadableStream)i=r;else{if(typeof r!=`object`||!(`toUIMessageStream`in r))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);i=r.toUIMessageStream()}return new Response(i.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
12
+
13
+ `)}})).pipeThrough(new TextEncoderStream),{headers:et})}async function Qe(e,t){if(e.method!==`POST`)return new Response(`Method not allowed`,{status:405});if(!t.experimental_provideCompletions)return new Response(`Completions not supported`,{status:404});let n;try{n=await e.json()}catch{return new Response(`Invalid request`,{status:400})}let r;try{r=await t.experimental_provideCompletions({messages:n.messages,input:n.input,caret:n.caret,selection:n.selection})}catch(e){return new Response(JSON.stringify({error:y.inspect(e)}),{status:500})}let i=await r;return i instanceof ReadableStream?new Response(i.pipeThrough(new TransformStream({transform(e,t){t.enqueue(`data: ${JSON.stringify(e)}\n\n`)},flush(e){e.enqueue(`data: [DONE]
14
+
15
+ `)}})).pipeThrough(new TextEncoderStream),{headers:et}):new Response(JSON.stringify(i),{headers:{"content-type":`application/json`}})}function $e(e,t){return e.headers.set(c,t),e}const et={"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-accel-buffering":`no`},tt=e=>{let t=process.env.BLINK_TOKEN??process.env.BLINK_INVOCATION_AUTH_TOKEN;if(!t)throw Error(`You must be authenticated with Blink to use the model gateway.
16
+
17
+ Feel free to use other providers like OpenAI, Anthropic, or Google.`);return Ie({baseURL:`https://blink.so/api/ai-gateway/v1`,apiKey:t,name:e,headers:{BLINK_ORGANIZATION_ID:`44d4baab-ed54-453f-8ffc-a8c9f3d05483`}})(e)};var nt={agent:Xe,chat:Ge,storage:Ke,tools:Je};export{Xe as agent,Ge as chat,nt as default,Ye as isToolApprovalOutput,tt as model,Ke as storage,Je as tools,$e as withResponseFormat};
@@ -1,4 +1,4 @@
1
- import{__commonJSMin as e,__export as t,__reExport as n,__require as r,__toESM as i}from"./chunk-ByIbJXPc.js";import{Y as a}from"./dist-NqrnQGst.js";import{open_default as o}from"./open-CSMQaj0E.js";import{createRequire as s}from"node:module";import{createReadStream as c}from"node:fs";import l from"node:process";import*as u from"fs/promises";import{dirname as d,join as f}from"path";import{createRequire as p}from"module";import m,{z as h}from"zod";import"zod/v4";import"zod/v3";import*as g from"node:fs/promises";import{spawn as _}from"child_process";import{existsSync as v,mkdirSync as y,readFileSync as b,writeFileSync as x}from"fs";import S from"node:os";import C from"node:tty";h.object({email:h.string().email(),password:h.string().min(8)}),h.object({email:h.string().email(),code:h.string()}),h.object({email:h.string().email(),password:h.string().min(8)});var w=class{constructor(e,t){this.client=e,this.baseURL=t}async token(e,t={timeout:12e4}){return new Promise((n,r)=>{let i=crypto.randomUUID(),a=this.client.websocket(`/api/auth/token?id=${i}`),o=new URL(`/auth?id=${i}`,this.baseURL),s=setTimeout(()=>{r(Error(`Timeout waiting for the user to authenticate`))},t.timeout);a.onerror=e=>{clearTimeout(s),console.log(`error`,e),r(Error(`Failed to connect to server`))},a.onopen=()=>{e(o.toString(),i)},a.onmessage=e=>{typeof e.data==`string`&&(clearTimeout(s),n(e.data))}})}};const T=async(e,t)=>{if(e.status!==t){let n=await e.text();try{let r=JSON.parse(n);throw r.message?Error(r.message,{cause:r.details}):Error(`Expected status ${t}, got ${e.status}: ${n}`)}catch{throw Error(`Expected status ${t}, got ${e.status}: ${n}`)}}},E=h.object({per_page:h.number().int().positive().max(100).default(10).optional(),page:h.number().int().nonnegative().default(0).optional()}),D=e=>h.object({has_more:h.boolean(),items:h.array(e)}),O=h.object({limit:h.number().int().positive().max(100).default(10).optional(),cursor:h.string().optional()}),k=e=>h.object({next_cursor:h.string().nullable(),items:h.array(e)}),A=h.record(h.string().min(1).max(64),h.string().max(512)).nullable().refine(e=>e?Object.keys(e).length<=16:!0,{message:`Metadata must contain at most 16 keys`}),j=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i;h.object({agent_id:h.uuid(),deployment_id:h.uuid()}),h.object({agent_id:h.uuid(),deployment_id:h.uuid()});const ee=h.object({path:h.string(),id:h.uuid()}),M=ee.or(h.object({path:h.string(),data:h.string().max(1024*1024*5)})),N=h.enum([`production`,`preview`]);h.object({agent_id:h.uuid(),files:h.array(M),target:N,entrypoint:h.string().optional(),message:h.string().max(128).optional()});const P=h.object({id:h.uuid(),number:h.number().int().positive(),created_at:h.iso.datetime(),updated_at:h.iso.datetime(),created_by:h.uuid().nullable(),created_from:h.enum([`cli`]),agent_id:h.uuid(),files:h.array(ee),status:h.enum([`success`,`failed`,`deploying`,`pending`]),target:N,error_message:h.string().nullable(),user_message:h.string().nullable(),platform:h.enum([`lambda`]),platform_memory_mb:h.number().int().positive(),platform_region:h.string().nullable()});h.object({id:h.uuid(),created_at:h.string().datetime(),updated_at:h.string().datetime(),agent_id:h.uuid(),deployment_id:h.uuid(),level:h.enum([`log`,`info`,`warning`,`error`]),message:h.string()}),E.extend({agent_id:h.uuid(),order:h.enum([`asc`,`desc`]).default(`asc`).optional()}),D(P);var te=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.page&&t.set(`page`,e.page.toString()),e.per_page&&t.set(`per_page`,e.per_page.toString()),e.order&&t.set(`order`,e.order);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/deployments?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/deployments/${e.deployment_id}`);return await T(t,200),t.json()}async create(e){let t=await this.client.request(`POST`,`/api/agents/${e.agent_id}/deployments`,JSON.stringify(e));return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e.agent_id}/deployments/${e.deployment_id}`);await T(t,200)}async promote(){}async logs(){}};h.object({agent_id:h.uuid(),target:N.array().optional()}),h.object({id:h.uuid(),created_at:h.date(),updated_at:h.date(),created_by:h.uuid(),updated_by:h.uuid(),key:h.string(),value:h.string().nullable(),secret:h.boolean(),target:N.array()});const ne=h.object({key:h.string(),value:h.string(),secret:h.boolean(),target:N.array().optional(),upsert:h.boolean().optional()});ne.extend({agent_id:h.uuid()}),h.object({agent_id:h.uuid(),id:h.uuid()}),h.object({agent_id:h.uuid(),id:h.uuid(),key:h.string().optional(),value:h.string().optional(),secret:h.boolean().optional(),target:N.array().default([`preview`,`production`]).optional()});var F=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;if(e.target)for(let n of e.target)t.append(`target`,n);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/env?${t.toString()}`);return await T(n,200),n.json()}async create(e){let t=await this.client.request(`POST`,`/api/agents/${e.agent_id}/env`,JSON.stringify(e));return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e.agent_id}/env/${e.id}`);await T(t,204)}async update(e){let t=await this.client.request(`PUT`,`/api/agents/${e.agent_id}/env/${e.id}`,JSON.stringify(e));return await T(t,200),t.json()}};const I=h.object({id:h.string(),agent_id:h.uuid(),agent_deployment_id:h.uuid(),received_at:h.date(),request_method:h.string(),request_handler_location:h.string().nullable(),duration_ms:h.number().nullable(),error:h.string().nullable(),response_status:h.number().nullable()});I.extend({request_headers:h.record(h.string(),h.string()),request_headers_redacted:h.boolean(),request_body:h.string().nullable(),request_body_redacted:h.boolean(),response_headers:h.record(h.string(),h.string()).nullable(),response_headers_redacted:h.boolean(),response_body:h.string().nullable(),response_body_redacted:h.boolean()}),O.extend({agent_id:h.string(),agent_deployment_id:h.number().optional()}),k(I);var re=class{constructor(e){this.client=e}async log(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/webhook/logs/${e.webhook_id}`);return await T(t,200),t.json()}async logs(e){let t=new URLSearchParams;e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id.toString()),e.limit&&t.set(`limit`,e.limit.toString()),e.cursor&&t.set(`cursor`,e.cursor);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/webhook/logs?${t.toString()}`);return await T(n,200),n.json()}};O.extend({agent_id:h.uuid(),agent_deployment_id:h.uuid().optional()}),h.object({agent_id:h.uuid(),run_id:h.uuid()});var ie=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id),e.limit&&t.set(`limit`,e.limit.toString()),e.cursor&&t.set(`cursor`,e.cursor);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/runs?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/runs/${e.run_id}`);return await T(t,200),t.json()}};const ae=h.enum([`streaming`,`stalled`,`completed`,`interrupted`,`error`]),oe=h.enum([`tool_call`,`queued_message`]),se=h.object({id:h.uuid(),number:h.number().int().positive(),chat_id:h.uuid(),chat_run_id:h.uuid(),agent_id:h.uuid(),agent_deployment_id:h.uuid(),started_at:h.string().datetime(),status:ae,error:h.string().nullable(),continuation_reason:oe.nullable(),response_status:h.number().nullable(),response_message_id:h.uuid().nullable()});se.extend({heartbeat_at:h.date(),completed_at:h.date().nullable(),interrupted_at:h.date().nullable(),first_message_id:h.uuid().nullable(),last_message_id:h.uuid().nullable(),response_headers:h.record(h.string(),h.string()).nullable(),response_headers_redacted:h.boolean(),response_body:h.string().nullable(),response_body_redacted:h.boolean()}),O.extend({chat_id:h.uuid(),run_id:h.uuid().optional()}),k(se);var ce=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.run_id&&t.set(`run_id`,e.run_id);let n=await this.client.request(`GET`,`/api/chats/${e.chat_id}/steps?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/chats/${e.chat_id}/steps/${e.step_id}`);return await T(t,200),t.json()}};O.extend({agent_id:h.uuid(),agent_deployment_id:h.uuid().optional(),chat_id:h.uuid().optional(),run_id:h.uuid().optional(),status:ae.optional()}),k(se);var le=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.run_id&&t.set(`run_id`,e.run_id),e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id),e.chat_id&&t.set(`chat_id`,e.chat_id),e.status&&t.set(`status`,e.status);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/steps?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/steps/${e.step_id}`);return await T(t,200),t.json()}};m.object({start_time:m.iso.datetime().pipe(m.coerce.date()),end_time:m.iso.datetime().pipe(m.coerce.date()),message_pattern:m.string().optional(),limit:m.string().pipe(m.coerce.number().min(1).max(1e4)).optional()});const ue=m.object({timestamp:m.iso.datetime().pipe(m.coerce.date()),message:m.string(),level:m.enum([`info`,`error`,`warn`])}),de=m.object({logs:m.array(ue)});var fe=class{constructor(e){this.client=e}async logs(e){let t=new URLSearchParams;t.set(`start_time`,e.start_time.toISOString()),t.set(`end_time`,e.end_time.toISOString()),e.limit&&t.set(`limit`,e.limit.toString()),e.message_pattern&&t.set(`message_pattern`,e.message_pattern);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/logs?${t.toString()}`);await T(n,200);let r=await n.json();return de.parse(r)}};const pe=h.enum([`private`,`public`]);h.object({organization_id:h.uuid(),name:h.string().regex(j),description:h.string().optional(),visibility:pe.default(`private`).optional(),files:h.array(M).optional(),entrypoint:h.string().optional(),env:h.array(ne).optional()});const me=h.object({id:h.uuid(),organization_id:h.uuid(),created_at:h.iso.datetime(),updated_at:h.iso.datetime(),created_by:h.uuid(),name:h.string().regex(j),description:h.string().nullable(),avatar_url:h.string().nullable(),visibility:pe,active_deployment_id:h.uuid().nullable(),webhook_route:h.string().url().nullable().describe(`The route for the agent's webhook. Only visible to owners.`)});h.object({id:h.uuid(),name:h.string().regex(j).optional(),description:h.string().optional(),visibility:pe.optional(),active_deployment_id:h.uuid().optional()}),E.extend({organization_id:h.uuid().optional()}),D(me);var he=class{constructor(e){this.client=e,this.deployments=new te(e),this.env=new F(e),this.webhook=new re(e),this.runs=new ie(e),this.steps=new le(e),this.logs=new fe(e)}async create(e){let t=await this.client.request(`POST`,`/api/agents`,JSON.stringify(e));return await T(t,200),t.json()}async update(e){let t=await this.client.request(`PATCH`,`/api/agents/${e.id}`,JSON.stringify(e));return await T(t,200),t.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e}`);return await T(t,200),t.json()}async list(e){let t=new URLSearchParams;e.organization_id&&t.set(`organization_id`,e.organization_id),e.page&&t.set(`page`,e.page.toString()),e.per_page&&t.set(`per_page`,e.per_page.toString());let n=await this.client.request(`GET`,`/api/agents?${t.toString()}`);return await T(n,200),n.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e}`);await T(t,204)}},ge=class{constructor(e){this.client=e}async upload(e){let t=new FormData;t.append(`file`,e);let n=await this.client.request(`POST`,`/api/files`,t);return await T(n,201),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/files/${e}`);return await T(t,200),new File([await t.blob()],``)}};const _e=h.enum([`owner`,`admin`,`billing_admin`,`member`]),ve=h.object({user_id:h.uuid(),organization_id:h.uuid(),role:_e,created_at:h.date(),updated_at:h.date()}),ye=h.object({id:h.uuid(),created_at:h.date(),updated_at:h.date(),display_name:h.string().nullable(),email:h.email(),avatar_url:h.url().nullable(),username:h.string()}),be=ve.extend({user:ye});E.extend({organization_id:h.uuid()}),D(be),h.object({organization_id:h.uuid(),user_id:h.uuid()});const xe=h.object({role:h.enum([`owner`,`admin`,`member`,`billing_admin`]).optional()});xe.extend({organization_id:h.uuid(),user_id:h.uuid()});var Se=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.per_page&&t.set(`per_page`,e.per_page.toString()),e.page&&t.set(`page`,e.page.toString());let n=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/members?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/members/${e.user_id}`);return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/organizations/${e.organization_id}/members/${e.user_id}`);await T(t,204)}async update(e){let t=await this.client.request(`PUT`,`/api/organizations/${e.organization_id}/members/${e.user_id}`,JSON.stringify({role:e.role}));return await T(t,200),t.json()}},Ce=class{constructor(e){this.client=e}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/agents/${e.agent_name}`);return await T(t,200),t.json()}};h.object({id:h.uuid(),name:h.string(),created_at:h.date(),updated_at:h.date(),membership:ve.nullable(),members_url:h.url(),invites_url:h.url(),avatar_url:h.url().nullable()}),h.object({name:h.string().regex(j)});var we=class{constructor(e){this.client=e,this.members=new Se(e),this.agents=new Ce(e)}async list(){let e=await this.client.request(`GET`,`/api/organizations`);return await T(e,200),e.json()}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e}`);return await T(t,200),t.json()}async create(e){let t=await this.client.request(`POST`,`/api/organizations`,JSON.stringify(e));return await T(t,201),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/organizations/${e}`);await T(t,204)}};m.object({id:m.uuid(),created_at:m.date(),updated_at:m.date(),email:m.string().email(),email_verified:m.boolean(),display_name:m.string(),username:m.string(),organization_id:m.uuid(),avatar_url:m.string().url().nullable()});var Te=class{constructor(e){this.client=e}async me(){return this.get(`me`)}async get(e){let t=await this.client.request(`GET`,`/api/users/${e}`);return await T(t,200),t.json()}},Ee=`vercel.ai.error`,De=Symbol.for(Ee),Oe,ke=class e extends Error{constructor({name:e,message:t,cause:n}){super(t),this[Oe]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,Ee)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}};Oe=De;var Ae=ke,je=`AI_APICallError`,Me=`vercel.ai.error.${je}`,Ne=Symbol.for(Me),Pe;Pe=Ne;var Fe=`AI_EmptyResponseBodyError`,Ie=`vercel.ai.error.${Fe}`,Le=Symbol.for(Ie),Re;Re=Le;function ze(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.message:JSON.stringify(e)}var Be=`AI_InvalidArgumentError`,Ve=`vercel.ai.error.${Be}`,He=Symbol.for(Ve),Ue,We=class extends Ae{constructor({message:e,cause:t,argument:n}){super({name:Be,message:e,cause:t}),this[Ue]=!0,this.argument=n}static isInstance(e){return Ae.hasMarker(e,Ve)}};Ue=He;var Ge=`AI_InvalidPromptError`,Ke=`vercel.ai.error.${Ge}`,qe=Symbol.for(Ke),Je;Je=qe;var Ye=`AI_InvalidResponseDataError`,Xe=`vercel.ai.error.${Ye}`,Ze=Symbol.for(Xe),Qe;Qe=Ze;var $e=`AI_JSONParseError`,et=`vercel.ai.error.${$e}`,tt=Symbol.for(et),nt,rt=class extends Ae{constructor({text:e,cause:t}){super({name:$e,message:`JSON parsing failed: Text: ${e}.
1
+ import{__commonJSMin as e,__export as t,__reExport as n,__require as r,__toESM as i}from"./chunk-ByIbJXPc.js";import{Y as a}from"./dist-CN69Y-yA.js";import{open_default as o}from"./open-Cr8lEmcs.js";import{createRequire as s}from"node:module";import{createReadStream as c}from"node:fs";import l from"node:process";import*as u from"fs/promises";import{dirname as d,join as f}from"path";import{createRequire as p}from"module";import m,{z as h}from"zod";import"zod/v4";import"zod/v3";import*as g from"node:fs/promises";import{spawn as _}from"child_process";import{existsSync as v,mkdirSync as y,readFileSync as b,writeFileSync as x}from"fs";import S from"node:os";import C from"node:tty";h.object({email:h.string().email(),password:h.string().min(8)}),h.object({email:h.string().email(),code:h.string()}),h.object({email:h.string().email(),password:h.string().min(8)});var w=class{constructor(e,t){this.client=e,this.baseURL=t}async token(e,t={timeout:12e4}){return new Promise((n,r)=>{let i=crypto.randomUUID(),a=this.client.websocket(`/api/auth/token?id=${i}`),o=new URL(`/auth?id=${i}`,this.baseURL),s=setTimeout(()=>{r(Error(`Timeout waiting for the user to authenticate`))},t.timeout);a.onerror=e=>{clearTimeout(s),console.log(`error`,e),r(Error(`Failed to connect to server`))},a.onopen=()=>{e(o.toString(),i)},a.onmessage=e=>{typeof e.data==`string`&&(clearTimeout(s),n(e.data))}})}};const T=async(e,t)=>{if(e.status!==t){let n=await e.text();try{let r=JSON.parse(n);throw r.message?Error(r.message,{cause:r.details}):Error(`Expected status ${t}, got ${e.status}: ${n}`)}catch{throw Error(`Expected status ${t}, got ${e.status}: ${n}`)}}},E=h.object({per_page:h.number().int().positive().max(100).default(10).optional(),page:h.number().int().nonnegative().default(0).optional()}),D=e=>h.object({has_more:h.boolean(),items:h.array(e)}),O=h.object({limit:h.number().int().positive().max(100).default(10).optional(),cursor:h.string().optional()}),k=e=>h.object({next_cursor:h.string().nullable(),items:h.array(e)}),A=h.record(h.string().min(1).max(64),h.string().max(512)).nullable().refine(e=>e?Object.keys(e).length<=16:!0,{message:`Metadata must contain at most 16 keys`}),j=/^[a-z0-9](?:[a-z0-9]|-(?=[a-z0-9])){0,38}$/i;h.object({agent_id:h.uuid(),deployment_id:h.uuid()}),h.object({agent_id:h.uuid(),deployment_id:h.uuid()});const ee=h.object({path:h.string(),id:h.uuid()}),M=ee.or(h.object({path:h.string(),data:h.string().max(1024*1024*5)})),N=h.enum([`production`,`preview`]);h.object({agent_id:h.uuid(),files:h.array(M),target:N,entrypoint:h.string().optional(),message:h.string().max(128).optional()});const P=h.object({id:h.uuid(),number:h.number().int().positive(),created_at:h.iso.datetime(),updated_at:h.iso.datetime(),created_by:h.uuid().nullable(),created_from:h.enum([`cli`]),agent_id:h.uuid(),files:h.array(ee),status:h.enum([`success`,`failed`,`deploying`,`pending`]),target:N,error_message:h.string().nullable(),user_message:h.string().nullable(),platform:h.enum([`lambda`]),platform_memory_mb:h.number().int().positive(),platform_region:h.string().nullable()});h.object({id:h.uuid(),created_at:h.string().datetime(),updated_at:h.string().datetime(),agent_id:h.uuid(),deployment_id:h.uuid(),level:h.enum([`log`,`info`,`warning`,`error`]),message:h.string()}),E.extend({agent_id:h.uuid(),order:h.enum([`asc`,`desc`]).default(`asc`).optional()}),D(P);var te=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.page&&t.set(`page`,e.page.toString()),e.per_page&&t.set(`per_page`,e.per_page.toString()),e.order&&t.set(`order`,e.order);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/deployments?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/deployments/${e.deployment_id}`);return await T(t,200),t.json()}async create(e){let t=await this.client.request(`POST`,`/api/agents/${e.agent_id}/deployments`,JSON.stringify(e));return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e.agent_id}/deployments/${e.deployment_id}`);await T(t,200)}async promote(){}async logs(){}};h.object({agent_id:h.uuid(),target:N.array().optional()}),h.object({id:h.uuid(),created_at:h.date(),updated_at:h.date(),created_by:h.uuid(),updated_by:h.uuid(),key:h.string(),value:h.string().nullable(),secret:h.boolean(),target:N.array()});const ne=h.object({key:h.string(),value:h.string(),secret:h.boolean(),target:N.array().optional(),upsert:h.boolean().optional()});ne.extend({agent_id:h.uuid()}),h.object({agent_id:h.uuid(),id:h.uuid()}),h.object({agent_id:h.uuid(),id:h.uuid(),key:h.string().optional(),value:h.string().optional(),secret:h.boolean().optional(),target:N.array().default([`preview`,`production`]).optional()});var F=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;if(e.target)for(let n of e.target)t.append(`target`,n);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/env?${t.toString()}`);return await T(n,200),n.json()}async create(e){let t=await this.client.request(`POST`,`/api/agents/${e.agent_id}/env`,JSON.stringify(e));return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e.agent_id}/env/${e.id}`);await T(t,204)}async update(e){let t=await this.client.request(`PUT`,`/api/agents/${e.agent_id}/env/${e.id}`,JSON.stringify(e));return await T(t,200),t.json()}};const I=h.object({id:h.string(),agent_id:h.uuid(),agent_deployment_id:h.uuid(),received_at:h.date(),request_method:h.string(),request_handler_location:h.string().nullable(),duration_ms:h.number().nullable(),error:h.string().nullable(),response_status:h.number().nullable()});I.extend({request_headers:h.record(h.string(),h.string()),request_headers_redacted:h.boolean(),request_body:h.string().nullable(),request_body_redacted:h.boolean(),response_headers:h.record(h.string(),h.string()).nullable(),response_headers_redacted:h.boolean(),response_body:h.string().nullable(),response_body_redacted:h.boolean()}),O.extend({agent_id:h.string(),agent_deployment_id:h.number().optional()}),k(I);var re=class{constructor(e){this.client=e}async log(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/webhook/logs/${e.webhook_id}`);return await T(t,200),t.json()}async logs(e){let t=new URLSearchParams;e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id.toString()),e.limit&&t.set(`limit`,e.limit.toString()),e.cursor&&t.set(`cursor`,e.cursor);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/webhook/logs?${t.toString()}`);return await T(n,200),n.json()}};O.extend({agent_id:h.uuid(),agent_deployment_id:h.uuid().optional()}),h.object({agent_id:h.uuid(),run_id:h.uuid()});var ie=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id),e.limit&&t.set(`limit`,e.limit.toString()),e.cursor&&t.set(`cursor`,e.cursor);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/runs?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/runs/${e.run_id}`);return await T(t,200),t.json()}};const ae=h.enum([`streaming`,`stalled`,`completed`,`interrupted`,`error`]),oe=h.enum([`tool_call`,`queued_message`]),se=h.object({id:h.uuid(),number:h.number().int().positive(),chat_id:h.uuid(),chat_run_id:h.uuid(),agent_id:h.uuid(),agent_deployment_id:h.uuid(),started_at:h.string().datetime(),status:ae,error:h.string().nullable(),continuation_reason:oe.nullable(),response_status:h.number().nullable(),response_message_id:h.uuid().nullable()});se.extend({heartbeat_at:h.date(),completed_at:h.date().nullable(),interrupted_at:h.date().nullable(),first_message_id:h.uuid().nullable(),last_message_id:h.uuid().nullable(),response_headers:h.record(h.string(),h.string()).nullable(),response_headers_redacted:h.boolean(),response_body:h.string().nullable(),response_body_redacted:h.boolean()}),O.extend({chat_id:h.uuid(),run_id:h.uuid().optional()}),k(se);var ce=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.run_id&&t.set(`run_id`,e.run_id);let n=await this.client.request(`GET`,`/api/chats/${e.chat_id}/steps?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/chats/${e.chat_id}/steps/${e.step_id}`);return await T(t,200),t.json()}};O.extend({agent_id:h.uuid(),agent_deployment_id:h.uuid().optional(),chat_id:h.uuid().optional(),run_id:h.uuid().optional(),status:ae.optional()}),k(se);var le=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.run_id&&t.set(`run_id`,e.run_id),e.agent_deployment_id&&t.set(`agent_deployment_id`,e.agent_deployment_id),e.chat_id&&t.set(`chat_id`,e.chat_id),e.status&&t.set(`status`,e.status);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/steps?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e.agent_id}/steps/${e.step_id}`);return await T(t,200),t.json()}};m.object({start_time:m.iso.datetime().pipe(m.coerce.date()),end_time:m.iso.datetime().pipe(m.coerce.date()),message_pattern:m.string().optional(),limit:m.string().pipe(m.coerce.number().min(1).max(1e4)).optional()});const ue=m.object({timestamp:m.iso.datetime().pipe(m.coerce.date()),message:m.string(),level:m.enum([`info`,`error`,`warn`])}),de=m.object({logs:m.array(ue)});var fe=class{constructor(e){this.client=e}async logs(e){let t=new URLSearchParams;t.set(`start_time`,e.start_time.toISOString()),t.set(`end_time`,e.end_time.toISOString()),e.limit&&t.set(`limit`,e.limit.toString()),e.message_pattern&&t.set(`message_pattern`,e.message_pattern);let n=await this.client.request(`GET`,`/api/agents/${e.agent_id}/logs?${t.toString()}`);await T(n,200);let r=await n.json();return de.parse(r)}};const pe=h.enum([`private`,`public`]);h.object({organization_id:h.uuid(),name:h.string().regex(j),description:h.string().optional(),visibility:pe.default(`private`).optional(),files:h.array(M).optional(),entrypoint:h.string().optional(),env:h.array(ne).optional()});const me=h.object({id:h.uuid(),organization_id:h.uuid(),created_at:h.iso.datetime(),updated_at:h.iso.datetime(),created_by:h.uuid(),name:h.string().regex(j),description:h.string().nullable(),avatar_url:h.string().nullable(),visibility:pe,active_deployment_id:h.uuid().nullable(),webhook_route:h.string().url().nullable().describe(`The route for the agent's webhook. Only visible to owners.`)});h.object({id:h.uuid(),name:h.string().regex(j).optional(),description:h.string().optional(),visibility:pe.optional(),active_deployment_id:h.uuid().optional()}),E.extend({organization_id:h.uuid().optional()}),D(me);var he=class{constructor(e){this.client=e,this.deployments=new te(e),this.env=new F(e),this.webhook=new re(e),this.runs=new ie(e),this.steps=new le(e),this.logs=new fe(e)}async create(e){let t=await this.client.request(`POST`,`/api/agents`,JSON.stringify(e));return await T(t,200),t.json()}async update(e){let t=await this.client.request(`PATCH`,`/api/agents/${e.id}`,JSON.stringify(e));return await T(t,200),t.json()}async get(e){let t=await this.client.request(`GET`,`/api/agents/${e}`);return await T(t,200),t.json()}async list(e){let t=new URLSearchParams;e.organization_id&&t.set(`organization_id`,e.organization_id),e.page&&t.set(`page`,e.page.toString()),e.per_page&&t.set(`per_page`,e.per_page.toString());let n=await this.client.request(`GET`,`/api/agents?${t.toString()}`);return await T(n,200),n.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/agents/${e}`);await T(t,204)}},ge=class{constructor(e){this.client=e}async upload(e){let t=new FormData;t.append(`file`,e);let n=await this.client.request(`POST`,`/api/files`,t);return await T(n,201),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/files/${e}`);return await T(t,200),new File([await t.blob()],``)}};const _e=h.enum([`owner`,`admin`,`billing_admin`,`member`]),ve=h.object({user_id:h.uuid(),organization_id:h.uuid(),role:_e,created_at:h.date(),updated_at:h.date()}),ye=h.object({id:h.uuid(),created_at:h.date(),updated_at:h.date(),display_name:h.string().nullable(),email:h.email(),avatar_url:h.url().nullable(),username:h.string()}),be=ve.extend({user:ye});E.extend({organization_id:h.uuid()}),D(be),h.object({organization_id:h.uuid(),user_id:h.uuid()});const xe=h.object({role:h.enum([`owner`,`admin`,`member`,`billing_admin`]).optional()});xe.extend({organization_id:h.uuid(),user_id:h.uuid()});var Se=class{constructor(e){this.client=e}async list(e){let t=new URLSearchParams;e.per_page&&t.set(`per_page`,e.per_page.toString()),e.page&&t.set(`page`,e.page.toString());let n=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/members?${t.toString()}`);return await T(n,200),n.json()}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/members/${e.user_id}`);return await T(t,200),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/organizations/${e.organization_id}/members/${e.user_id}`);await T(t,204)}async update(e){let t=await this.client.request(`PUT`,`/api/organizations/${e.organization_id}/members/${e.user_id}`,JSON.stringify({role:e.role}));return await T(t,200),t.json()}},Ce=class{constructor(e){this.client=e}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e.organization_id}/agents/${e.agent_name}`);return await T(t,200),t.json()}};h.object({id:h.uuid(),name:h.string(),created_at:h.date(),updated_at:h.date(),membership:ve.nullable(),members_url:h.url(),invites_url:h.url(),avatar_url:h.url().nullable()}),h.object({name:h.string().regex(j)});var we=class{constructor(e){this.client=e,this.members=new Se(e),this.agents=new Ce(e)}async list(){let e=await this.client.request(`GET`,`/api/organizations`);return await T(e,200),e.json()}async get(e){let t=await this.client.request(`GET`,`/api/organizations/${e}`);return await T(t,200),t.json()}async create(e){let t=await this.client.request(`POST`,`/api/organizations`,JSON.stringify(e));return await T(t,201),t.json()}async delete(e){let t=await this.client.request(`DELETE`,`/api/organizations/${e}`);await T(t,204)}};m.object({id:m.uuid(),created_at:m.date(),updated_at:m.date(),email:m.string().email(),email_verified:m.boolean(),display_name:m.string(),username:m.string(),organization_id:m.uuid(),avatar_url:m.string().url().nullable()});var Te=class{constructor(e){this.client=e}async me(){return this.get(`me`)}async get(e){let t=await this.client.request(`GET`,`/api/users/${e}`);return await T(t,200),t.json()}},Ee=`vercel.ai.error`,De=Symbol.for(Ee),Oe,ke=class e extends Error{constructor({name:e,message:t,cause:n}){super(t),this[Oe]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,Ee)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}};Oe=De;var Ae=ke,je=`AI_APICallError`,Me=`vercel.ai.error.${je}`,Ne=Symbol.for(Me),Pe;Pe=Ne;var Fe=`AI_EmptyResponseBodyError`,Ie=`vercel.ai.error.${Fe}`,Le=Symbol.for(Ie),Re;Re=Le;function ze(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.message:JSON.stringify(e)}var Be=`AI_InvalidArgumentError`,Ve=`vercel.ai.error.${Be}`,He=Symbol.for(Ve),Ue,We=class extends Ae{constructor({message:e,cause:t,argument:n}){super({name:Be,message:e,cause:t}),this[Ue]=!0,this.argument=n}static isInstance(e){return Ae.hasMarker(e,Ve)}};Ue=He;var Ge=`AI_InvalidPromptError`,Ke=`vercel.ai.error.${Ge}`,qe=Symbol.for(Ke),Je;Je=qe;var Ye=`AI_InvalidResponseDataError`,Xe=`vercel.ai.error.${Ye}`,Ze=Symbol.for(Xe),Qe;Qe=Ze;var $e=`AI_JSONParseError`,et=`vercel.ai.error.${$e}`,tt=Symbol.for(et),nt,rt=class extends Ae{constructor({text:e,cause:t}){super({name:$e,message:`JSON parsing failed: Text: ${e}.
2
2
  Error message: ${ze(t)}`,cause:t}),this[nt]=!0,this.text=e}static isInstance(e){return Ae.hasMarker(e,et)}};nt=tt;var it=`AI_LoadAPIKeyError`,at=`vercel.ai.error.${it}`,ot=Symbol.for(at),st;st=ot;var ct=`AI_LoadSettingError`,lt=`vercel.ai.error.${ct}`,ut=Symbol.for(lt),dt;dt=ut;var ft=`AI_NoContentGeneratedError`,pt=`vercel.ai.error.${ft}`,mt=Symbol.for(pt),ht;ht=mt;var gt=`AI_NoSuchModelError`,_t=`vercel.ai.error.${gt}`,vt=Symbol.for(_t),yt;yt=vt;var bt=`AI_TooManyEmbeddingValuesForCallError`,xt=`vercel.ai.error.${bt}`,St=Symbol.for(xt),Ct;Ct=St;var wt=`AI_TypeValidationError`,Tt=`vercel.ai.error.${wt}`,Et=Symbol.for(Tt),Dt,Ot=class e extends Ae{constructor({value:e,cause:t}){super({name:wt,message:`Type validation failed: Value: ${JSON.stringify(e)}.
3
3
  Error message: ${ze(t)}`,cause:t}),this[Dt]=!0,this.value=e}static isInstance(e){return Ae.hasMarker(e,Tt)}static wrap({value:t,cause:n}){return e.isInstance(n)&&n.value===t?n:new e({value:t,cause:n})}};Dt=Et;var kt=Ot,At=`AI_UnsupportedFunctionalityError`,jt=`vercel.ai.error.${At}`,Mt=Symbol.for(jt),Nt;Nt=Mt;var Pt=({prefix:e,size:t=16,alphabet:n=`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz`,separator:r=`-`}={})=>{let i=()=>{let e=n.length,r=Array(t);for(let i=0;i<t;i++)r[i]=n[Math.random()*e|0];return r.join(``)};if(e==null)return i;if(n.includes(r))throw new We({argument:`separator`,message:`The separator "${r}" must not be part of the alphabet "${n}".`});return()=>`${e}${r}${i()}`};Pt();var Ft=/"__proto__"\s*:/,It=/"constructor"\s*:/;function Lt(e){let t=JSON.parse(e);return typeof t!=`object`||!t||Ft.test(e)===!1&&It.test(e)===!1?t:Rt(t)}function Rt(e){let t=[e];for(;t.length;){let e=t;t=[];for(let n of e){if(Object.prototype.hasOwnProperty.call(n,`__proto__`)||Object.prototype.hasOwnProperty.call(n,`constructor`)&&Object.prototype.hasOwnProperty.call(n.constructor,`prototype`))throw SyntaxError(`Object contains forbidden prototype property`);for(let e in n){let r=n[e];r&&typeof r==`object`&&t.push(r)}}}return e}function zt(e){let{stackTraceLimit:t}=Error;Error.stackTraceLimit=0;try{return Lt(e)}finally{Error.stackTraceLimit=t}}var Bt=Symbol.for(`vercel.ai.validator`);function Vt(e){return{[Bt]:!0,validate:e}}function Ht(e){return typeof e==`object`&&!!e&&Bt in e&&e[Bt]===!0&&`validate`in e}function Ut(e){return Ht(e)?e:Wt(e)}function Wt(e){return Vt(async t=>{let n=await e[`~standard`].validate(t);return n.issues==null?{success:!0,value:n.value}:{success:!1,error:new kt({value:t,cause:n.issues})}})}async function Gt({value:e,schema:t}){let n=Ut(t);try{if(n.validate==null)return{success:!0,value:e,rawValue:e};let t=await n.validate(e);return t.success?{success:!0,value:t.value,rawValue:e}:{success:!1,error:kt.wrap({value:e,cause:t.error}),rawValue:e}}catch(t){return{success:!1,error:kt.wrap({value:e,cause:t}),rawValue:e}}}async function Kt({text:e,schema:t}){try{let n=zt(e);return t==null?{success:!0,value:n,rawValue:n}:await Gt({value:n,schema:t})}catch(t){return{success:!1,error:rt.isInstance(t)?t:new rt({text:e,cause:t}),rawValue:void 0}}}var{btoa:qt,atob:Jt}=globalThis,Yt=class extends Error{constructor(e,t){super(e),this.name=`ParseError`,this.type=t.type,this.field=t.field,this.value=t.value,this.line=t.line}};function Xt(e){}function Zt(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=Xt,onError:n=Xt,onRetry:r=Xt,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=Qt(`${a}${t}`);for(let e of n)d(e);a=r,o=!1}function d(e){if(e===``){p();return}if(e.startsWith(`:`)){i&&i(e.slice(e.startsWith(`: `)?2:1));return}let t=e.indexOf(`:`);if(t!==-1){let n=e.slice(0,t),r=e[t+1]===` `?2:1,i=e.slice(t+r);f(n,i,e);return}f(e,``,e)}function f(e,t,i){switch(e){case`event`:l=t;break;case`data`:c=`${c}${t}
4
4
  `;break;case`id`:s=t.includes(`\0`)?void 0:t;break;case`retry`:/^\d+$/.test(t)?r(parseInt(t,10)):n(new Yt(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new Yt(`Unknown field "${e.length>20?`${e.slice(0,20)}\u2026`:e}"`,{type:`unknown-field`,field:e,value:t,line:i}));break}}function p(){c.length>0&&t({id:s,event:l||void 0,data:c.endsWith(`
@@ -1 +1 @@
1
- import{import_websocket as e}from"./wrapper-B4vDwpOq.js";import{open_default as t}from"./open-CSMQaj0E.js";import{WorkspaceConnect as n}from"./connect-CswVxp7Y.js";import"./events-CWgtj8lb.js";async function r(){let r=crypto.randomUUID(),i=new e.default(`wss://blink.so/legacy-auth?id=${r}`),a=new Promise((e,t)=>{i.onopen=()=>{e()},i.onerror=e=>{t(e)}});await a;let o=new Promise((e,t)=>{i.onmessage=t=>{e(t.data.toString())}}),s=`https://blink.so/legacy-auth?id=${r}&type=workspace`;console.log(`Opening the following URL in your browser: ${s}`),await t(s);let c=await o,l=new n({url:`wss://blink.so/api/connect`,token:c});l.onConnect(()=>{console.log(`Connected to Blink`)}),l.onDisconnect(()=>{console.log(`Disconnected from Blink`)})}export{r as default};
1
+ import{import_websocket as e}from"./wrapper-B4vDwpOq.js";import{open_default as t}from"./open-Cr8lEmcs.js";import{WorkspaceConnect as n}from"./connect-CswVxp7Y.js";import"./events-CWgtj8lb.js";async function r(){let r=crypto.randomUUID(),i=new e.default(`wss://blink.so/legacy-auth?id=${r}`),a=new Promise((e,t)=>{i.onopen=()=>{e()},i.onerror=e=>{t(e)}});await a;let o=new Promise((e,t)=>{i.onmessage=t=>{e(t.data.toString())}}),s=`https://blink.so/legacy-auth?id=${r}&type=workspace`;console.log(`Opening the following URL in your browser: ${s}`),await t(s);let c=await o,l=new n({url:`wss://blink.so/api/connect`,token:c});l.onConnect(()=>{console.log(`Connected to Blink`)}),l.onDisconnect(()=>{console.log(`Disconnected from Blink`)})}export{r as default};