agents 0.0.46 → 0.0.48

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/mcp.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/mcp.ts","../../../node_modules/@modelcontextprotocol/sdk/src/types.ts","../src/lib/sseEdge.ts"],"sourcesContent":["import { DurableObject } from \"cloudflare:workers\";\nimport { Agent } from \"./\";\nimport type { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { SSEEdgeTransport } from \"./lib/sseEdge.ts\";\nimport type { Connection } from \"./\";\n\n// CORS helper function\nfunction handleCORS(\n request: Request,\n corsOptions?: CORSOptions\n): Response | null {\n const origin = request.headers.get(\"Origin\") || \"*\";\n const corsHeaders = {\n \"Access-Control-Allow-Origin\": corsOptions?.origin || origin,\n \"Access-Control-Allow-Methods\":\n corsOptions?.methods || \"GET, POST, OPTIONS\",\n \"Access-Control-Allow-Headers\": corsOptions?.headers || \"Content-Type\",\n \"Access-Control-Max-Age\": (corsOptions?.maxAge || 86400).toString(),\n };\n\n if (request.method === \"OPTIONS\") {\n return new Response(null, { headers: corsHeaders });\n }\n\n return null;\n}\n\ninterface CORSOptions {\n origin?: string;\n methods?: string;\n headers?: string;\n maxAge?: number;\n}\n\nexport abstract class McpAgent<\n Env = unknown,\n State = unknown,\n Props extends Record<string, unknown> = Record<string, unknown>,\n> extends DurableObject<Env> {\n /**\n * Since McpAgent's _aren't_ yet real \"Agents\" (they route differently, don't support\n * websockets, don't support hibernation), let's only expose a couple of the methods\n * to the outer class: initialState/state/setState/onStateUpdate/sql\n */\n readonly #agent: Agent<Env, State>;\n protected constructor(ctx: DurableObjectState, env: Env) {\n super(ctx, env);\n const self = this;\n\n // Since McpAgent's _aren't_ yet real \"Agents\" (they route differently, they don't support\n // websockets, hibernation, scheduling etc), let's only expose a couple of the methods\n // to the outer class for now.\n this.#agent = new (class extends Agent<Env, State> {\n static options = {\n hibernate: false,\n };\n\n onStateUpdate(state: State | undefined, source: Connection | \"server\") {\n return self.onStateUpdate(state, source);\n }\n })(ctx, env);\n }\n\n /**\n * Agents API allowlist\n */\n initialState!: State;\n get state() {\n if (this.initialState) this.#agent.initialState = this.initialState;\n return this.#agent.state;\n }\n sql<T = Record<string, string | number | boolean | null>>(\n strings: TemplateStringsArray,\n ...values: (string | number | boolean | null)[]\n ) {\n return this.#agent.sql<T>(strings, ...values);\n }\n\n setState(state: State) {\n return this.#agent.setState(state);\n }\n onStateUpdate(state: State | undefined, source: Connection | \"server\") {\n // override this to handle state updates\n }\n\n /**\n * McpAgent API\n */\n abstract server: McpServer;\n private transport!: SSEEdgeTransport;\n props!: Props;\n initRun = false;\n\n abstract init(): Promise<void>;\n\n async _init(props: Props) {\n this.props = props;\n if (!this.initRun) {\n this.initRun = true;\n await this.init();\n }\n }\n\n async onSSE(path: string): Promise<Response> {\n this.transport = new SSEEdgeTransport(\n `${path}/message`,\n this.ctx.id.toString()\n );\n await this.server.connect(this.transport);\n return this.transport.sseResponse;\n }\n\n async onMCPMessage(request: Request): Promise<Response> {\n return this.transport.handlePostMessage(request);\n }\n\n static mount(\n path: string,\n {\n binding = \"MCP_OBJECT\",\n corsOptions,\n }: {\n binding?: string;\n corsOptions?: CORSOptions;\n } = {}\n ) {\n const basePattern = new URLPattern({ pathname: path });\n const messagePattern = new URLPattern({ pathname: `${path}/message` });\n\n return {\n fetch: async (\n request: Request,\n env: Record<string, DurableObjectNamespace<McpAgent>>,\n ctx: ExecutionContext\n ) => {\n // Handle CORS preflight\n const corsResponse = handleCORS(request, corsOptions);\n if (corsResponse) return corsResponse;\n\n const url = new URL(request.url);\n const namespace = env[binding];\n\n if (request.method === \"GET\" && basePattern.test(url)) {\n const object = namespace.get(namespace.newUniqueId());\n // @ts-ignore\n await object._init(ctx.props);\n const response = await object.onSSE(path);\n\n // Convert headers to a plain object\n const headerObj: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headerObj[key] = value;\n });\n headerObj[\"Access-Control-Allow-Origin\"] = corsOptions?.origin || \"*\";\n\n // Clone the response to get a new body stream\n // const clonedResponse = response.clone();\n return new Response(response.body as unknown as BodyInit, {\n status: response.status,\n statusText: response.statusText,\n headers: headerObj,\n });\n }\n\n if (request.method === \"POST\" && messagePattern.test(url)) {\n const sessionId = url.searchParams.get(\"sessionId\");\n if (!sessionId) {\n return new Response(\n `Missing sessionId. Expected POST to ${path} to initiate new one`,\n { status: 400 }\n );\n }\n const object = namespace.get(namespace.idFromString(sessionId));\n const response = await object.onMCPMessage(request);\n\n // Convert headers to a plain object\n const headerObj: Record<string, string> = {};\n response.headers.forEach((value, key) => {\n headerObj[key] = value;\n });\n headerObj[\"Access-Control-Allow-Origin\"] = corsOptions?.origin || \"*\";\n\n return new Response(response.body as unknown as BodyInit, {\n status: response.status,\n statusText: response.statusText,\n headers: headerObj,\n });\n }\n\n return new Response(\"Not Found\", { status: 404 });\n },\n };\n }\n}\n",null,"// From https://github.com/modelcontextprotocol/typescript-sdk/blob/77dfb11aadb7f6bca4ffdf6e8e3d628a1d6df3be/src/server/sseEdge.ts\n\nimport type { Transport } from \"@modelcontextprotocol/sdk/shared/transport.js\";\nimport {\n type JSONRPCMessage,\n JSONRPCMessageSchema,\n} from \"@modelcontextprotocol/sdk/types.js\";\n\nconst MAXIMUM_MESSAGE_SIZE = 4 * 1024 * 1024; // 4MB\n\n/**\n * This transport is compatible with Cloudflare Workers and other edge environments\n */\nexport class SSEEdgeTransport implements Transport {\n private controller: ReadableStreamDefaultController<Uint8Array> | null = null;\n readonly stream: ReadableStream<Uint8Array>;\n private closed = false;\n\n onclose?: () => void;\n onerror?: (error: Error) => void;\n onmessage?: (message: JSONRPCMessage) => void;\n\n /**\n * Creates a new EdgeSSETransport, which will direct the MPC client to POST messages to messageUrl\n */\n constructor(\n private messageUrl: string,\n readonly sessionId: string\n ) {\n // Create a readable stream for SSE\n this.stream = new ReadableStream({\n start: (controller) => {\n this.controller = controller;\n },\n cancel: () => {\n this.closed = true;\n this.onclose?.();\n },\n });\n }\n\n async start(): Promise<void> {\n if (this.closed) {\n throw new Error(\n \"SSE transport already closed! If using Server class, note that connect() calls start() automatically.\"\n );\n }\n\n // Make sure the controller exists\n if (!this.controller) {\n throw new Error(\"Stream controller not initialized\");\n }\n\n // Send the endpoint event\n const endpointMessage = `event: endpoint\\ndata: ${encodeURI(this.messageUrl)}?sessionId=${this.sessionId}\\n\\n`;\n this.controller.enqueue(new TextEncoder().encode(endpointMessage));\n }\n\n get sseResponse(): Response {\n // Ensure the stream is properly initialized\n if (!this.stream) {\n throw new Error(\"Stream not initialized\");\n }\n\n // Return a response with the SSE stream\n return new Response(this.stream, {\n headers: {\n \"Content-Type\": \"text/event-stream\",\n \"Cache-Control\": \"no-cache\",\n Connection: \"keep-alive\",\n },\n });\n }\n\n /**\n * Handles incoming Requests\n */\n async handlePostMessage(req: Request): Promise<Response> {\n if (this.closed || !this.controller) {\n const message = \"SSE connection not established\";\n return new Response(message, { status: 500 });\n }\n\n try {\n const contentType = req.headers.get(\"content-type\") || \"\";\n if (!contentType.includes(\"application/json\")) {\n throw new Error(`Unsupported content-type: ${contentType}`);\n }\n\n // Check if the request body is too large\n const contentLength = Number.parseInt(\n req.headers.get(\"content-length\") || \"0\",\n 10\n );\n if (contentLength > MAXIMUM_MESSAGE_SIZE) {\n throw new Error(`Request body too large: ${contentLength} bytes`);\n }\n\n // Clone the request before reading the body to avoid stream issues\n const body = await req.json();\n await this.handleMessage(body);\n return new Response(\"Accepted\", { status: 202 });\n } catch (error) {\n this.onerror?.(error as Error);\n return new Response(String(error), { status: 400 });\n }\n }\n\n /**\n * Handle a client message, regardless of how it arrived. This can be used to inform the server of messages that arrive via a means different than HTTP POST.\n */\n async handleMessage(message: unknown): Promise<void> {\n let parsedMessage: JSONRPCMessage;\n try {\n parsedMessage = JSONRPCMessageSchema.parse(message);\n } catch (error) {\n this.onerror?.(error as Error);\n throw error;\n }\n\n this.onmessage?.(parsedMessage);\n }\n\n async close(): Promise<void> {\n if (!this.closed && this.controller) {\n this.controller.close();\n this.stream.cancel();\n this.closed = true;\n this.onclose?.();\n }\n }\n\n async send(message: JSONRPCMessage): Promise<void> {\n if (this.closed || !this.controller) {\n throw new Error(\"Not connected\");\n }\n\n const messageText = `event: message\\ndata: ${JSON.stringify(message)}\\n\\n`;\n this.controller.enqueue(new TextEncoder().encode(messageText));\n }\n}\n"],"mappings":"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","names":["ErrorCode"]}
package/dist/react.js DELETED
@@ -1,97 +0,0 @@
1
- import "./chunk-HMLY7DHA.js";
2
-
3
- // src/react.tsx
4
- import { usePartySocket } from "partysocket/react";
5
- import { useCallback, useRef } from "react";
6
- function useAgent(options) {
7
- const pendingCallsRef = useRef(
8
- /* @__PURE__ */ new Map()
9
- );
10
- const call = useCallback(
11
- (method, args = [], streamOptions) => {
12
- return new Promise((resolve, reject) => {
13
- const id = Math.random().toString(36).slice(2);
14
- pendingCallsRef.current.set(id, {
15
- resolve,
16
- reject,
17
- stream: streamOptions
18
- });
19
- const request = {
20
- type: "rpc",
21
- id,
22
- method,
23
- args
24
- };
25
- agent.send(JSON.stringify(request));
26
- });
27
- },
28
- []
29
- );
30
- const agent = usePartySocket({
31
- prefix: "agents",
32
- party: options.agent,
33
- room: options.name || "default",
34
- ...options,
35
- onMessage: (message) => {
36
- if (typeof message.data === "string") {
37
- let parsedMessage;
38
- try {
39
- parsedMessage = JSON.parse(message.data);
40
- } catch (error) {
41
- return options.onMessage?.(message);
42
- }
43
- if (parsedMessage.type === "cf_agent_state") {
44
- options.onStateUpdate?.(parsedMessage.state, "server");
45
- return;
46
- }
47
- if (parsedMessage.type === "rpc") {
48
- const response = parsedMessage;
49
- const pending = pendingCallsRef.current.get(response.id);
50
- if (!pending) return;
51
- if (!response.success) {
52
- pending.reject(new Error(response.error));
53
- pendingCallsRef.current.delete(response.id);
54
- pending.stream?.onError?.(response.error);
55
- return;
56
- }
57
- if ("done" in response) {
58
- if (response.done) {
59
- pending.resolve(response.result);
60
- pendingCallsRef.current.delete(response.id);
61
- pending.stream?.onDone?.(response.result);
62
- } else {
63
- pending.stream?.onChunk?.(response.result);
64
- }
65
- } else {
66
- pending.resolve(response.result);
67
- pendingCallsRef.current.delete(response.id);
68
- }
69
- return;
70
- }
71
- }
72
- options.onMessage?.(message);
73
- }
74
- });
75
- agent.setState = (state) => {
76
- agent.send(JSON.stringify({ type: "cf_agent_state", state }));
77
- options.onStateUpdate?.(state, "client");
78
- };
79
- agent.call = call;
80
- agent.agent = options.agent;
81
- agent.name = options.name || "default";
82
- if (agent.agent !== agent.agent.toLowerCase()) {
83
- console.warn(
84
- `Agent name: ${agent.agent} should probably be in lowercase. Received: ${agent.agent}`
85
- );
86
- }
87
- if (agent.name !== agent.name.toLowerCase()) {
88
- console.warn(
89
- `Agent instance name: ${agent.name} should probably be in lowercase. Received: ${agent.name}`
90
- );
91
- }
92
- return agent;
93
- }
94
- export {
95
- useAgent
96
- };
97
- //# sourceMappingURL=react.js.map
package/dist/react.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/react.tsx"],"sourcesContent":["import type { PartySocket } from \"partysocket\";\nimport { usePartySocket } from \"partysocket/react\";\nimport { useCallback, useRef } from \"react\";\nimport type { RPCRequest, RPCResponse } from \"./\";\nimport type { StreamOptions } from \"./client\";\n\n/**\n * Options for the useAgent hook\n * @template State Type of the Agent's state\n */\nexport type UseAgentOptions<State = unknown> = Omit<\n Parameters<typeof usePartySocket>[0],\n \"party\" | \"room\"\n> & {\n /** Name of the agent to connect to */\n agent: string;\n /** Name of the specific Agent instance */\n name?: string;\n /** Called when the Agent's state is updated */\n onStateUpdate?: (state: State, source: \"server\" | \"client\") => void;\n};\n\n/**\n * React hook for connecting to an Agent\n * @template State Type of the Agent's state\n * @param options Connection options\n * @returns WebSocket connection with setState and call methods\n */\nexport function useAgent<State = unknown>(\n options: UseAgentOptions<State>\n): PartySocket & {\n agent: string;\n name: string;\n setState: (state: State) => void;\n call: <T = unknown>(\n method: string,\n args?: unknown[],\n streamOptions?: StreamOptions\n ) => Promise<T>;\n} {\n // Keep track of pending RPC calls\n const pendingCallsRef = useRef(\n new Map<\n string,\n {\n resolve: (value: unknown) => void;\n reject: (error: Error) => void;\n stream?: StreamOptions;\n }\n >()\n );\n\n // Create the call method\n const call = useCallback(\n <T = unknown,>(\n method: string,\n args: unknown[] = [],\n streamOptions?: StreamOptions\n ): Promise<T> => {\n return new Promise((resolve, reject) => {\n const id = Math.random().toString(36).slice(2);\n pendingCallsRef.current.set(id, {\n resolve: resolve as (value: unknown) => void,\n reject,\n stream: streamOptions,\n });\n\n const request: RPCRequest = {\n type: \"rpc\",\n id,\n method,\n args,\n };\n\n agent.send(JSON.stringify(request));\n });\n },\n []\n );\n\n const agent = usePartySocket({\n prefix: \"agents\",\n party: options.agent,\n room: options.name || \"default\",\n ...options,\n onMessage: (message) => {\n if (typeof message.data === \"string\") {\n let parsedMessage: Record<string, unknown>;\n try {\n parsedMessage = JSON.parse(message.data);\n } catch (error) {\n // silently ignore invalid messages for now\n // TODO: log errors with log levels\n return options.onMessage?.(message);\n }\n if (parsedMessage.type === \"cf_agent_state\") {\n options.onStateUpdate?.(parsedMessage.state as State, \"server\");\n return;\n }\n if (parsedMessage.type === \"rpc\") {\n const response = parsedMessage as RPCResponse;\n const pending = pendingCallsRef.current.get(response.id);\n if (!pending) return;\n\n if (!response.success) {\n pending.reject(new Error(response.error));\n pendingCallsRef.current.delete(response.id);\n pending.stream?.onError?.(response.error);\n return;\n }\n\n // Handle streaming responses\n if (\"done\" in response) {\n if (response.done) {\n pending.resolve(response.result);\n pendingCallsRef.current.delete(response.id);\n pending.stream?.onDone?.(response.result);\n } else {\n pending.stream?.onChunk?.(response.result);\n }\n } else {\n // Non-streaming response\n pending.resolve(response.result);\n pendingCallsRef.current.delete(response.id);\n }\n return;\n }\n }\n options.onMessage?.(message);\n },\n }) as PartySocket & {\n agent: string;\n name: string;\n setState: (state: State) => void;\n call: <T = unknown>(\n method: string,\n args?: unknown[],\n streamOptions?: StreamOptions\n ) => Promise<T>;\n };\n\n agent.setState = (state: State) => {\n agent.send(JSON.stringify({ type: \"cf_agent_state\", state }));\n options.onStateUpdate?.(state, \"client\");\n };\n\n agent.call = call;\n agent.agent = options.agent;\n agent.name = options.name || \"default\";\n\n // warn if agent or name isn't in lowercase\n if (agent.agent !== agent.agent.toLowerCase()) {\n console.warn(\n `Agent name: ${agent.agent} should probably be in lowercase. Received: ${agent.agent}`\n );\n }\n if (agent.name !== agent.name.toLowerCase()) {\n console.warn(\n `Agent instance name: ${agent.name} should probably be in lowercase. Received: ${agent.name}`\n );\n }\n\n return agent;\n}\n"],"mappings":";;;AACA,SAAS,sBAAsB;AAC/B,SAAS,aAAa,cAAc;AA0B7B,SAAS,SACd,SAUA;AAEA,QAAM,kBAAkB;AAAA,IACtB,oBAAI,IAOF;AAAA,EACJ;AAGA,QAAM,OAAO;AAAA,IACX,CACE,QACA,OAAkB,CAAC,GACnB,kBACe;AACf,aAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACtC,cAAM,KAAK,KAAK,OAAO,EAAE,SAAS,EAAE,EAAE,MAAM,CAAC;AAC7C,wBAAgB,QAAQ,IAAI,IAAI;AAAA,UAC9B;AAAA,UACA;AAAA,UACA,QAAQ;AAAA,QACV,CAAC;AAED,cAAM,UAAsB;AAAA,UAC1B,MAAM;AAAA,UACN;AAAA,UACA;AAAA,UACA;AAAA,QACF;AAEA,cAAM,KAAK,KAAK,UAAU,OAAO,CAAC;AAAA,MACpC,CAAC;AAAA,IACH;AAAA,IACA,CAAC;AAAA,EACH;AAEA,QAAM,QAAQ,eAAe;AAAA,IAC3B,QAAQ;AAAA,IACR,OAAO,QAAQ;AAAA,IACf,MAAM,QAAQ,QAAQ;AAAA,IACtB,GAAG;AAAA,IACH,WAAW,CAAC,YAAY;AACtB,UAAI,OAAO,QAAQ,SAAS,UAAU;AACpC,YAAI;AACJ,YAAI;AACF,0BAAgB,KAAK,MAAM,QAAQ,IAAI;AAAA,QACzC,SAAS,OAAO;AAGd,iBAAO,QAAQ,YAAY,OAAO;AAAA,QACpC;AACA,YAAI,cAAc,SAAS,kBAAkB;AAC3C,kBAAQ,gBAAgB,cAAc,OAAgB,QAAQ;AAC9D;AAAA,QACF;AACA,YAAI,cAAc,SAAS,OAAO;AAChC,gBAAM,WAAW;AACjB,gBAAM,UAAU,gBAAgB,QAAQ,IAAI,SAAS,EAAE;AACvD,cAAI,CAAC,QAAS;AAEd,cAAI,CAAC,SAAS,SAAS;AACrB,oBAAQ,OAAO,IAAI,MAAM,SAAS,KAAK,CAAC;AACxC,4BAAgB,QAAQ,OAAO,SAAS,EAAE;AAC1C,oBAAQ,QAAQ,UAAU,SAAS,KAAK;AACxC;AAAA,UACF;AAGA,cAAI,UAAU,UAAU;AACtB,gBAAI,SAAS,MAAM;AACjB,sBAAQ,QAAQ,SAAS,MAAM;AAC/B,8BAAgB,QAAQ,OAAO,SAAS,EAAE;AAC1C,sBAAQ,QAAQ,SAAS,SAAS,MAAM;AAAA,YAC1C,OAAO;AACL,sBAAQ,QAAQ,UAAU,SAAS,MAAM;AAAA,YAC3C;AAAA,UACF,OAAO;AAEL,oBAAQ,QAAQ,SAAS,MAAM;AAC/B,4BAAgB,QAAQ,OAAO,SAAS,EAAE;AAAA,UAC5C;AACA;AAAA,QACF;AAAA,MACF;AACA,cAAQ,YAAY,OAAO;AAAA,IAC7B;AAAA,EACF,CAAC;AAWD,QAAM,WAAW,CAAC,UAAiB;AACjC,UAAM,KAAK,KAAK,UAAU,EAAE,MAAM,kBAAkB,MAAM,CAAC,CAAC;AAC5D,YAAQ,gBAAgB,OAAO,QAAQ;AAAA,EACzC;AAEA,QAAM,OAAO;AACb,QAAM,QAAQ,QAAQ;AACtB,QAAM,OAAO,QAAQ,QAAQ;AAG7B,MAAI,MAAM,UAAU,MAAM,MAAM,YAAY,GAAG;AAC7C,YAAQ;AAAA,MACN,eAAe,MAAM,KAAK,+CAA+C,MAAM,KAAK;AAAA,IACtF;AAAA,EACF;AACA,MAAI,MAAM,SAAS,MAAM,KAAK,YAAY,GAAG;AAC3C,YAAQ;AAAA,MACN,wBAAwB,MAAM,IAAI,+CAA+C,MAAM,IAAI;AAAA,IAC7F;AAAA,EACF;AAEA,SAAO;AACT;","names":[]}
package/dist/schedule.js DELETED
@@ -1,73 +0,0 @@
1
- import "./chunk-HMLY7DHA.js";
2
-
3
- // src/schedule.ts
4
- import { z } from "zod";
5
- function unstable_getSchedulePrompt(event) {
6
- return `
7
- [Schedule Parser Component]
8
-
9
- Current time: ${event.date.toUTCString()}
10
-
11
- This component parses natural language scheduling requests into a structured format. It extracts:
12
- 1. A clean task description (without timing information)
13
- 2. Scheduling details in one of these formats:
14
- - scheduled: Specific date/time events
15
- - delayed: Relative time delays (in seconds)
16
- - cron: Recurring patterns
17
- - no-schedule: Tasks without timing
18
-
19
- Rules:
20
- - Task descriptions should be clean and focused on the action
21
- - Use numbers (0-6) for days in cron patterns (0=Sunday)
22
- - For recurring tasks, use standard cron syntax
23
- - For relative times, convert to seconds
24
- - For specific dates, use the current time as reference
25
-
26
- Example outputs:
27
- {
28
- "description": "meeting with team",
29
- "when": {
30
- "type": "scheduled",
31
- "date": "tomorrow at 14:00"
32
- }
33
- }
34
-
35
- {
36
- "description": "backup database",
37
- "when": {
38
- "type": "cron",
39
- "cron": "0 0 * * *"
40
- }
41
- }
42
-
43
- {
44
- "description": "send report",
45
- "when": {
46
- "type": "delayed",
47
- "delayInSeconds": 1800
48
- }
49
- }
50
-
51
- [End Schedule Parser Component]
52
- `;
53
- }
54
- var unstable_scheduleSchema = z.object({
55
- description: z.string().describe("A description of the task"),
56
- when: z.object({
57
- type: z.enum(["scheduled", "delayed", "cron", "no-schedule"]).describe("The type of scheduling details"),
58
- date: z.coerce.date().optional().describe(
59
- "execute task at the specified date and time (only use if the type is scheduled)"
60
- ),
61
- delayInSeconds: z.number().optional().describe(
62
- "execute task after a delay in seconds (only use if the type is delayed)"
63
- ),
64
- cron: z.string().optional().describe(
65
- "execute task on a recurring interval specified as cron syntax (only use if the type is cron)"
66
- )
67
- })
68
- });
69
- export {
70
- unstable_getSchedulePrompt,
71
- unstable_scheduleSchema
72
- };
73
- //# sourceMappingURL=schedule.js.map
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/schedule.ts"],"sourcesContent":["import { z } from \"zod\";\n\nexport type Schedule = z.infer<typeof unstable_scheduleSchema>;\n\nexport function unstable_getSchedulePrompt(event: { date: Date }) {\n return `\n[Schedule Parser Component]\n\nCurrent time: ${event.date.toUTCString()}\n\nThis component parses natural language scheduling requests into a structured format. It extracts:\n1. A clean task description (without timing information)\n2. Scheduling details in one of these formats:\n - scheduled: Specific date/time events\n - delayed: Relative time delays (in seconds)\n - cron: Recurring patterns\n - no-schedule: Tasks without timing\n\nRules:\n- Task descriptions should be clean and focused on the action\n- Use numbers (0-6) for days in cron patterns (0=Sunday)\n- For recurring tasks, use standard cron syntax\n- For relative times, convert to seconds\n- For specific dates, use the current time as reference\n\nExample outputs:\n{\n \"description\": \"meeting with team\",\n \"when\": {\n \"type\": \"scheduled\",\n \"date\": \"tomorrow at 14:00\"\n }\n}\n\n{\n \"description\": \"backup database\",\n \"when\": {\n \"type\": \"cron\",\n \"cron\": \"0 0 * * *\"\n }\n}\n\n{\n \"description\": \"send report\",\n \"when\": {\n \"type\": \"delayed\",\n \"delayInSeconds\": 1800\n }\n}\n\n[End Schedule Parser Component]\n`;\n}\n\nexport const unstable_scheduleSchema = z.object({\n description: z.string().describe(\"A description of the task\"),\n when: z.object({\n type: z\n .enum([\"scheduled\", \"delayed\", \"cron\", \"no-schedule\"])\n .describe(\"The type of scheduling details\"),\n date: z.coerce\n .date()\n .optional()\n .describe(\n \"execute task at the specified date and time (only use if the type is scheduled)\"\n ),\n delayInSeconds: z\n .number()\n .optional()\n .describe(\n \"execute task after a delay in seconds (only use if the type is delayed)\"\n ),\n cron: z\n .string()\n .optional()\n .describe(\n \"execute task on a recurring interval specified as cron syntax (only use if the type is cron)\"\n ),\n }),\n});\n"],"mappings":";;;AAAA,SAAS,SAAS;AAIX,SAAS,2BAA2B,OAAuB;AAChE,SAAO;AAAA;AAAA;AAAA,gBAGO,MAAM,KAAK,YAAY,CAAC;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AA4CxC;AAEO,IAAM,0BAA0B,EAAE,OAAO;AAAA,EAC9C,aAAa,EAAE,OAAO,EAAE,SAAS,2BAA2B;AAAA,EAC5D,MAAM,EAAE,OAAO;AAAA,IACb,MAAM,EACH,KAAK,CAAC,aAAa,WAAW,QAAQ,aAAa,CAAC,EACpD,SAAS,gCAAgC;AAAA,IAC5C,MAAM,EAAE,OACL,KAAK,EACL,SAAS,EACT;AAAA,MACC;AAAA,IACF;AAAA,IACF,gBAAgB,EACb,OAAO,EACP,SAAS,EACT;AAAA,MACC;AAAA,IACF;AAAA,IACF,MAAM,EACH,OAAO,EACP,SAAS,EACT;AAAA,MACC;AAAA,IACF;AAAA,EACJ,CAAC;AACH,CAAC;","names":[]}