blink 0.1.45 → 0.1.46
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 +2 -2
- package/dist/api/index.d.cts +41 -11
- package/dist/api/index.d.ts +41 -11
- package/dist/api/index.js +2 -2
- package/dist/cli/index.js +11 -8
- package/dist/cookie-BtKXrFr6.cjs +1 -0
- package/dist/cookie-CyZUsiHM.js +1 -0
- package/dist/test.cjs +4 -1
- package/dist/test.js +4 -1
- package/package.json +1 -1
- package/dist/cookie-B3SvZDri.cjs +0 -1
- package/dist/cookie-BiKY7-P1.js +0 -1
package/dist/api/index.cjs
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
Object.defineProperty(exports,`__esModule`,{value:!0});const e=require(`../cookie-
|
|
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,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);default:return new Response(`Not found`,{status:404})}if(e.onRequest)try{await e.onRequest(n)}catch(e){return new Response(JSON.stringify({error:t.default.inspect(e)}),{status:500})}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]
|
|
2
2
|
|
|
3
|
-
`)}})).pipeThrough(new TextEncoderStream),{headers:{"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`}})}
|
|
3
|
+
`)}})).pipeThrough(new TextEncoderStream),{headers:{"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`}})}function y(t,n){return t.headers.set(e.StreamResponseFormatHeader,n),t}var b={agent:_,chat:m,storage:h,tools:g};exports.agent=_,exports.chat=m,exports.default=b,exports.storage=h,exports.tools=g,exports.withResponseFormat=y;
|
package/dist/api/index.d.cts
CHANGED
|
@@ -57,21 +57,24 @@ declare const tools: {
|
|
|
57
57
|
*/
|
|
58
58
|
prefix(tools: ToolSet, prefix: string): ToolSet;
|
|
59
59
|
};
|
|
60
|
-
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
|
61
60
|
type ToolsWithContext = Record<string, Tool & {
|
|
62
61
|
with(context: unknown): Tool;
|
|
63
62
|
}>;
|
|
64
|
-
type ContextFromTools<TOOLS extends ToolsWithContext> =
|
|
63
|
+
type ContextFromTools<TOOLS extends ToolsWithContext> = TOOLS[keyof TOOLS] extends {
|
|
65
64
|
with(context: infer C): any;
|
|
66
|
-
} ? C : never
|
|
65
|
+
} ? C : never;
|
|
67
66
|
//#endregion
|
|
68
67
|
//#region src/api/storage.d.ts
|
|
69
68
|
/**
|
|
70
|
-
* Storage
|
|
69
|
+
* Storage allows agents to persist data.
|
|
70
|
+
* Every agent has it's own persistent storage namespace.
|
|
71
71
|
*/
|
|
72
72
|
declare const storage: Readonly<{
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
kv: Readonly<{
|
|
74
|
+
get: (key: string) => Promise<string | undefined>;
|
|
75
|
+
set: (key: string, value: string) => Promise<void>;
|
|
76
|
+
del: (key: string) => Promise<void>;
|
|
77
|
+
}>;
|
|
75
78
|
}>;
|
|
76
79
|
//#endregion
|
|
77
80
|
//#region src/api/index.d.ts
|
|
@@ -86,14 +89,38 @@ type SendMessagesResponse = {
|
|
|
86
89
|
* SendMessagesOptions is the options for the sendMessages function.
|
|
87
90
|
*/
|
|
88
91
|
interface SendMessagesOptions<MESSAGE extends UIMessage = UIMessage> {
|
|
92
|
+
/**
|
|
93
|
+
* Messages are all messages for the history of the chat.
|
|
94
|
+
* It is the user's responsibility to manage context for the chat.
|
|
95
|
+
*/
|
|
89
96
|
readonly messages: MESSAGE[];
|
|
97
|
+
/**
|
|
98
|
+
* Chat is the associated chat for the messages.
|
|
99
|
+
*/
|
|
90
100
|
readonly chat: Chat;
|
|
101
|
+
/**
|
|
102
|
+
* abortSignal can be used to terminate streaming operations
|
|
103
|
+
* immediately when the streaming request ends.
|
|
104
|
+
*/
|
|
91
105
|
readonly abortSignal?: AbortSignal;
|
|
92
|
-
readonly request: Request;
|
|
93
106
|
}
|
|
94
107
|
interface Agent<MESSAGE extends UIMessage = UIMessage> {
|
|
108
|
+
/**
|
|
109
|
+
* sendMessages is called when the agent is streaming chat messages.
|
|
110
|
+
* This is invoked on chat creation, and can be programatically
|
|
111
|
+
* invoked at any time with `blink.chat.message`.
|
|
112
|
+
*/
|
|
95
113
|
sendMessages(options: SendMessagesOptions<MESSAGE>): Promise<SendMessagesResponse> | SendMessagesResponse;
|
|
96
|
-
|
|
114
|
+
/**
|
|
115
|
+
* onRequest is called when the agent receives a request.
|
|
116
|
+
* This is for handling webhooks, or incoming client payloads
|
|
117
|
+
* that warrant a response.
|
|
118
|
+
*
|
|
119
|
+
* @param request The request received by the agent.
|
|
120
|
+
* @returns A response to the request. If void, the agent will
|
|
121
|
+
* respond with a 404.
|
|
122
|
+
*/
|
|
123
|
+
onRequest?(request: Request): Promise<Response | void>;
|
|
97
124
|
}
|
|
98
125
|
/**
|
|
99
126
|
* AgentDefaultExport is the expected default export of a compiled agent.
|
|
@@ -105,7 +132,7 @@ interface Agent<MESSAGE extends UIMessage = UIMessage> {
|
|
|
105
132
|
type AgentDefaultExport = {
|
|
106
133
|
readonly version: "v0";
|
|
107
134
|
fetch: (request: Request) => Promise<Response> | Response;
|
|
108
|
-
readonly
|
|
135
|
+
readonly supportsRequests?: boolean;
|
|
109
136
|
};
|
|
110
137
|
/**
|
|
111
138
|
* agent is the main function to create a Blink agent.
|
|
@@ -123,8 +150,11 @@ declare const _default: {
|
|
|
123
150
|
message: (id: string, message: Message, options?: MessageOptions) => Promise<void>;
|
|
124
151
|
}>;
|
|
125
152
|
storage: Readonly<{
|
|
126
|
-
|
|
127
|
-
|
|
153
|
+
kv: Readonly<{
|
|
154
|
+
get: (key: string) => Promise<string | undefined>;
|
|
155
|
+
set: (key: string, value: string) => Promise<void>;
|
|
156
|
+
del: (key: string) => Promise<void>;
|
|
157
|
+
}>;
|
|
128
158
|
}>;
|
|
129
159
|
tools: {
|
|
130
160
|
with<const TOOLS extends {
|
package/dist/api/index.d.ts
CHANGED
|
@@ -57,21 +57,24 @@ declare const tools: {
|
|
|
57
57
|
*/
|
|
58
58
|
prefix(tools: ToolSet, prefix: string): ToolSet;
|
|
59
59
|
};
|
|
60
|
-
type UnionToIntersection<U> = (U extends unknown ? (k: U) => void : never) extends ((k: infer I) => void) ? I : never;
|
|
61
60
|
type ToolsWithContext = Record<string, Tool & {
|
|
62
61
|
with(context: unknown): Tool;
|
|
63
62
|
}>;
|
|
64
|
-
type ContextFromTools<TOOLS extends ToolsWithContext> =
|
|
63
|
+
type ContextFromTools<TOOLS extends ToolsWithContext> = TOOLS[keyof TOOLS] extends {
|
|
65
64
|
with(context: infer C): any;
|
|
66
|
-
} ? C : never
|
|
65
|
+
} ? C : never;
|
|
67
66
|
//#endregion
|
|
68
67
|
//#region src/api/storage.d.ts
|
|
69
68
|
/**
|
|
70
|
-
* Storage
|
|
69
|
+
* Storage allows agents to persist data.
|
|
70
|
+
* Every agent has it's own persistent storage namespace.
|
|
71
71
|
*/
|
|
72
72
|
declare const storage: Readonly<{
|
|
73
|
-
|
|
74
|
-
|
|
73
|
+
kv: Readonly<{
|
|
74
|
+
get: (key: string) => Promise<string | undefined>;
|
|
75
|
+
set: (key: string, value: string) => Promise<void>;
|
|
76
|
+
del: (key: string) => Promise<void>;
|
|
77
|
+
}>;
|
|
75
78
|
}>;
|
|
76
79
|
//#endregion
|
|
77
80
|
//#region src/api/index.d.ts
|
|
@@ -86,14 +89,38 @@ type SendMessagesResponse = {
|
|
|
86
89
|
* SendMessagesOptions is the options for the sendMessages function.
|
|
87
90
|
*/
|
|
88
91
|
interface SendMessagesOptions<MESSAGE extends UIMessage = UIMessage> {
|
|
92
|
+
/**
|
|
93
|
+
* Messages are all messages for the history of the chat.
|
|
94
|
+
* It is the user's responsibility to manage context for the chat.
|
|
95
|
+
*/
|
|
89
96
|
readonly messages: MESSAGE[];
|
|
97
|
+
/**
|
|
98
|
+
* Chat is the associated chat for the messages.
|
|
99
|
+
*/
|
|
90
100
|
readonly chat: Chat;
|
|
101
|
+
/**
|
|
102
|
+
* abortSignal can be used to terminate streaming operations
|
|
103
|
+
* immediately when the streaming request ends.
|
|
104
|
+
*/
|
|
91
105
|
readonly abortSignal?: AbortSignal;
|
|
92
|
-
readonly request: Request;
|
|
93
106
|
}
|
|
94
107
|
interface Agent<MESSAGE extends UIMessage = UIMessage> {
|
|
108
|
+
/**
|
|
109
|
+
* sendMessages is called when the agent is streaming chat messages.
|
|
110
|
+
* This is invoked on chat creation, and can be programatically
|
|
111
|
+
* invoked at any time with `blink.chat.message`.
|
|
112
|
+
*/
|
|
95
113
|
sendMessages(options: SendMessagesOptions<MESSAGE>): Promise<SendMessagesResponse> | SendMessagesResponse;
|
|
96
|
-
|
|
114
|
+
/**
|
|
115
|
+
* onRequest is called when the agent receives a request.
|
|
116
|
+
* This is for handling webhooks, or incoming client payloads
|
|
117
|
+
* that warrant a response.
|
|
118
|
+
*
|
|
119
|
+
* @param request The request received by the agent.
|
|
120
|
+
* @returns A response to the request. If void, the agent will
|
|
121
|
+
* respond with a 404.
|
|
122
|
+
*/
|
|
123
|
+
onRequest?(request: Request): Promise<Response | void>;
|
|
97
124
|
}
|
|
98
125
|
/**
|
|
99
126
|
* AgentDefaultExport is the expected default export of a compiled agent.
|
|
@@ -105,7 +132,7 @@ interface Agent<MESSAGE extends UIMessage = UIMessage> {
|
|
|
105
132
|
type AgentDefaultExport = {
|
|
106
133
|
readonly version: "v0";
|
|
107
134
|
fetch: (request: Request) => Promise<Response> | Response;
|
|
108
|
-
readonly
|
|
135
|
+
readonly supportsRequests?: boolean;
|
|
109
136
|
};
|
|
110
137
|
/**
|
|
111
138
|
* agent is the main function to create a Blink agent.
|
|
@@ -123,8 +150,11 @@ declare const _default: {
|
|
|
123
150
|
message: (id: string, message: Message, options?: MessageOptions) => Promise<void>;
|
|
124
151
|
}>;
|
|
125
152
|
storage: Readonly<{
|
|
126
|
-
|
|
127
|
-
|
|
153
|
+
kv: Readonly<{
|
|
154
|
+
get: (key: string) => Promise<string | undefined>;
|
|
155
|
+
set: (key: string, value: string) => Promise<void>;
|
|
156
|
+
del: (key: string) => Promise<void>;
|
|
157
|
+
}>;
|
|
128
158
|
}>;
|
|
129
159
|
tools: {
|
|
130
160
|
with<const TOOLS extends {
|
package/dist/api/index.js
CHANGED
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import{serialize as
|
|
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,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);default:return new Response(`Not found`,{status:404})}if(e.onRequest)try{await e.onRequest(t)}catch(e){return new Response(JSON.stringify({error:r.inspect(e)}),{status:500})}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]
|
|
2
2
|
|
|
3
|
-
`)}})).pipeThrough(new TextEncoderStream),{headers:{"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`}})}
|
|
3
|
+
`)}})).pipeThrough(new TextEncoderStream),{headers:{"content-type":`text/event-stream`,"cache-control":`no-cache, no-transform`,connection:`keep-alive`,"x-vercel-ai-ui-message-stream":`v1`,"x-accel-buffering":`no`}})}function x(e,n){return e.headers.set(t,n),e}var S={agent:y,chat:g,storage:_,tools:v};export{y as agent,g as chat,S as default,_ as storage,v as tools,x as withResponseFormat};
|