blink 0.1.21 → 0.1.23
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.
- package/dist/api/index.cjs +1 -1
- package/dist/api/index.d.cts +1 -1
- package/dist/api/index.d.ts +1 -1
- package/dist/api/index.js +1 -1
- package/dist/api-Bl9kCFAZ.js +1 -0
- package/dist/api-DhKQVJLF.cjs +1 -0
- package/dist/{index.js → cli/index.js} +465 -370
- package/dist/{client-viAsF4VN.d.cts → client-BmidwoTD.d.cts} +1 -1
- package/dist/{client-DV2oLCGA.js → client-C1l580Un.js} +1 -1
- package/dist/{client-CyKaQz0o.d.ts → client-cnNP66Da.d.ts} +1 -1
- package/dist/{client-CkqfTV5k.cjs → client-pr8z4xo-.cjs} +1 -1
- package/dist/client.cjs +1 -1
- package/dist/client.d.cts +2 -2
- package/dist/client.d.ts +2 -2
- package/dist/client.js +1 -1
- package/dist/{index-ClMZcRFq.d.cts → index-C29YiDK4.d.ts} +0 -6
- package/dist/{index-MF8F5NjW.d.ts → index-Hwp0nvOG.d.cts} +0 -6
- package/dist/runtime/node.d.cts +1 -1
- package/dist/runtime/node.d.ts +1 -1
- package/dist/test.cjs +1 -1
- package/dist/test.d.cts +2 -2
- package/dist/test.d.ts +2 -2
- package/dist/test.js +1 -1
- package/package.json +4 -2
- package/dist/api-SDPsfZpp.cjs +0 -1
- package/dist/api-_RFSw3t6.js +0 -1
- /package/dist/{index.d.ts → cli/index.d.ts} +0 -0
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import{StreamResponseFormatHeader as e}from"./api-
|
|
1
|
+
import{StreamResponseFormatHeader as e}from"./api-Bl9kCFAZ.js";import*as t from"zod/v4";import n,{z as r}from"zod/v4";import{ZodFirstPartyTypeKind as i}from"zod/v3";var a=`vercel.ai.error`,o=Symbol.for(a),s,c=class e extends Error{constructor({name:e,message:t,cause:n}){super(t),this[s]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,a)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}};s=o;var l=c,u=`AI_APICallError`,d=`vercel.ai.error.${u}`,f=Symbol.for(d),p,m=class extends l{constructor({message:e,url:t,requestBodyValues:n,statusCode:r,responseHeaders:i,responseBody:a,cause:o,isRetryable:s=r!=null&&(r===408||r===409||r===429||r>=500),data:c}){super({name:u,message:e,cause:o}),this[p]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=r,this.responseHeaders=i,this.responseBody=a,this.isRetryable=s,this.data=c}static isInstance(e){return l.hasMarker(e,d)}};p=f;var h=`AI_EmptyResponseBodyError`,g=`vercel.ai.error.${h}`,_=Symbol.for(g),v,y=class extends l{constructor({message:e=`Empty response body`}={}){super({name:h,message:e}),this[v]=!0}static isInstance(e){return l.hasMarker(e,g)}};v=_;function b(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.message:JSON.stringify(e)}var x=`AI_InvalidArgumentError`,S=`vercel.ai.error.${x}`,C=Symbol.for(S),w,T=class extends l{constructor({message:e,cause:t,argument:n}){super({name:x,message:e,cause:t}),this[w]=!0,this.argument=n}static isInstance(e){return l.hasMarker(e,S)}};w=C;var E=`AI_InvalidPromptError`,D=`vercel.ai.error.${E}`,O=Symbol.for(D),ee,k=class extends l{constructor({prompt:e,message:t,cause:n}){super({name:E,message:`Invalid prompt: ${t}`,cause:n}),this[ee]=!0,this.prompt=e}static isInstance(e){return l.hasMarker(e,D)}};ee=O;var te=`AI_InvalidResponseDataError`,A=`vercel.ai.error.${te}`,j=Symbol.for(A),M,N=class extends l{constructor({data:e,message:t=`Invalid response data: ${JSON.stringify(e)}.`}){super({name:te,message:t}),this[M]=!0,this.data=e}static isInstance(e){return l.hasMarker(e,A)}};M=j;var P=`AI_JSONParseError`,ne=`vercel.ai.error.${P}`,re=Symbol.for(ne),ie,ae=class extends l{constructor({text:e,cause:t}){super({name:P,message:`JSON parsing failed: Text: ${e}.
|
|
2
2
|
Error message: ${b(t)}`,cause:t}),this[ie]=!0,this.text=e}static isInstance(e){return l.hasMarker(e,ne)}};ie=re;var oe=`AI_LoadAPIKeyError`,se=`vercel.ai.error.${oe}`,ce=Symbol.for(se),le,ue=class extends l{constructor({message:e}){super({name:oe,message:e}),this[le]=!0}static isInstance(e){return l.hasMarker(e,se)}};le=ce;var de=`AI_LoadSettingError`,fe=`vercel.ai.error.${de}`,pe=Symbol.for(fe),F;F=pe;var me=`AI_NoContentGeneratedError`,he=`vercel.ai.error.${me}`,ge=Symbol.for(he),_e;_e=ge;var ve=`AI_NoSuchModelError`,ye=`vercel.ai.error.${ve}`,I=Symbol.for(ye),be,xe=class extends l{constructor({errorName:e=ve,modelId:t,modelType:n,message:r=`No such ${n}: ${t}`}){super({name:e,message:r}),this[be]=!0,this.modelId=t,this.modelType=n}static isInstance(e){return l.hasMarker(e,ye)}};be=I;var L=`AI_TooManyEmbeddingValuesForCallError`,Se=`vercel.ai.error.${L}`,Ce=Symbol.for(Se),we,Te=class extends l{constructor(e){super({name:L,message:`Too many values for a single embedding call. The ${e.provider} model "${e.modelId}" can only embed up to ${e.maxEmbeddingsPerCall} values per call, but ${e.values.length} values were provided.`}),this[we]=!0,this.provider=e.provider,this.modelId=e.modelId,this.maxEmbeddingsPerCall=e.maxEmbeddingsPerCall,this.values=e.values}static isInstance(e){return l.hasMarker(e,Se)}};we=Ce;var Ee=`AI_TypeValidationError`,De=`vercel.ai.error.${Ee}`,Oe=Symbol.for(De),ke,Ae=class e extends l{constructor({value:e,cause:t}){super({name:Ee,message:`Type validation failed: Value: ${JSON.stringify(e)}.
|
|
3
3
|
Error message: ${b(t)}`,cause:t}),this[ke]=!0,this.value=e}static isInstance(e){return l.hasMarker(e,De)}static wrap({value:t,cause:n}){return e.isInstance(n)&&n.value===t?n:new e({value:t,cause:n})}};ke=Oe;var je=Ae,Me=`AI_UnsupportedFunctionalityError`,Ne=`vercel.ai.error.${Me}`,Pe=Symbol.for(Ne),Fe,R=class extends l{constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:Me,message:t}),this[Fe]=!0,this.functionality=e}static isInstance(e){return l.hasMarker(e,Ne)}};Fe=Pe;var Ie=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 Le(e){}function Re(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=Le,onError:n=Le,onRetry:r=Le,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=ze(`${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 Ie(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new Ie(`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,4 +1,4 @@
|
|
|
1
|
-
const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./api-
|
|
1
|
+
const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./api-DhKQVJLF.cjs`);let n=require(`zod/v4`);n=e.__toESM(n);let r=require(`zod/v3`);r=e.__toESM(r);var i=`vercel.ai.error`,a=Symbol.for(i),o,s=class e extends Error{constructor({name:e,message:t,cause:n}){super(t),this[o]=!0,this.name=e,this.cause=n}static isInstance(t){return e.hasMarker(t,i)}static hasMarker(e,t){let n=Symbol.for(t);return typeof e==`object`&&!!e&&n in e&&typeof e[n]==`boolean`&&e[n]===!0}};o=a;var c=s,l=`AI_APICallError`,u=`vercel.ai.error.${l}`,d=Symbol.for(u),f,p=class extends c{constructor({message:e,url:t,requestBodyValues:n,statusCode:r,responseHeaders:i,responseBody:a,cause:o,isRetryable:s=r!=null&&(r===408||r===409||r===429||r>=500),data:c}){super({name:l,message:e,cause:o}),this[f]=!0,this.url=t,this.requestBodyValues=n,this.statusCode=r,this.responseHeaders=i,this.responseBody=a,this.isRetryable=s,this.data=c}static isInstance(e){return c.hasMarker(e,u)}};f=d;var m=`AI_EmptyResponseBodyError`,h=`vercel.ai.error.${m}`,g=Symbol.for(h),_,v=class extends c{constructor({message:e=`Empty response body`}={}){super({name:m,message:e}),this[_]=!0}static isInstance(e){return c.hasMarker(e,h)}};_=g;function y(e){return e==null?`unknown error`:typeof e==`string`?e:e instanceof Error?e.message:JSON.stringify(e)}var b=`AI_InvalidArgumentError`,x=`vercel.ai.error.${b}`,S=Symbol.for(x),C,w=class extends c{constructor({message:e,cause:t,argument:n}){super({name:b,message:e,cause:t}),this[C]=!0,this.argument=n}static isInstance(e){return c.hasMarker(e,x)}};C=S;var T=`AI_InvalidPromptError`,E=`vercel.ai.error.${T}`,D=Symbol.for(E),O,k=class extends c{constructor({prompt:e,message:t,cause:n}){super({name:T,message:`Invalid prompt: ${t}`,cause:n}),this[O]=!0,this.prompt=e}static isInstance(e){return c.hasMarker(e,E)}};O=D;var A=`AI_InvalidResponseDataError`,ee=`vercel.ai.error.${A}`,te=Symbol.for(ee),j,M=class extends c{constructor({data:e,message:t=`Invalid response data: ${JSON.stringify(e)}.`}){super({name:A,message:t}),this[j]=!0,this.data=e}static isInstance(e){return c.hasMarker(e,ee)}};j=te;var N=`AI_JSONParseError`,P=`vercel.ai.error.${N}`,ne=Symbol.for(P),re,F=class extends c{constructor({text:e,cause:t}){super({name:N,message:`JSON parsing failed: Text: ${e}.
|
|
2
2
|
Error message: ${y(t)}`,cause:t}),this[re]=!0,this.text=e}static isInstance(e){return c.hasMarker(e,P)}};re=ne;var ie=`AI_LoadAPIKeyError`,ae=`vercel.ai.error.${ie}`,oe=Symbol.for(ae),se,ce=class extends c{constructor({message:e}){super({name:ie,message:e}),this[se]=!0}static isInstance(e){return c.hasMarker(e,ae)}};se=oe;var le=`AI_LoadSettingError`,ue=`vercel.ai.error.${le}`,de=Symbol.for(ue),fe;fe=de;var I=`AI_NoContentGeneratedError`,pe=`vercel.ai.error.${I}`,me=Symbol.for(pe),he;he=me;var ge=`AI_NoSuchModelError`,_e=`vercel.ai.error.${ge}`,ve=Symbol.for(_e),L,ye=class extends c{constructor({errorName:e=ge,modelId:t,modelType:n,message:r=`No such ${n}: ${t}`}){super({name:e,message:r}),this[L]=!0,this.modelId=t,this.modelType=n}static isInstance(e){return c.hasMarker(e,_e)}};L=ve;var be=`AI_TooManyEmbeddingValuesForCallError`,R=`vercel.ai.error.${be}`,xe=Symbol.for(R),Se,Ce=class extends c{constructor(e){super({name:be,message:`Too many values for a single embedding call. The ${e.provider} model "${e.modelId}" can only embed up to ${e.maxEmbeddingsPerCall} values per call, but ${e.values.length} values were provided.`}),this[Se]=!0,this.provider=e.provider,this.modelId=e.modelId,this.maxEmbeddingsPerCall=e.maxEmbeddingsPerCall,this.values=e.values}static isInstance(e){return c.hasMarker(e,R)}};Se=xe;var we=`AI_TypeValidationError`,Te=`vercel.ai.error.${we}`,Ee=Symbol.for(Te),De,Oe=class e extends c{constructor({value:e,cause:t}){super({name:we,message:`Type validation failed: Value: ${JSON.stringify(e)}.
|
|
3
3
|
Error message: ${y(t)}`,cause:t}),this[De]=!0,this.value=e}static isInstance(e){return c.hasMarker(e,Te)}static wrap({value:t,cause:n}){return e.isInstance(n)&&n.value===t?n:new e({value:t,cause:n})}};De=Ee;var ke=Oe,Ae=`AI_UnsupportedFunctionalityError`,je=`vercel.ai.error.${Ae}`,Me=Symbol.for(je),Ne,z=class extends c{constructor({functionality:e,message:t=`'${e}' functionality not supported.`}){super({name:Ae,message:t}),this[Ne]=!0,this.functionality=e}static isInstance(e){return c.hasMarker(e,je)}};Ne=Me;var Pe=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 Fe(e){}function Ie(e){if(typeof e==`function`)throw TypeError("`callbacks` must be an object, got a function instead. Did you mean `{onEvent: fn}`?");let{onEvent:t=Fe,onError:n=Fe,onRetry:r=Fe,onComment:i}=e,a=``,o=!0,s,c=``,l=``;function u(e){let t=o?e.replace(/^\xEF\xBB\xBF/,``):e,[n,r]=Le(`${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 Pe(`Invalid \`retry\` value: "${t}"`,{type:`invalid-retry`,value:t,line:i}));break;default:n(new Pe(`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(`
|
package/dist/client.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./client-
|
|
1
|
+
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./client-pr8z4xo-.cjs`);require(`./api-DhKQVJLF.cjs`),exports.AgentClient=t.AgentClient,exports.convertResponseToUIMessageStream=t.convertResponseToUIMessageStream,exports.createClientFromAgent=t.createClientFromAgent,exports.default=t.createClient;
|
package/dist/client.d.cts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./index-
|
|
2
|
-
import { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClient, createClientFromAgent } from "./client-
|
|
1
|
+
import "./index-Hwp0nvOG.cjs";
|
|
2
|
+
import { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClient, createClientFromAgent } from "./client-BmidwoTD.cjs";
|
|
3
3
|
export { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClientFromAgent, createClient as default };
|
package/dist/client.d.ts
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import "./index-
|
|
2
|
-
import { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClient, createClientFromAgent } from "./client-
|
|
1
|
+
import "./index-C29YiDK4.js";
|
|
2
|
+
import { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClient, createClientFromAgent } from "./client-cnNP66Da.js";
|
|
3
3
|
export { AgentClient, AgentClientOptions, RequestOptions, convertResponseToUIMessageStream, createClientFromAgent, createClient as default };
|
package/dist/client.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{AgentClient as e,convertResponseToUIMessageStream as t,createClient as n,createClientFromAgent as r}from"./client-
|
|
1
|
+
import{AgentClient as e,convertResponseToUIMessageStream as t,createClient as n,createClientFromAgent as r}from"./client-C1l580Un.js";import"./api-Bl9kCFAZ.js";export{e as AgentClient,t as convertResponseToUIMessageStream,r as createClientFromAgent,n as default};
|
|
@@ -34,8 +34,6 @@ interface SendMessagesOptions {
|
|
|
34
34
|
readonly abortSignal?: AbortSignal;
|
|
35
35
|
}
|
|
36
36
|
interface Agent {
|
|
37
|
-
readonly displayName: string;
|
|
38
|
-
readonly description?: string;
|
|
39
37
|
sendMessages(options: SendMessagesOptions): Promise<SendMessagesResponse> | SendMessagesResponse;
|
|
40
38
|
webhook?(request: Request): Promise<Response | void>;
|
|
41
39
|
}
|
|
@@ -48,10 +46,6 @@ interface Agent {
|
|
|
48
46
|
*/
|
|
49
47
|
type AgentDefaultExport = {
|
|
50
48
|
readonly version: "v0";
|
|
51
|
-
readonly metadata: {
|
|
52
|
-
readonly displayName: string;
|
|
53
|
-
readonly description?: string;
|
|
54
|
-
};
|
|
55
49
|
fetch: (request: Request) => Promise<Response> | Response;
|
|
56
50
|
};
|
|
57
51
|
/**
|
|
@@ -34,8 +34,6 @@ interface SendMessagesOptions {
|
|
|
34
34
|
readonly abortSignal?: AbortSignal;
|
|
35
35
|
}
|
|
36
36
|
interface Agent {
|
|
37
|
-
readonly displayName: string;
|
|
38
|
-
readonly description?: string;
|
|
39
37
|
sendMessages(options: SendMessagesOptions): Promise<SendMessagesResponse> | SendMessagesResponse;
|
|
40
38
|
webhook?(request: Request): Promise<Response | void>;
|
|
41
39
|
}
|
|
@@ -48,10 +46,6 @@ interface Agent {
|
|
|
48
46
|
*/
|
|
49
47
|
type AgentDefaultExport = {
|
|
50
48
|
readonly version: "v0";
|
|
51
|
-
readonly metadata: {
|
|
52
|
-
readonly displayName: string;
|
|
53
|
-
readonly description?: string;
|
|
54
|
-
};
|
|
55
49
|
fetch: (request: Request) => Promise<Response> | Response;
|
|
56
50
|
};
|
|
57
51
|
/**
|
package/dist/runtime/node.d.cts
CHANGED
package/dist/runtime/node.d.ts
CHANGED
package/dist/test.cjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./client-
|
|
1
|
+
const e=require(`./chunk-hhQzssFb.cjs`),t=require(`./client-pr8z4xo-.cjs`);require(`./api-DhKQVJLF.cjs`);const n=require(`./node-CGFEA9MV.cjs`);let r=require(`fs/promises`);r=e.__toESM(r);let i=require(`path`);i=e.__toESM(i);async function a(e,{outdir:t}={}){t||=await s(e);let n=(0,i.join)(t,`agent.js`),r=u(),a=await r.build({...l,entryPoints:[e],outfile:n});if(a.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:n}}async function o(e){let t=await c(e,`package.json`);if(!t)throw Error(`No package.json found in ${e}`);let n=JSON.parse(await(0,r.readFile)(t,`utf-8`)),a=n.main;if(!a)throw Error(`"main" is not set in ${(0,i.relative)(process.cwd(),t)}. It should be set to the entrypoint of your agent.`);let o=(0,i.join)((0,i.dirname)(t),a),s=await(0,r.stat)(o);if(!s.isFile())throw Error(`${o} is not a file.`);return o}async function s(e){let t=await c(e,`node_modules`);if(!t){let t=await(0,r.stat)(e);return t.isDirectory()?(0,i.join)(e,`.blink`):(0,i.join)((0,i.dirname)(e),`.blink`)}let n=(0,i.join)(t,`.blink`);return await(0,r.mkdir)(n,{recursive:!0}),n}async function c(e,t){let n=e;for(;n!==(0,i.dirname)(n);){let e=(0,i.join)(n,t);try{return await(0,r.stat)(e),e}catch{}n=(0,i.dirname)(n)}}const l={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},u=()=>{try{return require(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};async function d(e){let r=e?.entrypoint??await o(e?.cwd??process.cwd());if(!r)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let i;if(typeof Bun<`u`)i=n.requireAsCommonJS(r);else{let{outfile:e}=await a(r);i=n.requireAsCommonJS(e)}return t.createClientFromAgent(i)}exports.create=d;
|
package/dist/test.d.cts
CHANGED
package/dist/test.d.ts
CHANGED
package/dist/test.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{__require as e,requireAsCommonJS as t}from"./node-2xu7NtOM.js";import{createClientFromAgent as n}from"./client-
|
|
1
|
+
import{__require as e,requireAsCommonJS as t}from"./node-2xu7NtOM.js";import{createClientFromAgent as n}from"./client-C1l580Un.js";import"./api-Bl9kCFAZ.js";import{mkdir as r,readFile as i,stat as a}from"fs/promises";import{dirname as o,join as s,relative as c}from"path";async function l(e,{outdir:t}={}){t||=await d(e);let n=s(t,`agent.js`),r=m(),i=await r.build({...p,entryPoints:[e],outfile:n});if(i.errors.length>0)throw Error(`Failed to build agent!`);return{outfile:n}}async function u(e){let t=await f(e,`package.json`);if(!t)throw Error(`No package.json found in ${e}`);let n=JSON.parse(await i(t,`utf-8`)),r=n.main;if(!r)throw Error(`"main" is not set in ${c(process.cwd(),t)}. It should be set to the entrypoint of your agent.`);let l=s(o(t),r),u=await a(l);if(!u.isFile())throw Error(`${l} is not a file.`);return l}async function d(e){let t=await f(e,`node_modules`);if(!t){let t=await a(e);return t.isDirectory()?s(e,`.blink`):s(o(e),`.blink`)}let n=s(t,`.blink`);return await r(n,{recursive:!0}),n}async function f(e,t){let n=e;for(;n!==o(n);){let e=s(n,t);try{return await a(e),e}catch{}n=o(n)}}const p={bundle:!0,format:`cjs`,platform:`node`,target:`node18`,sourcemap:`inline`},m=()=>{try{return e(`esbuild`)}catch{throw Error("esbuild is not installed. Please install it with `bun add esbuild`.")}};async function h(e){let r=e?.entrypoint??await u(e?.cwd??process.cwd());if(!r)throw Error(`Unable to locate the entrypoint of the agent. Please specify it manually.`);let i;if(typeof Bun<`u`)i=t(r);else{let{outfile:e}=await l(r);i=t(e)}return n(i)}export{h as create};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "blink",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.23",
|
|
4
4
|
"description": "Blink is a JavaScript runtime for building and deploying AI agents.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -41,6 +41,7 @@
|
|
|
41
41
|
"@ai-sdk/openai": "^2.0.28",
|
|
42
42
|
"@ai-sdk/react": "^2.0.35",
|
|
43
43
|
"@ai-sdk/xai": "^2.0.16",
|
|
44
|
+
"@blink.so/api": "^0.0.3",
|
|
44
45
|
"@clack/prompts": "^0.11.0",
|
|
45
46
|
"@hugodutka/gemini-cli": "^0.6.0-nightly-20250912-5",
|
|
46
47
|
"@types/marked-terminal": "^6.1.1",
|
|
@@ -56,7 +57,8 @@
|
|
|
56
57
|
"open": "^10.2.0",
|
|
57
58
|
"react": "^19.1.1",
|
|
58
59
|
"react-devtools-core": "^6.1.5",
|
|
59
|
-
"tsdown": "^0.14.2"
|
|
60
|
+
"tsdown": "^0.14.2",
|
|
61
|
+
"xdg-app-paths": "^8.3.0"
|
|
60
62
|
},
|
|
61
63
|
"optionalDependencies": {
|
|
62
64
|
"esbuild": "^0.25.9"
|
package/dist/api-SDPsfZpp.cjs
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
const e=require(`./chunk-hhQzssFb.cjs`);let t=require(`util`);t=e.__toESM(t);const n=Object.freeze({find(e){throw Error(`Not implemented`)},create(e){throw Error(`Not implemented`)},message(e,t,n){throw Error(`Not implemented`)}});function r(e){return{version:`v0`,metadata:{displayName:e.displayName,description:e.description},fetch:async t=>{let n=new URL(t.url);switch(n.pathname){case`/sendMessages`:return a(t,e);case`/webhook`:return o(t,e);default:return new Response(`Not found`,{status:404})}}}}let i;async function a(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 a;try{a=await n.sendMessages({messages:r.messages})}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}if(a instanceof Response)return a;if(a instanceof ReadableStream)return new Response(a,{headers:{"Content-Type":`text/event-stream`}});if(typeof a!=`object`||typeof a==`object`&&!(`toUIMessageStream`in a))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);i||=new TextEncoder;let o=new TransformStream({transform(e,t){t.enqueue(i.encode(`data: ${JSON.stringify(e)}\n\n`))}}),s=a.toUIMessageStream();return s.pipeTo(o.writable),new Response(o.readable,{headers:{"Content-Type":`text/event-stream`}})}async function o(e,n){if(!n.webhook)return new Response(`No webhook function provided`,{status:501});try{let t=await n.webhook(e);return t||new Response(`OK`,{status:200})}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}}const s=`x-blink-stream-response-format`;function c(e,t){return e.headers.set(s,t),e}Object.defineProperty(exports,`StreamResponseFormatHeader`,{enumerable:!0,get:function(){return s}}),Object.defineProperty(exports,`agent`,{enumerable:!0,get:function(){return r}}),Object.defineProperty(exports,`chat`,{enumerable:!0,get:function(){return n}}),Object.defineProperty(exports,`withResponseFormat`,{enumerable:!0,get:function(){return c}});
|
package/dist/api-_RFSw3t6.js
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import e from"util";const t=Object.freeze({find(e){throw Error(`Not implemented`)},create(e){throw Error(`Not implemented`)},message(e,t,n){throw Error(`Not implemented`)}});function n(e){return{version:`v0`,metadata:{displayName:e.displayName,description:e.description},fetch:async t=>{let n=new URL(t.url);switch(n.pathname){case`/sendMessages`:return i(t,e);case`/webhook`:return a(t,e);default:return new Response(`Not found`,{status:404})}}}}let r;async function i(t,n){if(t.method!==`POST`)return new Response(`Method not allowed`,{status:405});let i;try{i=await t.json()}catch{return new Response(`Invalid request`,{status:400})}let a;try{a=await n.sendMessages({messages:i.messages})}catch(t){return new Response(JSON.stringify({error:e.inspect(t)}),{status:500})}if(a instanceof Response)return a;if(a instanceof ReadableStream)return new Response(a,{headers:{"Content-Type":`text/event-stream`}});if(typeof a!=`object`||typeof a==`object`&&!(`toUIMessageStream`in a))throw Error(`The agent must return a "Response", "ReadableStream", or "toUIMessageStream" function.`);r||=new TextEncoder;let o=new TransformStream({transform(e,t){t.enqueue(r.encode(`data: ${JSON.stringify(e)}\n\n`))}}),s=a.toUIMessageStream();return s.pipeTo(o.writable),new Response(o.readable,{headers:{"Content-Type":`text/event-stream`}})}async function a(t,n){if(!n.webhook)return new Response(`No webhook function provided`,{status:501});try{let e=await n.webhook(t);return e||new Response(`OK`,{status:200})}catch(t){return new Response(JSON.stringify({error:e.inspect(t)}),{status:500})}}const o=`x-blink-stream-response-format`;function s(e,t){return e.headers.set(o,t),e}export{o as StreamResponseFormatHeader,n as agent,t as chat,s as withResponseFormat};
|
|
File without changes
|