@copilotkitnext/runtime 1.51.4-next.7 → 1.51.4

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/express.mjs CHANGED
@@ -9,7 +9,7 @@ import {
9
9
  handleStopAgent,
10
10
  handleTranscribe,
11
11
  parseMethodCall
12
- } from "./chunk-O6YC5CJ6.mjs";
12
+ } from "./chunk-5GKH3W25.mjs";
13
13
 
14
14
  // src/endpoints/express.ts
15
15
  import express from "express";
@@ -157,33 +157,53 @@ function synthesizeBody(body) {
157
157
  }
158
158
 
159
159
  // src/endpoints/express.ts
160
- function createCopilotEndpointExpress({ runtime, basePath }) {
160
+ function createCopilotEndpointExpress({
161
+ runtime,
162
+ basePath
163
+ }) {
161
164
  const router = express.Router();
162
165
  const normalizedBase = normalizeBasePath(basePath);
163
- router.use(cors({
164
- origin: "*",
165
- methods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH", "OPTIONS"],
166
- allowedHeaders: ["*"]
167
- }));
168
- router.post(joinPath(normalizedBase, "/agent/:agentId/run"), createRouteHandler(runtime, async ({ request, req }) => {
169
- const agentId = req.params.agentId;
170
- return handleRunAgent({ runtime, request, agentId });
171
- }));
172
- router.post(joinPath(normalizedBase, "/agent/:agentId/connect"), createRouteHandler(runtime, async ({ request, req }) => {
173
- const agentId = req.params.agentId;
174
- return handleConnectAgent({ runtime, request, agentId });
175
- }));
176
- router.post(joinPath(normalizedBase, "/agent/:agentId/stop/:threadId"), createRouteHandler(runtime, async ({ request, req }) => {
177
- const agentId = req.params.agentId;
178
- const threadId = req.params.threadId;
179
- return handleStopAgent({ runtime, request, agentId, threadId });
180
- }));
181
- router.get(joinPath(normalizedBase, "/info"), createRouteHandler(runtime, async ({ request }) => {
182
- return handleGetRuntimeInfo({ runtime, request });
183
- }));
184
- router.post(joinPath(normalizedBase, "/transcribe"), createRouteHandler(runtime, async ({ request }) => {
185
- return handleTranscribe({ runtime, request });
186
- }));
166
+ router.use(
167
+ cors({
168
+ origin: "*",
169
+ methods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH", "OPTIONS"],
170
+ allowedHeaders: ["*"]
171
+ })
172
+ );
173
+ router.post(
174
+ joinPath(normalizedBase, "/agent/:agentId/run"),
175
+ createRouteHandler(runtime, async ({ request, req }) => {
176
+ const agentId = req.params.agentId;
177
+ return handleRunAgent({ runtime, request, agentId });
178
+ })
179
+ );
180
+ router.post(
181
+ joinPath(normalizedBase, "/agent/:agentId/connect"),
182
+ createRouteHandler(runtime, async ({ request, req }) => {
183
+ const agentId = req.params.agentId;
184
+ return handleConnectAgent({ runtime, request, agentId });
185
+ })
186
+ );
187
+ router.post(
188
+ joinPath(normalizedBase, "/agent/:agentId/stop/:threadId"),
189
+ createRouteHandler(runtime, async ({ request, req }) => {
190
+ const agentId = req.params.agentId;
191
+ const threadId = req.params.threadId;
192
+ return handleStopAgent({ runtime, request, agentId, threadId });
193
+ })
194
+ );
195
+ router.get(
196
+ joinPath(normalizedBase, "/info"),
197
+ createRouteHandler(runtime, async ({ request }) => {
198
+ return handleGetRuntimeInfo({ runtime, request });
199
+ })
200
+ );
201
+ router.post(
202
+ joinPath(normalizedBase, "/transcribe"),
203
+ createRouteHandler(runtime, async ({ request }) => {
204
+ return handleTranscribe({ runtime, request });
205
+ })
206
+ );
187
207
  router.use(joinPath(normalizedBase, "*"), (req, res) => {
188
208
  res.status(404).json({ error: "Not found" });
189
209
  });
@@ -194,12 +214,19 @@ function createRouteHandler(runtime, factory) {
194
214
  const path = req.originalUrl ?? req.path;
195
215
  let request = createFetchRequestFromExpress(req);
196
216
  try {
197
- const maybeModifiedRequest = await callBeforeRequestMiddleware({ runtime, request, path });
217
+ const maybeModifiedRequest = await callBeforeRequestMiddleware({
218
+ runtime,
219
+ request,
220
+ path
221
+ });
198
222
  if (maybeModifiedRequest) {
199
223
  request = maybeModifiedRequest;
200
224
  }
201
225
  } catch (error) {
202
- logger2.error({ err: error, url: request.url, path }, "Error running before request middleware");
226
+ logger2.error(
227
+ { err: error, url: request.url, path },
228
+ "Error running before request middleware"
229
+ );
203
230
  if (error instanceof Response) {
204
231
  try {
205
232
  await sendFetchResponse(res, error);
@@ -215,7 +242,10 @@ function createRouteHandler(runtime, factory) {
215
242
  const response = await factory({ request, req });
216
243
  await sendFetchResponse(res, response);
217
244
  callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {
218
- logger2.error({ err: error, url: req.originalUrl ?? req.url, path }, "Error running after request middleware");
245
+ logger2.error(
246
+ { err: error, url: req.originalUrl ?? req.url, path },
247
+ "Error running after request middleware"
248
+ );
219
249
  });
220
250
  } catch (error) {
221
251
  if (error instanceof Response) {
@@ -225,12 +255,20 @@ function createRouteHandler(runtime, factory) {
225
255
  next(streamError);
226
256
  return;
227
257
  }
228
- callAfterRequestMiddleware({ runtime, response: error, path }).catch((mwError) => {
229
- logger2.error({ err: mwError, url: req.originalUrl ?? req.url, path }, "Error running after request middleware");
230
- });
258
+ callAfterRequestMiddleware({ runtime, response: error, path }).catch(
259
+ (mwError) => {
260
+ logger2.error(
261
+ { err: mwError, url: req.originalUrl ?? req.url, path },
262
+ "Error running after request middleware"
263
+ );
264
+ }
265
+ );
231
266
  return;
232
267
  }
233
- logger2.error({ err: error, url: request.url, path }, "Error running request handler");
268
+ logger2.error(
269
+ { err: error, url: request.url, path },
270
+ "Error running request handler"
271
+ );
234
272
  next(error);
235
273
  }
236
274
  };
@@ -270,11 +308,13 @@ function createCopilotEndpointSingleRouteExpress({
270
308
  }) {
271
309
  const router = express2.Router();
272
310
  const routePath = normalizeSingleRoutePath(basePath);
273
- router.use(cors2({
274
- origin: "*",
275
- methods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH", "OPTIONS"],
276
- allowedHeaders: ["*"]
277
- }));
311
+ router.use(
312
+ cors2({
313
+ origin: "*",
314
+ methods: ["GET", "HEAD", "PUT", "POST", "DELETE", "PATCH", "OPTIONS"],
315
+ allowedHeaders: ["*"]
316
+ })
317
+ );
278
318
  router.post(routePath, createSingleRouteHandler(runtime));
279
319
  router.use((req, res) => {
280
320
  res.status(404).json({ error: "Not found" });
@@ -286,12 +326,19 @@ function createSingleRouteHandler(runtime) {
286
326
  const path = req.originalUrl ?? req.path;
287
327
  let request = createFetchRequestFromExpress(req);
288
328
  try {
289
- const maybeModifiedRequest = await callBeforeRequestMiddleware({ runtime, request, path });
329
+ const maybeModifiedRequest = await callBeforeRequestMiddleware({
330
+ runtime,
331
+ request,
332
+ path
333
+ });
290
334
  if (maybeModifiedRequest) {
291
335
  request = maybeModifiedRequest;
292
336
  }
293
337
  } catch (error) {
294
- logger3.error({ err: error, url: request.url, path }, "Error running before request middleware");
338
+ logger3.error(
339
+ { err: error, url: request.url, path },
340
+ "Error running before request middleware"
341
+ );
295
342
  if (error instanceof Response) {
296
343
  try {
297
344
  await sendFetchResponse(res, error);
@@ -316,7 +363,10 @@ function createSingleRouteHandler(runtime) {
316
363
  }
317
364
  return;
318
365
  }
319
- logger3.warn({ err: error, url: request.url }, "Invalid single-route payload");
366
+ logger3.warn(
367
+ { err: error, url: request.url },
368
+ "Invalid single-route payload"
369
+ );
320
370
  res.status(400).json({
321
371
  error: "invalid_request",
322
372
  message: error instanceof Error ? error.message : "Invalid request payload"
@@ -329,19 +379,32 @@ function createSingleRouteHandler(runtime) {
329
379
  case "agent/run": {
330
380
  const agentId = expectString(methodCall.params, "agentId");
331
381
  const handlerRequest = createJsonRequest(request, methodCall.body);
332
- response = await handleRunAgent({ runtime, request: handlerRequest, agentId });
382
+ response = await handleRunAgent({
383
+ runtime,
384
+ request: handlerRequest,
385
+ agentId
386
+ });
333
387
  break;
334
388
  }
335
389
  case "agent/connect": {
336
390
  const agentId = expectString(methodCall.params, "agentId");
337
391
  const handlerRequest = createJsonRequest(request, methodCall.body);
338
- response = await handleConnectAgent({ runtime, request: handlerRequest, agentId });
392
+ response = await handleConnectAgent({
393
+ runtime,
394
+ request: handlerRequest,
395
+ agentId
396
+ });
339
397
  break;
340
398
  }
341
399
  case "agent/stop": {
342
400
  const agentId = expectString(methodCall.params, "agentId");
343
401
  const threadId = expectString(methodCall.params, "threadId");
344
- response = await handleStopAgent({ runtime, request, agentId, threadId });
402
+ response = await handleStopAgent({
403
+ runtime,
404
+ request,
405
+ agentId,
406
+ threadId
407
+ });
345
408
  break;
346
409
  }
347
410
  case "info": {
@@ -350,7 +413,10 @@ function createSingleRouteHandler(runtime) {
350
413
  }
351
414
  case "transcribe": {
352
415
  const handlerRequest = createJsonRequest(request, methodCall.body);
353
- response = await handleTranscribe({ runtime, request: handlerRequest });
416
+ response = await handleTranscribe({
417
+ runtime,
418
+ request: handlerRequest
419
+ });
354
420
  break;
355
421
  }
356
422
  default: {
@@ -360,7 +426,10 @@ function createSingleRouteHandler(runtime) {
360
426
  }
361
427
  await sendFetchResponse(res, response);
362
428
  callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {
363
- logger3.error({ err: error, url: req.originalUrl ?? req.url, path }, "Error running after request middleware");
429
+ logger3.error(
430
+ { err: error, url: req.originalUrl ?? req.url, path },
431
+ "Error running after request middleware"
432
+ );
364
433
  });
365
434
  } catch (error) {
366
435
  if (error instanceof Response) {
@@ -370,19 +439,29 @@ function createSingleRouteHandler(runtime) {
370
439
  next(streamError);
371
440
  return;
372
441
  }
373
- callAfterRequestMiddleware({ runtime, response: error, path }).catch((mwError) => {
374
- logger3.error({ err: mwError, url: req.originalUrl ?? req.url, path }, "Error running after request middleware");
375
- });
442
+ callAfterRequestMiddleware({ runtime, response: error, path }).catch(
443
+ (mwError) => {
444
+ logger3.error(
445
+ { err: mwError, url: req.originalUrl ?? req.url, path },
446
+ "Error running after request middleware"
447
+ );
448
+ }
449
+ );
376
450
  return;
377
451
  }
378
- logger3.error({ err: error, url: request.url, path }, "Error running single-route handler");
452
+ logger3.error(
453
+ { err: error, url: request.url, path },
454
+ "Error running single-route handler"
455
+ );
379
456
  next(error);
380
457
  }
381
458
  };
382
459
  }
383
460
  function normalizeSingleRoutePath(path) {
384
461
  if (!path) {
385
- throw new Error("basePath must be provided for Express single-route endpoint");
462
+ throw new Error(
463
+ "basePath must be provided for Express single-route endpoint"
464
+ );
386
465
  }
387
466
  if (!path.startsWith("/")) {
388
467
  return `/${path}`;
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/endpoints/express.ts","../src/endpoints/express-utils.ts","../src/endpoints/express-single.ts"],"sourcesContent":["import express from \"express\";\nimport type { Request as ExpressRequest, Response as ExpressResponse, NextFunction, Router } from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntime } from \"../runtime\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport { logger } from \"@copilotkitnext/shared\";\nimport { callBeforeRequestMiddleware, callAfterRequestMiddleware } from \"../middleware\";\nimport { createFetchRequestFromExpress, sendFetchResponse } from \"./express-utils\";\n\ninterface CopilotExpressEndpointParams {\n runtime: CopilotRuntime;\n basePath: string;\n}\n\nexport function createCopilotEndpointExpress({ runtime, basePath }: CopilotExpressEndpointParams): Router {\n const router = express.Router();\n const normalizedBase = normalizeBasePath(basePath);\n\n router.use(cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }));\n\n router.post(joinPath(normalizedBase, \"/agent/:agentId/run\"), createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleRunAgent({ runtime, request, agentId });\n }));\n\n router.post(joinPath(normalizedBase, \"/agent/:agentId/connect\"), createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleConnectAgent({ runtime, request, agentId });\n }));\n\n router.post(joinPath(normalizedBase, \"/agent/:agentId/stop/:threadId\"), createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n const threadId = req.params.threadId as string;\n return handleStopAgent({ runtime, request, agentId, threadId });\n }));\n\n router.get(joinPath(normalizedBase, \"/info\"), createRouteHandler(runtime, async ({ request }) => {\n return handleGetRuntimeInfo({ runtime, request });\n }));\n\n router.post(joinPath(normalizedBase, \"/transcribe\"), createRouteHandler(runtime, async ({ request }) => {\n return handleTranscribe({ runtime, request });\n }));\n\n router.use(joinPath(normalizedBase, \"*\"), (req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\ntype RouteHandlerContext = {\n request: Request;\n req: ExpressRequest;\n};\n\ntype RouteHandlerFactory = (ctx: RouteHandlerContext) => Promise<Response>;\n\nfunction createRouteHandler(runtime: CopilotRuntime, factory: RouteHandlerFactory) {\n return async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({ runtime, request, path });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error({ err: error, url: request.url, path }, \"Error running before request middleware\");\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n try {\n const response = await factory({ request, req });\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {\n logger.error({ err: error, url: req.originalUrl ?? req.url, path }, \"Error running after request middleware\");\n });\n } catch (error) {\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({ runtime, response: error, path }).catch((mwError) => {\n logger.error({ err: mwError, url: req.originalUrl ?? req.url, path }, \"Error running after request middleware\");\n });\n return;\n }\n logger.error({ err: error, url: request.url, path }, \"Error running request handler\");\n next(error);\n }\n };\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n\nfunction joinPath(basePath: string, suffix: string): string {\n if (basePath === \"/\") {\n return suffix.startsWith(\"/\") ? suffix : `/${suffix}`;\n }\n\n if (!suffix) {\n return basePath;\n }\n\n if (suffix === \"*\") {\n return `${basePath}/*`;\n }\n\n return `${basePath}${suffix.startsWith(\"/\") ? suffix : `/${suffix}`}`;\n}\n","import type { Request as ExpressRequest, Response as ExpressResponse } from \"express\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream\";\nimport { promisify } from \"node:util\";\nimport { logger } from \"@copilotkitnext/shared\";\n\nconst streamPipeline = promisify(pipeline);\n\nconst METHODS_WITHOUT_BODY = new Set([\"GET\", \"HEAD\"]);\n\nexport function createFetchRequestFromExpress(req: ExpressRequest): Request {\n const method = req.method?.toUpperCase() ?? \"GET\";\n const origin = buildOrigin(req);\n const url = `${origin}${req.originalUrl ?? req.url ?? \"\"}`;\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((v) => headers.append(key, v));\n } else {\n headers.set(key, value);\n }\n }\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method,\n headers,\n };\n\n const hasParsedBody = req.body !== undefined && req.body !== null;\n const streamConsumed = isStreamConsumed(req, hasParsedBody);\n\n if (!METHODS_WITHOUT_BODY.has(method)) {\n const canStreamBody = req.readable !== false && !streamConsumed;\n\n if (canStreamBody) {\n init.body = Readable.toWeb(req) as unknown as BodyInit;\n init.duplex = \"half\";\n } else if (hasParsedBody) {\n const { body, contentType } = synthesizeBody(req.body);\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n headers.delete(\"content-length\");\n if (body !== undefined) {\n init.body = body;\n }\n logger.info(\n {\n url,\n method,\n readable: req.readable,\n readableEnded: req.readableEnded,\n complete: req.complete,\n },\n \"Express request stream already consumed; synthesized body from parsed content\",\n );\n } else {\n headers.delete(\"content-length\");\n logger.warn(\n { url, method },\n \"Request stream already consumed but no body was available; sending empty body\",\n );\n }\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n req.on(\"aborted\", abort);\n req.on(\"error\", abort);\n req.on(\"close\", () => {\n if (req.aborted) {\n abort();\n }\n });\n init.signal = controller.signal;\n\n try {\n return new Request(url, init);\n } catch (error) {\n if (error instanceof TypeError && /disturbed|locked/i.test(error.message)) {\n // Fallback to synthesized/empty body when the stream was already consumed.\n headers.delete(\"content-length\");\n delete init.duplex;\n\n if (hasParsedBody) {\n const { body, contentType } = synthesizeBody(req.body);\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n init.body = body;\n logger.info(\n { url, method },\n \"Request stream disturbed while constructing Request; reused parsed body\",\n );\n } else {\n init.body = undefined;\n logger.warn(\n { url, method },\n \"Request stream was disturbed; falling back to empty body\",\n );\n }\n\n return new Request(url, init);\n }\n throw error;\n }\n}\n\nexport async function sendFetchResponse(res: ExpressResponse, response: Response): Promise<void> {\n res.status(response.status);\n\n response.headers.forEach((value, key) => {\n if (key.toLowerCase() === \"content-length\" && response.body !== null) {\n return;\n }\n res.setHeader(key, value);\n });\n\n if (!response.body) {\n res.end();\n return;\n }\n\n const nodeStream = Readable.fromWeb(response.body as any);\n try {\n await streamPipeline(nodeStream, res);\n } catch (error) {\n res.destroy(error as Error);\n throw error;\n }\n}\n\nfunction buildOrigin(req: ExpressRequest): string {\n const protocol = req.protocol || (req.secure ? \"https\" : \"http\");\n const host = req.get(\"host\") ?? \"localhost\";\n return `${protocol}://${host}`;\n}\n\nfunction isStreamConsumed(req: ExpressRequest, hasParsedBody: boolean): boolean {\n const state = (req as unknown as { _readableState?: { ended?: boolean; endEmitted?: boolean } })\n ._readableState;\n return Boolean(\n hasParsedBody ||\n req.readableEnded ||\n req.complete ||\n state?.ended ||\n state?.endEmitted,\n );\n}\n\nfunction synthesizeBody(body: unknown): { body?: BodyInit; contentType?: string } {\n if (Buffer.isBuffer(body) || body instanceof Uint8Array) {\n return { body };\n }\n\n if (typeof body === \"string\") {\n return { body };\n }\n\n if (typeof body === \"object\" && body !== undefined) {\n return { body: JSON.stringify(body), contentType: \"application/json\" };\n }\n\n return {};\n}\n","import express from \"express\";\nimport type { Request as ExpressRequest, Response as ExpressResponse, NextFunction, Router } from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntime } from \"../runtime\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport { logger } from \"@copilotkitnext/shared\";\nimport { callBeforeRequestMiddleware, callAfterRequestMiddleware } from \"../middleware\";\nimport { createFetchRequestFromExpress, sendFetchResponse } from \"./express-utils\";\nimport { createJsonRequest, expectString, MethodCall, parseMethodCall } from \"./single-route-helpers\";\n\ninterface CopilotSingleRouteExpressParams {\n runtime: CopilotRuntime;\n basePath: string;\n}\n\nexport function createCopilotEndpointSingleRouteExpress({\n runtime,\n basePath,\n}: CopilotSingleRouteExpressParams): Router {\n const router = express.Router();\n const routePath = normalizeSingleRoutePath(basePath);\n\n router.use(cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }));\n\n router.post(routePath, createSingleRouteHandler(runtime));\n\n router.use((req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\nfunction createSingleRouteHandler(runtime: CopilotRuntime) {\n return async (req: ExpressRequest, res: ExpressResponse, next: NextFunction) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({ runtime, request, path });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error({ err: error, url: request.url, path }, \"Error running before request middleware\");\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n let methodCall: MethodCall;\n try {\n methodCall = await parseMethodCall(request);\n } catch (error) {\n if (error instanceof Response) {\n logger.warn({ url: request.url }, \"Invalid single-route payload\");\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n logger.warn({ err: error, url: request.url }, \"Invalid single-route payload\");\n res.status(400).json({\n error: \"invalid_request\",\n message: error instanceof Error ? error.message : \"Invalid request payload\",\n });\n return;\n }\n\n try {\n let response: Response;\n switch (methodCall.method) {\n case \"agent/run\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleRunAgent({ runtime, request: handlerRequest, agentId });\n break;\n }\n case \"agent/connect\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleConnectAgent({ runtime, request: handlerRequest, agentId });\n break;\n }\n case \"agent/stop\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const threadId = expectString(methodCall.params, \"threadId\");\n response = await handleStopAgent({ runtime, request, agentId, threadId });\n break;\n }\n case \"info\": {\n response = await handleGetRuntimeInfo({ runtime, request });\n break;\n }\n case \"transcribe\": {\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleTranscribe({ runtime, request: handlerRequest });\n break;\n }\n default: {\n const exhaustive: never = methodCall.method;\n return exhaustive;\n }\n }\n\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {\n logger.error({ err: error, url: req.originalUrl ?? req.url, path }, \"Error running after request middleware\");\n });\n } catch (error) {\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({ runtime, response: error, path }).catch((mwError) => {\n logger.error({ err: mwError, url: req.originalUrl ?? req.url, path }, \"Error running after request middleware\");\n });\n return;\n }\n logger.error({ err: error, url: request.url, path }, \"Error running single-route handler\");\n next(error);\n }\n };\n}\n\nfunction normalizeSingleRoutePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express single-route endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n"],"mappings":"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","names":["logger","logger","express","cors","logger","express","cors","logger"]}
1
+ {"version":3,"sources":["../src/endpoints/express.ts","../src/endpoints/express-utils.ts","../src/endpoints/express-single.ts"],"sourcesContent":["import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntime } from \"../runtime\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport { logger } from \"@copilotkitnext/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createFetchRequestFromExpress,\n sendFetchResponse,\n} from \"./express-utils\";\n\ninterface CopilotExpressEndpointParams {\n runtime: CopilotRuntime;\n basePath: string;\n}\n\nexport function createCopilotEndpointExpress({\n runtime,\n basePath,\n}: CopilotExpressEndpointParams): Router {\n const router = express.Router();\n const normalizedBase = normalizeBasePath(basePath);\n\n router.use(\n cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/run\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleRunAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/connect\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n return handleConnectAgent({ runtime, request, agentId });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/agent/:agentId/stop/:threadId\"),\n createRouteHandler(runtime, async ({ request, req }) => {\n const agentId = req.params.agentId as string;\n const threadId = req.params.threadId as string;\n return handleStopAgent({ runtime, request, agentId, threadId });\n }),\n );\n\n router.get(\n joinPath(normalizedBase, \"/info\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleGetRuntimeInfo({ runtime, request });\n }),\n );\n\n router.post(\n joinPath(normalizedBase, \"/transcribe\"),\n createRouteHandler(runtime, async ({ request }) => {\n return handleTranscribe({ runtime, request });\n }),\n );\n\n router.use(joinPath(normalizedBase, \"*\"), (req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\ntype RouteHandlerContext = {\n request: Request;\n req: ExpressRequest;\n};\n\ntype RouteHandlerFactory = (ctx: RouteHandlerContext) => Promise<Response>;\n\nfunction createRouteHandler(\n runtime: CopilotRuntime,\n factory: RouteHandlerFactory,\n) {\n return async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n try {\n const response = await factory({ request, req });\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {\n logger.error(\n { err: error, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n } catch (error) {\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({ runtime, response: error, path }).catch(\n (mwError) => {\n logger.error(\n { err: mwError, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n },\n );\n return;\n }\n logger.error(\n { err: error, url: request.url, path },\n \"Error running request handler\",\n );\n next(error);\n }\n };\n}\n\nfunction normalizeBasePath(path: string): string {\n if (!path) {\n throw new Error(\"basePath must be provided for Express endpoint\");\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n\nfunction joinPath(basePath: string, suffix: string): string {\n if (basePath === \"/\") {\n return suffix.startsWith(\"/\") ? suffix : `/${suffix}`;\n }\n\n if (!suffix) {\n return basePath;\n }\n\n if (suffix === \"*\") {\n return `${basePath}/*`;\n }\n\n return `${basePath}${suffix.startsWith(\"/\") ? suffix : `/${suffix}`}`;\n}\n","import type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n} from \"express\";\nimport { Readable } from \"node:stream\";\nimport { pipeline } from \"node:stream\";\nimport { promisify } from \"node:util\";\nimport { logger } from \"@copilotkitnext/shared\";\n\nconst streamPipeline = promisify(pipeline);\n\nconst METHODS_WITHOUT_BODY = new Set([\"GET\", \"HEAD\"]);\n\nexport function createFetchRequestFromExpress(req: ExpressRequest): Request {\n const method = req.method?.toUpperCase() ?? \"GET\";\n const origin = buildOrigin(req);\n const url = `${origin}${req.originalUrl ?? req.url ?? \"\"}`;\n\n const headers = new Headers();\n for (const [key, value] of Object.entries(req.headers)) {\n if (value === undefined) continue;\n if (Array.isArray(value)) {\n value.forEach((v) => headers.append(key, v));\n } else {\n headers.set(key, value);\n }\n }\n\n const init: RequestInit & { duplex?: \"half\" } = {\n method,\n headers,\n };\n\n const hasParsedBody = req.body !== undefined && req.body !== null;\n const streamConsumed = isStreamConsumed(req, hasParsedBody);\n\n if (!METHODS_WITHOUT_BODY.has(method)) {\n const canStreamBody = req.readable !== false && !streamConsumed;\n\n if (canStreamBody) {\n init.body = Readable.toWeb(req) as unknown as BodyInit;\n init.duplex = \"half\";\n } else if (hasParsedBody) {\n const { body, contentType } = synthesizeBody(req.body);\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n headers.delete(\"content-length\");\n if (body !== undefined) {\n init.body = body;\n }\n logger.info(\n {\n url,\n method,\n readable: req.readable,\n readableEnded: req.readableEnded,\n complete: req.complete,\n },\n \"Express request stream already consumed; synthesized body from parsed content\",\n );\n } else {\n headers.delete(\"content-length\");\n logger.warn(\n { url, method },\n \"Request stream already consumed but no body was available; sending empty body\",\n );\n }\n }\n\n const controller = new AbortController();\n const abort = () => controller.abort();\n req.on(\"aborted\", abort);\n req.on(\"error\", abort);\n req.on(\"close\", () => {\n if (req.aborted) {\n abort();\n }\n });\n init.signal = controller.signal;\n\n try {\n return new Request(url, init);\n } catch (error) {\n if (error instanceof TypeError && /disturbed|locked/i.test(error.message)) {\n // Fallback to synthesized/empty body when the stream was already consumed.\n headers.delete(\"content-length\");\n delete init.duplex;\n\n if (hasParsedBody) {\n const { body, contentType } = synthesizeBody(req.body);\n if (contentType) {\n headers.set(\"content-type\", contentType);\n }\n init.body = body;\n logger.info(\n { url, method },\n \"Request stream disturbed while constructing Request; reused parsed body\",\n );\n } else {\n init.body = undefined;\n logger.warn(\n { url, method },\n \"Request stream was disturbed; falling back to empty body\",\n );\n }\n\n return new Request(url, init);\n }\n throw error;\n }\n}\n\nexport async function sendFetchResponse(\n res: ExpressResponse,\n response: Response,\n): Promise<void> {\n res.status(response.status);\n\n response.headers.forEach((value, key) => {\n if (key.toLowerCase() === \"content-length\" && response.body !== null) {\n return;\n }\n res.setHeader(key, value);\n });\n\n if (!response.body) {\n res.end();\n return;\n }\n\n const nodeStream = Readable.fromWeb(response.body as any);\n try {\n await streamPipeline(nodeStream, res);\n } catch (error) {\n res.destroy(error as Error);\n throw error;\n }\n}\n\nfunction buildOrigin(req: ExpressRequest): string {\n const protocol = req.protocol || (req.secure ? \"https\" : \"http\");\n const host = req.get(\"host\") ?? \"localhost\";\n return `${protocol}://${host}`;\n}\n\nfunction isStreamConsumed(\n req: ExpressRequest,\n hasParsedBody: boolean,\n): boolean {\n const state = (\n req as unknown as {\n _readableState?: { ended?: boolean; endEmitted?: boolean };\n }\n )._readableState;\n return Boolean(\n hasParsedBody ||\n req.readableEnded ||\n req.complete ||\n state?.ended ||\n state?.endEmitted,\n );\n}\n\nfunction synthesizeBody(body: unknown): {\n body?: BodyInit;\n contentType?: string;\n} {\n if (Buffer.isBuffer(body) || body instanceof Uint8Array) {\n return { body };\n }\n\n if (typeof body === \"string\") {\n return { body };\n }\n\n if (typeof body === \"object\" && body !== undefined) {\n return { body: JSON.stringify(body), contentType: \"application/json\" };\n }\n\n return {};\n}\n","import express from \"express\";\nimport type {\n Request as ExpressRequest,\n Response as ExpressResponse,\n NextFunction,\n Router,\n} from \"express\";\nimport cors from \"cors\";\n\nimport { CopilotRuntime } from \"../runtime\";\nimport { handleRunAgent } from \"../handlers/handle-run\";\nimport { handleConnectAgent } from \"../handlers/handle-connect\";\nimport { handleStopAgent } from \"../handlers/handle-stop\";\nimport { handleGetRuntimeInfo } from \"../handlers/get-runtime-info\";\nimport { handleTranscribe } from \"../handlers/handle-transcribe\";\nimport { logger } from \"@copilotkitnext/shared\";\nimport {\n callBeforeRequestMiddleware,\n callAfterRequestMiddleware,\n} from \"../middleware\";\nimport {\n createFetchRequestFromExpress,\n sendFetchResponse,\n} from \"./express-utils\";\nimport {\n createJsonRequest,\n expectString,\n MethodCall,\n parseMethodCall,\n} from \"./single-route-helpers\";\n\ninterface CopilotSingleRouteExpressParams {\n runtime: CopilotRuntime;\n basePath: string;\n}\n\nexport function createCopilotEndpointSingleRouteExpress({\n runtime,\n basePath,\n}: CopilotSingleRouteExpressParams): Router {\n const router = express.Router();\n const routePath = normalizeSingleRoutePath(basePath);\n\n router.use(\n cors({\n origin: \"*\",\n methods: [\"GET\", \"HEAD\", \"PUT\", \"POST\", \"DELETE\", \"PATCH\", \"OPTIONS\"],\n allowedHeaders: [\"*\"],\n }),\n );\n\n router.post(routePath, createSingleRouteHandler(runtime));\n\n router.use((req, res) => {\n res.status(404).json({ error: \"Not found\" });\n });\n\n return router;\n}\n\nfunction createSingleRouteHandler(runtime: CopilotRuntime) {\n return async (\n req: ExpressRequest,\n res: ExpressResponse,\n next: NextFunction,\n ) => {\n const path = req.originalUrl ?? req.path;\n let request = createFetchRequestFromExpress(req);\n\n try {\n const maybeModifiedRequest = await callBeforeRequestMiddleware({\n runtime,\n request,\n path,\n });\n if (maybeModifiedRequest) {\n request = maybeModifiedRequest;\n }\n } catch (error) {\n logger.error(\n { err: error, url: request.url, path },\n \"Error running before request middleware\",\n );\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n next(error);\n return;\n }\n\n let methodCall: MethodCall;\n try {\n methodCall = await parseMethodCall(request);\n } catch (error) {\n if (error instanceof Response) {\n logger.warn({ url: request.url }, \"Invalid single-route payload\");\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n }\n return;\n }\n logger.warn(\n { err: error, url: request.url },\n \"Invalid single-route payload\",\n );\n res.status(400).json({\n error: \"invalid_request\",\n message:\n error instanceof Error ? error.message : \"Invalid request payload\",\n });\n return;\n }\n\n try {\n let response: Response;\n switch (methodCall.method) {\n case \"agent/run\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleRunAgent({\n runtime,\n request: handlerRequest,\n agentId,\n });\n break;\n }\n case \"agent/connect\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleConnectAgent({\n runtime,\n request: handlerRequest,\n agentId,\n });\n break;\n }\n case \"agent/stop\": {\n const agentId = expectString(methodCall.params, \"agentId\");\n const threadId = expectString(methodCall.params, \"threadId\");\n response = await handleStopAgent({\n runtime,\n request,\n agentId,\n threadId,\n });\n break;\n }\n case \"info\": {\n response = await handleGetRuntimeInfo({ runtime, request });\n break;\n }\n case \"transcribe\": {\n const handlerRequest = createJsonRequest(request, methodCall.body);\n response = await handleTranscribe({\n runtime,\n request: handlerRequest,\n });\n break;\n }\n default: {\n const exhaustive: never = methodCall.method;\n return exhaustive;\n }\n }\n\n await sendFetchResponse(res, response);\n callAfterRequestMiddleware({ runtime, response, path }).catch((error) => {\n logger.error(\n { err: error, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n });\n } catch (error) {\n if (error instanceof Response) {\n try {\n await sendFetchResponse(res, error);\n } catch (streamError) {\n next(streamError);\n return;\n }\n callAfterRequestMiddleware({ runtime, response: error, path }).catch(\n (mwError) => {\n logger.error(\n { err: mwError, url: req.originalUrl ?? req.url, path },\n \"Error running after request middleware\",\n );\n },\n );\n return;\n }\n logger.error(\n { err: error, url: request.url, path },\n \"Error running single-route handler\",\n );\n next(error);\n }\n };\n}\n\nfunction normalizeSingleRoutePath(path: string): string {\n if (!path) {\n throw new Error(\n \"basePath must be provided for Express single-route endpoint\",\n );\n }\n\n if (!path.startsWith(\"/\")) {\n return `/${path}`;\n }\n\n if (path.length > 1 && path.endsWith(\"/\")) {\n return path.slice(0, -1);\n }\n\n return path;\n}\n"],"mappings":"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","names":["logger","logger","express","cors","logger","express","cors","logger"]}
package/dist/index.d.mts CHANGED
@@ -40,7 +40,7 @@ type CopilotEndpointContext$1 = {
40
40
  modifiedRequest?: Request;
41
41
  };
42
42
  };
43
- declare function createCopilotEndpoint({ runtime, basePath, cors: corsConfig }: CopilotEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext$1, {
43
+ declare function createCopilotEndpoint({ runtime, basePath, cors: corsConfig, }: CopilotEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext$1, {
44
44
  [x: `${string}/agent/:agentId/run`]: {
45
45
  $post: {
46
46
  input: {
@@ -118,7 +118,7 @@ type CopilotEndpointContext = {
118
118
  modifiedRequest?: Request;
119
119
  };
120
120
  };
121
- declare function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig }: CopilotSingleEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext, {
121
+ declare function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig, }: CopilotSingleEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext, {
122
122
  [x: string]: {
123
123
  $post: {
124
124
  input: {};
package/dist/index.d.ts CHANGED
@@ -40,7 +40,7 @@ type CopilotEndpointContext$1 = {
40
40
  modifiedRequest?: Request;
41
41
  };
42
42
  };
43
- declare function createCopilotEndpoint({ runtime, basePath, cors: corsConfig }: CopilotEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext$1, {
43
+ declare function createCopilotEndpoint({ runtime, basePath, cors: corsConfig, }: CopilotEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext$1, {
44
44
  [x: `${string}/agent/:agentId/run`]: {
45
45
  $post: {
46
46
  input: {
@@ -118,7 +118,7 @@ type CopilotEndpointContext = {
118
118
  modifiedRequest?: Request;
119
119
  };
120
120
  };
121
- declare function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig }: CopilotSingleEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext, {
121
+ declare function createCopilotEndpointSingleRoute({ runtime, basePath, cors: corsConfig, }: CopilotSingleEndpointParams): hono_hono_base.HonoBase<CopilotEndpointContext, {
122
122
  [x: string]: {
123
123
  $post: {
124
124
  input: {};