@standardagents/builder 0.8.1 → 0.8.2
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/built-in-routes.js.map +1 -1
- package/dist/index.js +9 -74
- package/dist/index.js.map +1 -1
- package/dist/mcp.js +1 -1
- package/dist/mcp.js.map +1 -1
- package/dist/plugin.js +9 -38
- package/dist/plugin.js.map +1 -1
- package/package.json +1 -1
package/dist/mcp.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
2
|
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
|
|
3
|
-
import { tools } from 'virtual
|
|
3
|
+
import { tools } from 'virtual:@standardagents-tools';
|
|
4
4
|
import { zodown } from 'zodown';
|
|
5
5
|
|
|
6
6
|
// src/mcp/server.ts
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/utils/ServerResponseProxy.ts","../src/utils/IncomingMessageProxy.ts","../src/mcp/server.ts"],"names":["args"],"mappings":"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","file":"mcp.js","sourcesContent":["type HttpHeaders = Record<string, string | string[] | number | undefined>;\n\nexport class ServerResponseProxy {\n private _statusCode: number = 200;\n private _statusMessage?: string;\n private _headers: Record<string, string | string[]> = {};\n private _cookies: string[] = [];\n private _body: Uint8Array[] = [];\n private _finished: boolean = false;\n private _headersSent: boolean = false;\n private _listeners: Map<string, Function[]> = new Map();\n private _closed: boolean = false;\n private _streamController?: ReadableStreamDefaultController<Uint8Array>;\n private _isStreaming: boolean = false;\n\n constructor() {}\n\n get statusCode(): number {\n return this._statusCode;\n }\n\n set statusCode(code: number) {\n if (this._headersSent) {\n throw new Error(\"Cannot set status code after headers have been sent\");\n }\n this._statusCode = code;\n }\n\n get statusMessage(): string | undefined {\n return this._statusMessage;\n }\n\n set statusMessage(message: string | undefined) {\n if (this._headersSent) {\n throw new Error(\"Cannot set status message after headers have been sent\");\n }\n this._statusMessage = message;\n }\n\n get headersSent(): boolean {\n return this._headersSent;\n }\n\n get finished(): boolean {\n return this._finished;\n }\n\n writeHead(\n statusCode: number,\n statusMessage?: string | HttpHeaders,\n headers?: HttpHeaders\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n this._statusCode = statusCode;\n\n if (typeof statusMessage === \"string\") {\n this._statusMessage = statusMessage;\n if (headers) {\n this._setHeaders(headers);\n }\n } else if (statusMessage) {\n this._setHeaders(statusMessage);\n }\n\n // Don't set _headersSent here - wait until first write()\n return this;\n }\n\n setHeader(name: string, value: string | string[] | number): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n this._headers[name.toLowerCase()] = String(value);\n return this;\n }\n\n getHeader(name: string): string | string[] | undefined {\n return this._headers[name.toLowerCase()];\n }\n\n getHeaders(): Record<string, string | string[]> {\n return { ...this._headers };\n }\n\n getHeaderNames(): string[] {\n return Object.keys(this._headers);\n }\n\n hasHeader(name: string): boolean {\n return name.toLowerCase() in this._headers;\n }\n\n removeHeader(name: string): this {\n if (this._headersSent) {\n throw new Error(\"Cannot remove headers after they are sent\");\n }\n delete this._headers[name.toLowerCase()];\n return this;\n }\n\n write(\n chunk: string | Uint8Array,\n encoding?: string | (() => void),\n callback?: () => void\n ): boolean {\n if (this._finished) {\n throw new Error(\"Cannot write after end\");\n }\n\n if (!this._headersSent) {\n this._headersSent = true;\n }\n\n let data: Uint8Array;\n if (typeof chunk === \"string\") {\n const enc = typeof encoding === \"string\" ? encoding : \"utf8\";\n data = new TextEncoder().encode(chunk);\n } else {\n data = chunk;\n }\n\n // Check if this is a streaming response\n const contentType = this._headers['content-type'];\n if (typeof contentType === 'string' && contentType.includes('text/event-stream')) {\n this._isStreaming = true;\n // For streaming responses, immediately send the chunk if we have a controller\n if (this._streamController) {\n this._streamController.enqueue(data);\n } else {\n // Store for later if controller not ready yet\n this._body.push(data);\n }\n } else {\n this._body.push(data);\n }\n\n if (typeof encoding === \"function\") {\n encoding();\n } else if (callback) {\n callback();\n }\n\n return true;\n }\n\n end(\n chunk?: string | Uint8Array,\n encoding?: string | (() => void),\n callback?: () => void\n ): this {\n if (this._finished) {\n return this;\n }\n\n if (chunk !== undefined) {\n this.write(chunk, encoding, callback);\n } else if (typeof encoding === \"function\") {\n encoding();\n } else if (callback) {\n callback();\n }\n\n if (!this._headersSent) {\n this._headersSent = true;\n }\n\n this._finished = true;\n \n // Close stream if streaming\n if (this._streamController) {\n this._streamController.close();\n }\n \n // Emit finish event\n this.emit('finish');\n \n return this;\n }\n\n writeContinue(): void {\n // No-op for proxy\n }\n\n writeProcessing(): void {\n // No-op for proxy\n }\n\n flushHeaders(): void {\n if (!this._headersSent) {\n this._headersSent = true;\n }\n }\n\n setTimeout(msecs: number, callback?: () => void): this {\n // No-op for proxy\n return this;\n }\n\n addTrailers(headers: HttpHeaders): void {\n // No-op for proxy - Response API doesn't support trailers\n }\n\n cork(): void {\n // No-op for proxy\n }\n\n uncork(): void {\n // No-op for proxy\n }\n\n destroy(error?: Error): boolean {\n if (!this._closed) {\n this._closed = true;\n this.emit('close');\n }\n this._finished = true;\n return true;\n }\n\n // Event emitter methods\n on(event: string, listener: (...args: any[]) => void): this {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, []);\n }\n this._listeners.get(event)!.push(listener);\n return this;\n }\n\n once(event: string, listener: (...args: any[]) => void): this {\n const onceWrapper = (...args: any[]) => {\n this.off(event, onceWrapper);\n listener(...args);\n };\n return this.on(event, onceWrapper);\n }\n\n off(event: string, listener: (...args: any[]) => void): this {\n const listeners = this._listeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n emit(event: string, ...args: any[]): boolean {\n const listeners = this._listeners.get(event);\n if (listeners && listeners.length > 0) {\n listeners.forEach(listener => {\n try {\n listener(...args);\n } catch (error) {\n // Emit error if listener throws\n setTimeout(() => this.emit('error', error), 0);\n }\n });\n return true;\n }\n return false;\n }\n\n addListener(event: string, listener: (...args: any[]) => void): this {\n return this.on(event, listener);\n }\n\n removeListener(event: string, listener: (...args: any[]) => void): this {\n return this.off(event, listener);\n }\n\n removeAllListeners(event?: string): this {\n if (event) {\n this._listeners.delete(event);\n } else {\n this._listeners.clear();\n }\n return this;\n }\n\n // Cookie handling methods\n cookie(\n name: string,\n value: string,\n options?: {\n domain?: string;\n expires?: Date;\n httpOnly?: boolean;\n maxAge?: number;\n path?: string;\n secure?: boolean;\n signed?: boolean;\n sameSite?: boolean | \"lax\" | \"strict\" | \"none\";\n }\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n let cookie = `${name}=${value}`;\n\n if (options) {\n if (options.domain) cookie += `; Domain=${options.domain}`;\n if (options.expires)\n cookie += `; Expires=${options.expires.toUTCString()}`;\n if (options.httpOnly) cookie += \"; HttpOnly\";\n if (options.maxAge) cookie += `; Max-Age=${options.maxAge}`;\n if (options.path) cookie += `; Path=${options.path}`;\n if (options.secure) cookie += \"; Secure\";\n if (options.sameSite) {\n if (typeof options.sameSite === \"boolean\") {\n cookie += \"; SameSite=Strict\";\n } else {\n cookie += `; SameSite=${options.sameSite}`;\n }\n }\n }\n\n this._cookies.push(cookie);\n return this;\n }\n\n clearCookie(\n name: string,\n options?: { domain?: string; path?: string }\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n let cookie = `${name}=; Expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n\n if (options) {\n if (options.domain) cookie += `; Domain=${options.domain}`;\n if (options.path) cookie += `; Path=${options.path}`;\n }\n\n this._cookies.push(cookie);\n return this;\n }\n\n private _setHeaders(headers: HttpHeaders): void {\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined) {\n this._headers[key.toLowerCase()] = Array.isArray(value)\n ? value\n : String(value);\n }\n }\n }\n\n toResponse(): Response {\n const headers = new Headers();\n\n // Set regular headers\n for (const [key, value] of Object.entries(this._headers)) {\n if (Array.isArray(value)) {\n value.forEach((v) => headers.append(key, v));\n } else {\n headers.set(key, value);\n }\n }\n\n // Set cookies\n this._cookies.forEach((cookie) => {\n headers.append(\"set-cookie\", cookie);\n });\n\n // Check if this is a streaming response\n const contentType = headers.get('content-type');\n if (contentType && contentType.includes('text/event-stream')) {\n // Create a ReadableStream for streaming responses\n const stream = new ReadableStream<Uint8Array>({\n start: (controller) => {\n this._streamController = controller;\n \n // Send any buffered chunks immediately\n if (this._body.length > 0) {\n for (const chunk of this._body) {\n controller.enqueue(chunk);\n }\n this._body = []; // Clear buffered chunks\n }\n \n // If already finished, close immediately\n if (this._finished) {\n controller.close();\n }\n },\n cancel: () => {\n this._streamController = undefined;\n this._closed = true;\n this.emit('close');\n }\n });\n\n return new Response(stream, {\n status: this._statusCode,\n statusText: this._statusMessage,\n headers,\n });\n } else {\n // Regular non-streaming response\n let body: BodyInit | null = null;\n if (this._body.length > 0) {\n const totalLength = this._body.reduce(\n (sum, chunk) => sum + chunk.length,\n 0\n );\n const combined = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of this._body) {\n combined.set(chunk, offset);\n offset += chunk.length;\n }\n body = combined;\n }\n\n return new Response(body, {\n status: this._statusCode,\n statusText: this._statusMessage,\n headers,\n });\n }\n }\n}\n","export class IncomingMessageProxy {\n private _request: Request;\n private _url: URL;\n private _body?: ArrayBuffer;\n private _bodyRead = false;\n private _streaming = false;\n private _streamEnded = false;\n private _streamDestroyed = false;\n private _listeners: Map<string, Function[]> = new Map();\n private _encoding?: string;\n\n constructor(request: Request) {\n this._request = request;\n this._url = new URL(request.url);\n }\n\n // HTTP version (mock)\n get httpVersion(): string {\n return \"1.1\";\n }\n\n get httpVersionMajor(): number {\n return 1;\n }\n\n get httpVersionMinor(): number {\n return 1;\n }\n\n // Request method\n get method(): string {\n return this._request.method;\n }\n\n // URL and path properties\n get url(): string {\n return this._url.pathname + this._url.search;\n }\n\n get pathname(): string {\n return this._url.pathname;\n }\n\n get search(): string {\n return this._url.search;\n }\n\n get query(): string {\n return this._url.search.slice(1); // Remove the '?' prefix\n }\n\n get path(): string {\n return this._url.pathname + this._url.search;\n }\n\n // Headers proxy\n get headers(): Record<string, string | string[]> {\n const headers: Record<string, string | string[]> = {};\n\n this._request.headers.forEach((value, key) => {\n const lowerKey = key.toLowerCase();\n if (headers[lowerKey]) {\n // Convert to array if multiple values\n if (Array.isArray(headers[lowerKey])) {\n (headers[lowerKey] as string[]).push(value);\n } else {\n headers[lowerKey] = [headers[lowerKey] as string, value];\n }\n } else {\n headers[lowerKey] = value;\n }\n });\n\n return headers;\n }\n\n get rawHeaders(): string[] {\n const raw: string[] = [];\n this._request.headers.forEach((value, key) => {\n raw.push(key, value);\n });\n return raw;\n }\n\n // Host and connection info\n get host(): string {\n return this._url.host;\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n get port(): string {\n return this._url.port || (this._url.protocol === \"https:\" ? \"443\" : \"80\");\n }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n // Socket properties (mocked for compatibility)\n get connection(): any {\n return {\n remoteAddress:\n this._request.headers.get(\"cf-connecting-ip\") ||\n this._request.headers.get(\"x-forwarded-for\")?.split(\",\")[0]?.trim() ||\n \"127.0.0.1\",\n remotePort: null,\n localAddress: this._url.hostname,\n localPort: parseInt(this.port),\n encrypted: this._url.protocol === \"https:\",\n };\n }\n\n get socket(): any {\n return this.connection;\n }\n\n // Complete flag (always true for Request objects)\n get complete(): boolean {\n return true;\n }\n\n // Readable stream properties\n get readable(): boolean {\n return !this._streamEnded && !this._streamDestroyed;\n }\n\n get readableEnded(): boolean {\n return this._streamEnded;\n }\n\n get destroyed(): boolean {\n return this._streamDestroyed;\n }\n\n // Status code (only available on responses, null for requests)\n get statusCode(): number | null {\n return null;\n }\n\n get statusMessage(): string | null {\n return null;\n }\n\n // Trailer support (not supported by fetch API)\n get trailers(): Record<string, string> {\n return {};\n }\n\n get rawTrailers(): string[] {\n return [];\n }\n\n // Body reading methods\n async read(): Promise<Uint8Array | null> {\n if (this._bodyRead) {\n return null;\n }\n\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n\n this._bodyRead = true;\n return new Uint8Array(this._body);\n }\n\n async text(): Promise<string> {\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n return new TextDecoder().decode(this._body);\n }\n\n async json(): Promise<any> {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n return this._body;\n }\n\n // Event emitter methods\n on(event: string, listener: (...args: any[]) => void): this {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, []);\n }\n this._listeners.get(event)!.push(listener);\n \n // Auto-start streaming when someone listens for data\n if (event === 'data' && !this._streaming && !this._streamEnded) {\n this._startStreaming();\n }\n \n return this;\n }\n\n once(event: string, listener: (...args: any[]) => void): this {\n const onceWrapper = (...args: any[]) => {\n this.off(event, onceWrapper);\n listener(...args);\n };\n return this.on(event, onceWrapper);\n }\n\n off(event: string, listener: (...args: any[]) => void): this {\n const listeners = this._listeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n emit(event: string, ...args: any[]): boolean {\n const listeners = this._listeners.get(event);\n if (listeners && listeners.length > 0) {\n listeners.forEach(listener => {\n try {\n listener(...args);\n } catch (error) {\n // Emit error if listener throws\n setTimeout(() => this.emit('error', error), 0);\n }\n });\n return true;\n }\n return false;\n }\n\n addListener(event: string, listener: (...args: any[]) => void): this {\n return this.on(event, listener);\n }\n\n removeListener(event: string, listener: (...args: any[]) => void): this {\n return this.off(event, listener);\n }\n\n removeAllListeners(event?: string): this {\n if (event) {\n this._listeners.delete(event);\n } else {\n this._listeners.clear();\n }\n return this;\n }\n\n setEncoding(encoding: string): this {\n this._encoding = encoding;\n return this;\n }\n\n pause(): this {\n return this;\n }\n\n resume(): this {\n return this;\n }\n\n isPaused(): boolean {\n return false;\n }\n\n pipe<T>(destination: T): T {\n return destination;\n }\n\n unpipe(destination?: any): this {\n return this;\n }\n\n wrap(stream: any): this {\n return this;\n }\n\n push(chunk: any, encoding?: string): boolean {\n return false;\n }\n\n unshift(chunk: any, encoding?: string): void {\n // No-op\n }\n\n setTimeout(msecs: number, callback?: () => void): this {\n return this;\n }\n\n destroy(error?: Error): this {\n if (this._streamDestroyed) {\n return this;\n }\n \n this._streamDestroyed = true;\n this._streamEnded = true;\n \n if (error) {\n this.emit('error', error);\n }\n this.emit('close');\n \n return this;\n }\n\n // Utility methods\n header(name: string): string | string[] | undefined {\n return this.headers[name.toLowerCase()];\n }\n\n get(name: string): string | undefined {\n const header = this.headers[name.toLowerCase()];\n return Array.isArray(header) ? header[0] : header;\n }\n\n // Private method to start streaming the body\n private async _startStreaming(): Promise<void> {\n if (this._streaming || this._streamEnded || this._streamDestroyed) {\n return;\n }\n\n this._streaming = true;\n\n try {\n if (!this._request.body) {\n // No body, immediately end\n this._streamEnded = true;\n this.emit('end');\n return;\n }\n\n const reader = this._request.body.getReader();\n \n while (true) {\n const { done, value } = await reader.read();\n \n if (this._streamDestroyed) {\n reader.cancel();\n break;\n }\n \n if (done) {\n this._streamEnded = true;\n this.emit('end');\n break;\n }\n \n if (value) {\n let chunk: Uint8Array | string = value;\n \n // Apply encoding if set\n if (this._encoding) {\n chunk = new TextDecoder(this._encoding).decode(value);\n }\n \n this.emit('data', chunk);\n }\n }\n } catch (error) {\n this._streamEnded = true;\n this.emit('error', error);\n }\n }\n}\n","import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\n// import { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { tools } from \"virtual:agent-tools\";\nimport type { FlowState } from \"../tools\";\nimport { ServerResponseProxy } from \"../utils/ServerResponseProxy\";\nimport { IncomingMessageProxy } from \"../utils/IncomingMessageProxy\";\nimport { zodown } from \"zodown\";\n\nexport async function handle(req: Request, env: Env): Promise<Response> {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n enableJsonResponse: true,\n });\n\n const server = await createMCPServer(env, req);\n await server.connect(transport);\n const res = new ServerResponseProxy();\n\n await transport.handleRequest(new IncomingMessageProxy(req), res);\n\n // Give the transport a moment to finish writing\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n return res.toResponse();\n}\n\nexport async function createMCPServer(\n env: Env,\n req: Request\n): Promise<McpServer> {\n const server = new McpServer({\n name: \"agent-kit\",\n version: \"1.0.0\",\n });\n\n for (const name in tools) {\n const [description, args, tool] = await tools[name]();\n const v3Args = zodown(args);\n server.tool(\n name,\n description,\n args ? (v3Args.shape as Record<string, any>) : {},\n (args: Record<string, any>) => {\n const flow: FlowState = {\n id: \"stateless\",\n active: {\n tool: \"1\",\n args: {},\n retries: 0,\n reasons: [],\n },\n queue: [],\n };\n return tool(flow, args);\n }\n );\n }\n return server;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/utils/ServerResponseProxy.ts","../src/utils/IncomingMessageProxy.ts","../src/mcp/server.ts"],"names":["args"],"mappings":"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","file":"mcp.js","sourcesContent":["type HttpHeaders = Record<string, string | string[] | number | undefined>;\n\nexport class ServerResponseProxy {\n private _statusCode: number = 200;\n private _statusMessage?: string;\n private _headers: Record<string, string | string[]> = {};\n private _cookies: string[] = [];\n private _body: Uint8Array[] = [];\n private _finished: boolean = false;\n private _headersSent: boolean = false;\n private _listeners: Map<string, Function[]> = new Map();\n private _closed: boolean = false;\n private _streamController?: ReadableStreamDefaultController<Uint8Array>;\n private _isStreaming: boolean = false;\n\n constructor() {}\n\n get statusCode(): number {\n return this._statusCode;\n }\n\n set statusCode(code: number) {\n if (this._headersSent) {\n throw new Error(\"Cannot set status code after headers have been sent\");\n }\n this._statusCode = code;\n }\n\n get statusMessage(): string | undefined {\n return this._statusMessage;\n }\n\n set statusMessage(message: string | undefined) {\n if (this._headersSent) {\n throw new Error(\"Cannot set status message after headers have been sent\");\n }\n this._statusMessage = message;\n }\n\n get headersSent(): boolean {\n return this._headersSent;\n }\n\n get finished(): boolean {\n return this._finished;\n }\n\n writeHead(\n statusCode: number,\n statusMessage?: string | HttpHeaders,\n headers?: HttpHeaders\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n this._statusCode = statusCode;\n\n if (typeof statusMessage === \"string\") {\n this._statusMessage = statusMessage;\n if (headers) {\n this._setHeaders(headers);\n }\n } else if (statusMessage) {\n this._setHeaders(statusMessage);\n }\n\n // Don't set _headersSent here - wait until first write()\n return this;\n }\n\n setHeader(name: string, value: string | string[] | number): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n this._headers[name.toLowerCase()] = String(value);\n return this;\n }\n\n getHeader(name: string): string | string[] | undefined {\n return this._headers[name.toLowerCase()];\n }\n\n getHeaders(): Record<string, string | string[]> {\n return { ...this._headers };\n }\n\n getHeaderNames(): string[] {\n return Object.keys(this._headers);\n }\n\n hasHeader(name: string): boolean {\n return name.toLowerCase() in this._headers;\n }\n\n removeHeader(name: string): this {\n if (this._headersSent) {\n throw new Error(\"Cannot remove headers after they are sent\");\n }\n delete this._headers[name.toLowerCase()];\n return this;\n }\n\n write(\n chunk: string | Uint8Array,\n encoding?: string | (() => void),\n callback?: () => void\n ): boolean {\n if (this._finished) {\n throw new Error(\"Cannot write after end\");\n }\n\n if (!this._headersSent) {\n this._headersSent = true;\n }\n\n let data: Uint8Array;\n if (typeof chunk === \"string\") {\n const enc = typeof encoding === \"string\" ? encoding : \"utf8\";\n data = new TextEncoder().encode(chunk);\n } else {\n data = chunk;\n }\n\n // Check if this is a streaming response\n const contentType = this._headers['content-type'];\n if (typeof contentType === 'string' && contentType.includes('text/event-stream')) {\n this._isStreaming = true;\n // For streaming responses, immediately send the chunk if we have a controller\n if (this._streamController) {\n this._streamController.enqueue(data);\n } else {\n // Store for later if controller not ready yet\n this._body.push(data);\n }\n } else {\n this._body.push(data);\n }\n\n if (typeof encoding === \"function\") {\n encoding();\n } else if (callback) {\n callback();\n }\n\n return true;\n }\n\n end(\n chunk?: string | Uint8Array,\n encoding?: string | (() => void),\n callback?: () => void\n ): this {\n if (this._finished) {\n return this;\n }\n\n if (chunk !== undefined) {\n this.write(chunk, encoding, callback);\n } else if (typeof encoding === \"function\") {\n encoding();\n } else if (callback) {\n callback();\n }\n\n if (!this._headersSent) {\n this._headersSent = true;\n }\n\n this._finished = true;\n \n // Close stream if streaming\n if (this._streamController) {\n this._streamController.close();\n }\n \n // Emit finish event\n this.emit('finish');\n \n return this;\n }\n\n writeContinue(): void {\n // No-op for proxy\n }\n\n writeProcessing(): void {\n // No-op for proxy\n }\n\n flushHeaders(): void {\n if (!this._headersSent) {\n this._headersSent = true;\n }\n }\n\n setTimeout(msecs: number, callback?: () => void): this {\n // No-op for proxy\n return this;\n }\n\n addTrailers(headers: HttpHeaders): void {\n // No-op for proxy - Response API doesn't support trailers\n }\n\n cork(): void {\n // No-op for proxy\n }\n\n uncork(): void {\n // No-op for proxy\n }\n\n destroy(error?: Error): boolean {\n if (!this._closed) {\n this._closed = true;\n this.emit('close');\n }\n this._finished = true;\n return true;\n }\n\n // Event emitter methods\n on(event: string, listener: (...args: any[]) => void): this {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, []);\n }\n this._listeners.get(event)!.push(listener);\n return this;\n }\n\n once(event: string, listener: (...args: any[]) => void): this {\n const onceWrapper = (...args: any[]) => {\n this.off(event, onceWrapper);\n listener(...args);\n };\n return this.on(event, onceWrapper);\n }\n\n off(event: string, listener: (...args: any[]) => void): this {\n const listeners = this._listeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n emit(event: string, ...args: any[]): boolean {\n const listeners = this._listeners.get(event);\n if (listeners && listeners.length > 0) {\n listeners.forEach(listener => {\n try {\n listener(...args);\n } catch (error) {\n // Emit error if listener throws\n setTimeout(() => this.emit('error', error), 0);\n }\n });\n return true;\n }\n return false;\n }\n\n addListener(event: string, listener: (...args: any[]) => void): this {\n return this.on(event, listener);\n }\n\n removeListener(event: string, listener: (...args: any[]) => void): this {\n return this.off(event, listener);\n }\n\n removeAllListeners(event?: string): this {\n if (event) {\n this._listeners.delete(event);\n } else {\n this._listeners.clear();\n }\n return this;\n }\n\n // Cookie handling methods\n cookie(\n name: string,\n value: string,\n options?: {\n domain?: string;\n expires?: Date;\n httpOnly?: boolean;\n maxAge?: number;\n path?: string;\n secure?: boolean;\n signed?: boolean;\n sameSite?: boolean | \"lax\" | \"strict\" | \"none\";\n }\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n let cookie = `${name}=${value}`;\n\n if (options) {\n if (options.domain) cookie += `; Domain=${options.domain}`;\n if (options.expires)\n cookie += `; Expires=${options.expires.toUTCString()}`;\n if (options.httpOnly) cookie += \"; HttpOnly\";\n if (options.maxAge) cookie += `; Max-Age=${options.maxAge}`;\n if (options.path) cookie += `; Path=${options.path}`;\n if (options.secure) cookie += \"; Secure\";\n if (options.sameSite) {\n if (typeof options.sameSite === \"boolean\") {\n cookie += \"; SameSite=Strict\";\n } else {\n cookie += `; SameSite=${options.sameSite}`;\n }\n }\n }\n\n this._cookies.push(cookie);\n return this;\n }\n\n clearCookie(\n name: string,\n options?: { domain?: string; path?: string }\n ): this {\n if (this._headersSent) {\n throw new Error(\"Cannot set headers after they are sent\");\n }\n\n let cookie = `${name}=; Expires=Thu, 01 Jan 1970 00:00:00 GMT`;\n\n if (options) {\n if (options.domain) cookie += `; Domain=${options.domain}`;\n if (options.path) cookie += `; Path=${options.path}`;\n }\n\n this._cookies.push(cookie);\n return this;\n }\n\n private _setHeaders(headers: HttpHeaders): void {\n for (const [key, value] of Object.entries(headers)) {\n if (value !== undefined) {\n this._headers[key.toLowerCase()] = Array.isArray(value)\n ? value\n : String(value);\n }\n }\n }\n\n toResponse(): Response {\n const headers = new Headers();\n\n // Set regular headers\n for (const [key, value] of Object.entries(this._headers)) {\n if (Array.isArray(value)) {\n value.forEach((v) => headers.append(key, v));\n } else {\n headers.set(key, value);\n }\n }\n\n // Set cookies\n this._cookies.forEach((cookie) => {\n headers.append(\"set-cookie\", cookie);\n });\n\n // Check if this is a streaming response\n const contentType = headers.get('content-type');\n if (contentType && contentType.includes('text/event-stream')) {\n // Create a ReadableStream for streaming responses\n const stream = new ReadableStream<Uint8Array>({\n start: (controller) => {\n this._streamController = controller;\n \n // Send any buffered chunks immediately\n if (this._body.length > 0) {\n for (const chunk of this._body) {\n controller.enqueue(chunk);\n }\n this._body = []; // Clear buffered chunks\n }\n \n // If already finished, close immediately\n if (this._finished) {\n controller.close();\n }\n },\n cancel: () => {\n this._streamController = undefined;\n this._closed = true;\n this.emit('close');\n }\n });\n\n return new Response(stream, {\n status: this._statusCode,\n statusText: this._statusMessage,\n headers,\n });\n } else {\n // Regular non-streaming response\n let body: BodyInit | null = null;\n if (this._body.length > 0) {\n const totalLength = this._body.reduce(\n (sum, chunk) => sum + chunk.length,\n 0\n );\n const combined = new Uint8Array(totalLength);\n let offset = 0;\n for (const chunk of this._body) {\n combined.set(chunk, offset);\n offset += chunk.length;\n }\n body = combined;\n }\n\n return new Response(body, {\n status: this._statusCode,\n statusText: this._statusMessage,\n headers,\n });\n }\n }\n}\n","export class IncomingMessageProxy {\n private _request: Request;\n private _url: URL;\n private _body?: ArrayBuffer;\n private _bodyRead = false;\n private _streaming = false;\n private _streamEnded = false;\n private _streamDestroyed = false;\n private _listeners: Map<string, Function[]> = new Map();\n private _encoding?: string;\n\n constructor(request: Request) {\n this._request = request;\n this._url = new URL(request.url);\n }\n\n // HTTP version (mock)\n get httpVersion(): string {\n return \"1.1\";\n }\n\n get httpVersionMajor(): number {\n return 1;\n }\n\n get httpVersionMinor(): number {\n return 1;\n }\n\n // Request method\n get method(): string {\n return this._request.method;\n }\n\n // URL and path properties\n get url(): string {\n return this._url.pathname + this._url.search;\n }\n\n get pathname(): string {\n return this._url.pathname;\n }\n\n get search(): string {\n return this._url.search;\n }\n\n get query(): string {\n return this._url.search.slice(1); // Remove the '?' prefix\n }\n\n get path(): string {\n return this._url.pathname + this._url.search;\n }\n\n // Headers proxy\n get headers(): Record<string, string | string[]> {\n const headers: Record<string, string | string[]> = {};\n\n this._request.headers.forEach((value, key) => {\n const lowerKey = key.toLowerCase();\n if (headers[lowerKey]) {\n // Convert to array if multiple values\n if (Array.isArray(headers[lowerKey])) {\n (headers[lowerKey] as string[]).push(value);\n } else {\n headers[lowerKey] = [headers[lowerKey] as string, value];\n }\n } else {\n headers[lowerKey] = value;\n }\n });\n\n return headers;\n }\n\n get rawHeaders(): string[] {\n const raw: string[] = [];\n this._request.headers.forEach((value, key) => {\n raw.push(key, value);\n });\n return raw;\n }\n\n // Host and connection info\n get host(): string {\n return this._url.host;\n }\n\n get hostname(): string {\n return this._url.hostname;\n }\n\n get port(): string {\n return this._url.port || (this._url.protocol === \"https:\" ? \"443\" : \"80\");\n }\n\n get protocol(): string {\n return this._url.protocol;\n }\n\n // Socket properties (mocked for compatibility)\n get connection(): any {\n return {\n remoteAddress:\n this._request.headers.get(\"cf-connecting-ip\") ||\n this._request.headers.get(\"x-forwarded-for\")?.split(\",\")[0]?.trim() ||\n \"127.0.0.1\",\n remotePort: null,\n localAddress: this._url.hostname,\n localPort: parseInt(this.port),\n encrypted: this._url.protocol === \"https:\",\n };\n }\n\n get socket(): any {\n return this.connection;\n }\n\n // Complete flag (always true for Request objects)\n get complete(): boolean {\n return true;\n }\n\n // Readable stream properties\n get readable(): boolean {\n return !this._streamEnded && !this._streamDestroyed;\n }\n\n get readableEnded(): boolean {\n return this._streamEnded;\n }\n\n get destroyed(): boolean {\n return this._streamDestroyed;\n }\n\n // Status code (only available on responses, null for requests)\n get statusCode(): number | null {\n return null;\n }\n\n get statusMessage(): string | null {\n return null;\n }\n\n // Trailer support (not supported by fetch API)\n get trailers(): Record<string, string> {\n return {};\n }\n\n get rawTrailers(): string[] {\n return [];\n }\n\n // Body reading methods\n async read(): Promise<Uint8Array | null> {\n if (this._bodyRead) {\n return null;\n }\n\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n\n this._bodyRead = true;\n return new Uint8Array(this._body);\n }\n\n async text(): Promise<string> {\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n return new TextDecoder().decode(this._body);\n }\n\n async json(): Promise<any> {\n const text = await this.text();\n return JSON.parse(text);\n }\n\n async arrayBuffer(): Promise<ArrayBuffer> {\n if (!this._body) {\n this._body = await this._request.arrayBuffer();\n }\n return this._body;\n }\n\n // Event emitter methods\n on(event: string, listener: (...args: any[]) => void): this {\n if (!this._listeners.has(event)) {\n this._listeners.set(event, []);\n }\n this._listeners.get(event)!.push(listener);\n \n // Auto-start streaming when someone listens for data\n if (event === 'data' && !this._streaming && !this._streamEnded) {\n this._startStreaming();\n }\n \n return this;\n }\n\n once(event: string, listener: (...args: any[]) => void): this {\n const onceWrapper = (...args: any[]) => {\n this.off(event, onceWrapper);\n listener(...args);\n };\n return this.on(event, onceWrapper);\n }\n\n off(event: string, listener: (...args: any[]) => void): this {\n const listeners = this._listeners.get(event);\n if (listeners) {\n const index = listeners.indexOf(listener);\n if (index !== -1) {\n listeners.splice(index, 1);\n }\n }\n return this;\n }\n\n emit(event: string, ...args: any[]): boolean {\n const listeners = this._listeners.get(event);\n if (listeners && listeners.length > 0) {\n listeners.forEach(listener => {\n try {\n listener(...args);\n } catch (error) {\n // Emit error if listener throws\n setTimeout(() => this.emit('error', error), 0);\n }\n });\n return true;\n }\n return false;\n }\n\n addListener(event: string, listener: (...args: any[]) => void): this {\n return this.on(event, listener);\n }\n\n removeListener(event: string, listener: (...args: any[]) => void): this {\n return this.off(event, listener);\n }\n\n removeAllListeners(event?: string): this {\n if (event) {\n this._listeners.delete(event);\n } else {\n this._listeners.clear();\n }\n return this;\n }\n\n setEncoding(encoding: string): this {\n this._encoding = encoding;\n return this;\n }\n\n pause(): this {\n return this;\n }\n\n resume(): this {\n return this;\n }\n\n isPaused(): boolean {\n return false;\n }\n\n pipe<T>(destination: T): T {\n return destination;\n }\n\n unpipe(destination?: any): this {\n return this;\n }\n\n wrap(stream: any): this {\n return this;\n }\n\n push(chunk: any, encoding?: string): boolean {\n return false;\n }\n\n unshift(chunk: any, encoding?: string): void {\n // No-op\n }\n\n setTimeout(msecs: number, callback?: () => void): this {\n return this;\n }\n\n destroy(error?: Error): this {\n if (this._streamDestroyed) {\n return this;\n }\n \n this._streamDestroyed = true;\n this._streamEnded = true;\n \n if (error) {\n this.emit('error', error);\n }\n this.emit('close');\n \n return this;\n }\n\n // Utility methods\n header(name: string): string | string[] | undefined {\n return this.headers[name.toLowerCase()];\n }\n\n get(name: string): string | undefined {\n const header = this.headers[name.toLowerCase()];\n return Array.isArray(header) ? header[0] : header;\n }\n\n // Private method to start streaming the body\n private async _startStreaming(): Promise<void> {\n if (this._streaming || this._streamEnded || this._streamDestroyed) {\n return;\n }\n\n this._streaming = true;\n\n try {\n if (!this._request.body) {\n // No body, immediately end\n this._streamEnded = true;\n this.emit('end');\n return;\n }\n\n const reader = this._request.body.getReader();\n \n while (true) {\n const { done, value } = await reader.read();\n \n if (this._streamDestroyed) {\n reader.cancel();\n break;\n }\n \n if (done) {\n this._streamEnded = true;\n this.emit('end');\n break;\n }\n \n if (value) {\n let chunk: Uint8Array | string = value;\n \n // Apply encoding if set\n if (this._encoding) {\n chunk = new TextDecoder(this._encoding).decode(value);\n }\n \n this.emit('data', chunk);\n }\n }\n } catch (error) {\n this._streamEnded = true;\n this.emit('error', error);\n }\n }\n}\n","import { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\n// import { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { tools } from \"virtual:@standardagents-tools\";\nimport type { FlowState } from \"../tools\";\nimport { ServerResponseProxy } from \"../utils/ServerResponseProxy\";\nimport { IncomingMessageProxy } from \"../utils/IncomingMessageProxy\";\nimport { zodown } from \"zodown\";\n\nexport async function handle(req: Request, env: Env): Promise<Response> {\n const transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: undefined,\n enableJsonResponse: true,\n });\n\n const server = await createMCPServer(env, req);\n await server.connect(transport);\n const res = new ServerResponseProxy();\n\n await transport.handleRequest(new IncomingMessageProxy(req), res);\n\n // Give the transport a moment to finish writing\n await new Promise((resolve) => setTimeout(resolve, 100));\n\n return res.toResponse();\n}\n\nexport async function createMCPServer(\n env: Env,\n req: Request\n): Promise<McpServer> {\n const server = new McpServer({\n name: \"agent-kit\",\n version: \"1.0.0\",\n });\n\n for (const name in tools) {\n const [description, args, tool] = await tools[name]();\n const v3Args = zodown(args);\n server.tool(\n name,\n description,\n args ? (v3Args.shape as Record<string, any>) : {},\n (args: Record<string, any>) => {\n const flow: FlowState = {\n id: \"stateless\",\n active: {\n tool: \"1\",\n args: {},\n retries: 0,\n reasons: [],\n },\n queue: [],\n };\n return tool(flow, args);\n }\n );\n }\n return server;\n}\n"]}
|
package/dist/plugin.js
CHANGED
|
@@ -1780,6 +1780,9 @@ async function scanHooksDirectory(dir) {
|
|
|
1780
1780
|
for (const entry of entries) {
|
|
1781
1781
|
if (entry.isFile() && entry.name.endsWith(".ts")) {
|
|
1782
1782
|
const fileName = entry.name.replace(".ts", "");
|
|
1783
|
+
if (fileName === "index") {
|
|
1784
|
+
continue;
|
|
1785
|
+
}
|
|
1783
1786
|
const filePath = path3.join(dir, entry.name);
|
|
1784
1787
|
const importPath = "./" + path3.relative(process.cwd(), filePath).replace(/\\/g, "/");
|
|
1785
1788
|
hooks.push({ name: fileName, importPath });
|
|
@@ -1878,9 +1881,7 @@ function agentbuilder(options = {}) {
|
|
|
1878
1881
|
};
|
|
1879
1882
|
function regenerateTypes() {
|
|
1880
1883
|
if (needsRegeneration(typeGenConfig)) {
|
|
1881
|
-
console.log("[vite-plugin-agent] Regenerating types...");
|
|
1882
1884
|
generateTypes(typeGenConfig);
|
|
1883
|
-
console.log("[vite-plugin-agent] Types regenerated at .agents/types.d.ts");
|
|
1884
1885
|
}
|
|
1885
1886
|
}
|
|
1886
1887
|
const __filename = fileURLToPath(import.meta.url);
|
|
@@ -2017,7 +2018,7 @@ function agentbuilder(options = {}) {
|
|
|
2017
2018
|
}
|
|
2018
2019
|
return false;
|
|
2019
2020
|
}
|
|
2020
|
-
function handleFileChange(file, server
|
|
2021
|
+
function handleFileChange(file, server) {
|
|
2021
2022
|
const isToolFile = file.startsWith(toolsDir) && file.endsWith(".ts");
|
|
2022
2023
|
const isThreadApiFile = file.startsWith(threadApiDir) && file.endsWith(".ts");
|
|
2023
2024
|
const isHookFile = file.startsWith(hooksDir) && file.endsWith(".ts");
|
|
@@ -2026,13 +2027,6 @@ function agentbuilder(options = {}) {
|
|
|
2026
2027
|
const isAgentFile = file.startsWith(agentsDir) && file.endsWith(".ts");
|
|
2027
2028
|
const isConfigFile = isModelFile || isPromptFile || isAgentFile;
|
|
2028
2029
|
if (!isToolFile && !isThreadApiFile && !isHookFile && !isConfigFile) return;
|
|
2029
|
-
const fileType = isToolFile ? "tool" : isThreadApiFile ? "thread-api" : isHookFile ? "hook" : isModelFile ? "model" : isPromptFile ? "prompt" : "agent";
|
|
2030
|
-
console.log(
|
|
2031
|
-
`[vite-plugin-agent] ${action} ${fileType}: ${path3.relative(
|
|
2032
|
-
process.cwd(),
|
|
2033
|
-
file
|
|
2034
|
-
)}`
|
|
2035
|
-
);
|
|
2036
2030
|
if (isConfigFile || isToolFile) {
|
|
2037
2031
|
regenerateTypes();
|
|
2038
2032
|
}
|
|
@@ -2060,6 +2054,8 @@ function agentbuilder(options = {}) {
|
|
|
2060
2054
|
config() {
|
|
2061
2055
|
return {
|
|
2062
2056
|
optimizeDeps: {
|
|
2057
|
+
// Pre-bundle these deps to prevent reload during startup
|
|
2058
|
+
include: ["openai", "zod"],
|
|
2063
2059
|
// Exclude @standardagents/builder/mcp from pre-bundling (used for MCP server, not needed in worker)
|
|
2064
2060
|
exclude: [
|
|
2065
2061
|
"@standardagents/builder/mcp"
|
|
@@ -2086,50 +2082,35 @@ function agentbuilder(options = {}) {
|
|
|
2086
2082
|
};
|
|
2087
2083
|
},
|
|
2088
2084
|
resolveId(id) {
|
|
2089
|
-
if (id.includes("virtual:") || id.includes("agent")) {
|
|
2090
|
-
console.log("[plugin.resolveId]", id);
|
|
2091
|
-
}
|
|
2092
2085
|
if (id === VIRTUAL_TOOLS_ID) {
|
|
2093
|
-
console.log("[plugin.resolveId] \u2713 Resolving tools");
|
|
2094
2086
|
return RESOLVED_VIRTUAL_TOOLS_ID;
|
|
2095
2087
|
}
|
|
2096
2088
|
if (id === VIRTUAL_ROUTES_ID || id === VIRTUAL_ROUTER_ID) {
|
|
2097
|
-
console.log("[plugin.resolveId] \u2713 Resolving routes");
|
|
2098
2089
|
return RESOLVED_VIRTUAL_ROUTES_ID;
|
|
2099
2090
|
}
|
|
2100
2091
|
if (id === VIRTUAL_HOOKS_ID) {
|
|
2101
|
-
console.log("[plugin.resolveId] \u2713 Resolving hooks");
|
|
2102
2092
|
return RESOLVED_VIRTUAL_HOOKS_ID;
|
|
2103
2093
|
}
|
|
2104
2094
|
if (id === VIRTUAL_CONFIG_ID) {
|
|
2105
|
-
console.log("[plugin.resolveId] \u2713 Resolving config");
|
|
2106
2095
|
return RESOLVED_VIRTUAL_CONFIG_ID;
|
|
2107
2096
|
}
|
|
2108
2097
|
if (id === VIRTUAL_THREAD_API_ID) {
|
|
2109
|
-
console.log("[plugin.resolveId] \u2713 Resolving thread API");
|
|
2110
2098
|
return RESOLVED_VIRTUAL_THREAD_API_ID;
|
|
2111
2099
|
}
|
|
2112
2100
|
if (id === VIRTUAL_MODELS_ID) {
|
|
2113
|
-
console.log("[plugin.resolveId] \u2713 Resolving models");
|
|
2114
2101
|
return RESOLVED_VIRTUAL_MODELS_ID;
|
|
2115
2102
|
}
|
|
2116
2103
|
if (id === VIRTUAL_PROMPTS_ID) {
|
|
2117
|
-
console.log("[plugin.resolveId] \u2713 Resolving prompts");
|
|
2118
2104
|
return RESOLVED_VIRTUAL_PROMPTS_ID;
|
|
2119
2105
|
}
|
|
2120
2106
|
if (id === VIRTUAL_AGENTS_ID) {
|
|
2121
|
-
console.log("[plugin.resolveId] \u2713 Resolving agents");
|
|
2122
2107
|
return RESOLVED_VIRTUAL_AGENTS_ID;
|
|
2123
2108
|
}
|
|
2124
2109
|
if (id === VIRTUAL_BUILDER_ID) {
|
|
2125
|
-
console.log("[plugin.resolveId] \u2713 Resolving consolidated builder module");
|
|
2126
2110
|
return RESOLVED_VIRTUAL_BUILDER_ID;
|
|
2127
2111
|
}
|
|
2128
2112
|
},
|
|
2129
2113
|
async load(id) {
|
|
2130
|
-
if (id.includes("\0virtual:") || id.includes("agent")) {
|
|
2131
|
-
console.log("[plugin.load]", id);
|
|
2132
|
-
}
|
|
2133
2114
|
if (id === RESOLVED_VIRTUAL_TOOLS_ID) {
|
|
2134
2115
|
const tools = await scanToolsDirectory(toolsDir);
|
|
2135
2116
|
const toolsCode = tools.map(({ name, importPath, error }) => {
|
|
@@ -2174,11 +2155,8 @@ import { hooks } from "virtual:@standardagents-hooks";
|
|
|
2174
2155
|
import { models, modelNames } from "virtual:@standardagents-models";
|
|
2175
2156
|
import { prompts, promptNames } from "virtual:@standardagents-prompts";
|
|
2176
2157
|
import { agents, agentNames } from "virtual:@standardagents-agents";
|
|
2177
|
-
import { DurableThread as _DurableThread } from "@standardagents/builder/runtime";
|
|
2178
2158
|
import { requireAuth } from "@standardagents/builder/runtime";
|
|
2179
2159
|
|
|
2180
|
-
console.log('[Router] Virtual modules loaded - tools:', Object.keys(tools || {}), 'hooks:', Object.keys(hooks || {}), 'models:', modelNames, 'prompts:', promptNames, 'agents:', agentNames);
|
|
2181
|
-
|
|
2182
2160
|
const MOUNT_POINT = "${mountPoint}";
|
|
2183
2161
|
|
|
2184
2162
|
// Routes that don't require authentication
|
|
@@ -2335,15 +2313,10 @@ async function serveUI(pathname, env) {
|
|
|
2335
2313
|
}
|
|
2336
2314
|
}
|
|
2337
2315
|
|
|
2338
|
-
// Export DurableThread so users can re-export it from virtual module
|
|
2339
|
-
export { _DurableThread as DurableThread };
|
|
2340
2316
|
`;
|
|
2341
2317
|
}
|
|
2342
2318
|
if (id === RESOLVED_VIRTUAL_HOOKS_ID) {
|
|
2343
|
-
console.log("[plugin.load] \u2713 Loading HOOKS virtual module");
|
|
2344
|
-
console.log("[plugin.load] hooksDir:", hooksDir);
|
|
2345
2319
|
const hooks = await scanHooksDirectory(hooksDir);
|
|
2346
|
-
console.log(`[plugin.load] Scanned hooks directory, found ${hooks.length} hooks:`, hooks.map((h) => h.name));
|
|
2347
2320
|
const hooksCode = hooks.map(({ name, importPath }) => {
|
|
2348
2321
|
return ` "${name}": async () => {
|
|
2349
2322
|
try {
|
|
@@ -2355,7 +2328,6 @@ export { _DurableThread as DurableThread };
|
|
|
2355
2328
|
},`;
|
|
2356
2329
|
}).join("\n");
|
|
2357
2330
|
return `// Virtual agent hooks module
|
|
2358
|
-
console.log('[virtual:agent-hooks] Module loaded with hooks:', Object.keys({${hooks.map((h) => `'${h.name}': null`).join(", ")}}));
|
|
2359
2331
|
export const hooks = {
|
|
2360
2332
|
${hooksCode}
|
|
2361
2333
|
};`;
|
|
@@ -2634,10 +2606,10 @@ export class DurableAgentBuilder extends _BaseDurableAgentBuilder {
|
|
|
2634
2606
|
},
|
|
2635
2607
|
configureServer(server) {
|
|
2636
2608
|
server.watcher.on("add", async (file) => {
|
|
2637
|
-
handleFileChange(file, server
|
|
2609
|
+
handleFileChange(file, server);
|
|
2638
2610
|
});
|
|
2639
2611
|
server.watcher.on("unlink", (file) => {
|
|
2640
|
-
handleFileChange(file, server
|
|
2612
|
+
handleFileChange(file, server);
|
|
2641
2613
|
});
|
|
2642
2614
|
server.middlewares.use(async (req, res, next) => {
|
|
2643
2615
|
const url = req.url;
|
|
@@ -3133,7 +3105,7 @@ export class DurableAgentBuilder extends _BaseDurableAgentBuilder {
|
|
|
3133
3105
|
});
|
|
3134
3106
|
},
|
|
3135
3107
|
handleHotUpdate({ file, server }) {
|
|
3136
|
-
handleFileChange(file, server
|
|
3108
|
+
handleFileChange(file, server);
|
|
3137
3109
|
},
|
|
3138
3110
|
writeBundle(options2, bundle) {
|
|
3139
3111
|
const outDir = options2.dir || "dist";
|
|
@@ -3173,7 +3145,6 @@ export class DurableAgentBuilder extends _BaseDurableAgentBuilder {
|
|
|
3173
3145
|
}
|
|
3174
3146
|
}
|
|
3175
3147
|
copyRecursive(clientDir, mountDir);
|
|
3176
|
-
console.log(`[agentbuilder] Copied client files to ${mountDir}`);
|
|
3177
3148
|
}
|
|
3178
3149
|
};
|
|
3179
3150
|
}
|