agents 0.0.0-72863c3 → 0.0.0-74a8c74
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/ai-chat-agent.js +62 -58
- package/dist/ai-chat-agent.js.map +1 -1
- package/dist/ai-react.js +0 -2
- package/dist/ai-react.js.map +1 -1
- package/dist/chunk-EZ76ZGDB.js +1721 -0
- package/dist/chunk-EZ76ZGDB.js.map +1 -0
- package/dist/{chunk-YMUU7QHV.js → chunk-SZEXGW6W.js} +136 -151
- package/dist/{chunk-YMUU7QHV.js.map → chunk-SZEXGW6W.js.map} +1 -1
- package/dist/client.js +20 -27
- package/dist/client.js.map +1 -1
- package/dist/index.js +1 -2
- package/dist/mcp/client.d.ts +675 -0
- package/dist/mcp/client.js +786 -0
- package/dist/mcp/client.js.map +1 -0
- package/dist/mcp/index.d.ts +41 -0
- package/dist/mcp/index.js +135 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/react.js +0 -2
- package/dist/react.js.map +1 -1
- package/dist/schedule.js +0 -2
- package/dist/schedule.js.map +1 -1
- package/package.json +9 -4
- package/dist/chunk-HMLY7DHA.js +0 -16
- package/dist/chunk-HMLY7DHA.js.map +0 -1
- package/dist/mcp.d.ts +0 -58
- package/dist/mcp.js +0 -945
- package/dist/mcp.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../node_modules/eventsource-parser/src/errors.ts","../../../node_modules/eventsource-parser/src/parse.ts","../../../node_modules/eventsource/src/errors.ts","../../../node_modules/eventsource/src/EventSource.ts","../../../node_modules/@modelcontextprotocol/sdk/src/types.ts","../../../node_modules/pkce-challenge/dist/index.node.js","../../../node_modules/@modelcontextprotocol/sdk/src/shared/auth.ts","../../../node_modules/@modelcontextprotocol/sdk/src/client/auth.ts","../../../node_modules/@modelcontextprotocol/sdk/src/client/sse.ts","../src/mcp/sse-edge.ts"],"sourcesContent":["/**\n * The type of error that occurred.\n * @public\n */\nexport type ErrorType = 'invalid-retry' | 'unknown-field'\n\n/**\n * Error thrown when encountering an issue during parsing.\n *\n * @public\n */\nexport class ParseError extends Error {\n /**\n * The type of error that occurred.\n */\n type: ErrorType\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the field name.\n */\n field?: string\n\n /**\n * In the case of an unknown field encountered in the stream, this will be the value of the field.\n */\n value?: string\n\n /**\n * The line that caused the error, if available.\n */\n line?: string\n\n constructor(\n message: string,\n options: {type: ErrorType; field?: string; value?: string; line?: string},\n ) {\n super(message)\n this.name = 'ParseError'\n this.type = options.type\n this.field = options.field\n this.value = options.value\n this.line = options.line\n }\n}\n","/**\n * EventSource/Server-Sent Events parser\n * @see https://html.spec.whatwg.org/multipage/server-sent-events.html\n */\nimport {ParseError} from './errors.ts'\nimport type {EventSourceParser, ParserCallbacks} from './types.ts'\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nfunction noop(_arg: unknown) {\n // intentional noop\n}\n\n/**\n * Creates a new EventSource parser.\n *\n * @param callbacks - Callbacks to invoke on different parsing events:\n * - `onEvent` when a new event is parsed\n * - `onError` when an error occurs\n * - `onRetry` when a new reconnection interval has been sent from the server\n * - `onComment` when a comment is encountered in the stream\n *\n * @returns A new EventSource parser, with `parse` and `reset` methods.\n * @public\n */\nexport function createParser(callbacks: ParserCallbacks): EventSourceParser {\n const {onEvent = noop, onError = noop, onRetry = noop, onComment} = callbacks\n\n let incompleteLine = ''\n\n let isFirstChunk = true\n let id: string | undefined\n let data = ''\n let eventType = ''\n\n function feed(newChunk: string) {\n // Strip any UTF8 byte order mark (BOM) at the start of the stream\n const chunk = isFirstChunk ? newChunk.replace(/^\\xEF\\xBB\\xBF/, '') : newChunk\n\n // If there was a previous incomplete line, append it to the new chunk,\n // so we may process it together as a new (hopefully complete) chunk.\n const [complete, incomplete] = splitLines(`${incompleteLine}${chunk}`)\n\n for (const line of complete) {\n parseLine(line)\n }\n\n incompleteLine = incomplete\n isFirstChunk = false\n }\n\n function parseLine(line: string) {\n // If the line is empty (a blank line), dispatch the event\n if (line === '') {\n dispatchEvent()\n return\n }\n\n // If the line starts with a U+003A COLON character (:), ignore the line.\n if (line.startsWith(':')) {\n if (onComment) {\n onComment(line.slice(line.startsWith(': ') ? 2 : 1))\n }\n return\n }\n\n // If the line contains a U+003A COLON character (:)\n const fieldSeparatorIndex = line.indexOf(':')\n if (fieldSeparatorIndex !== -1) {\n // Collect the characters on the line before the first U+003A COLON character (:),\n // and let `field` be that string.\n const field = line.slice(0, fieldSeparatorIndex)\n\n // Collect the characters on the line after the first U+003A COLON character (:),\n // and let `value` be that string. If value starts with a U+0020 SPACE character,\n // remove it from value.\n const offset = line[fieldSeparatorIndex + 1] === ' ' ? 2 : 1\n const value = line.slice(fieldSeparatorIndex + offset)\n\n processField(field, value, line)\n return\n }\n\n // Otherwise, the string is not empty but does not contain a U+003A COLON character (:)\n // Process the field using the whole line as the field name, and an empty string as the field value.\n // 👆 This is according to spec. That means that a line that has the value `data` will result in\n // a newline being added to the current `data` buffer, for instance.\n processField(line, '', line)\n }\n\n function processField(field: string, value: string, line: string) {\n // Field names must be compared literally, with no case folding performed.\n switch (field) {\n case 'event':\n // Set the `event type` buffer to field value\n eventType = value\n break\n case 'data':\n // Append the field value to the `data` buffer, then append a single U+000A LINE FEED(LF)\n // character to the `data` buffer.\n data = `${data}${value}\\n`\n break\n case 'id':\n // If the field value does not contain U+0000 NULL, then set the `ID` buffer to\n // the field value. Otherwise, ignore the field.\n id = value.includes('\\0') ? undefined : value\n break\n case 'retry':\n // If the field value consists of only ASCII digits, then interpret the field value as an\n // integer in base ten, and set the event stream's reconnection time to that integer.\n // Otherwise, ignore the field.\n if (/^\\d+$/.test(value)) {\n onRetry(parseInt(value, 10))\n } else {\n onError(\n new ParseError(`Invalid \\`retry\\` value: \"${value}\"`, {\n type: 'invalid-retry',\n value,\n line,\n }),\n )\n }\n break\n default:\n // Otherwise, the field is ignored.\n onError(\n new ParseError(\n `Unknown field \"${field.length > 20 ? `${field.slice(0, 20)}…` : field}\"`,\n {type: 'unknown-field', field, value, line},\n ),\n )\n break\n }\n }\n\n function dispatchEvent() {\n const shouldDispatch = data.length > 0\n if (shouldDispatch) {\n onEvent({\n id,\n event: eventType || undefined,\n // If the data buffer's last character is a U+000A LINE FEED (LF) character,\n // then remove the last character from the data buffer.\n data: data.endsWith('\\n') ? data.slice(0, -1) : data,\n })\n }\n\n // Reset for the next event\n id = undefined\n data = ''\n eventType = ''\n }\n\n function reset(options: {consume?: boolean} = {}) {\n if (incompleteLine && options.consume) {\n parseLine(incompleteLine)\n }\n\n id = undefined\n data = ''\n eventType = ''\n incompleteLine = ''\n }\n\n return {feed, reset}\n}\n\n/**\n * For the given `chunk`, split it into lines according to spec, and return any remaining incomplete line.\n *\n * @param chunk - The chunk to split into lines\n * @returns A tuple containing an array of complete lines, and any remaining incomplete line\n * @internal\n */\nfunction splitLines(chunk: string): [Array<string>, string] {\n /**\n * According to the spec, a line is terminated by either:\n * - U+000D CARRIAGE RETURN U+000A LINE FEED (CRLF) character pair\n * - a single U+000A LINE FEED(LF) character not preceded by a U+000D CARRIAGE RETURN(CR) character\n * - a single U+000D CARRIAGE RETURN(CR) character not followed by a U+000A LINE FEED(LF) character\n */\n\n const lines: Array<string> = []\n let incompleteLine = ''\n\n const totalLength = chunk.length\n for (let i = 0; i < totalLength; i++) {\n const char = chunk[i]\n\n if (char === '\\r' && chunk[i + 1] === '\\n') {\n // CRLF\n lines.push(incompleteLine)\n incompleteLine = ''\n i++ // Skip the LF character\n } else if (char === '\\r') {\n // Standalone CR\n lines.push(incompleteLine)\n incompleteLine = ''\n } else if (char === '\\n') {\n // Standalone LF\n lines.push(incompleteLine)\n incompleteLine = ''\n } else {\n incompleteLine += char\n }\n }\n\n return [lines, incompleteLine]\n}\n","/**\n * An extended version of the `Event` emitted by the `EventSource` object when an error occurs.\n * While the spec does not include any additional properties, we intentionally go beyond the spec\n * and provide some (minimal) additional information to aid in debugging.\n *\n * @public\n */\nexport class ErrorEvent extends Event {\n /**\n * HTTP status code, if this was triggered by an HTTP error\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public code?: number | undefined\n\n /**\n * Optional message attached to the error.\n * Note: this is not part of the spec, but is included for better error handling.\n *\n * @public\n */\n public message?: string | undefined\n\n /**\n * Constructs a new `ErrorEvent` instance. This is typically not called directly,\n * but rather emitted by the `EventSource` object when an error occurs.\n *\n * @param type - The type of the event (should be \"error\")\n * @param errorEventInitDict - Optional properties to include in the error event\n */\n constructor(\n type: string,\n errorEventInitDict?: {message?: string | undefined; code?: number | undefined},\n ) {\n super(type)\n this.code = errorEventInitDict?.code ?? undefined\n this.message = errorEventInitDict?.message ?? undefined\n }\n\n /**\n * Node.js \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Node.js when you `console.log` an instance of this class.\n *\n * @param _depth - The current depth\n * @param options - The options passed to `util.inspect`\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @returns A string representation of the error\n */\n [Symbol.for('nodejs.util.inspect.custom')](\n _depth: number,\n options: {colors: boolean},\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n ): string {\n return inspect(inspectableError(this), options)\n }\n\n /**\n * Deno \"hides\" the `message` and `code` properties of the `ErrorEvent` instance,\n * when it is `console.log`'ed. This makes it harder to debug errors. To ease debugging,\n * we explicitly include the properties in the `inspect` method.\n *\n * This is automatically called by Deno when you `console.log` an instance of this class.\n *\n * @param inspect - The inspect function to use (prevents having to import it from `util`)\n * @param options - The options passed to `Deno.inspect`\n * @returns A string representation of the error\n */\n [Symbol.for('Deno.customInspect')](\n inspect: (obj: unknown, inspectOptions: {colors: boolean}) => string,\n options: {colors: boolean},\n ): string {\n return inspect(inspectableError(this), options)\n }\n}\n\n/**\n * For environments where DOMException may not exist, we will use a SyntaxError instead.\n * While this isn't strictly according to spec, it is very close.\n *\n * @param message - The message to include in the error\n * @returns A `DOMException` or `SyntaxError` instance\n * @internal\n */\nexport function syntaxError(message: string): SyntaxError {\n // If someone can figure out a way to make this work without depending on DOM/Node.js typings,\n // and without casting to `any`, please send a PR 🙏\n\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const DomException = (globalThis as any).DOMException\n if (typeof DomException === 'function') {\n return new DomException(message, 'SyntaxError')\n }\n\n return new SyntaxError(message)\n}\n\n/**\n * Flatten an error into a single error message string.\n * Unwraps nested errors and joins them with a comma.\n *\n * @param err - The error to flatten\n * @returns A string representation of the error\n * @internal\n */\nexport function flattenError(err: unknown): string {\n if (!(err instanceof Error)) {\n return `${err}`\n }\n\n if ('errors' in err && Array.isArray(err.errors)) {\n return err.errors.map(flattenError).join(', ')\n }\n\n if ('cause' in err && err.cause instanceof Error) {\n return `${err}: ${flattenError(err.cause)}`\n }\n\n return err.message\n}\n\n/**\n * Convert an `ErrorEvent` instance into a plain object for inspection.\n *\n * @param err - The `ErrorEvent` instance to inspect\n * @returns A plain object representation of the error\n * @internal\n */\nfunction inspectableError(err: ErrorEvent) {\n return {\n type: err.type,\n message: err.message,\n code: err.code,\n defaultPrevented: err.defaultPrevented,\n cancelable: err.cancelable,\n timeStamp: err.timeStamp,\n }\n}\n","import {createParser, type EventSourceMessage, type EventSourceParser} from 'eventsource-parser'\n\nimport {ErrorEvent, flattenError, syntaxError} from './errors.js'\nimport type {\n AddEventListenerOptions,\n EventListenerOptions,\n EventListenerOrEventListenerObject,\n EventSourceEventMap,\n EventSourceInit,\n FetchLike,\n FetchLikeInit,\n FetchLikeResponse,\n} from './types.js'\n\n/**\n * An `EventSource` instance opens a persistent connection to an HTTP server, which sends events\n * in `text/event-stream` format. The connection remains open until closed by calling `.close()`.\n *\n * @public\n * @example\n * ```js\n * const eventSource = new EventSource('https://example.com/stream')\n * eventSource.addEventListener('error', (error) => {\n * console.error(error)\n * })\n * eventSource.addEventListener('message', (event) => {\n * console.log('Received message:', event.data)\n * })\n * ```\n */\nexport class EventSource extends EventTarget {\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n static CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n static OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n static CLOSED = 2 as const\n\n /**\n * ReadyState representing an EventSource currently trying to connect\n *\n * @public\n */\n readonly CONNECTING = 0 as const\n\n /**\n * ReadyState representing an EventSource connection that is open (eg connected)\n *\n * @public\n */\n readonly OPEN = 1 as const\n\n /**\n * ReadyState representing an EventSource connection that is closed (eg disconnected)\n *\n * @public\n */\n readonly CLOSED = 2 as const\n\n /**\n * Returns the state of this EventSource object's connection. It can have the values described below.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/readyState)\n *\n * Note: typed as `number` instead of `0 | 1 | 2` for compatibility with the `EventSource` interface,\n * defined in the TypeScript `dom` library.\n *\n * @public\n */\n public get readyState(): number {\n return this.#readyState\n }\n\n /**\n * Returns the URL providing the event stream.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/url)\n *\n * @public\n */\n public get url(): string {\n return this.#url.href\n }\n\n /**\n * Returns true if the credentials mode for connection requests to the URL providing the event stream is set to \"include\", and false otherwise.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/withCredentials)\n */\n public get withCredentials(): boolean {\n return this.#withCredentials\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/error_event) */\n public get onerror(): ((ev: ErrorEvent) => unknown) | null {\n return this.#onError\n }\n public set onerror(value: ((ev: ErrorEvent) => unknown) | null) {\n this.#onError = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/message_event) */\n public get onmessage(): ((ev: MessageEvent) => unknown) | null {\n return this.#onMessage\n }\n public set onmessage(value: ((ev: MessageEvent) => unknown) | null) {\n this.#onMessage = value\n }\n\n /** [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/open_event) */\n public get onopen(): ((ev: Event) => unknown) | null {\n return this.#onOpen\n }\n public set onopen(value: ((ev: Event) => unknown) | null) {\n this.#onOpen = value\n }\n\n override addEventListener<K extends keyof EventSourceEventMap>(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void\n override addEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | AddEventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.addEventListener(type, listen, options)\n }\n\n override removeEventListener<K extends keyof EventSourceEventMap>(\n type: K,\n listener: (this: EventSource, ev: EventSourceEventMap[K]) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: (this: EventSource, event: MessageEvent) => unknown,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener: EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void\n override removeEventListener(\n type: string,\n listener:\n | ((this: EventSource, event: MessageEvent) => unknown)\n | EventListenerOrEventListenerObject,\n options?: boolean | EventListenerOptions,\n ): void {\n const listen = listener as (this: EventSource, event: Event) => unknown\n super.removeEventListener(type, listen, options)\n }\n\n constructor(url: string | URL, eventSourceInitDict?: EventSourceInit) {\n super()\n\n try {\n if (url instanceof URL) {\n this.#url = url\n } else if (typeof url === 'string') {\n this.#url = new URL(url, getBaseURL())\n } else {\n throw new Error('Invalid URL')\n }\n } catch (err) {\n throw syntaxError('An invalid or illegal string was specified')\n }\n\n this.#parser = createParser({\n onEvent: this.#onEvent,\n onRetry: this.#onRetryChange,\n })\n\n this.#readyState = this.CONNECTING\n this.#reconnectInterval = 3000\n this.#fetch = eventSourceInitDict?.fetch ?? globalThis.fetch\n this.#withCredentials = eventSourceInitDict?.withCredentials ?? false\n\n this.#connect()\n }\n\n /**\n * Aborts any instances of the fetch algorithm started for this EventSource object, and sets the readyState attribute to CLOSED.\n *\n * [MDN Reference](https://developer.mozilla.org/docs/Web/API/EventSource/close)\n *\n * @public\n */\n close(): void {\n if (this.#reconnectTimer) clearTimeout(this.#reconnectTimer)\n if (this.#readyState === this.CLOSED) return\n if (this.#controller) this.#controller.abort()\n this.#readyState = this.CLOSED\n this.#controller = undefined\n }\n\n // PRIVATES FOLLOW\n\n /**\n * Current connection state\n *\n * @internal\n */\n #readyState: number\n\n /**\n * Original URL used to connect.\n *\n * Note that this will stay the same even after a redirect.\n *\n * @internal\n */\n #url: URL\n\n /**\n * The destination URL after a redirect. Is reset on reconnection.\n *\n * @internal\n */\n #redirectUrl: URL | undefined\n\n /**\n * Whether to include credentials in the request\n *\n * @internal\n */\n #withCredentials: boolean\n\n /**\n * The fetch implementation to use\n *\n * @internal\n */\n #fetch: FetchLike\n\n /**\n * The reconnection time in milliseconds\n *\n * @internal\n */\n #reconnectInterval: number\n\n /**\n * Reference to an ongoing reconnect attempt, if any\n *\n * @internal\n */\n #reconnectTimer: ReturnType<typeof setTimeout> | undefined\n\n /**\n * The last event ID seen by the EventSource, which will be sent as `Last-Event-ID` in the\n * request headers on a reconnection attempt.\n *\n * @internal\n */\n #lastEventId: string | null = null\n\n /**\n * The AbortController instance used to abort the fetch request\n *\n * @internal\n */\n #controller: AbortController | undefined\n\n /**\n * Instance of an EventSource parser (`eventsource-parser` npm module)\n *\n * @internal\n */\n #parser: EventSourceParser\n\n /**\n * Holds the current error handler, attached through `onerror` property directly.\n * Note that `addEventListener('error', …)` will not be stored here.\n *\n * @internal\n */\n #onError: ((ev: ErrorEvent) => unknown) | null = null\n\n /**\n * Holds the current message handler, attached through `onmessage` property directly.\n * Note that `addEventListener('message', …)` will not be stored here.\n *\n * @internal\n */\n #onMessage: ((ev: MessageEvent) => unknown) | null = null\n\n /**\n * Holds the current open handler, attached through `onopen` property directly.\n * Note that `addEventListener('open', …)` will not be stored here.\n *\n * @internal\n */\n #onOpen: ((ev: Event) => unknown) | null = null\n\n /**\n * Connect to the given URL and start receiving events\n *\n * @internal\n */\n #connect() {\n this.#readyState = this.CONNECTING\n this.#controller = new AbortController()\n\n // Browser tests are failing if we directly call `this.#fetch()`, thus the indirection.\n const fetch = this.#fetch\n fetch(this.#url, this.#getRequestOptions())\n .then(this.#onFetchResponse)\n .catch(this.#onFetchError)\n }\n\n /**\n * Handles the fetch response\n *\n * @param response - The Fetch(ish) response\n * @internal\n */\n #onFetchResponse = async (response: FetchLikeResponse) => {\n this.#parser.reset()\n\n const {body, redirected, status, headers} = response\n\n // [spec] a client can be told to stop reconnecting using the HTTP 204 No Content response code.\n if (status === 204) {\n // We still need to emit an error event - this mirrors the browser behavior,\n // and without it there is no way to tell the user that the connection was closed.\n this.#failConnection('Server sent HTTP 204, not reconnecting', 204)\n this.close()\n return\n }\n\n // [spec] …Event stream requests can be redirected using HTTP 301 and 307 redirects as with\n // [spec] normal HTTP requests.\n // Spec does not say anything about other redirect codes (302, 308), but this seems an\n // unintended omission, rather than a feature. Browsers will happily redirect on other 3xxs's.\n if (redirected) {\n this.#redirectUrl = new URL(response.url)\n } else {\n this.#redirectUrl = undefined\n }\n\n // [spec] if res's status is not 200, …, then fail the connection.\n if (status !== 200) {\n this.#failConnection(`Non-200 status code (${status})`, status)\n return\n }\n\n // [spec] …or if res's `Content-Type` is not `text/event-stream`, then fail the connection.\n const contentType = headers.get('content-type') || ''\n if (!contentType.startsWith('text/event-stream')) {\n this.#failConnection('Invalid content type, expected \"text/event-stream\"', status)\n return\n }\n\n // [spec] …if the readyState attribute is set to a value other than CLOSED…\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] …sets the readyState attribute to OPEN and fires an event\n // [spec] …named open at the EventSource object.\n this.#readyState = this.OPEN\n\n const openEvent = new Event('open')\n this.#onOpen?.(openEvent)\n this.dispatchEvent(openEvent)\n\n // Ensure that the response stream is a web stream\n if (typeof body !== 'object' || !body || !('getReader' in body)) {\n this.#failConnection('Invalid response body, expected a web ReadableStream', status)\n this.close() // This should only happen if `fetch` provided is \"faulty\" - don't reconnect\n return\n }\n\n const decoder = new TextDecoder()\n\n const reader = body.getReader()\n let open = true\n\n do {\n const {done, value} = await reader.read()\n if (value) {\n this.#parser.feed(decoder.decode(value, {stream: !done}))\n }\n\n if (!done) {\n continue\n }\n\n open = false\n this.#parser.reset()\n\n this.#scheduleReconnect()\n } while (open)\n }\n\n /**\n * Handles rejected requests for the EventSource endpoint\n *\n * @param err - The error from `fetch()`\n * @internal\n */\n #onFetchError = (err: Error & {type?: string}) => {\n this.#controller = undefined\n\n // We expect abort errors when the user manually calls `close()` - ignore those\n if (err.name === 'AbortError' || err.type === 'aborted') {\n return\n }\n\n this.#scheduleReconnect(flattenError(err))\n }\n\n /**\n * Get request options for the `fetch()` request\n *\n * @returns The request options\n * @internal\n */\n #getRequestOptions(): FetchLikeInit {\n const lastEvent = this.#lastEventId ? {'Last-Event-ID': this.#lastEventId} : undefined\n const headers = {Accept: 'text/event-stream', ...lastEvent}\n\n const init: FetchLikeInit = {\n // [spec] Let `corsAttributeState` be `Anonymous`…\n // [spec] …will have their mode set to \"cors\"…\n mode: 'cors',\n redirect: 'follow',\n headers,\n cache: 'no-store',\n signal: this.#controller?.signal,\n }\n\n // Some environments crash if attempting to set `credentials` where it is not supported,\n // eg on Cloudflare Workers. To avoid this, we only set it in browser-like environments.\n if ('window' in globalThis) {\n // [spec] …and their credentials mode set to \"same-origin\"\n // [spec] …if the `withCredentials` attribute is `true`, set the credentials mode to \"include\"…\n init.credentials = this.withCredentials ? 'include' : 'same-origin'\n }\n\n return init\n }\n\n /**\n * Called by EventSourceParser instance when an event has successfully been parsed\n * and is ready to be processed.\n *\n * @param event - The parsed event\n * @internal\n */\n #onEvent = (event: EventSourceMessage) => {\n if (typeof event.id === 'string') {\n this.#lastEventId = event.id\n }\n\n const messageEvent = new MessageEvent(event.event || 'message', {\n data: event.data,\n origin: this.#redirectUrl ? this.#redirectUrl.origin : this.#url.origin,\n lastEventId: event.id || '',\n })\n\n // The `onmessage` property of the EventSource instance only triggers on messages without an\n // `event` field, or ones that explicitly set `message`.\n if (this.#onMessage && (!event.event || event.event === 'message')) {\n this.#onMessage(messageEvent)\n }\n\n this.dispatchEvent(messageEvent)\n }\n\n /**\n * Called by EventSourceParser instance when a new reconnection interval is received\n * from the EventSource endpoint.\n *\n * @param value - The new reconnection interval in milliseconds\n * @internal\n */\n #onRetryChange = (value: number) => {\n this.#reconnectInterval = value\n }\n\n /**\n * Handles the process referred to in the EventSource specification as \"failing a connection\".\n *\n * @param error - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #failConnection(message?: string, code?: number) {\n // [spec] …if the readyState attribute is set to a value other than CLOSED,\n // [spec] sets the readyState attribute to CLOSED…\n if (this.#readyState !== this.CLOSED) {\n this.#readyState = this.CLOSED\n }\n\n // [spec] …and fires an event named `error` at the `EventSource` object.\n // [spec] Once the user agent has failed the connection, it does not attempt to reconnect.\n // [spec] > Implementations are especially encouraged to report detailed information\n // [spec] > to their development consoles whenever an error event is fired, since little\n // [spec] > to no information can be made available in the events themselves.\n // Printing to console is not very programatically helpful, though, so we emit a custom event.\n const errorEvent = new ErrorEvent('error', {code, message})\n\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n }\n\n /**\n * Schedules a reconnection attempt against the EventSource endpoint.\n *\n * @param message - The error causing the connection to fail\n * @param code - The HTTP status code, if available\n * @internal\n */\n #scheduleReconnect(message?: string, code?: number) {\n // [spec] If the readyState attribute is set to CLOSED, abort the task.\n if (this.#readyState === this.CLOSED) {\n return\n }\n\n // [spec] Set the readyState attribute to CONNECTING.\n this.#readyState = this.CONNECTING\n\n // [spec] Fire an event named `error` at the EventSource object.\n const errorEvent = new ErrorEvent('error', {code, message})\n this.#onError?.(errorEvent)\n this.dispatchEvent(errorEvent)\n\n // [spec] Wait a delay equal to the reconnection time of the event source.\n this.#reconnectTimer = setTimeout(this.#reconnect, this.#reconnectInterval)\n }\n\n /**\n * Reconnects to the EventSource endpoint after a disconnect/failure\n *\n * @internal\n */\n #reconnect = () => {\n this.#reconnectTimer = undefined\n\n // [spec] If the EventSource's readyState attribute is not set to CONNECTING, then return.\n if (this.#readyState !== this.CONNECTING) {\n return\n }\n\n this.#connect()\n }\n}\n\n/**\n * According to spec, when constructing a URL:\n * > 1. Let baseURL be environment's base URL, if environment is a Document object\n * > 2. Return the result of applying the URL parser to url, with baseURL.\n *\n * Thus we should use `document.baseURI` if available, since it can be set through a base tag.\n *\n * @returns The base URL, if available - otherwise `undefined`\n * @internal\n */\nfunction getBaseURL(): string | undefined {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n const doc = 'document' in globalThis ? (globalThis as any).document : undefined\n return doc && typeof doc === 'object' && 'baseURI' in doc && typeof doc.baseURI === 'string'\n ? doc.baseURI\n : undefined\n}\n",null,"let crypto;\ncrypto =\n globalThis.crypto?.webcrypto ?? // Node.js 16 REPL has globalThis.crypto as node:crypto\n globalThis.crypto ?? // Node.js 18+ \n (await import(\"node:crypto\")).webcrypto; // Node.js 16 non-REPL\n/**\n * Creates an array of length `size` of random bytes\n * @param size\n * @returns Array of random ints (0 to 255)\n */\nfunction getRandomValues(size) {\n return crypto.getRandomValues(new Uint8Array(size));\n}\n/** Generate cryptographically strong random string\n * @param size The desired length of the string\n * @returns The random string\n */\nfunction random(size) {\n const mask = \"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789-._~\";\n let result = \"\";\n const randomUints = getRandomValues(size);\n for (let i = 0; i < size; i++) {\n // cap the value of the randomIndex to mask.length - 1\n const randomIndex = randomUints[i] % mask.length;\n result += mask[randomIndex];\n }\n return result;\n}\n/** Generate a PKCE challenge verifier\n * @param length Length of the verifier\n * @returns A random verifier `length` characters long\n */\nfunction generateVerifier(length) {\n return random(length);\n}\n/** Generate a PKCE code challenge from a code verifier\n * @param code_verifier\n * @returns The base64 url encoded code challenge\n */\nexport async function generateChallenge(code_verifier) {\n const buffer = await crypto.subtle.digest(\"SHA-256\", new TextEncoder().encode(code_verifier));\n // Generate base64url string\n // btoa is deprecated in Node.js but is used here for web browser compatibility\n // (which has no good replacement yet, see also https://github.com/whatwg/html/issues/6811)\n return btoa(String.fromCharCode(...new Uint8Array(buffer)))\n .replace(/\\//g, '_')\n .replace(/\\+/g, '-')\n .replace(/=/g, '');\n}\n/** Generate a PKCE challenge pair\n * @param length Length of the verifer (between 43-128). Defaults to 43.\n * @returns PKCE challenge pair\n */\nexport default async function pkceChallenge(length) {\n if (!length)\n length = 43;\n if (length < 43 || length > 128) {\n throw `Expected a length between 43 and 128. Received ${length}.`;\n }\n const verifier = generateVerifier(length);\n const challenge = await generateChallenge(verifier);\n return {\n code_verifier: verifier,\n code_challenge: challenge,\n };\n}\n/** Verify that a code_verifier produces the expected code challenge\n * @param code_verifier\n * @param expectedChallenge The code challenge to verify\n * @returns True if challenges are equal. False otherwise.\n */\nexport async function verifyChallenge(code_verifier, expectedChallenge) {\n const actualChallenge = await generateChallenge(code_verifier);\n return actualChallenge === expectedChallenge;\n}\n",null,null,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 SSEClientTransport,\n type SSEClientTransportOptions,\n} from \"@modelcontextprotocol/sdk/client/sse.js\";\n\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 SSEEdgeServerTransport 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\nexport class SSEEdgeClientTransport extends SSEClientTransport {\n /**\n * Creates a new EdgeSSEClientTransport, which overrides fetch to be compatible with the CF workers environment\n */\n constructor(\n private url: URL,\n options: SSEClientTransportOptions\n ) {\n // biome-ignore lint/suspicious/noExplicitAny: Overriding fetch, type doesn't matter here\n const fetchOverride = (url: any, options = {}) => {\n const workerOptions = {\n ...options,\n };\n // Remove unsupported properties\n // @ts-ignore\n // biome-ignore lint/performance/noDelete: workaround for workers environment\n delete workerOptions.mode;\n\n // Call the original fetch with fixed options\n return global.fetch(url, workerOptions);\n };\n\n super(url, {\n ...options,\n eventSourceInit: {\n fetch: fetchOverride,\n },\n });\n }\n}\n"],"mappings":"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","names":["_a","ErrorCode","z","codeVerifier","tokens","_a","url","options"]}
|
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import {
|
|
2
|
-
__privateAdd,
|
|
3
|
-
__privateGet,
|
|
4
|
-
__privateMethod,
|
|
5
|
-
__privateSet
|
|
6
|
-
} from "./chunk-HMLY7DHA.js";
|
|
7
|
-
|
|
8
1
|
// src/index.ts
|
|
9
2
|
import {
|
|
10
3
|
Server,
|
|
@@ -40,17 +33,68 @@ var STATE_ROW_ID = "cf_state_row_id";
|
|
|
40
33
|
var STATE_WAS_CHANGED = "cf_state_was_changed";
|
|
41
34
|
var DEFAULT_STATE = {};
|
|
42
35
|
var unstable_context = new AsyncLocalStorage();
|
|
43
|
-
var _state, _Agent_instances, setStateInternal_fn, tryCatch_fn, scheduleNextAlarm_fn, isCallable_fn;
|
|
44
36
|
var Agent = class extends Server {
|
|
37
|
+
#state = DEFAULT_STATE;
|
|
38
|
+
/**
|
|
39
|
+
* Initial state for the Agent
|
|
40
|
+
* Override to provide default state values
|
|
41
|
+
*/
|
|
42
|
+
initialState = DEFAULT_STATE;
|
|
43
|
+
/**
|
|
44
|
+
* Current state of the Agent
|
|
45
|
+
*/
|
|
46
|
+
get state() {
|
|
47
|
+
if (this.#state !== DEFAULT_STATE) {
|
|
48
|
+
return this.#state;
|
|
49
|
+
}
|
|
50
|
+
const wasChanged = this.sql`
|
|
51
|
+
SELECT state FROM cf_agents_state WHERE id = ${STATE_WAS_CHANGED}
|
|
52
|
+
`;
|
|
53
|
+
const result = this.sql`
|
|
54
|
+
SELECT state FROM cf_agents_state WHERE id = ${STATE_ROW_ID}
|
|
55
|
+
`;
|
|
56
|
+
if (wasChanged[0]?.state === "true" || // we do this check for people who updated their code before we shipped wasChanged
|
|
57
|
+
result[0]?.state) {
|
|
58
|
+
const state = result[0]?.state;
|
|
59
|
+
this.#state = JSON.parse(state);
|
|
60
|
+
return this.#state;
|
|
61
|
+
}
|
|
62
|
+
if (this.initialState === DEFAULT_STATE) {
|
|
63
|
+
return void 0;
|
|
64
|
+
}
|
|
65
|
+
this.setState(this.initialState);
|
|
66
|
+
return this.initialState;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Agent configuration options
|
|
70
|
+
*/
|
|
71
|
+
static options = {
|
|
72
|
+
/** Whether the Agent should hibernate when inactive */
|
|
73
|
+
hibernate: true
|
|
74
|
+
// default to hibernate
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Execute SQL queries against the Agent's database
|
|
78
|
+
* @template T Type of the returned rows
|
|
79
|
+
* @param strings SQL query template strings
|
|
80
|
+
* @param values Values to be inserted into the query
|
|
81
|
+
* @returns Array of query results
|
|
82
|
+
*/
|
|
83
|
+
sql(strings, ...values) {
|
|
84
|
+
let query = "";
|
|
85
|
+
try {
|
|
86
|
+
query = strings.reduce(
|
|
87
|
+
(acc, str, i) => acc + str + (i < values.length ? "?" : ""),
|
|
88
|
+
""
|
|
89
|
+
);
|
|
90
|
+
return [...this.ctx.storage.sql.exec(query, ...values)];
|
|
91
|
+
} catch (e) {
|
|
92
|
+
console.error(`failed to execute sql query: ${query}`, e);
|
|
93
|
+
throw this.onError(e);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
45
96
|
constructor(ctx, env) {
|
|
46
97
|
super(ctx, env);
|
|
47
|
-
__privateAdd(this, _Agent_instances);
|
|
48
|
-
__privateAdd(this, _state, DEFAULT_STATE);
|
|
49
|
-
/**
|
|
50
|
-
* Initial state for the Agent
|
|
51
|
-
* Override to provide default state values
|
|
52
|
-
*/
|
|
53
|
-
this.initialState = DEFAULT_STATE;
|
|
54
98
|
this.sql`
|
|
55
99
|
CREATE TABLE IF NOT EXISTS cf_agents_state (
|
|
56
100
|
id TEXT PRIMARY KEY NOT NULL,
|
|
@@ -58,7 +102,7 @@ var Agent = class extends Server {
|
|
|
58
102
|
)
|
|
59
103
|
`;
|
|
60
104
|
void this.ctx.blockConcurrencyWhile(async () => {
|
|
61
|
-
return
|
|
105
|
+
return this.#tryCatch(async () => {
|
|
62
106
|
this.sql`
|
|
63
107
|
CREATE TABLE IF NOT EXISTS cf_agents_schedules (
|
|
64
108
|
id TEXT PRIMARY KEY NOT NULL DEFAULT (randomblob(9)),
|
|
@@ -80,16 +124,16 @@ var Agent = class extends Server {
|
|
|
80
124
|
{ agent: this, connection, request: void 0 },
|
|
81
125
|
async () => {
|
|
82
126
|
if (typeof message !== "string") {
|
|
83
|
-
return
|
|
127
|
+
return this.#tryCatch(() => _onMessage(connection, message));
|
|
84
128
|
}
|
|
85
129
|
let parsed;
|
|
86
130
|
try {
|
|
87
131
|
parsed = JSON.parse(message);
|
|
88
132
|
} catch (e) {
|
|
89
|
-
return
|
|
133
|
+
return this.#tryCatch(() => _onMessage(connection, message));
|
|
90
134
|
}
|
|
91
135
|
if (isStateUpdateMessage(parsed)) {
|
|
92
|
-
|
|
136
|
+
this.#setStateInternal(parsed.state, connection);
|
|
93
137
|
return;
|
|
94
138
|
}
|
|
95
139
|
if (isRPCRequest(parsed)) {
|
|
@@ -99,7 +143,7 @@ var Agent = class extends Server {
|
|
|
99
143
|
if (typeof methodFn !== "function") {
|
|
100
144
|
throw new Error(`Method ${method} does not exist`);
|
|
101
145
|
}
|
|
102
|
-
if (!
|
|
146
|
+
if (!this.#isCallable(method)) {
|
|
103
147
|
throw new Error(`Method ${method} is not callable`);
|
|
104
148
|
}
|
|
105
149
|
const metadata = callableMetadata.get(methodFn);
|
|
@@ -129,7 +173,7 @@ var Agent = class extends Server {
|
|
|
129
173
|
}
|
|
130
174
|
return;
|
|
131
175
|
}
|
|
132
|
-
return
|
|
176
|
+
return this.#tryCatch(() => _onMessage(connection, message));
|
|
133
177
|
}
|
|
134
178
|
);
|
|
135
179
|
};
|
|
@@ -147,63 +191,45 @@ var Agent = class extends Server {
|
|
|
147
191
|
})
|
|
148
192
|
);
|
|
149
193
|
}
|
|
150
|
-
return
|
|
194
|
+
return this.#tryCatch(() => _onConnect(connection, ctx2));
|
|
151
195
|
}, 20);
|
|
152
196
|
}
|
|
153
197
|
);
|
|
154
198
|
};
|
|
155
199
|
}
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
}
|
|
181
|
-
/**
|
|
182
|
-
* Execute SQL queries against the Agent's database
|
|
183
|
-
* @template T Type of the returned rows
|
|
184
|
-
* @param strings SQL query template strings
|
|
185
|
-
* @param values Values to be inserted into the query
|
|
186
|
-
* @returns Array of query results
|
|
187
|
-
*/
|
|
188
|
-
sql(strings, ...values) {
|
|
189
|
-
let query = "";
|
|
190
|
-
try {
|
|
191
|
-
query = strings.reduce(
|
|
192
|
-
(acc, str, i) => acc + str + (i < values.length ? "?" : ""),
|
|
193
|
-
""
|
|
200
|
+
#setStateInternal(state, source = "server") {
|
|
201
|
+
this.#state = state;
|
|
202
|
+
this.sql`
|
|
203
|
+
INSERT OR REPLACE INTO cf_agents_state (id, state)
|
|
204
|
+
VALUES (${STATE_ROW_ID}, ${JSON.stringify(state)})
|
|
205
|
+
`;
|
|
206
|
+
this.sql`
|
|
207
|
+
INSERT OR REPLACE INTO cf_agents_state (id, state)
|
|
208
|
+
VALUES (${STATE_WAS_CHANGED}, ${JSON.stringify(true)})
|
|
209
|
+
`;
|
|
210
|
+
this.broadcast(
|
|
211
|
+
JSON.stringify({
|
|
212
|
+
type: "cf_agent_state",
|
|
213
|
+
state
|
|
214
|
+
}),
|
|
215
|
+
source !== "server" ? [source.id] : []
|
|
216
|
+
);
|
|
217
|
+
return this.#tryCatch(() => {
|
|
218
|
+
const { connection, request } = unstable_context.getStore() || {};
|
|
219
|
+
return unstable_context.run(
|
|
220
|
+
{ agent: this, connection, request },
|
|
221
|
+
async () => {
|
|
222
|
+
return this.onStateUpdate(state, source);
|
|
223
|
+
}
|
|
194
224
|
);
|
|
195
|
-
|
|
196
|
-
} catch (e) {
|
|
197
|
-
console.error(`failed to execute sql query: ${query}`, e);
|
|
198
|
-
throw this.onError(e);
|
|
199
|
-
}
|
|
225
|
+
});
|
|
200
226
|
}
|
|
201
227
|
/**
|
|
202
228
|
* Update the Agent's state
|
|
203
229
|
* @param state New state to set
|
|
204
230
|
*/
|
|
205
231
|
setState(state) {
|
|
206
|
-
|
|
232
|
+
this.#setStateInternal(state, "server");
|
|
207
233
|
}
|
|
208
234
|
/**
|
|
209
235
|
* Called when the Agent's state is updated
|
|
@@ -224,6 +250,13 @@ var Agent = class extends Server {
|
|
|
224
250
|
}
|
|
225
251
|
);
|
|
226
252
|
}
|
|
253
|
+
async #tryCatch(fn) {
|
|
254
|
+
try {
|
|
255
|
+
return await fn();
|
|
256
|
+
} catch (e) {
|
|
257
|
+
throw this.onError(e);
|
|
258
|
+
}
|
|
259
|
+
}
|
|
227
260
|
onError(connectionOrError, error) {
|
|
228
261
|
let theError;
|
|
229
262
|
if (connectionOrError && error) {
|
|
@@ -273,7 +306,7 @@ var Agent = class extends Server {
|
|
|
273
306
|
payload
|
|
274
307
|
)}, 'scheduled', ${timestamp})
|
|
275
308
|
`;
|
|
276
|
-
await
|
|
309
|
+
await this.#scheduleNextAlarm();
|
|
277
310
|
return {
|
|
278
311
|
id,
|
|
279
312
|
callback,
|
|
@@ -291,7 +324,7 @@ var Agent = class extends Server {
|
|
|
291
324
|
payload
|
|
292
325
|
)}, 'delayed', ${when}, ${timestamp})
|
|
293
326
|
`;
|
|
294
|
-
await
|
|
327
|
+
await this.#scheduleNextAlarm();
|
|
295
328
|
return {
|
|
296
329
|
id,
|
|
297
330
|
callback,
|
|
@@ -310,7 +343,7 @@ var Agent = class extends Server {
|
|
|
310
343
|
payload
|
|
311
344
|
)}, 'cron', ${when}, ${timestamp})
|
|
312
345
|
`;
|
|
313
|
-
await
|
|
346
|
+
await this.#scheduleNextAlarm();
|
|
314
347
|
return {
|
|
315
348
|
id,
|
|
316
349
|
callback,
|
|
@@ -377,9 +410,22 @@ var Agent = class extends Server {
|
|
|
377
410
|
*/
|
|
378
411
|
async cancelSchedule(id) {
|
|
379
412
|
this.sql`DELETE FROM cf_agents_schedules WHERE id = ${id}`;
|
|
380
|
-
await
|
|
413
|
+
await this.#scheduleNextAlarm();
|
|
381
414
|
return true;
|
|
382
415
|
}
|
|
416
|
+
async #scheduleNextAlarm() {
|
|
417
|
+
const result = this.sql`
|
|
418
|
+
SELECT time FROM cf_agents_schedules
|
|
419
|
+
WHERE time > ${Math.floor(Date.now() / 1e3)}
|
|
420
|
+
ORDER BY time ASC
|
|
421
|
+
LIMIT 1
|
|
422
|
+
`;
|
|
423
|
+
if (!result) return;
|
|
424
|
+
if (result.length > 0 && "time" in result[0]) {
|
|
425
|
+
const nextTime = result[0].time * 1e3;
|
|
426
|
+
await this.ctx.storage.setAlarm(nextTime);
|
|
427
|
+
}
|
|
428
|
+
}
|
|
383
429
|
/**
|
|
384
430
|
* Method called when an alarm fires
|
|
385
431
|
* Executes any scheduled tasks that are due
|
|
@@ -417,7 +463,7 @@ var Agent = class extends Server {
|
|
|
417
463
|
`;
|
|
418
464
|
}
|
|
419
465
|
}
|
|
420
|
-
await
|
|
466
|
+
await this.#scheduleNextAlarm();
|
|
421
467
|
}
|
|
422
468
|
/**
|
|
423
469
|
* Destroy the Agent, removing all state and scheduled tasks
|
|
@@ -428,71 +474,14 @@ var Agent = class extends Server {
|
|
|
428
474
|
await this.ctx.storage.deleteAlarm();
|
|
429
475
|
await this.ctx.storage.deleteAll();
|
|
430
476
|
}
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
|
|
434
|
-
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
INSERT OR REPLACE INTO cf_agents_state (id, state)
|
|
438
|
-
VALUES (${STATE_ROW_ID}, ${JSON.stringify(state)})
|
|
439
|
-
`;
|
|
440
|
-
this.sql`
|
|
441
|
-
INSERT OR REPLACE INTO cf_agents_state (id, state)
|
|
442
|
-
VALUES (${STATE_WAS_CHANGED}, ${JSON.stringify(true)})
|
|
443
|
-
`;
|
|
444
|
-
this.broadcast(
|
|
445
|
-
JSON.stringify({
|
|
446
|
-
type: "cf_agent_state",
|
|
447
|
-
state
|
|
448
|
-
}),
|
|
449
|
-
source !== "server" ? [source.id] : []
|
|
450
|
-
);
|
|
451
|
-
return __privateMethod(this, _Agent_instances, tryCatch_fn).call(this, () => {
|
|
452
|
-
const { connection, request } = unstable_context.getStore() || {};
|
|
453
|
-
return unstable_context.run(
|
|
454
|
-
{ agent: this, connection, request },
|
|
455
|
-
async () => {
|
|
456
|
-
return this.onStateUpdate(state, source);
|
|
457
|
-
}
|
|
458
|
-
);
|
|
459
|
-
});
|
|
460
|
-
};
|
|
461
|
-
tryCatch_fn = async function(fn) {
|
|
462
|
-
try {
|
|
463
|
-
return await fn();
|
|
464
|
-
} catch (e) {
|
|
465
|
-
throw this.onError(e);
|
|
466
|
-
}
|
|
467
|
-
};
|
|
468
|
-
scheduleNextAlarm_fn = async function() {
|
|
469
|
-
const result = this.sql`
|
|
470
|
-
SELECT time FROM cf_agents_schedules
|
|
471
|
-
WHERE time > ${Math.floor(Date.now() / 1e3)}
|
|
472
|
-
ORDER BY time ASC
|
|
473
|
-
LIMIT 1
|
|
474
|
-
`;
|
|
475
|
-
if (!result) return;
|
|
476
|
-
if (result.length > 0 && "time" in result[0]) {
|
|
477
|
-
const nextTime = result[0].time * 1e3;
|
|
478
|
-
await this.ctx.storage.setAlarm(nextTime);
|
|
477
|
+
/**
|
|
478
|
+
* Get all methods marked as callable on this Agent
|
|
479
|
+
* @returns A map of method names to their metadata
|
|
480
|
+
*/
|
|
481
|
+
#isCallable(method) {
|
|
482
|
+
return callableMetadata.has(this[method]);
|
|
479
483
|
}
|
|
480
484
|
};
|
|
481
|
-
/**
|
|
482
|
-
* Get all methods marked as callable on this Agent
|
|
483
|
-
* @returns A map of method names to their metadata
|
|
484
|
-
*/
|
|
485
|
-
isCallable_fn = function(method) {
|
|
486
|
-
return callableMetadata.has(this[method]);
|
|
487
|
-
};
|
|
488
|
-
/**
|
|
489
|
-
* Agent configuration options
|
|
490
|
-
*/
|
|
491
|
-
Agent.options = {
|
|
492
|
-
/** Whether the Agent should hibernate when inactive */
|
|
493
|
-
hibernate: true
|
|
494
|
-
// default to hibernate
|
|
495
|
-
};
|
|
496
485
|
async function routeAgentRequest(request, env, options) {
|
|
497
486
|
const corsHeaders = options?.cors === true ? {
|
|
498
487
|
"Access-Control-Allow-Origin": "*",
|
|
@@ -533,54 +522,50 @@ async function routeAgentEmail(email, env, options) {
|
|
|
533
522
|
function getAgentByName(namespace, name, options) {
|
|
534
523
|
return getServerByName(namespace, name, options);
|
|
535
524
|
}
|
|
536
|
-
var _connection, _id, _closed;
|
|
537
525
|
var StreamingResponse = class {
|
|
526
|
+
#connection;
|
|
527
|
+
#id;
|
|
528
|
+
#closed = false;
|
|
538
529
|
constructor(connection, id) {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
__privateAdd(this, _closed, false);
|
|
542
|
-
__privateSet(this, _connection, connection);
|
|
543
|
-
__privateSet(this, _id, id);
|
|
530
|
+
this.#connection = connection;
|
|
531
|
+
this.#id = id;
|
|
544
532
|
}
|
|
545
533
|
/**
|
|
546
534
|
* Send a chunk of data to the client
|
|
547
535
|
* @param chunk The data to send
|
|
548
536
|
*/
|
|
549
537
|
send(chunk) {
|
|
550
|
-
if (
|
|
538
|
+
if (this.#closed) {
|
|
551
539
|
throw new Error("StreamingResponse is already closed");
|
|
552
540
|
}
|
|
553
541
|
const response = {
|
|
554
542
|
type: "rpc",
|
|
555
|
-
id:
|
|
543
|
+
id: this.#id,
|
|
556
544
|
success: true,
|
|
557
545
|
result: chunk,
|
|
558
546
|
done: false
|
|
559
547
|
};
|
|
560
|
-
|
|
548
|
+
this.#connection.send(JSON.stringify(response));
|
|
561
549
|
}
|
|
562
550
|
/**
|
|
563
551
|
* End the stream and send the final chunk (if any)
|
|
564
552
|
* @param finalChunk Optional final chunk of data to send
|
|
565
553
|
*/
|
|
566
554
|
end(finalChunk) {
|
|
567
|
-
if (
|
|
555
|
+
if (this.#closed) {
|
|
568
556
|
throw new Error("StreamingResponse is already closed");
|
|
569
557
|
}
|
|
570
|
-
|
|
558
|
+
this.#closed = true;
|
|
571
559
|
const response = {
|
|
572
560
|
type: "rpc",
|
|
573
|
-
id:
|
|
561
|
+
id: this.#id,
|
|
574
562
|
success: true,
|
|
575
563
|
result: finalChunk,
|
|
576
564
|
done: true
|
|
577
565
|
};
|
|
578
|
-
|
|
566
|
+
this.#connection.send(JSON.stringify(response));
|
|
579
567
|
}
|
|
580
568
|
};
|
|
581
|
-
_connection = new WeakMap();
|
|
582
|
-
_id = new WeakMap();
|
|
583
|
-
_closed = new WeakMap();
|
|
584
569
|
|
|
585
570
|
export {
|
|
586
571
|
unstable_callable,
|
|
@@ -592,4 +577,4 @@ export {
|
|
|
592
577
|
getAgentByName,
|
|
593
578
|
StreamingResponse
|
|
594
579
|
};
|
|
595
|
-
//# sourceMappingURL=chunk-
|
|
580
|
+
//# sourceMappingURL=chunk-SZEXGW6W.js.map
|