@copilotkit/runtime 1.3.12-fix-tool-call-dynamic-parameters.0 → 1.3.12-lgc-alpha-1.0

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.
Files changed (56) hide show
  1. package/CHANGELOG.md +3 -4
  2. package/dist/{chunk-SIMJ6TZU.mjs → chunk-6B3NPPSR.mjs} +2 -2
  3. package/dist/{chunk-OSJXQNII.mjs → chunk-6HXQC7IT.mjs} +36 -9
  4. package/dist/chunk-6HXQC7IT.mjs.map +1 -0
  5. package/dist/{chunk-24WEOOFX.mjs → chunk-7MQDBRXJ.mjs} +2 -2
  6. package/dist/{chunk-AOYYOKTP.mjs → chunk-E6ZFCM3B.mjs} +561 -133
  7. package/dist/chunk-E6ZFCM3B.mjs.map +1 -0
  8. package/dist/{chunk-UYORVPCQ.mjs → chunk-TM7ZRU3M.mjs} +2 -2
  9. package/dist/{chunk-ZEHCLFJ2.mjs → chunk-V7SK6QZN.mjs} +6 -9
  10. package/dist/chunk-V7SK6QZN.mjs.map +1 -0
  11. package/dist/{chunk-HKLL7TTP.mjs → chunk-XMDH5MKI.mjs} +2 -2
  12. package/dist/{copilot-runtime-df3527ad.d.ts → copilot-runtime-aba7d4b4.d.ts} +27 -5
  13. package/dist/index.d.ts +1 -1
  14. package/dist/index.js +638 -186
  15. package/dist/index.js.map +1 -1
  16. package/dist/index.mjs +13 -9
  17. package/dist/index.mjs.map +1 -1
  18. package/dist/lib/index.d.ts +1 -1
  19. package/dist/lib/index.js +638 -186
  20. package/dist/lib/index.js.map +1 -1
  21. package/dist/lib/index.mjs +13 -9
  22. package/dist/lib/integrations/index.d.ts +2 -2
  23. package/dist/lib/integrations/index.js +5 -4
  24. package/dist/lib/integrations/index.js.map +1 -1
  25. package/dist/lib/integrations/index.mjs +5 -5
  26. package/dist/lib/integrations/nest/index.d.ts +1 -1
  27. package/dist/lib/integrations/nest/index.js +5 -4
  28. package/dist/lib/integrations/nest/index.js.map +1 -1
  29. package/dist/lib/integrations/nest/index.mjs +3 -3
  30. package/dist/lib/integrations/node-express/index.d.ts +1 -1
  31. package/dist/lib/integrations/node-express/index.js +5 -4
  32. package/dist/lib/integrations/node-express/index.js.map +1 -1
  33. package/dist/lib/integrations/node-express/index.mjs +3 -3
  34. package/dist/lib/integrations/node-http/index.d.ts +1 -1
  35. package/dist/lib/integrations/node-http/index.js +5 -4
  36. package/dist/lib/integrations/node-http/index.js.map +1 -1
  37. package/dist/lib/integrations/node-http/index.mjs +2 -2
  38. package/dist/service-adapters/index.js +5 -8
  39. package/dist/service-adapters/index.js.map +1 -1
  40. package/dist/service-adapters/index.mjs +2 -2
  41. package/package.json +7 -6
  42. package/src/agents/langgraph/event-source.ts +22 -67
  43. package/src/lib/runtime/copilot-runtime.ts +58 -11
  44. package/src/lib/runtime/remote-action-constructors.ts +283 -0
  45. package/src/lib/runtime/remote-actions.ts +65 -159
  46. package/src/lib/runtime/remote-lg-cloud-action.ts +441 -0
  47. package/src/service-adapters/events.ts +1 -5
  48. package/src/service-adapters/langchain/utils.ts +5 -10
  49. package/dist/chunk-AOYYOKTP.mjs.map +0 -1
  50. package/dist/chunk-OSJXQNII.mjs.map +0 -1
  51. package/dist/chunk-ZEHCLFJ2.mjs.map +0 -1
  52. package/src/service-adapters/langchain/utils.test.ts +0 -169
  53. /package/dist/{chunk-SIMJ6TZU.mjs.map → chunk-6B3NPPSR.mjs.map} +0 -0
  54. /package/dist/{chunk-24WEOOFX.mjs.map → chunk-7MQDBRXJ.mjs.map} +0 -0
  55. /package/dist/{chunk-UYORVPCQ.mjs.map → chunk-TM7ZRU3M.mjs.map} +0 -0
  56. /package/dist/{chunk-HKLL7TTP.mjs.map → chunk-XMDH5MKI.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../package.json","../src/lib/integrations/node-http/index.ts","../src/lib/integrations/shared.ts","../src/graphql/resolvers/copilot.resolver.ts","../src/graphql/inputs/generate-copilot-response.input.ts","../src/graphql/inputs/message.input.ts","../src/graphql/types/enums.ts","../src/graphql/inputs/frontend.input.ts","../src/graphql/inputs/action.input.ts","../src/graphql/inputs/cloud.input.ts","../src/graphql/inputs/cloud-guardrails.input.ts","../src/graphql/inputs/forwarded-parameters.input.ts","../src/graphql/inputs/agent-session.input.ts","../src/graphql/inputs/agent-state.input.ts","../src/graphql/types/copilot-response.type.ts","../src/graphql/types/message-status.type.ts","../src/service-adapters/events.ts","../src/lib/telemetry-client.ts","../src/agents/langgraph/event-source.ts","../src/agents/langgraph/events.ts","../src/lib/runtime/remote-lg-cloud-action.ts","../src/lib/runtime/remote-action-constructors.ts","../src/lib/runtime/remote-actions.ts","../src/lib/logger.ts"],"sourcesContent":["{\n \"name\": \"@copilotkit/runtime\",\n \"private\": false,\n \"homepage\": \"https://github.com/CopilotKit/CopilotKit\",\n \"repository\": {\n \"type\": \"git\",\n \"url\": \"https://github.com/CopilotKit/CopilotKit.git\"\n },\n \"publishConfig\": {\n \"access\": \"public\"\n },\n \"version\": \"1.3.12-lgc-alpha-1.0\",\n \"sideEffects\": false,\n \"main\": \"./dist/index.js\",\n \"module\": \"./dist/index.mjs\",\n \"exports\": {\n \".\": \"./dist/index.js\"\n },\n \"types\": \"./dist/index.d.ts\",\n \"license\": \"MIT\",\n \"scripts\": {\n \"build\": \"tsup --onSuccess \\\"pnpm run generate-graphql-schema\\\"\",\n \"dev\": \"tsup --watch --onSuccess \\\"pnpm run generate-graphql-schema\\\"\",\n \"test\": \"jest --passWithNoTests\",\n \"check-types\": \"tsc --noEmit\",\n \"clean\": \"rm -rf .turbo && rm -rf node_modules && rm -rf dist && rm -rf .next && rm -rf __snapshots__\",\n \"generate-graphql-schema\": \"rm -rf __snapshots__ && ts-node ./scripts/generate-gql-schema.ts\",\n \"link:global\": \"pnpm link --global\",\n \"unlink:global\": \"pnpm unlink --global\"\n },\n \"devDependencies\": {\n \"@swc/core\": \"1.5.28\",\n \"@types/express\": \"^4.17.21\",\n \"@types/jest\": \"^29.5.4\",\n \"@types/node\": \"^18.11.17\",\n \"@whatwg-node/server\": \"^0.9.34\",\n \"eslint\": \"^8.56.0\",\n \"eslint-config-custom\": \"workspace:*\",\n \"jest\": \"^29.6.4\",\n \"nodemon\": \"^3.1.3\",\n \"ts-jest\": \"^29.1.1\",\n \"ts-node\": \"^10.9.2\",\n \"tsconfig\": \"workspace:*\",\n \"tsup\": \"^6.7.0\",\n \"typescript\": \"^5.2.3\"\n },\n \"dependencies\": {\n \"@anthropic-ai/sdk\": \"^0.27.3\",\n \"@copilotkit/shared\": \"workspace:*\",\n \"@langchain/google-gauth\": \"^0.1.0\",\n \"@graphql-yoga/plugin-defer-stream\": \"^3.3.1\",\n \"@langchain/community\": \"^0.0.53\",\n \"@langchain/core\": \"^0.3.13\",\n \"@langchain/langgraph-sdk\": \"^0.0.16\",\n \"@langchain/openai\": \"^0.0.28\",\n \"class-transformer\": \"^0.5.1\",\n \"express\": \"^4.19.2\",\n \"graphql\": \"^16.8.1\",\n \"graphql-scalars\": \"^1.23.0\",\n \"graphql-yoga\": \"^5.3.1\",\n \"groq-sdk\": \"^0.5.0\",\n \"langchain\": \"^0.3.3\",\n \"openai\": \"^4.50.0\",\n \"partial-json\": \"^0.1.7\",\n \"pino\": \"^9.2.0\",\n \"pino-pretty\": \"^11.2.1\",\n \"reflect-metadata\": \"^0.2.2\",\n \"rxjs\": \"^7.8.1\",\n \"type-graphql\": \"2.0.0-rc.1\",\n \"zod\": \"^3.23.3\"\n },\n \"keywords\": [\n \"copilotkit\",\n \"copilot\",\n \"react\",\n \"nextjs\",\n \"nodejs\",\n \"ai\",\n \"assistant\",\n \"javascript\",\n \"automation\",\n \"textarea\"\n ]\n}\n","import { createYoga } from \"graphql-yoga\";\nimport { CreateCopilotRuntimeServerOptions, getCommonConfig } from \"../shared\";\nimport telemetry from \"../../telemetry-client\";\n\nexport function copilotRuntimeNodeHttpEndpoint(options: CreateCopilotRuntimeServerOptions) {\n const commonConfig = getCommonConfig(options);\n\n telemetry.setGlobalProperties({\n runtime: {\n framework: \"node-http\",\n },\n });\n\n if (options.properties?._copilotkit) {\n telemetry.setGlobalProperties({\n _copilotkit: options.properties._copilotkit,\n });\n }\n\n telemetry.capture(\"oss.runtime.instance_created\", {});\n\n const logger = commonConfig.logging;\n logger.debug(\"Creating Node HTTP endpoint\");\n\n const yoga = createYoga({\n ...commonConfig,\n graphqlEndpoint: options.endpoint,\n });\n\n return yoga;\n}\n","import { YogaInitialContext } from \"graphql-yoga\";\nimport { buildSchemaSync } from \"type-graphql\";\nimport { CopilotResolver } from \"../../graphql/resolvers/copilot.resolver\";\nimport { useDeferStream } from \"@graphql-yoga/plugin-defer-stream\";\nimport { CopilotRuntime } from \"../runtime/copilot-runtime\";\nimport { CopilotServiceAdapter } from \"../../service-adapters\";\nimport { CopilotCloudOptions } from \"../cloud\";\nimport { LogLevel, createLogger } from \"../../lib/logger\";\nimport { createYoga } from \"graphql-yoga\";\nimport telemetry from \"../telemetry-client\";\n\nconst logger = createLogger();\n\ntype AnyPrimitive = string | boolean | number | null;\nexport type CopilotRequestContextProperties = Record<\n string,\n AnyPrimitive | Record<string, AnyPrimitive>\n>;\n\nexport type GraphQLContext = YogaInitialContext & {\n _copilotkit: CreateCopilotRuntimeServerOptions;\n properties: CopilotRequestContextProperties;\n logger: typeof logger;\n};\n\nexport interface CreateCopilotRuntimeServerOptions {\n runtime: CopilotRuntime<any>;\n serviceAdapter: CopilotServiceAdapter;\n endpoint: string;\n baseUrl?: string;\n cloud?: CopilotCloudOptions;\n properties?: CopilotRequestContextProperties;\n logLevel?: LogLevel;\n}\n\nexport async function createContext(\n initialContext: YogaInitialContext,\n copilotKitContext: CreateCopilotRuntimeServerOptions,\n contextLogger: typeof logger,\n properties: CopilotRequestContextProperties = {},\n): Promise<Partial<GraphQLContext>> {\n logger.debug({ copilotKitContext }, \"Creating GraphQL context\");\n const ctx: GraphQLContext = {\n ...initialContext,\n _copilotkit: {\n ...copilotKitContext,\n },\n properties: { ...properties },\n logger: contextLogger,\n };\n return ctx;\n}\n\nexport function buildSchema(\n options: {\n emitSchemaFile?: string;\n } = {},\n) {\n logger.debug(\"Building GraphQL schema...\");\n const schema = buildSchemaSync({\n resolvers: [CopilotResolver],\n emitSchemaFile: options.emitSchemaFile,\n });\n logger.debug(\"GraphQL schema built successfully\");\n return schema;\n}\n\nexport type CommonConfig = {\n logging: typeof logger;\n schema: ReturnType<typeof buildSchema>;\n plugins: Parameters<typeof createYoga>[0][\"plugins\"];\n context: (ctx: YogaInitialContext) => Promise<Partial<GraphQLContext>>;\n};\n\nexport function getCommonConfig(options: CreateCopilotRuntimeServerOptions): CommonConfig {\n const logLevel = (process.env.LOG_LEVEL as LogLevel) || (options.logLevel as LogLevel) || \"error\";\n const logger = createLogger({ level: logLevel, component: \"getCommonConfig\" });\n\n const contextLogger = createLogger({ level: logLevel });\n\n if (options.cloud) {\n telemetry.setCloudConfiguration({\n publicApiKey: options.cloud.publicApiKey,\n baseUrl: options.cloud.baseUrl,\n });\n }\n\n if (options.properties?._copilotkit) {\n telemetry.setGlobalProperties({\n _copilotkit: {\n ...(options.properties._copilotkit as Record<string, any>),\n },\n });\n }\n\n telemetry.setGlobalProperties({\n runtime: {\n serviceAdapter: options.serviceAdapter.constructor.name,\n },\n });\n\n return {\n logging: createLogger({ component: \"Yoga GraphQL\", level: logLevel }),\n schema: buildSchema(),\n plugins: [useDeferStream()],\n context: (ctx: YogaInitialContext): Promise<Partial<GraphQLContext>> =>\n createContext(ctx, options, contextLogger, options.properties),\n };\n}\n","import { Arg, Ctx, Mutation, Query, Resolver } from \"type-graphql\";\nimport {\n ReplaySubject,\n Subject,\n Subscription,\n finalize,\n firstValueFrom,\n shareReplay,\n skipWhile,\n take,\n takeWhile,\n tap,\n} from \"rxjs\";\nimport { GenerateCopilotResponseInput } from \"../inputs/generate-copilot-response.input\";\nimport { CopilotResponse } from \"../types/copilot-response.type\";\nimport { MessageRole } from \"../types/enums\";\nimport { Repeater } from \"graphql-yoga\";\nimport type { CopilotRequestContextProperties, GraphQLContext } from \"../../lib/integrations\";\nimport { RuntimeEvent, RuntimeEventTypes } from \"../../service-adapters/events\";\nimport {\n FailedMessageStatus,\n MessageStatusUnion,\n SuccessMessageStatus,\n} from \"../types/message-status.type\";\nimport { ResponseStatusUnion, SuccessResponseStatus } from \"../types/response-status.type\";\nimport { GraphQLJSONObject } from \"graphql-scalars\";\nimport { plainToInstance } from \"class-transformer\";\nimport { GuardrailsResult } from \"../types/guardrails-result.type\";\nimport { GraphQLError } from \"graphql\";\nimport {\n GuardrailsValidationFailureResponse,\n MessageStreamInterruptedResponse,\n UnknownErrorResponse,\n} from \"../../utils\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n} from \"../types/converted\";\nimport telemetry from \"../../lib/telemetry-client\";\nimport { randomId } from \"@copilotkit/shared\";\n\nconst invokeGuardrails = async ({\n baseUrl,\n copilotCloudPublicApiKey,\n data,\n onResult,\n onError,\n}: {\n baseUrl: string;\n copilotCloudPublicApiKey: string;\n data: GenerateCopilotResponseInput;\n onResult: (result: GuardrailsResult) => void;\n onError: (err: Error) => void;\n}) => {\n if (\n data.messages.length &&\n data.messages[data.messages.length - 1].textMessage?.role === MessageRole.user\n ) {\n const messages = data.messages\n .filter(\n (m) =>\n m.textMessage !== undefined &&\n (m.textMessage.role === MessageRole.user || m.textMessage.role === MessageRole.assistant),\n )\n .map((m) => ({\n role: m.textMessage!.role,\n content: m.textMessage.content,\n }));\n\n const lastMessage = messages[messages.length - 1];\n const restOfMessages = messages.slice(0, -1);\n\n const body = {\n input: lastMessage.content,\n validTopics: data.cloud.guardrails.inputValidationRules.allowList,\n invalidTopics: data.cloud.guardrails.inputValidationRules.denyList,\n messages: restOfMessages,\n };\n\n const guardrailsResult = await fetch(`${baseUrl}/guardrails/validate`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n \"X-CopilotCloud-Public-API-Key\": copilotCloudPublicApiKey,\n },\n body: JSON.stringify(body),\n });\n\n if (guardrailsResult.ok) {\n const resultJson: GuardrailsResult = await guardrailsResult.json();\n onResult(resultJson);\n } else {\n onError(await guardrailsResult.json());\n }\n }\n};\n\n@Resolver(() => CopilotResponse)\nexport class CopilotResolver {\n @Query(() => String)\n async hello() {\n return \"Hello World\";\n }\n\n @Mutation(() => CopilotResponse)\n async generateCopilotResponse(\n @Ctx() ctx: GraphQLContext,\n @Arg(\"data\") data: GenerateCopilotResponseInput,\n @Arg(\"properties\", () => GraphQLJSONObject, { nullable: true })\n properties?: CopilotRequestContextProperties,\n ) {\n telemetry.capture(\"oss.runtime.copilot_request_created\", {\n \"cloud.guardrails.enabled\": data.cloud?.guardrails !== undefined,\n requestType: data.metadata.requestType,\n });\n\n let logger = ctx.logger.child({ component: \"CopilotResolver.generateCopilotResponse\" });\n logger.debug({ data }, \"Generating Copilot response\");\n\n if (properties) {\n logger.debug(\"Properties provided, merging with context properties\");\n ctx.properties = { ...ctx.properties, ...properties };\n }\n\n const copilotRuntime = ctx._copilotkit.runtime;\n const serviceAdapter = ctx._copilotkit.serviceAdapter;\n\n let copilotCloudPublicApiKey: string | null = null;\n let copilotCloudBaseUrl: string;\n\n if (data.cloud) {\n logger = logger.child({ cloud: true });\n logger.debug(\"Cloud configuration provided, checking for public API key in headers\");\n const key = ctx.request.headers.get(\"x-copilotcloud-public-api-key\");\n if (key) {\n logger.debug(\"Public API key found in headers\");\n copilotCloudPublicApiKey = key;\n } else {\n logger.error(\"Public API key not found in headers\");\n throw new GraphQLError(\"X-CopilotCloud-Public-API-Key header is required\");\n }\n\n if (process.env.COPILOT_CLOUD_BASE_URL) {\n copilotCloudBaseUrl = process.env.COPILOT_CLOUD_BASE_URL;\n } else if (ctx._copilotkit.cloud?.baseUrl) {\n copilotCloudBaseUrl = ctx._copilotkit.cloud?.baseUrl;\n } else {\n copilotCloudBaseUrl = \"https://api.cloud.copilotkit.ai\";\n }\n\n logger = logger.child({ copilotCloudBaseUrl });\n }\n\n logger.debug(\"Setting up subjects\");\n const responseStatus$ = new ReplaySubject<typeof ResponseStatusUnion>();\n const interruptStreaming$ = new ReplaySubject<{ reason: string; messageId?: string }>();\n const guardrailsResult$ = new ReplaySubject<GuardrailsResult>();\n\n let outputMessages: Message[] = [];\n let resolveOutputMessagesPromise: (messages: Message[]) => void;\n let rejectOutputMessagesPromise: (err: Error) => void;\n\n const outputMessagesPromise = new Promise<Message[]>((resolve, reject) => {\n resolveOutputMessagesPromise = resolve;\n rejectOutputMessagesPromise = reject;\n });\n\n logger.debug(\"Processing\");\n const {\n eventSource,\n threadId = randomId(),\n runId,\n serverSideActions,\n actionInputsWithoutAgents,\n } = await copilotRuntime.processRuntimeRequest({\n serviceAdapter,\n messages: data.messages,\n actions: data.frontend.actions,\n threadId: data.threadId,\n runId: data.runId,\n publicApiKey: undefined,\n outputMessagesPromise,\n graphqlContext: ctx,\n forwardedParameters: data.forwardedParameters,\n agentSession: data.agentSession,\n agentStates: data.agentStates,\n url: data.frontend.url,\n });\n\n logger.debug(\"Event source created, creating response\");\n\n const response = {\n threadId,\n runId,\n status: firstValueFrom(responseStatus$),\n messages: new Repeater(async (pushMessage, stopStreamingMessages) => {\n logger.debug(\"Messages repeater created\");\n\n if (data.cloud?.guardrails) {\n logger = logger.child({ guardrails: true });\n logger.debug(\"Guardrails is enabled, validating input\");\n\n invokeGuardrails({\n baseUrl: copilotCloudBaseUrl,\n copilotCloudPublicApiKey,\n data,\n onResult: (result) => {\n logger.debug({ status: result.status }, \"Guardrails validation done\");\n guardrailsResult$.next(result);\n\n // Guardrails validation failed\n if (result.status === \"denied\") {\n // send the reason to the client and interrupt streaming\n responseStatus$.next(\n new GuardrailsValidationFailureResponse({ guardrailsReason: result.reason }),\n );\n interruptStreaming$.next({\n reason: `Interrupted due to Guardrails validation failure. Reason: ${result.reason}`,\n });\n\n // resolve messages promise to the middleware\n outputMessages = [\n plainToInstance(TextMessage, {\n id: randomId(),\n createdAt: new Date(),\n content: result.reason,\n role: MessageRole.assistant,\n }),\n ];\n resolveOutputMessagesPromise(outputMessages);\n }\n },\n onError: (err) => {\n logger.error({ err }, \"Error in guardrails validation\");\n responseStatus$.next(\n new UnknownErrorResponse({\n description: `An unknown error has occurred in the guardrails validation`,\n }),\n );\n interruptStreaming$.next({\n reason: `Interrupted due to unknown error in guardrails validation`,\n });\n\n // reject the middleware promise\n rejectOutputMessagesPromise(err);\n },\n });\n }\n\n let eventStreamSubscription: Subscription;\n\n // run and process the event stream\n const eventStream = eventSource\n .processRuntimeEvents({\n serverSideActions,\n guardrailsResult$: data.cloud?.guardrails ? guardrailsResult$ : null,\n actionInputsWithoutAgents: actionInputsWithoutAgents.filter(\n // TODO-AGENTS: do not exclude ALL server side actions\n (action) =>\n !serverSideActions.find((serverSideAction) => serverSideAction.name == action.name),\n ),\n })\n .pipe(\n // shareReplay() ensures that later subscribers will see the whole stream instead of\n // just the events that were emitted after the subscriber was added.\n shareReplay(),\n finalize(() => {\n logger.debug(\"Event stream finalized\");\n }),\n );\n\n logger.debug(\"Event stream created, subscribing to event stream\");\n\n eventStreamSubscription = eventStream.subscribe({\n next: async (event) => {\n switch (event.type) {\n ////////////////////////////////\n // TextMessageStart\n ////////////////////////////////\n case RuntimeEventTypes.TextMessageStart:\n // create a sub stream that contains the message content\n const textMessageContentStream = eventStream.pipe(\n // skip until this message start event\n skipWhile((e) => e !== event),\n // take until the message end event\n takeWhile((e) => e.type != RuntimeEventTypes.TextMessageEnd),\n );\n\n // signal when we are done streaming\n const streamingTextStatus = new Subject<typeof MessageStatusUnion>();\n\n const messageId = event.messageId;\n // push the new message\n pushMessage({\n id: messageId,\n status: firstValueFrom(streamingTextStatus),\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: new Repeater(async (pushTextChunk, stopStreamingText) => {\n logger.debug(\"Text message content repeater created\");\n\n const textChunks: string[] = [];\n let textSubscription: Subscription;\n\n interruptStreaming$\n .pipe(\n shareReplay(),\n take(1),\n tap(({ reason, messageId }) => {\n logger.debug({ reason, messageId }, \"Text streaming interrupted\");\n\n streamingTextStatus.next(\n plainToInstance(FailedMessageStatus, { reason }),\n );\n\n responseStatus$.next(new MessageStreamInterruptedResponse({ messageId }));\n stopStreamingText();\n textSubscription?.unsubscribe();\n }),\n )\n .subscribe();\n\n logger.debug(\"Subscribing to text message content stream\");\n\n textSubscription = textMessageContentStream.subscribe({\n next: async (e: RuntimeEvent) => {\n if (e.type == RuntimeEventTypes.TextMessageContent) {\n await pushTextChunk(e.content);\n textChunks.push(e.content);\n }\n },\n error: (err) => {\n logger.error({ err }, \"Error in text message content stream\");\n interruptStreaming$.next({\n reason: \"Error streaming message content\",\n messageId,\n });\n stopStreamingText();\n textSubscription?.unsubscribe();\n },\n complete: () => {\n logger.debug(\"Text message content stream completed\");\n streamingTextStatus.next(new SuccessMessageStatus());\n stopStreamingText();\n textSubscription?.unsubscribe();\n\n outputMessages.push(\n plainToInstance(TextMessage, {\n id: messageId,\n createdAt: new Date(),\n content: textChunks.join(\"\"),\n role: MessageRole.assistant,\n }),\n );\n },\n });\n }),\n });\n break;\n ////////////////////////////////\n // ActionExecutionStart\n ////////////////////////////////\n case RuntimeEventTypes.ActionExecutionStart:\n logger.debug(\"Action execution start event received\");\n const actionExecutionArgumentStream = eventStream.pipe(\n skipWhile((e) => e !== event),\n takeWhile((e) => e.type != RuntimeEventTypes.ActionExecutionEnd),\n );\n const streamingArgumentsStatus = new Subject<typeof MessageStatusUnion>();\n pushMessage({\n id: event.actionExecutionId,\n status: firstValueFrom(streamingArgumentsStatus),\n createdAt: new Date(),\n name: event.actionName,\n scope: event.scope!,\n arguments: new Repeater(async (pushArgumentsChunk, stopStreamingArguments) => {\n logger.debug(\"Action execution argument stream created\");\n\n const argumentChunks: string[] = [];\n let actionExecutionArgumentSubscription: Subscription;\n\n actionExecutionArgumentSubscription = actionExecutionArgumentStream.subscribe({\n next: async (e: RuntimeEvent) => {\n if (e.type == RuntimeEventTypes.ActionExecutionArgs) {\n await pushArgumentsChunk(e.args);\n argumentChunks.push(e.args);\n }\n },\n error: (err) => {\n logger.error({ err }, \"Error in action execution argument stream\");\n streamingArgumentsStatus.next(\n plainToInstance(FailedMessageStatus, {\n reason:\n \"An unknown error has occurred in the action execution argument stream\",\n }),\n );\n stopStreamingArguments();\n actionExecutionArgumentSubscription?.unsubscribe();\n },\n complete: () => {\n logger.debug(\"Action execution argument stream completed\");\n streamingArgumentsStatus.next(new SuccessMessageStatus());\n stopStreamingArguments();\n actionExecutionArgumentSubscription?.unsubscribe();\n\n outputMessages.push(\n plainToInstance(ActionExecutionMessage, {\n id: event.actionExecutionId,\n createdAt: new Date(),\n name: event.actionName,\n scope: event.scope!,\n arguments: argumentChunks.join(\"\"),\n }),\n );\n },\n });\n }),\n });\n break;\n ////////////////////////////////\n // ActionExecutionResult\n ////////////////////////////////\n case RuntimeEventTypes.ActionExecutionResult:\n logger.debug({ result: event.result }, \"Action execution result event received\");\n pushMessage({\n id: randomId(),\n status: new SuccessMessageStatus(),\n createdAt: new Date(),\n actionExecutionId: event.actionExecutionId,\n actionName: event.actionName,\n result: event.result,\n });\n\n outputMessages.push(\n plainToInstance(ResultMessage, {\n id: randomId(),\n createdAt: new Date(),\n actionExecutionId: event.actionExecutionId,\n actionName: event.actionName,\n result: event.result,\n }),\n );\n break;\n ////////////////////////////////\n // AgentStateMessage\n ////////////////////////////////\n case RuntimeEventTypes.AgentStateMessage:\n logger.debug({ event }, \"Agent message event received\");\n pushMessage({\n id: randomId(),\n status: new SuccessMessageStatus(),\n threadId: event.threadId,\n agentName: event.agentName,\n nodeName: event.nodeName,\n runId: event.runId,\n active: event.active,\n state: event.state,\n running: event.running,\n role: MessageRole.assistant,\n createdAt: new Date(),\n });\n outputMessages.push(\n plainToInstance(AgentStateMessage, {\n id: randomId(),\n threadId: event.threadId,\n agentName: event.agentName,\n nodeName: event.nodeName,\n runId: event.runId,\n active: event.active,\n state: event.state,\n running: event.running,\n role: MessageRole.assistant,\n createdAt: new Date(),\n }),\n );\n break;\n }\n },\n error: (err) => {\n logger.error({ err }, \"Error in event stream\");\n responseStatus$.next(\n new UnknownErrorResponse({\n description: `An unknown error has occurred in the event stream`,\n }),\n );\n eventStreamSubscription?.unsubscribe();\n stopStreamingMessages();\n\n rejectOutputMessagesPromise(err);\n },\n complete: async () => {\n logger.debug(\"Event stream completed\");\n if (data.cloud?.guardrails) {\n logger.debug(\"Guardrails is enabled, waiting for guardrails result\");\n await firstValueFrom(guardrailsResult$);\n }\n responseStatus$.next(new SuccessResponseStatus());\n eventStreamSubscription?.unsubscribe();\n stopStreamingMessages();\n\n resolveOutputMessagesPromise(outputMessages);\n },\n });\n }),\n };\n\n return response;\n }\n}\n","import { Field, InputType } from \"type-graphql\";\nimport { MessageInput } from \"./message.input\";\nimport { FrontendInput } from \"./frontend.input\";\nimport { CloudInput } from \"./cloud.input\";\nimport { CopilotRequestType } from \"../types/enums\";\nimport { ForwardedParametersInput } from \"./forwarded-parameters.input\";\nimport { AgentSessionInput } from \"./agent-session.input\";\nimport { AgentStateInput } from \"./agent-state.input\";\n\n@InputType()\nexport class GenerateCopilotResponseMetadataInput {\n @Field(() => CopilotRequestType, { nullable: true })\n requestType: CopilotRequestType;\n}\n\n@InputType()\nexport class GenerateCopilotResponseInput {\n @Field(() => GenerateCopilotResponseMetadataInput, { nullable: false })\n metadata: GenerateCopilotResponseMetadataInput;\n\n @Field(() => String, { nullable: true })\n threadId?: string;\n\n @Field(() => String, { nullable: true })\n runId?: string;\n\n @Field(() => [MessageInput])\n messages: MessageInput[];\n\n @Field(() => FrontendInput)\n frontend: FrontendInput;\n\n @Field(() => CloudInput, { nullable: true })\n cloud?: CloudInput;\n\n @Field(() => ForwardedParametersInput, { nullable: true })\n forwardedParameters?: ForwardedParametersInput;\n\n @Field(() => AgentSessionInput, { nullable: true })\n agentSession?: AgentSessionInput;\n\n @Field(() => AgentStateInput, { nullable: true })\n agentState?: AgentStateInput;\n\n @Field(() => [AgentStateInput], { nullable: true })\n agentStates?: AgentStateInput[];\n}\n","import { Field, InputType } from \"type-graphql\";\nimport { MessageRole, ActionExecutionScope } from \"../types/enums\";\nimport { BaseMessageInput } from \"../types/base\";\n\n// GraphQL does not support union types in inputs, so we need to use\n// optional fields for the different subtypes.\n@InputType()\nexport class MessageInput extends BaseMessageInput {\n @Field(() => TextMessageInput, { nullable: true })\n textMessage?: TextMessageInput;\n\n @Field(() => ActionExecutionMessageInput, { nullable: true })\n actionExecutionMessage?: ActionExecutionMessageInput;\n\n @Field(() => ResultMessageInput, { nullable: true })\n resultMessage?: ResultMessageInput;\n\n @Field(() => AgentStateMessageInput, { nullable: true })\n agentStateMessage?: AgentStateMessageInput;\n}\n\n@InputType()\nexport class TextMessageInput {\n @Field(() => String)\n content: string;\n\n @Field(() => MessageRole)\n role: MessageRole;\n}\n\n@InputType()\nexport class ActionExecutionMessageInput {\n @Field(() => String)\n name: string;\n\n @Field(() => String)\n arguments: string;\n\n @Field(() => ActionExecutionScope)\n scope: ActionExecutionScope;\n}\n\n@InputType()\nexport class ResultMessageInput {\n @Field(() => String)\n actionExecutionId: string;\n\n @Field(() => String)\n actionName: string;\n\n @Field(() => String)\n result: string;\n}\n\n@InputType()\nexport class AgentStateMessageInput {\n @Field(() => String)\n threadId: string;\n\n @Field(() => String)\n agentName: string;\n\n @Field(() => MessageRole)\n role: MessageRole;\n\n @Field(() => String)\n state: string;\n\n @Field(() => Boolean)\n running: boolean;\n\n @Field(() => String)\n nodeName: string;\n\n @Field(() => String)\n runId: string;\n\n @Field(() => Boolean)\n active: boolean;\n}\n","import { registerEnumType } from \"type-graphql\";\n\nexport enum MessageRole {\n user = \"user\",\n assistant = \"assistant\",\n system = \"system\",\n}\n\nexport enum ActionExecutionScope {\n server = \"server\",\n client = \"client\",\n passThrough = \"passThrough\",\n}\n\nexport enum CopilotRequestType {\n Chat = \"Chat\",\n Task = \"Task\",\n TextareaCompletion = \"TextareaCompletion\",\n TextareaPopover = \"TextareaPopover\",\n Suggestion = \"Suggestion\",\n}\n\nregisterEnumType(MessageRole, {\n name: \"MessageRole\",\n description: \"The role of the message\",\n});\n\nregisterEnumType(ActionExecutionScope, {\n name: \"ActionExecutionScope\",\n description: \"The scope of the action\",\n});\n\nregisterEnumType(CopilotRequestType, {\n name: \"CopilotRequestType\",\n description: \"The type of Copilot request\",\n});\n","import { Field, InputType } from \"type-graphql\";\nimport { ActionInput } from \"./action.input\";\n\n@InputType()\nexport class FrontendInput {\n @Field(() => String, { nullable: true })\n toDeprecate_fullContext?: string;\n\n @Field(() => [ActionInput])\n actions: ActionInput[];\n\n @Field(() => String, { nullable: true })\n url?: string;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class ActionInput {\n @Field(() => String)\n name: string;\n\n @Field(() => String)\n description: string;\n\n @Field(() => String)\n jsonSchema: string;\n}\n","import { Field, InputType } from \"type-graphql\";\nimport { GuardrailsInput } from \"./cloud-guardrails.input\";\n\n@InputType()\nexport class CloudInput {\n @Field(() => GuardrailsInput, { nullable: true })\n guardrails?: GuardrailsInput;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class GuardrailsRuleInput {\n @Field(() => [String], { nullable: true })\n allowList?: string[] = [];\n\n @Field(() => [String], { nullable: true })\n denyList?: string[] = [];\n}\n\n@InputType()\nexport class GuardrailsInput {\n @Field(() => GuardrailsRuleInput, { nullable: false })\n inputValidationRules: GuardrailsRuleInput;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class ForwardedParametersInput {\n @Field(() => String, { nullable: true })\n model?: string;\n\n @Field(() => Number, { nullable: true })\n maxTokens?: number;\n\n @Field(() => [String], { nullable: true })\n stop?: string[];\n\n @Field(() => String, { nullable: true })\n toolChoice?: String;\n\n @Field(() => String, { nullable: true })\n toolChoiceFunctionName?: string;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class AgentSessionInput {\n @Field(() => String)\n agentName: string;\n\n @Field(() => String, { nullable: true })\n threadId?: string;\n\n @Field(() => String, { nullable: true })\n nodeName?: string;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class AgentStateInput {\n @Field(() => String)\n agentName: string;\n\n @Field(() => String)\n state: string;\n}\n","import { Field, InterfaceType, ObjectType } from \"type-graphql\";\nimport { MessageRole, ActionExecutionScope } from \"./enums\";\nimport { MessageStatusUnion } from \"./message-status.type\";\nimport { ResponseStatusUnion } from \"./response-status.type\";\n\n@InterfaceType({\n resolveType(value) {\n if (value.hasOwnProperty(\"content\")) {\n return TextMessageOutput;\n } else if (value.hasOwnProperty(\"name\")) {\n return ActionExecutionMessageOutput;\n } else if (value.hasOwnProperty(\"result\")) {\n return ResultMessageOutput;\n } else if (value.hasOwnProperty(\"state\")) {\n return AgentStateMessageOutput;\n }\n return undefined;\n },\n})\nabstract class BaseMessageOutput {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\n\n @Field(() => MessageStatusUnion)\n status: typeof MessageStatusUnion;\n}\n\n@ObjectType({ implements: BaseMessageOutput })\nexport class TextMessageOutput {\n @Field(() => MessageRole)\n role: MessageRole;\n\n @Field(() => [String])\n content: string[];\n}\n\n@ObjectType({ implements: BaseMessageOutput })\nexport class ActionExecutionMessageOutput {\n @Field(() => String)\n name: string;\n\n @Field(() => ActionExecutionScope)\n scope: ActionExecutionScope;\n\n @Field(() => [String])\n arguments: string[];\n}\n\n@ObjectType({ implements: BaseMessageOutput })\nexport class ResultMessageOutput {\n @Field(() => String)\n actionExecutionId: string;\n\n @Field(() => String)\n actionName: string;\n\n @Field(() => String)\n result: string;\n}\n\n@ObjectType({ implements: BaseMessageOutput })\nexport class AgentStateMessageOutput {\n @Field(() => String)\n threadId: string;\n\n @Field(() => String)\n agentName: string;\n\n @Field(() => String)\n nodeName: string;\n\n @Field(() => String)\n runId: string;\n\n @Field(() => Boolean)\n active: boolean;\n\n @Field(() => MessageRole)\n role: MessageRole;\n\n @Field(() => String)\n state: string;\n\n @Field(() => Boolean)\n running: boolean;\n}\n\n@ObjectType()\nexport class CopilotResponse {\n @Field(() => String)\n threadId!: string;\n\n @Field(() => ResponseStatusUnion)\n status: typeof ResponseStatusUnion;\n\n @Field({ nullable: true })\n runId?: string;\n\n @Field(() => [BaseMessageOutput])\n messages: (typeof BaseMessageOutput)[];\n}\n","import { Field, ObjectType, createUnionType, registerEnumType } from \"type-graphql\";\n\nexport enum MessageStatusCode {\n Pending = \"pending\",\n Success = \"success\",\n Failed = \"failed\",\n}\n\nregisterEnumType(MessageStatusCode, {\n name: \"MessageStatusCode\",\n});\n\n@ObjectType()\nclass BaseMessageStatus {\n @Field(() => MessageStatusCode)\n code: MessageStatusCode;\n}\n\n@ObjectType()\nexport class PendingMessageStatus extends BaseMessageStatus {\n code: MessageStatusCode = MessageStatusCode.Pending;\n}\n\n@ObjectType()\nexport class SuccessMessageStatus extends BaseMessageStatus {\n code: MessageStatusCode = MessageStatusCode.Success;\n}\n\n@ObjectType()\nexport class FailedMessageStatus extends BaseMessageStatus {\n code: MessageStatusCode = MessageStatusCode.Failed;\n\n @Field(() => String)\n reason: string;\n}\n\nexport const MessageStatusUnion = createUnionType({\n name: \"MessageStatus\",\n types: () => [PendingMessageStatus, SuccessMessageStatus, FailedMessageStatus] as const,\n});\n","import { Action } from \"@copilotkit/shared\";\nimport {\n of,\n concat,\n map,\n scan,\n concatMap,\n ReplaySubject,\n Subject,\n firstValueFrom,\n from,\n} from \"rxjs\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { isLangGraphAgentAction } from \"../lib/runtime/remote-actions\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n}\n\ntype FunctionCallScope = \"client\" | \"server\" | \"passThrough\";\n\nexport type RuntimeEvent =\n | { type: RuntimeEventTypes.TextMessageStart; messageId: string }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n scope?: FunctionCallScope;\n }\n | { type: RuntimeEventTypes.ActionExecutionArgs; args: string }\n | { type: RuntimeEventTypes.ActionExecutionEnd }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n };\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart(messageId: string) {\n this.next({ type: RuntimeEventTypes.TextMessageStart, messageId });\n }\n\n sendTextMessageContent(content: string) {\n this.next({ type: RuntimeEventTypes.TextMessageContent, content });\n }\n\n sendTextMessageEnd() {\n this.next({ type: RuntimeEventTypes.TextMessageEnd });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart(messageId);\n this.sendTextMessageContent(content);\n this.sendTextMessageEnd();\n }\n\n sendActionExecutionStart(actionExecutionId: string, actionName: string) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n });\n }\n\n sendActionExecutionArgs(args: string) {\n this.next({ type: RuntimeEventTypes.ActionExecutionArgs, args });\n }\n\n sendActionExecutionEnd() {\n this.next({ type: RuntimeEventTypes.ActionExecutionEnd });\n }\n\n sendActionExecution(actionExecutionId: string, toolName: string, args: string) {\n this.sendActionExecutionStart(actionExecutionId, toolName);\n this.sendActionExecutionArgs(args);\n this.sendActionExecutionEnd();\n }\n\n sendActionExecutionResult(actionExecutionId: string, actionName: string, result: string) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result,\n });\n }\n\n sendAgentStateMessage(\n threadId: string,\n agentName: string,\n nodeName: string,\n runId: string,\n active: boolean,\n role: string,\n state: string,\n running: boolean,\n ) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n\n processRuntimeEvents({\n serverSideActions,\n guardrailsResult$,\n actionInputsWithoutAgents,\n }: {\n serverSideActions: Action<any>[];\n guardrailsResult$?: Subject<GuardrailsResult>;\n actionInputsWithoutAgents: ActionInput[];\n }) {\n this.callback(this.eventStream$).catch((error) => {\n console.error(\"Error in event source callback\", error);\n });\n return this.eventStream$.pipe(\n // mark tools for server side execution\n map((event) => {\n if (event.type === RuntimeEventTypes.ActionExecutionStart) {\n if (event.scope !== \"passThrough\") {\n event.scope = serverSideActions.find((action) => action.name === event.actionName)\n ? \"server\"\n : \"client\";\n }\n }\n return event;\n }),\n // track state\n scan(\n (acc, event) => {\n // It seems like this is needed so that rxjs recognizes the object has changed\n // This fixes an issue where action were executed multiple times\n // Not investigating further for now (Markus)\n acc = { ...acc };\n\n if (event.type === RuntimeEventTypes.ActionExecutionStart) {\n acc.callActionServerSide = event.scope === \"server\";\n acc.args = \"\";\n acc.actionExecutionId = event.actionExecutionId;\n if (acc.callActionServerSide) {\n acc.action = serverSideActions.find((action) => action.name === event.actionName);\n }\n } else if (event.type === RuntimeEventTypes.ActionExecutionArgs) {\n acc.args += event.args;\n }\n\n acc.event = event;\n\n return acc;\n },\n {\n event: null,\n callActionServerSide: false,\n args: \"\",\n actionExecutionId: null,\n action: null,\n } as RuntimeEventWithState,\n ),\n concatMap((eventWithState) => {\n if (\n eventWithState.event!.type === RuntimeEventTypes.ActionExecutionEnd &&\n eventWithState.callActionServerSide\n ) {\n const toolCallEventStream$ = new RuntimeEventSubject();\n executeAction(\n toolCallEventStream$,\n guardrailsResult$ ? guardrailsResult$ : null,\n eventWithState.action!,\n eventWithState.args,\n eventWithState.actionExecutionId,\n actionInputsWithoutAgents,\n ).catch((error) => {\n console.error(error);\n });\n\n telemetry.capture(\"oss.runtime.server_action_executed\", {});\n return concat(of(eventWithState.event!), toolCallEventStream$);\n } else {\n return of(eventWithState.event!);\n }\n }),\n );\n }\n}\n\nasync function executeAction(\n eventStream$: RuntimeEventSubject,\n guardrailsResult$: Subject<GuardrailsResult> | null,\n action: Action<any>,\n actionArguments: string,\n actionExecutionId: string,\n actionInputsWithoutAgents: ActionInput[],\n) {\n if (guardrailsResult$) {\n const { status } = await firstValueFrom(guardrailsResult$);\n\n if (status === \"denied\") {\n eventStream$.complete();\n return;\n }\n }\n\n // Prepare arguments for function calling\n let args: Record<string, any>[] = [];\n if (actionArguments) {\n args = JSON.parse(actionArguments);\n }\n\n // handle LangGraph agents\n if (isLangGraphAgentAction(action)) {\n eventStream$.sendActionExecutionResult(\n actionExecutionId,\n action.name,\n `${action.name} agent started`,\n );\n const stream = await action.langGraphAgentHandler({\n name: action.name,\n actionInputsWithoutAgents,\n });\n\n // forward to eventStream$\n from(stream).subscribe({\n next: (event) => eventStream$.next(event),\n error: (err) => console.error(\"Error in stream\", err),\n complete: () => eventStream$.complete(),\n });\n } else {\n // call the function\n const result = await action.handler?.(args);\n\n await streamLangChainResponse({\n result,\n eventStream$,\n actionExecution: {\n name: action.name,\n id: actionExecutionId,\n },\n });\n }\n}\n","import { TelemetryClient } from \"@copilotkit/shared\";\nconst packageJson = require(\"../../package.json\");\n\nconst telemetryClient = new TelemetryClient({\n packageName: packageJson.name,\n packageVersion: packageJson.version,\n});\n\nexport default telemetryClient;\n","import { ReplaySubject, scan, mergeMap, catchError } from \"rxjs\";\nimport { LangGraphEvent, LangGraphEventTypes } from \"./events\";\nimport { RuntimeEvent, RuntimeEventTypes } from \"../../service-adapters/events\";\nimport { randomId } from \"@copilotkit/shared\";\n\ninterface LangGraphEventWithState {\n event: LangGraphEvent | null;\n content: string | null;\n toolCallName: string | null;\n toolCallId: string | null;\n toolCallMessageId: string | null;\n prevToolCallMessageId: string | null;\n messageId: string | null;\n prevMessageId: string | null;\n}\n\nexport class RemoteLangGraphEventSource {\n public eventStream$ = new ReplaySubject<LangGraphEvent>();\n\n private shouldEmitToolCall(\n shouldEmitToolCalls: string | string[] | boolean,\n toolCallName: string,\n ) {\n if (typeof shouldEmitToolCalls === \"boolean\") {\n return shouldEmitToolCalls;\n }\n if (Array.isArray(shouldEmitToolCalls)) {\n return shouldEmitToolCalls.includes(toolCallName);\n }\n return shouldEmitToolCalls === toolCallName;\n }\n\n processLangGraphEvents() {\n let lastEventWithState: LangGraphEventWithState | null = null;\n\n return this.eventStream$.pipe(\n scan(\n (acc, event) => {\n if (event.event === LangGraphEventTypes.OnChatModelStream) {\n // @ts-expect-error -- LangGraph Cloud implementation stores data outside of kwargs\n const content = event.data?.chunk?.kwargs?.content ?? event.data?.chunk?.content;\n\n if (typeof content === \"string\") {\n acc.content = content;\n } else if (Array.isArray(content) && content.length > 0) {\n acc.content = content[0].text;\n } else {\n acc.content = null;\n }\n\n const toolCallChunks =\n // @ts-expect-error -- LangGraph Cloud implementation stores data outside of kwargs\n event.data?.chunk?.kwargs?.tool_call_chunks ?? event.data?.chunk?.tool_call_chunks;\n\n const toolCallMessageId =\n event.data?.chunk?.kwargs?.id ??\n (event.data?.chunk?.id as unknown as string | undefined);\n\n if (toolCallChunks && toolCallChunks.length > 0) {\n acc.prevToolCallMessageId = acc.toolCallMessageId;\n acc.toolCallMessageId = toolCallMessageId;\n if (toolCallChunks[0]?.name) {\n acc.toolCallName = toolCallChunks[0].name;\n }\n if (toolCallChunks[0]?.id) {\n acc.toolCallId = toolCallChunks[0].id;\n }\n acc.prevMessageId = acc.messageId;\n acc.messageId = toolCallMessageId;\n } else if (acc.content && acc.content != \"\") {\n acc.prevMessageId = acc.messageId;\n acc.messageId = toolCallMessageId;\n } else {\n acc.prevToolCallMessageId = acc.toolCallMessageId;\n acc.prevMessageId = acc.messageId;\n }\n } else {\n acc.prevToolCallMessageId = acc.toolCallMessageId;\n acc.toolCallMessageId = null;\n acc.prevMessageId = acc.messageId;\n acc.messageId = null;\n acc.toolCallName = null;\n }\n\n acc.event = event;\n lastEventWithState = acc; // Capture the state\n return acc;\n },\n {\n event: null,\n toolCallId: null,\n toolCallMessageId: null,\n prevToolCallMessageId: null,\n messageId: null,\n toolCallName: null,\n prevMessageId: null,\n content: null,\n } as LangGraphEventWithState,\n ),\n mergeMap((eventWithState): RuntimeEvent[] => {\n const events: RuntimeEvent[] = [];\n\n let shouldEmitMessages = true;\n let shouldEmitToolCalls: string | string[] | boolean = false;\n\n if (eventWithState.event.event == LangGraphEventTypes.OnChatModelStream) {\n if (\"copilotkit:emit-tool-calls\" in (eventWithState.event.metadata || {})) {\n shouldEmitToolCalls = eventWithState.event.metadata[\"copilotkit:emit-tool-calls\"];\n }\n if (\"copilotkit:emit-messages\" in (eventWithState.event.metadata || {})) {\n shouldEmitMessages = eventWithState.event.metadata[\"copilotkit:emit-messages\"];\n }\n }\n\n // Tool call ended: emit ActionExecutionEnd\n if (\n eventWithState.prevToolCallMessageId !== null &&\n eventWithState.prevToolCallMessageId !== eventWithState.toolCallMessageId &&\n this.shouldEmitToolCall(shouldEmitToolCalls, eventWithState.toolCallName)\n ) {\n events.push({\n type: RuntimeEventTypes.ActionExecutionEnd,\n });\n }\n\n // Message ended: emit TextMessageEnd\n if (\n eventWithState.prevMessageId !== null &&\n eventWithState.prevMessageId !== eventWithState.messageId &&\n shouldEmitMessages\n ) {\n events.push({\n type: RuntimeEventTypes.TextMessageEnd,\n });\n }\n\n switch (eventWithState.event!.event) {\n case LangGraphEventTypes.OnCopilotKitEmitMessage:\n events.push({\n type: RuntimeEventTypes.TextMessageStart,\n messageId: eventWithState.event.message_id,\n });\n events.push({\n type: RuntimeEventTypes.TextMessageContent,\n content: eventWithState.event.message,\n });\n events.push({\n type: RuntimeEventTypes.TextMessageEnd,\n });\n break;\n case LangGraphEventTypes.OnCopilotKitEmitToolCall:\n events.push({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId: eventWithState.event.id,\n actionName: eventWithState.event.name,\n });\n events.push({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args: JSON.stringify(eventWithState.event.args),\n });\n events.push({\n type: RuntimeEventTypes.ActionExecutionEnd,\n });\n break;\n case LangGraphEventTypes.OnCopilotKitStateSync:\n events.push({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId: eventWithState.event.thread_id,\n role: eventWithState.event.role,\n agentName: eventWithState.event.agent_name,\n nodeName: eventWithState.event.node_name,\n runId: eventWithState.event.run_id,\n active: eventWithState.event.active,\n state: JSON.stringify(eventWithState.event.state),\n running: eventWithState.event.running,\n });\n break;\n case LangGraphEventTypes.OnToolEnd:\n // TODO-AGENTS: emit ActionExecutionResult when needed\n // Need a special tool node for that?\n\n // const result = eventWithState.event.data?.output?.kwargs?.content?.[0];\n // const toolCallId = eventWithState.event.data?.output?.kwargs?.tool_call_id;\n // const toolCallName = eventWithState.event.data?.output?.kwargs?.name;\n // if (result && toolCallId && toolCallName) {\n // events.push({\n // type: RuntimeEventTypes.ActionExecutionResult,\n // actionExecutionId: toolCallId,\n // actionName: toolCallName,\n // result,\n // });\n // }\n break;\n case LangGraphEventTypes.OnChatModelStream:\n if (\n eventWithState.toolCallMessageId !== null &&\n eventWithState.prevToolCallMessageId !== eventWithState.toolCallMessageId\n ) {\n if (this.shouldEmitToolCall(shouldEmitToolCalls, eventWithState.toolCallName)) {\n events.push({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId: eventWithState.toolCallMessageId,\n actionName: eventWithState.toolCallName,\n scope: \"client\",\n });\n }\n }\n // Message started: emit TextMessageStart\n else if (\n eventWithState.messageId !== null &&\n eventWithState.prevMessageId !== eventWithState.messageId\n ) {\n if (shouldEmitMessages) {\n events.push({\n type: RuntimeEventTypes.TextMessageStart,\n messageId: eventWithState.messageId,\n });\n }\n }\n\n const args =\n eventWithState.event.data?.chunk?.kwargs?.tool_call_chunks?.[0]?.args ??\n // @ts-expect-error -- sdf\n eventWithState.event.data?.chunk?.tool_call_chunks?.[0]?.args;\n const content = eventWithState.content;\n\n // Tool call args: emit ActionExecutionArgs\n if (args) {\n if (this.shouldEmitToolCall(shouldEmitToolCalls, eventWithState.toolCallName)) {\n events.push({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n });\n }\n }\n // Message content: emit TextMessageContent\n else if (eventWithState.messageId !== null && content) {\n if (shouldEmitMessages) {\n events.push({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n });\n }\n }\n break;\n }\n return events;\n }),\n catchError((error) => {\n console.error(error);\n const events: RuntimeEvent[] = [];\n\n if (lastEventWithState?.messageId) {\n events.push({\n type: RuntimeEventTypes.TextMessageEnd,\n });\n }\n if (lastEventWithState?.toolCallMessageId) {\n events.push({\n type: RuntimeEventTypes.ActionExecutionEnd,\n });\n }\n\n const messageId = randomId();\n\n events.push({\n type: RuntimeEventTypes.TextMessageStart,\n messageId: messageId,\n });\n events.push({\n type: RuntimeEventTypes.TextMessageContent,\n content: \"❌ An error occurred. Please try again.\",\n });\n events.push({\n type: RuntimeEventTypes.TextMessageEnd,\n });\n\n return events;\n }),\n );\n }\n}\n","export enum LangGraphEventTypes {\n OnChainStart = \"on_chain_start\",\n OnChainStream = \"on_chain_stream\",\n OnChainEnd = \"on_chain_end\",\n OnChatModelStart = \"on_chat_model_start\",\n OnChatModelStream = \"on_chat_model_stream\",\n OnChatModelEnd = \"on_chat_model_end\",\n OnToolStart = \"on_tool_start\",\n OnToolEnd = \"on_tool_end\",\n OnCopilotKitStateSync = \"on_copilotkit_state_sync\",\n OnCopilotKitEmitMessage = \"on_copilotkit_emit_message\",\n OnCopilotKitEmitToolCall = \"on_copilotkit_emit_tool_call\",\n}\n\ntype LangGraphOnCopilotKitStateSyncEvent = {\n event: LangGraphEventTypes.OnCopilotKitStateSync;\n thread_id: string;\n agent_name: string;\n node_name: string;\n run_id: string;\n active: boolean;\n role: string;\n state: any;\n running: boolean;\n};\n\ntype LangGraphOnCopilotKitManualMessageEvent = {\n event: LangGraphEventTypes.OnCopilotKitEmitMessage;\n message: string;\n message_id: string;\n};\n\ntype LangGraphOnCopilotKitEmitToolCallEvent = {\n event: LangGraphEventTypes.OnCopilotKitEmitToolCall;\n name: string;\n args: any;\n id: string;\n};\n\ntype LangGraphOnChainStartEvent = {\n event: LangGraphEventTypes.OnChainStart;\n run_id: string;\n name: string;\n tags: string[];\n metadata: { thread_id: string };\n data: {\n input: any;\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChainEndEvent = {\n event: LangGraphEventTypes.OnChainEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: any;\n output: any;\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelStartEvent = {\n event: LangGraphEventTypes.OnChatModelStart;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n input: {\n messages: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n type: string;\n id: string;\n };\n }[][];\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelStreamEvent = {\n event: LangGraphEventTypes.OnChatModelStream;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n chunk: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string | { text: string; type: string; index: number }[];\n additional_kwargs: {\n tool_calls: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n type: string;\n id: string;\n tool_calls: { name: string; args: {}; id: string; type: string }[];\n tool_call_chunks: {\n name: string;\n args: string;\n id: string;\n index: number;\n type: string;\n }[];\n invalid_tool_calls: any[];\n };\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelEndEvent = {\n event: LangGraphEventTypes.OnChatModelEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n input: any;\n output: {\n generations: {\n text: string;\n generation_info: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n message: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n additional_kwargs: {\n tool_calls: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n response_metadata: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n id: string;\n tool_calls: { name: string; args: { query: string }; id: string; type: string }[];\n invalid_tool_calls: any[];\n };\n };\n }[][];\n llm_output: any;\n run: any;\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChainStreamEvent = {\n event: LangGraphEventTypes.OnChainStream;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step?: number;\n langgraph_node?: string;\n langgraph_triggers?: string[];\n langgraph_task_idx?: number;\n thread_ts?: string;\n };\n data: {\n chunk: {\n messages: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n additional_kwargs?: {\n tool_calls?: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n response_metadata?: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n id: string;\n tool_calls?: { name: string; args: { query: string }; id: string; type: string }[];\n invalid_tool_calls?: any[];\n };\n }[];\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnToolStartEvent = {\n event: LangGraphEventTypes.OnToolStart;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: {\n query: string;\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnToolEndEvent = {\n event: LangGraphEventTypes.OnToolEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: {\n query: string;\n };\n output: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string[];\n type: string;\n name: string;\n tool_call_id: string;\n status: string;\n };\n };\n };\n parent_ids: string[];\n};\n\nexport type LangGraphEvent =\n | LangGraphOnChainStartEvent\n | LangGraphOnChainStreamEvent\n | LangGraphOnChainEndEvent\n | LangGraphOnChatModelStartEvent\n | LangGraphOnChatModelStreamEvent\n | LangGraphOnChatModelEndEvent\n | LangGraphOnToolStartEvent\n | LangGraphOnToolEndEvent\n | LangGraphOnCopilotKitStateSyncEvent\n | LangGraphOnCopilotKitManualMessageEvent\n | LangGraphOnCopilotKitEmitToolCallEvent;\n","import { Client } from \"@langchain/langgraph-sdk\";\nimport { randomUUID } from \"node:crypto\";\nimport { parse as parsePartialJson } from \"partial-json\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { LangGraphCloudAgent, LangGraphCloudEndpoint } from \"./remote-actions\";\nimport { CopilotRequestContextProperties } from \"../integrations\";\nimport { BaseMessageInput as CopilotKitBaseMessage } from \"../../graphql/types/base\";\nimport { MessageRole } from \"../../graphql/types/enums\";\n\ntype State = Record<string, any>;\n\ntype ExecutionAction = Pick<ActionInput, \"name\" | \"description\"> & { parameters: string };\n\ninterface ExecutionArgs extends Omit<LangGraphCloudEndpoint, \"agents\"> {\n agent: LangGraphCloudAgent;\n threadId: string;\n nodeName: string;\n messages: CopilotKitBaseMessage[];\n state: State;\n properties: CopilotRequestContextProperties;\n actions: ExecutionAction[];\n}\n\nexport async function execute(args: ExecutionArgs): Promise<ReadableStream<Uint8Array>> {\n return new ReadableStream({\n async start(controller) {\n try {\n await streamEvents(controller, args);\n controller.close();\n } catch (err) {}\n },\n });\n}\n\nasync function streamEvents(controller: ReadableStreamDefaultController, args: ExecutionArgs) {\n const {\n deploymentUrl,\n langsmithApiKey,\n threadId: agrsInitialThreadId,\n agent,\n nodeName: initialNodeName,\n state: initialState,\n messages,\n actions,\n } = args;\n\n let nodeName = initialNodeName;\n let state = initialState;\n const { name, assistantId: initialAssistantId } = agent;\n\n // TODO: deploymentUrl is not required in local development\n const client = new Client({ apiUrl: deploymentUrl, apiKey: langsmithApiKey });\n let initialThreadId = agrsInitialThreadId;\n const wasInitiatedWithExistingThread = !!initialThreadId;\n if (initialThreadId && initialThreadId.startsWith(\"ck-\")) {\n initialThreadId = initialThreadId.substring(3);\n }\n\n const assistants = await client.assistants.search();\n const retrievedAssistant = assistants.find((a) => a.name === name);\n const threadId = initialThreadId ?? randomUUID();\n if (initialThreadId === threadId) {\n await client.threads.get(threadId);\n } else {\n await client.threads.create({ threadId: threadId });\n }\n\n let agentState = { values: {} };\n if (wasInitiatedWithExistingThread) {\n agentState = await client.threads.getState(threadId);\n }\n const agentStateValues = agentState.values as State;\n state.messages = agentStateValues.messages;\n const mode = wasInitiatedWithExistingThread && nodeName != \"__end__\" ? \"continue\" : \"start\";\n state = langGraphDefaultMergeState(state, formatMessages(messages), actions);\n\n if (mode === \"continue\") {\n await client.threads.updateState(threadId, { values: state, asNode: nodeName });\n }\n\n const assistantId = initialAssistantId ?? retrievedAssistant.assistant_id;\n const graphInfo = await client.assistants.getGraph(assistantId);\n const streamInput = mode === \"start\" ? state : null;\n\n let streamingStateExtractor = new StreamingStateExtractor([]);\n let prevNodeName = null;\n let emitIntermediateStateUntilEnd = null;\n let shouldExit = null;\n let externalRunId = null;\n\n const streamResponse = client.runs.stream(threadId, assistantId, {\n input: streamInput,\n streamMode: [\"events\", \"values\"],\n });\n\n const emit = (message: string) => controller.enqueue(new TextEncoder().encode(message));\n\n let latestStateValues = {};\n\n for await (const chunk of streamResponse) {\n if (![\"events\", \"values\"].includes(chunk.event)) continue;\n\n if (chunk.event === \"values\") {\n latestStateValues = chunk.data;\n continue;\n }\n\n const event = chunk.data;\n const currentNodeName = event.name;\n const eventType = event.event;\n const runId = event.metadata.run_id;\n externalRunId = runId;\n const metadata = event.metadata;\n\n shouldExit = shouldExit != null ? shouldExit : metadata[\"copilotkit:exit\"];\n const emitIntermediateState = metadata[\"copilotkit:emit-intermediate-state\"];\n const forceEmitIntermediateState = metadata[\"copilotkit:force-emit-intermediate-state\"];\n const manuallyEmitMessage = metadata[\"copilotkit:manually-emit-messages\"];\n const manuallyEmitToolCall = metadata[\"copilotkit:manually-emit-tool-calls\"];\n // we only want to update the node name under certain conditions\n // since we don't need any internal node names to be sent to the frontend\n if (graphInfo[\"nodes\"].some((node) => node.id === currentNodeName)) {\n nodeName = currentNodeName;\n }\n\n if (!nodeName) {\n continue;\n }\n\n if (forceEmitIntermediateState) {\n if (eventType === \"on_chain_end\") {\n state = event.data.output;\n emit(\n getStateSyncEvent({\n threadId,\n runId,\n agentName: agent.name,\n nodeName,\n state: event.data.output,\n running: true,\n active: true,\n }),\n );\n }\n continue;\n }\n\n if (manuallyEmitMessage) {\n if (eventType === \"on_chain_end\") {\n state = event.data.output;\n emit(\n JSON.stringify({\n event: \"on_copilotkit_emit_message\",\n message: event.data.output,\n messageId: randomUUID(),\n role: MessageRole.assistant,\n }) + \"\\n\",\n );\n }\n continue;\n }\n\n if (manuallyEmitToolCall) {\n if (eventType === \"on_chain_end\") {\n state = event.data.output;\n emit(\n JSON.stringify({\n event: \"on_copilotkit_emit_tool_call\",\n name: event.data.output.name,\n args: event.data.output.args,\n id: event.data.output.id,\n }) + \"\\n\",\n );\n }\n continue;\n }\n\n if (emitIntermediateState && emitIntermediateStateUntilEnd == null) {\n emitIntermediateStateUntilEnd = nodeName;\n }\n\n if (emitIntermediateState && eventType === \"on_chat_model_start\") {\n // reset the streaming state extractor\n streamingStateExtractor = new StreamingStateExtractor(emitIntermediateState);\n }\n\n let updatedState = latestStateValues;\n\n if (emitIntermediateState && eventType === \"on_chat_model_stream\") {\n streamingStateExtractor.bufferToolCalls(event);\n }\n\n if (emitIntermediateStateUntilEnd !== null) {\n updatedState = {\n ...updatedState,\n ...streamingStateExtractor.extractState(),\n };\n }\n\n if (\n !emitIntermediateState &&\n currentNodeName === emitIntermediateStateUntilEnd &&\n eventType === \"on_chain_end\"\n ) {\n // stop emitting function call state\n emitIntermediateStateUntilEnd = null;\n }\n\n const exitingNode = nodeName === currentNodeName && eventType === \"on_chain_end\";\n\n if (\n JSON.stringify(updatedState) !== JSON.stringify(state) ||\n prevNodeName != nodeName ||\n exitingNode\n ) {\n state = updatedState;\n prevNodeName = nodeName;\n emit(\n getStateSyncEvent({\n threadId,\n runId,\n agentName: agent.name,\n nodeName,\n state,\n running: true,\n active: !exitingNode,\n }),\n );\n }\n\n emit(JSON.stringify(event) + \"\\n\");\n }\n\n state = await client.threads.getState(threadId);\n const isEndNode = state.next.length === 0;\n nodeName = Object.keys(state.metadata.writes)[0];\n\n emit(\n getStateSyncEvent({\n threadId,\n runId: externalRunId,\n agentName: agent.name,\n nodeName: isEndNode ? \"__end__\" : nodeName,\n state: state.values,\n running: !shouldExit,\n active: false,\n }),\n );\n\n return Promise.resolve();\n}\n\nfunction getStateSyncEvent({\n threadId,\n runId,\n agentName,\n nodeName,\n state,\n running,\n active,\n}: {\n threadId: string;\n runId: string;\n agentName: string;\n nodeName: string;\n state: State;\n running: boolean;\n active: boolean;\n}): string {\n const stateWithoutMessages = Object.keys(state).reduce((acc, key) => {\n if (key !== \"messages\") {\n acc[key] = state[key];\n }\n return acc;\n }, {} as State);\n\n return (\n JSON.stringify({\n event: \"on_copilotkit_state_sync\",\n thread_id: threadId,\n run_id: runId,\n agent_name: agentName,\n node_name: nodeName,\n active: active,\n state: stateWithoutMessages,\n running: running,\n role: \"assistant\",\n }) + \"\\n\"\n );\n}\n\nclass StreamingStateExtractor {\n private emitIntermediateState: { [key: string]: any }[];\n private toolCallBuffer: { [key: string]: string };\n private currentToolCall: string | null;\n private previouslyParsableState: { [key: string]: any };\n\n constructor(emitIntermediateState: { [key: string]: any }[]) {\n this.emitIntermediateState = emitIntermediateState;\n this.toolCallBuffer = {};\n this.currentToolCall = null;\n this.previouslyParsableState = {};\n }\n\n bufferToolCalls(event: {\n data: { chunk: { tool_call_chunks: { name: string | null; args: string }[] } };\n }) {\n if (event.data.chunk.tool_call_chunks.length > 0) {\n const chunk = event.data.chunk.tool_call_chunks[0];\n\n if (chunk.name !== null) {\n this.currentToolCall = chunk.name;\n this.toolCallBuffer[this.currentToolCall] = chunk.args;\n } else if (this.currentToolCall !== null) {\n this.toolCallBuffer[this.currentToolCall] += chunk.args;\n }\n }\n }\n\n getEmitStateConfig(currentToolName: string): [string | null, string | null] {\n for (const config of this.emitIntermediateState) {\n const stateKey = config[\"state_key\"];\n const tool = config[\"tool\"];\n const toolArgument = config[\"tool_argument\"];\n\n if (currentToolName === tool) {\n return [toolArgument, stateKey];\n }\n }\n return [null, null];\n }\n\n extractState(): State {\n const state: State = {};\n\n for (const [key, value] of Object.entries(this.toolCallBuffer)) {\n const [argumentName, stateKey] = this.getEmitStateConfig(key);\n\n if (stateKey === null) {\n continue;\n }\n\n let parsedValue;\n try {\n parsedValue = parsePartialJson(value);\n } catch (error) {\n if (key in this.previouslyParsableState) {\n parsedValue = this.previouslyParsableState[key];\n } else {\n continue;\n }\n }\n\n this.previouslyParsableState[key] = parsedValue;\n\n if (!argumentName) {\n state[stateKey] = parsedValue;\n } else {\n state[stateKey] = parsedValue[argumentName];\n }\n }\n\n return state;\n }\n}\n\n// Start of Selection\nfunction langGraphDefaultMergeState(\n state: State,\n messages: CopilotKitBaseMessage[],\n actions: ExecutionAction[],\n): State {\n if (messages.length > 0 && \"role\" in messages[0] && messages[0].role === \"system\") {\n // remove system message\n messages = messages.slice(1);\n }\n\n // merge with existing messages\n const mergedMessages = state.messages || [];\n const existingMessageIds = new Set(mergedMessages.map((message) => message.id));\n\n for (const message of messages) {\n if (!existingMessageIds.has(message.id)) {\n mergedMessages.push(message);\n }\n }\n\n return deepMerge(state, {\n messages: mergedMessages,\n copilotkit: {\n actions,\n },\n });\n}\n\nfunction deepMerge(obj1: State, obj2: State) {\n let result = { ...obj1 };\n for (let key in obj2) {\n if (typeof obj2[key] === \"object\" && !Array.isArray(obj2[key])) {\n if (obj1[key]) {\n result[key] = deepMerge(obj1[key], obj2[key]);\n } else {\n result[key] = { ...obj2[key] };\n }\n } else {\n result[key] = obj2[key];\n }\n }\n return result;\n}\n\nfunction formatMessages(messages: CopilotKitBaseMessage[]): CopilotKitBaseMessage[] {\n return messages.map((message) => {\n if (\"content\" in message) {\n return message;\n }\n if (\"arguments\" in message) {\n const toolCall = {\n name: message[\"name\"],\n args: message[\"arguments\"],\n id: message[\"id\"],\n };\n return {\n ...message,\n content: \"\",\n tool_calls: [toolCall],\n role: message[\"role\"] ?? MessageRole.assistant,\n };\n }\n if (\"actionExecutionId\" in message) {\n return {\n ...message,\n content: message[\"result\"],\n name: message[\"actionName\"],\n tool_call_id: message[\"actionExecutionId\"] as string,\n role: message[\"role\"] ?? MessageRole.user,\n };\n }\n return message;\n });\n}\n","import {\n CopilotKitEndpoint,\n LangGraphAgentHandlerParams,\n RemoteActionInfoResponse,\n LangGraphCloudEndpoint,\n} from \"./remote-actions\";\nimport { GraphQLContext } from \"../integrations\";\nimport { Logger } from \"pino\";\nimport { Message } from \"../../graphql/types/converted\";\nimport { AgentStateInput } from \"../../graphql/inputs/agent-state.input\";\nimport { Observable, ReplaySubject } from \"rxjs\";\nimport { RuntimeEvent } from \"../../service-adapters/events\";\nimport telemetry from \"../telemetry-client\";\nimport { RemoteLangGraphEventSource } from \"../../agents/langgraph/event-source\";\nimport { Action } from \"@copilotkit/shared\";\nimport { LangGraphEvent } from \"../../agents/langgraph/events\";\nimport { execute } from \"./remote-lg-cloud-action\";\n\nexport function constructLGCRemoteAction({\n endpoint,\n graphqlContext,\n logger,\n messages,\n agentStates,\n}: {\n endpoint: LangGraphCloudEndpoint;\n graphqlContext: GraphQLContext;\n logger: Logger;\n messages: Message[];\n agentStates?: AgentStateInput[];\n}) {\n const agents = endpoint.agents.map((agent) => ({\n name: agent.name,\n description: agent.description,\n parameters: [],\n handler: async (_args: any) => {},\n langGraphAgentHandler: async ({\n name,\n actionInputsWithoutAgents,\n threadId,\n nodeName,\n }: LangGraphAgentHandlerParams): Promise<Observable<RuntimeEvent>> => {\n logger.debug({ actionName: agent.name }, \"Executing LangGraph Cloud agent\");\n\n telemetry.capture(\"oss.runtime.remote_action_executed\", {});\n\n let state = {};\n if (agentStates) {\n const jsonState = agentStates.find((state) => state.agentName === name)?.state;\n if (jsonState) {\n state = JSON.parse(jsonState);\n }\n }\n\n try {\n const response = await execute({\n deploymentUrl: endpoint.deploymentUrl,\n langsmithApiKey: endpoint.langsmithApiKey,\n agent,\n threadId,\n nodeName,\n messages,\n state,\n properties: graphqlContext.properties,\n actions: actionInputsWithoutAgents.map((action) => ({\n name: action.name,\n description: action.description,\n parameters: JSON.parse(action.jsonSchema) as string,\n })),\n });\n\n const eventSource = new RemoteLangGraphEventSource();\n streamResponse(response, eventSource.eventStream$);\n return eventSource.processLangGraphEvents();\n } catch (error) {\n logger.error(\n { url: endpoint.deploymentUrl, status: 500, body: error.message },\n \"Failed to execute LangGraph Cloud agent\",\n );\n throw new Error(\"Failed to execute LangGraph Cloud agent\");\n }\n },\n }));\n\n return [...agents];\n}\n\nexport function constructRemoteActions({\n json,\n url,\n onBeforeRequest,\n graphqlContext,\n logger,\n messages,\n agentStates,\n}: {\n json: RemoteActionInfoResponse;\n url: string;\n onBeforeRequest?: CopilotKitEndpoint[\"onBeforeRequest\"];\n graphqlContext: GraphQLContext;\n logger: Logger;\n messages: Message[];\n agentStates?: AgentStateInput[];\n}): Action<any>[] {\n const actions = json[\"actions\"].map((action) => ({\n name: action.name,\n description: action.description,\n parameters: action.parameters,\n handler: async (args: any) => {\n logger.debug({ actionName: action.name, args }, \"Executing remote action\");\n\n const headers = createHeaders(onBeforeRequest, graphqlContext);\n telemetry.capture(\"oss.runtime.remote_action_executed\", {});\n\n try {\n const response = await fetch(`${url}/actions/execute`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n name: action.name,\n arguments: args,\n properties: graphqlContext.properties,\n }),\n });\n\n if (!response.ok) {\n logger.error(\n { url, status: response.status, body: await response.text() },\n \"Failed to execute remote action\",\n );\n return \"Failed to execute remote action\";\n }\n\n const requestResult = await response.json();\n\n const result = requestResult[\"result\"];\n logger.debug({ actionName: action.name, result }, \"Executed remote action\");\n return result;\n } catch (error) {\n logger.error(\n { error: error.message ? error.message : error + \"\" },\n \"Failed to execute remote action\",\n );\n return \"Failed to execute remote action\";\n }\n },\n }));\n\n const agents = json[\"agents\"].map((agent) => ({\n name: agent.name,\n description: agent.description,\n parameters: [],\n handler: async (_args: any) => {},\n\n langGraphAgentHandler: async ({\n name,\n actionInputsWithoutAgents,\n threadId,\n nodeName,\n }: LangGraphAgentHandlerParams): Promise<Observable<RuntimeEvent>> => {\n logger.debug({ actionName: agent.name }, \"Executing remote agent\");\n\n const headers = createHeaders(onBeforeRequest, graphqlContext);\n telemetry.capture(\"oss.runtime.remote_action_executed\", {});\n\n let state = {};\n if (agentStates) {\n const jsonState = agentStates.find((state) => state.agentName === name)?.state;\n if (jsonState) {\n state = JSON.parse(jsonState);\n }\n }\n\n const response = await fetch(`${url}/agents/execute`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({\n name,\n threadId,\n nodeName,\n messages,\n state,\n properties: graphqlContext.properties,\n actions: actionInputsWithoutAgents.map((action) => ({\n name: action.name,\n description: action.description,\n parameters: JSON.parse(action.jsonSchema),\n })),\n }),\n });\n\n if (!response.ok) {\n logger.error(\n { url, status: response.status, body: await response.text() },\n \"Failed to execute remote agent\",\n );\n throw new Error(\"Failed to execute remote agent\");\n }\n\n const eventSource = new RemoteLangGraphEventSource();\n streamResponse(response.body!, eventSource.eventStream$);\n return eventSource.processLangGraphEvents();\n },\n }));\n\n return [...actions, ...agents];\n}\n\nasync function streamResponse(\n response: ReadableStream<Uint8Array>,\n eventStream$: ReplaySubject<LangGraphEvent>,\n) {\n const reader = response.getReader();\n const decoder = new TextDecoder();\n let buffer = [];\n\n function flushBuffer() {\n const currentBuffer = buffer.join(\"\");\n if (currentBuffer.trim().length === 0) {\n return;\n }\n const parts = currentBuffer.split(\"\\n\");\n if (parts.length === 0) {\n return;\n }\n\n const lastPartIsComplete = currentBuffer.endsWith(\"\\n\");\n\n // truncate buffer\n buffer = [];\n\n if (!lastPartIsComplete) {\n // put back the last part\n buffer.push(parts.pop());\n }\n\n parts\n .map((part) => part.trim())\n .filter((part) => part != \"\")\n .forEach((part) => {\n eventStream$.next(JSON.parse(part));\n });\n }\n\n try {\n while (true) {\n const { done, value } = await reader.read();\n\n if (!done) {\n buffer.push(decoder.decode(value, { stream: true }));\n }\n\n flushBuffer();\n\n if (done) {\n break;\n }\n }\n } catch (error) {\n console.error(\"Error in stream\", error);\n eventStream$.error(error);\n return;\n }\n eventStream$.complete();\n}\n\nexport function createHeaders(\n onBeforeRequest: CopilotKitEndpoint[\"onBeforeRequest\"],\n graphqlContext: GraphQLContext,\n) {\n const headers = {\n \"Content-Type\": \"application/json\",\n };\n\n if (onBeforeRequest) {\n const { headers: additionalHeaders } = onBeforeRequest({ ctx: graphqlContext });\n if (additionalHeaders) {\n Object.assign(headers, additionalHeaders);\n }\n }\n\n return headers;\n}\n","import { Action } from \"@copilotkit/shared\";\nimport { GraphQLContext } from \"../integrations/shared\";\nimport { Logger } from \"pino\";\nimport { Message } from \"../../graphql/types/converted\";\nimport { RuntimeEvent } from \"../../service-adapters/events\";\nimport { Observable } from \"rxjs\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { AgentStateInput } from \"../../graphql/inputs/agent-state.input\";\nimport {\n constructLGCRemoteAction,\n constructRemoteActions,\n createHeaders,\n} from \"./remote-action-constructors\";\n\nexport type EndpointDefinition = CopilotKitEndpoint | LangGraphCloudEndpoint;\n\nexport enum EndpointType {\n CopilotKit = \"copilotKit\",\n LangGraphCloud = \"langgraph-cloud\",\n}\n\nexport interface BaseEndpointDefinition<TActionType extends EndpointType> {\n type?: TActionType;\n}\n\nexport interface CopilotKitEndpoint extends BaseEndpointDefinition<EndpointType.CopilotKit> {\n url: string;\n onBeforeRequest?: ({ ctx }: { ctx: GraphQLContext }) => {\n headers?: Record<string, string> | undefined;\n };\n}\n\nexport interface LangGraphCloudAgent {\n name: string;\n description: string;\n assistantId?: string;\n}\n\nexport interface LangGraphCloudEndpoint\n extends BaseEndpointDefinition<EndpointType.LangGraphCloud> {\n deploymentUrl: string;\n langsmithApiKey: string;\n agents: LangGraphCloudAgent[];\n}\n\nexport type RemoteActionInfoResponse = {\n actions: any[];\n agents: any[];\n};\n\nexport type LangGraphAgentHandlerParams = {\n name: string;\n actionInputsWithoutAgents: ActionInput[];\n threadId?: string;\n nodeName?: string;\n};\n\nexport type LangGraphAgentAction = Action<any> & {\n langGraphAgentHandler: (params: LangGraphAgentHandlerParams) => Promise<Observable<RuntimeEvent>>;\n};\n\nexport function isLangGraphAgentAction(action: Action<any>): action is LangGraphAgentAction {\n if (!action) {\n return false;\n }\n return typeof (action as LangGraphAgentAction).langGraphAgentHandler === \"function\";\n}\n\nasync function fetchRemoteInfo({\n url,\n onBeforeRequest,\n graphqlContext,\n logger,\n frontendUrl,\n}: {\n url: string;\n onBeforeRequest?: CopilotKitEndpoint[\"onBeforeRequest\"];\n graphqlContext: GraphQLContext;\n logger: Logger;\n frontendUrl?: string;\n}): Promise<RemoteActionInfoResponse> {\n logger.debug({ url }, \"Fetching actions from url\");\n const headers = createHeaders(onBeforeRequest, graphqlContext);\n\n try {\n const response = await fetch(`${url}/info`, {\n method: \"POST\",\n headers,\n body: JSON.stringify({ properties: graphqlContext.properties, frontendUrl }),\n });\n\n if (!response.ok) {\n logger.error(\n { url, status: response.status, body: await response.text() },\n \"Failed to fetch actions from url\",\n );\n return { actions: [], agents: [] };\n }\n\n const json = await response.json();\n logger.debug({ json }, \"Fetched actions from url\");\n return json;\n } catch (error) {\n logger.error(\n { error: error.message ? error.message : error + \"\" },\n \"Failed to fetch actions from url\",\n );\n return { actions: [], agents: [] };\n }\n}\n\nexport async function setupRemoteActions({\n remoteEndpointDefinitions,\n graphqlContext,\n messages,\n agentStates,\n frontendUrl,\n}: {\n remoteEndpointDefinitions: EndpointDefinition[];\n graphqlContext: GraphQLContext;\n messages: Message[];\n agentStates?: AgentStateInput[];\n frontendUrl?: string;\n}): Promise<Action[]> {\n const logger = graphqlContext.logger.child({ component: \"remote-actions.fetchRemoteActions\" });\n logger.debug({ remoteEndpointDefinitions }, \"Fetching from remote endpoints\");\n\n // Remove duplicates of remoteEndpointDefinitions.url\n const filtered = remoteEndpointDefinitions.filter((value, index, self) => {\n if (value.type === EndpointType.LangGraphCloud) {\n return value;\n }\n return index === self.findIndex((t: CopilotKitEndpoint) => t.url === value.url);\n });\n\n const result = await Promise.all(\n filtered.map(async (endpoint) => {\n // Check for properties that can distinguish LG cloud from other actions\n if (endpoint.type === EndpointType.LangGraphCloud) {\n return constructLGCRemoteAction({\n endpoint,\n messages,\n graphqlContext,\n logger: logger.child({\n component: \"remote-actions.constructLGCRemoteAction\",\n endpoint,\n }),\n agentStates,\n });\n }\n\n const json = await fetchRemoteInfo({\n url: endpoint.url,\n onBeforeRequest: endpoint.onBeforeRequest,\n graphqlContext,\n logger: logger.child({ component: \"remote-actions.fetchActionsFromUrl\", endpoint }),\n frontendUrl,\n });\n\n return constructRemoteActions({\n json,\n messages,\n url: endpoint.url,\n onBeforeRequest: endpoint.onBeforeRequest,\n graphqlContext,\n logger: logger.child({ component: \"remote-actions.constructActions\", endpoint }),\n agentStates,\n });\n }),\n );\n\n return result.flat();\n}\n","import createPinoLogger from \"pino\";\nimport pretty from \"pino-pretty\";\n\nexport type LogLevel = \"debug\" | \"info\" | \"warn\" | \"error\";\n\nexport type CopilotRuntimeLogger = ReturnType<typeof createLogger>;\n\nexport function createLogger(options?: { level?: LogLevel; component?: string }) {\n const { level, component } = options || {};\n const stream = pretty({ colorize: true });\n\n const logger = createPinoLogger(\n {\n level: process.env.LOG_LEVEL || level || \"error\",\n redact: {\n paths: [\"pid\", \"hostname\"],\n remove: true,\n },\n },\n stream,\n );\n\n if (component) {\n return logger.child({ component });\n } else {\n return logger;\n }\n}\n"],"mappings":"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","names":["createYoga","buildSchemaSync","Arg","Ctx","Mutation","Query","Resolver","ReplaySubject","Subject","finalize","firstValueFrom","shareReplay","skipWhile","take","takeWhile","tap","Field","InputType","Field","InputType","registerEnumType","MessageRole","ActionExecutionScope","CopilotRequestType","name","description","MessageInput","BaseMessageInput","textMessage","actionExecutionMessage","resultMessage","agentStateMessage","Field","TextMessageInput","nullable","ActionExecutionMessageInput","ResultMessageInput","AgentStateMessageInput","InputType","content","role","String","MessageRole","name","arguments","scope","ActionExecutionScope","actionExecutionId","actionName","result","threadId","agentName","state","running","nodeName","runId","active","Boolean","Field","InputType","Field","InputType","ActionInput","name","description","jsonSchema","Field","String","InputType","FrontendInput","toDeprecate_fullContext","actions","url","Field","String","nullable","ActionInput","InputType","Field","InputType","Field","InputType","GuardrailsRuleInput","allowList","denyList","Field","String","nullable","InputType","GuardrailsInput","inputValidationRules","CloudInput","guardrails","Field","GuardrailsInput","nullable","InputType","Field","InputType","ForwardedParametersInput","model","maxTokens","stop","toolChoice","toolChoiceFunctionName","Field","String","nullable","Number","InputType","Field","InputType","AgentSessionInput","agentName","threadId","nodeName","Field","String","nullable","InputType","Field","InputType","AgentStateInput","agentName","state","Field","String","InputType","GenerateCopilotResponseMetadataInput","requestType","Field","CopilotRequestType","nullable","InputType","GenerateCopilotResponseInput","metadata","threadId","runId","messages","frontend","cloud","forwardedParameters","agentSession","agentState","agentStates","String","MessageInput","FrontendInput","CloudInput","ForwardedParametersInput","AgentSessionInput","AgentStateInput","Field","InterfaceType","ObjectType","Field","ObjectType","createUnionType","registerEnumType","MessageStatusCode","registerEnumType","name","BaseMessageStatus","code","Field","ObjectType","PendingMessageStatus","SuccessMessageStatus","FailedMessageStatus","reason","String","MessageStatusUnion","createUnionType","types","BaseMessageOutput","id","createdAt","status","Field","String","Date","MessageStatusUnion","InterfaceType","resolveType","value","hasOwnProperty","TextMessageOutput","ActionExecutionMessageOutput","ResultMessageOutput","AgentStateMessageOutput","undefined","role","content","MessageRole","ObjectType","implements","name","scope","arguments","ActionExecutionScope","actionExecutionId","actionName","result","threadId","agentName","nodeName","runId","active","state","running","Boolean","CopilotResponse","messages","ResponseStatusUnion","nullable","Repeater","of","concat","map","scan","concatMap","ReplaySubject","firstValueFrom","from","TelemetryClient","packageJson","require","telemetryClient","packageName","name","packageVersion","version","ReplaySubject","scan","mergeMap","catchError","LangGraphEventTypes","randomId","RemoteLangGraphEventSource","eventStream$","ReplaySubject","shouldEmitToolCall","shouldEmitToolCalls","toolCallName","Array","isArray","includes","processLangGraphEvents","lastEventWithState","pipe","scan","acc","event","LangGraphEventTypes","OnChatModelStream","content","data","chunk","kwargs","length","text","toolCallChunks","tool_call_chunks","toolCallMessageId","id","prevToolCallMessageId","name","toolCallId","prevMessageId","messageId","mergeMap","eventWithState","events","shouldEmitMessages","metadata","push","type","RuntimeEventTypes","ActionExecutionEnd","TextMessageEnd","OnCopilotKitEmitMessage","TextMessageStart","message_id","TextMessageContent","message","OnCopilotKitEmitToolCall","ActionExecutionStart","actionExecutionId","actionName","ActionExecutionArgs","args","JSON","stringify","OnCopilotKitStateSync","AgentStateMessage","threadId","thread_id","role","agentName","agent_name","nodeName","node_name","runId","run_id","active","state","running","OnToolEnd","scope","catchError","error","console","randomId","Client","randomUUID","parse","parsePartialJson","execute","args","ReadableStream","start","controller","streamEvents","close","err","deploymentUrl","langsmithApiKey","threadId","agrsInitialThreadId","agent","nodeName","initialNodeName","state","initialState","messages","actions","name","assistantId","initialAssistantId","client","Client","apiUrl","apiKey","initialThreadId","wasInitiatedWithExistingThread","startsWith","substring","assistants","search","retrievedAssistant","find","a","randomUUID","threads","get","create","agentState","values","getState","agentStateValues","mode","langGraphDefaultMergeState","formatMessages","updateState","asNode","assistant_id","graphInfo","getGraph","streamInput","streamingStateExtractor","StreamingStateExtractor","prevNodeName","emitIntermediateStateUntilEnd","shouldExit","externalRunId","streamResponse","runs","stream","input","streamMode","emit","message","enqueue","TextEncoder","encode","latestStateValues","chunk","includes","event","data","currentNodeName","eventType","runId","metadata","run_id","emitIntermediateState","forceEmitIntermediateState","manuallyEmitMessage","manuallyEmitToolCall","some","node","id","output","getStateSyncEvent","agentName","running","active","JSON","stringify","messageId","role","MessageRole","assistant","updatedState","bufferToolCalls","extractState","exitingNode","isEndNode","next","length","Object","keys","writes","Promise","resolve","stateWithoutMessages","reduce","acc","key","thread_id","agent_name","node_name","toolCallBuffer","currentToolCall","previouslyParsableState","constructor","tool_call_chunks","getEmitStateConfig","currentToolName","config","stateKey","tool","toolArgument","value","entries","argumentName","parsedValue","parsePartialJson","error","slice","mergedMessages","existingMessageIds","Set","map","has","push","deepMerge","copilotkit","obj1","obj2","result","Array","isArray","toolCall","content","tool_calls","tool_call_id","user","constructLGCRemoteAction","endpoint","graphqlContext","logger","messages","agentStates","agents","map","agent","name","description","parameters","handler","_args","langGraphAgentHandler","actionInputsWithoutAgents","threadId","nodeName","debug","actionName","telemetry","capture","state","jsonState","find","agentName","JSON","parse","response","execute","deploymentUrl","langsmithApiKey","properties","actions","action","jsonSchema","eventSource","RemoteLangGraphEventSource","streamResponse","eventStream$","processLangGraphEvents","error","url","status","body","message","Error","constructRemoteActions","json","onBeforeRequest","args","headers","createHeaders","fetch","method","stringify","arguments","ok","text","requestResult","result","reader","getReader","decoder","TextDecoder","buffer","flushBuffer","currentBuffer","join","trim","length","parts","split","lastPartIsComplete","endsWith","push","pop","part","filter","forEach","next","done","value","read","decode","stream","console","complete","additionalHeaders","ctx","Object","assign","EndpointType","isLangGraphAgentAction","action","langGraphAgentHandler","fetchRemoteInfo","url","onBeforeRequest","graphqlContext","logger","frontendUrl","debug","headers","createHeaders","response","fetch","method","body","JSON","stringify","properties","ok","error","status","text","actions","agents","json","message","setupRemoteActions","remoteEndpointDefinitions","messages","agentStates","child","component","filtered","filter","value","index","self","type","findIndex","t","result","Promise","all","map","endpoint","constructLGCRemoteAction","constructRemoteActions","flat","RuntimeEventTypes","RuntimeEventSubject","ReplaySubject","constructor","sendTextMessageStart","messageId","next","type","sendTextMessageContent","content","sendTextMessageEnd","sendTextMessage","sendActionExecutionStart","actionExecutionId","actionName","sendActionExecutionArgs","args","sendActionExecutionEnd","sendActionExecution","toolName","sendActionExecutionResult","result","sendAgentStateMessage","threadId","agentName","nodeName","runId","active","role","state","running","RuntimeEventSource","eventStream$","callback","stream","processRuntimeEvents","serverSideActions","guardrailsResult$","actionInputsWithoutAgents","catch","error","console","pipe","map","event","scope","find","action","name","scan","acc","callActionServerSide","concatMap","eventWithState","toolCallEventStream$","executeAction","telemetry","capture","concat","of","actionArguments","status","firstValueFrom","complete","JSON","parse","isLangGraphAgentAction","langGraphAgentHandler","from","subscribe","err","handler","streamLangChainResponse","actionExecution","id","GraphQLJSONObject","plainToInstance","GraphQLError","randomId","invokeGuardrails","baseUrl","copilotCloudPublicApiKey","data","onResult","onError","messages","length","textMessage","role","MessageRole","user","filter","m","undefined","assistant","map","content","lastMessage","restOfMessages","slice","body","input","validTopics","cloud","guardrails","inputValidationRules","allowList","invalidTopics","denyList","guardrailsResult","fetch","method","headers","JSON","stringify","ok","resultJson","json","CopilotResolver","hello","generateCopilotResponse","ctx","properties","telemetry","capture","requestType","metadata","logger","child","component","debug","copilotRuntime","_copilotkit","runtime","serviceAdapter","copilotCloudBaseUrl","key","request","get","error","GraphQLError","process","env","COPILOT_CLOUD_BASE_URL","responseStatus$","ReplaySubject","interruptStreaming$","guardrailsResult$","outputMessages","resolveOutputMessagesPromise","rejectOutputMessagesPromise","outputMessagesPromise","Promise","resolve","reject","eventSource","threadId","randomId","runId","serverSideActions","actionInputsWithoutAgents","processRuntimeRequest","actions","frontend","publicApiKey","graphqlContext","forwardedParameters","agentSession","agentStates","url","response","status","firstValueFrom","Repeater","pushMessage","stopStreamingMessages","result","next","GuardrailsValidationFailureResponse","guardrailsReason","reason","plainToInstance","TextMessage","id","createdAt","Date","err","UnknownErrorResponse","description","eventStreamSubscription","eventStream","processRuntimeEvents","action","find","serverSideAction","name","pipe","shareReplay","finalize","subscribe","event","type","RuntimeEventTypes","TextMessageStart","textMessageContentStream","skipWhile","e","takeWhile","TextMessageEnd","streamingTextStatus","Subject","messageId","pushTextChunk","stopStreamingText","textChunks","textSubscription","take","tap","FailedMessageStatus","MessageStreamInterruptedResponse","unsubscribe","TextMessageContent","push","complete","SuccessMessageStatus","join","ActionExecutionStart","actionExecutionArgumentStream","ActionExecutionEnd","streamingArgumentsStatus","actionExecutionId","actionName","scope","arguments","pushArgumentsChunk","stopStreamingArguments","argumentChunks","actionExecutionArgumentSubscription","ActionExecutionArgs","args","ActionExecutionMessage","ActionExecutionResult","ResultMessage","AgentStateMessage","agentName","nodeName","active","state","running","SuccessResponseStatus","Query","String","Mutation","CopilotResponse","Ctx","Arg","GraphQLJSONObject","nullable","Resolver","useDeferStream","createPinoLogger","pretty","createLogger","options","level","component","stream","pretty","colorize","logger","createPinoLogger","process","env","LOG_LEVEL","redact","paths","remove","child","logger","createLogger","createContext","initialContext","copilotKitContext","contextLogger","properties","debug","ctx","_copilotkit","buildSchema","options","schema","buildSchemaSync","resolvers","CopilotResolver","emitSchemaFile","getCommonConfig","logLevel","process","env","LOG_LEVEL","level","component","cloud","telemetry","setCloudConfiguration","publicApiKey","baseUrl","setGlobalProperties","runtime","serviceAdapter","constructor","name","logging","plugins","useDeferStream","context","copilotRuntimeNodeHttpEndpoint","options","commonConfig","getCommonConfig","telemetry","setGlobalProperties","runtime","framework","properties","_copilotkit","capture","logger","logging","debug","yoga","createYoga","graphqlEndpoint","endpoint"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  getCommonConfig,
3
3
  telemetry_client_default
4
- } from "./chunk-AOYYOKTP.mjs";
4
+ } from "./chunk-E6ZFCM3B.mjs";
5
5
  import {
6
6
  __name
7
7
  } from "./chunk-44O2JGUY.mjs";
@@ -76,4 +76,4 @@ export {
76
76
  config,
77
77
  copilotRuntimeNextJSPagesRouterEndpoint
78
78
  };
79
- //# sourceMappingURL=chunk-UYORVPCQ.mjs.map
79
+ //# sourceMappingURL=chunk-TM7ZRU3M.mjs.map
@@ -38,27 +38,24 @@ __name(convertMessageToLangChainMessage, "convertMessageToLangChainMessage");
38
38
  function convertJsonSchemaToZodSchema(jsonSchema, required) {
39
39
  if (jsonSchema.type === "object") {
40
40
  const spec = {};
41
- if (!jsonSchema.properties || !Object.keys(jsonSchema.properties).length) {
42
- return !required ? z.object(spec).optional() : z.object(spec);
43
- }
44
41
  for (const [key, value] of Object.entries(jsonSchema.properties)) {
45
42
  spec[key] = convertJsonSchemaToZodSchema(value, jsonSchema.required ? jsonSchema.required.includes(key) : false);
46
43
  }
47
44
  let schema = z.object(spec);
48
- return required ? schema : schema.optional();
45
+ return !required ? schema.optional() : schema;
49
46
  } else if (jsonSchema.type === "string") {
50
47
  let schema = z.string().describe(jsonSchema.description);
51
- return required ? schema : schema.optional();
48
+ return !required ? schema.optional() : schema;
52
49
  } else if (jsonSchema.type === "number") {
53
50
  let schema = z.number().describe(jsonSchema.description);
54
- return required ? schema : schema.optional();
51
+ return !required ? schema.optional() : schema;
55
52
  } else if (jsonSchema.type === "boolean") {
56
53
  let schema = z.boolean().describe(jsonSchema.description);
57
- return required ? schema : schema.optional();
54
+ return !required ? schema.optional() : schema;
58
55
  } else if (jsonSchema.type === "array") {
59
56
  let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);
60
57
  let schema = z.array(itemSchema);
61
- return required ? schema : schema.optional();
58
+ return !required ? schema.optional() : schema;
62
59
  }
63
60
  }
64
61
  __name(convertJsonSchemaToZodSchema, "convertJsonSchemaToZodSchema");
@@ -195,4 +192,4 @@ export {
195
192
  convertActionInputToLangChainTool,
196
193
  streamLangChainResponse
197
194
  };
198
- //# sourceMappingURL=chunk-ZEHCLFJ2.mjs.map
195
+ //# sourceMappingURL=chunk-V7SK6QZN.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/service-adapters/langchain/utils.ts"],"sourcesContent":["import {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n} from \"../../graphql/types/converted\";\nimport {\n AIMessage,\n AIMessageChunk,\n BaseMessage,\n BaseMessageChunk,\n HumanMessage,\n SystemMessage,\n ToolMessage,\n} from \"@langchain/core/messages\";\nimport { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport { z } from \"zod\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { LangChainReturnType } from \"./types\";\nimport { RuntimeEventSubject } from \"../events\";\nimport { randomId } from \"@copilotkit/shared\";\n\nexport function convertMessageToLangChainMessage(message: Message): BaseMessage {\n if (message.isTextMessage()) {\n if (message.role == \"user\") {\n return new HumanMessage(message.content);\n } else if (message.role == \"assistant\") {\n return new AIMessage(message.content);\n } else if (message.role === \"system\") {\n return new SystemMessage(message.content);\n }\n } else if (message.isActionExecutionMessage()) {\n return new AIMessage({\n content: \"\",\n tool_calls: [\n {\n id: message.id,\n args: message.arguments,\n name: message.name,\n },\n ],\n });\n } else if (message.isResultMessage()) {\n return new ToolMessage({\n content: message.result,\n tool_call_id: message.actionExecutionId,\n });\n }\n}\n\nexport function convertJsonSchemaToZodSchema(jsonSchema: any, required: boolean): z.ZodSchema {\n if (jsonSchema.type === \"object\") {\n const spec: { [key: string]: z.ZodSchema } = {};\n for (const [key, value] of Object.entries(jsonSchema.properties)) {\n spec[key] = convertJsonSchemaToZodSchema(\n value,\n jsonSchema.required ? jsonSchema.required.includes(key) : false,\n );\n }\n let schema = z.object(spec);\n return !required ? schema.optional() : schema;\n } else if (jsonSchema.type === \"string\") {\n let schema = z.string().describe(jsonSchema.description);\n return !required ? schema.optional() : schema;\n } else if (jsonSchema.type === \"number\") {\n let schema = z.number().describe(jsonSchema.description);\n return !required ? schema.optional() : schema;\n } else if (jsonSchema.type === \"boolean\") {\n let schema = z.boolean().describe(jsonSchema.description);\n return !required ? schema.optional() : schema;\n } else if (jsonSchema.type === \"array\") {\n let itemSchema = convertJsonSchemaToZodSchema(jsonSchema.items, true);\n let schema = z.array(itemSchema);\n return !required ? schema.optional() : schema;\n }\n}\n\nexport function convertActionInputToLangChainTool(actionInput: ActionInput): any {\n return new DynamicStructuredTool({\n name: actionInput.name,\n description: actionInput.description,\n schema: convertJsonSchemaToZodSchema(\n JSON.parse(actionInput.jsonSchema),\n true,\n ) as z.ZodObject<any>,\n func: async () => {\n return \"\";\n },\n });\n}\n\ninterface StreamLangChainResponseParams {\n result: LangChainReturnType;\n eventStream$: RuntimeEventSubject;\n actionExecution?: {\n id: string;\n name: string;\n };\n}\n\nfunction getConstructorName(object: any): string {\n if (object && typeof object === \"object\" && object.constructor && object.constructor.name) {\n return object.constructor.name;\n }\n return \"\";\n}\n\nfunction isAIMessage(message: any): message is AIMessage {\n return Object.prototype.toString.call(message) === \"[object AIMessage]\";\n}\n\nfunction isAIMessageChunk(message: any): message is AIMessageChunk {\n return Object.prototype.toString.call(message) === \"[object AIMessageChunk]\";\n}\n\nfunction isBaseMessageChunk(message: any): message is BaseMessageChunk {\n return Object.prototype.toString.call(message) === \"[object BaseMessageChunk]\";\n}\n\nfunction maybeSendActionExecutionResultIsMessage(\n eventStream$: RuntimeEventSubject,\n actionExecution?: { id: string; name: string },\n) {\n // language models need a result after the function call\n // we simply let them know that we are sending a message\n if (actionExecution) {\n eventStream$.sendActionExecutionResult(\n actionExecution.id,\n actionExecution.name,\n \"Sending a message\",\n );\n }\n}\n\nexport async function streamLangChainResponse({\n result,\n eventStream$,\n actionExecution,\n}: StreamLangChainResponseParams) {\n // We support several types of return values from LangChain functions:\n\n // 1. string\n\n if (typeof result === \"string\") {\n if (!actionExecution) {\n // Just send one chunk with the string as the content.\n eventStream$.sendTextMessage(randomId(), result);\n } else {\n // Send as a result\n eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, result);\n }\n }\n\n // 2. AIMessage\n // Send the content and function call of the AIMessage as the content of the chunk.\n else if (isAIMessage(result)) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n if (result.content) {\n eventStream$.sendTextMessage(randomId(), result.content as string);\n }\n for (const toolCall of result.tool_calls) {\n eventStream$.sendActionExecution(\n toolCall.id || randomId(),\n toolCall.name,\n JSON.stringify(toolCall.args),\n );\n }\n }\n\n // 3. BaseMessageChunk\n // Send the content and function call of the AIMessage as the content of the chunk.\n else if (isBaseMessageChunk(result)) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n if (result.lc_kwargs?.content) {\n eventStream$.sendTextMessage(randomId(), result.content as string);\n }\n if (result.lc_kwargs?.tool_calls) {\n for (const toolCall of result.lc_kwargs?.tool_calls) {\n eventStream$.sendActionExecution(\n toolCall.id || randomId(),\n toolCall.name,\n JSON.stringify(toolCall.args),\n );\n }\n }\n }\n\n // 4. IterableReadableStream\n // Stream the result of the LangChain function.\n else if (result && \"getReader\" in result) {\n maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);\n\n let reader = result.getReader();\n\n let mode: \"function\" | \"message\" | null = null;\n\n while (true) {\n try {\n const { done, value } = await reader.read();\n\n let toolCallName: string | undefined = undefined;\n let toolCallId: string | undefined = undefined;\n let toolCallArgs: string | undefined = undefined;\n let hasToolCall: boolean = false;\n let content = value?.content as string;\n\n if (isAIMessageChunk(value)) {\n let chunk = value.tool_call_chunks?.[0];\n toolCallName = chunk?.name;\n toolCallId = chunk?.id;\n toolCallArgs = chunk?.args;\n hasToolCall = chunk != undefined;\n } else if (isBaseMessageChunk(value)) {\n let chunk = value.additional_kwargs?.tool_calls?.[0];\n toolCallName = chunk?.function?.name;\n toolCallId = chunk?.id;\n toolCallArgs = chunk?.function?.arguments;\n hasToolCall = chunk?.function != undefined;\n }\n\n // When switching from message to function or vice versa,\n // send the respective end event.\n // If toolCallName is defined, it means a new tool call starts.\n if (mode === \"message\" && (toolCallId || done)) {\n mode = null;\n eventStream$.sendTextMessageEnd();\n } else if (mode === \"function\" && (!hasToolCall || done)) {\n mode = null;\n eventStream$.sendActionExecutionEnd();\n }\n\n if (done) {\n break;\n }\n\n // If we send a new message type, send the appropriate start event.\n if (mode === null) {\n if (hasToolCall) {\n mode = \"function\";\n eventStream$.sendActionExecutionStart(toolCallId, toolCallName);\n } else if (content) {\n mode = \"message\";\n eventStream$.sendTextMessageStart(randomId());\n }\n }\n\n // send the content events\n if (mode === \"message\" && content) {\n eventStream$.sendTextMessageContent(\n Array.isArray(content) ? (content[0]?.text ?? \"\") : content,\n );\n } else if (mode === \"function\" && toolCallArgs) {\n eventStream$.sendActionExecutionArgs(toolCallArgs);\n }\n } catch (error) {\n console.error(\"Error reading from stream\", error);\n break;\n }\n }\n } else if (actionExecution) {\n eventStream$.sendActionExecutionResult(\n actionExecution.id,\n actionExecution.name,\n encodeResult(result),\n );\n }\n\n // unsupported type\n else {\n throw new Error(\"Invalid return type from LangChain function.\");\n }\n\n eventStream$.complete();\n}\n\nfunction encodeResult(result: any): string {\n if (result === undefined) {\n return \"\";\n } else if (typeof result === \"string\") {\n return result;\n } else {\n return JSON.stringify(result);\n }\n}\n"],"mappings":"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","names":["AIMessage","HumanMessage","SystemMessage","ToolMessage","DynamicStructuredTool","z","randomId","convertMessageToLangChainMessage","message","isTextMessage","role","HumanMessage","content","AIMessage","SystemMessage","isActionExecutionMessage","tool_calls","id","args","arguments","name","isResultMessage","ToolMessage","result","tool_call_id","actionExecutionId","convertJsonSchemaToZodSchema","jsonSchema","required","type","spec","key","value","Object","entries","properties","includes","schema","z","object","optional","string","describe","description","number","boolean","itemSchema","items","array","convertActionInputToLangChainTool","actionInput","DynamicStructuredTool","JSON","parse","func","isAIMessage","message","Object","prototype","toString","call","isAIMessageChunk","isBaseMessageChunk","maybeSendActionExecutionResultIsMessage","eventStream$","actionExecution","sendActionExecutionResult","id","name","streamLangChainResponse","result","sendTextMessage","randomId","content","toolCall","tool_calls","sendActionExecution","JSON","stringify","args","lc_kwargs","reader","getReader","mode","done","value","read","toolCallName","undefined","toolCallId","toolCallArgs","hasToolCall","chunk","tool_call_chunks","additional_kwargs","function","arguments","sendTextMessageEnd","sendActionExecutionEnd","sendActionExecutionStart","sendTextMessageStart","sendTextMessageContent","Array","isArray","text","sendActionExecutionArgs","error","console","encodeResult","Error","complete"]}
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  copilotRuntimeNodeHttpEndpoint,
3
3
  telemetry_client_default
4
- } from "./chunk-AOYYOKTP.mjs";
4
+ } from "./chunk-E6ZFCM3B.mjs";
5
5
  import {
6
6
  __name
7
7
  } from "./chunk-44O2JGUY.mjs";
@@ -21,4 +21,4 @@ __name(copilotRuntimeNodeExpressEndpoint, "copilotRuntimeNodeExpressEndpoint");
21
21
  export {
22
22
  copilotRuntimeNodeExpressEndpoint
23
23
  };
24
- //# sourceMappingURL=chunk-HKLL7TTP.mjs.map
24
+ //# sourceMappingURL=chunk-XMDH5MKI.mjs.map
@@ -42,14 +42,32 @@ declare class AgentStateInput {
42
42
  state: string;
43
43
  }
44
44
 
45
- type RemoteActionDefinition = {
45
+ type EndpointDefinition = CopilotKitEndpoint | LangGraphCloudEndpoint;
46
+ declare enum EndpointType {
47
+ CopilotKit = "copilotKit",
48
+ LangGraphCloud = "langgraph-cloud"
49
+ }
50
+ interface BaseEndpointDefinition<TActionType extends EndpointType> {
51
+ type?: TActionType;
52
+ }
53
+ interface CopilotKitEndpoint extends BaseEndpointDefinition<EndpointType.CopilotKit> {
46
54
  url: string;
47
55
  onBeforeRequest?: ({ ctx }: {
48
56
  ctx: GraphQLContext;
49
57
  }) => {
50
58
  headers?: Record<string, string> | undefined;
51
59
  };
52
- };
60
+ }
61
+ interface LangGraphCloudAgent {
62
+ name: string;
63
+ description: string;
64
+ assistantId?: string;
65
+ }
66
+ interface LangGraphCloudEndpoint extends BaseEndpointDefinition<EndpointType.LangGraphCloud> {
67
+ deploymentUrl: string;
68
+ langsmithApiKey: string;
69
+ agents: LangGraphCloudAgent[];
70
+ }
53
71
 
54
72
  declare class AgentSessionInput {
55
73
  agentName: string;
@@ -148,12 +166,13 @@ interface CopilotRuntimeConstructorParams<T extends Parameter[] | [] = []> {
148
166
  */
149
167
  middleware?: Middleware;
150
168
  actions?: ActionsConfiguration<T>;
151
- remoteActions?: RemoteActionDefinition[];
169
+ remoteActions?: EndpointDefinition[];
170
+ remoteEndpoints?: EndpointDefinition[];
152
171
  langserve?: RemoteChainParameters[];
153
172
  }
154
173
  declare class CopilotRuntime<const T extends Parameter[] | [] = []> {
155
174
  actions: ActionsConfiguration<T>;
156
- private remoteActionDefinitions;
175
+ private remoteEndpointDefinitions;
157
176
  private langserve;
158
177
  private onBeforeRequest?;
159
178
  private onAfterRequest?;
@@ -161,7 +180,10 @@ declare class CopilotRuntime<const T extends Parameter[] | [] = []> {
161
180
  processRuntimeRequest(request: CopilotRuntimeRequest): Promise<CopilotRuntimeResponse>;
162
181
  private processAgentRequest;
163
182
  private getServerSideActions;
183
+ private resolveEndpointType;
164
184
  }
165
185
  declare function flattenToolCallsNoDuplicates(toolsByPriority: ActionInput[]): ActionInput[];
186
+ declare function copilotKitEndpoint(config: Omit<CopilotKitEndpoint, "type">): CopilotKitEndpoint;
187
+ declare function langGraphCloudEndpoint(config: Omit<LangGraphCloudEndpoint, "type">): LangGraphCloudEndpoint;
166
188
 
167
- export { CopilotRuntimeConstructorParams as C, GraphQLContext as G, CopilotRuntime as a, CopilotRequestContextProperties as b, CreateCopilotRuntimeServerOptions as c, createContext as d, buildSchema as e, flattenToolCallsNoDuplicates as f, CommonConfig as g, getCommonConfig as h };
189
+ export { CopilotRuntimeConstructorParams as C, GraphQLContext as G, CopilotRuntime as a, CopilotRequestContextProperties as b, copilotKitEndpoint as c, CreateCopilotRuntimeServerOptions as d, createContext as e, flattenToolCallsNoDuplicates as f, buildSchema as g, CommonConfig as h, getCommonConfig as i, langGraphCloudEndpoint as l };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- export { g as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, c as CreateCopilotRuntimeServerOptions, G as GraphQLContext, e as buildSchema, d as createContext, f as flattenToolCallsNoDuplicates, h as getCommonConfig } from './copilot-runtime-df3527ad.js';
1
+ export { h as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, d as CreateCopilotRuntimeServerOptions, G as GraphQLContext, g as buildSchema, c as copilotKitEndpoint, e as createContext, f as flattenToolCallsNoDuplicates, i as getCommonConfig, l as langGraphCloudEndpoint } from './copilot-runtime-aba7d4b4.js';
2
2
  export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from './groq-adapter-b122e71f.js';
3
3
  export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './lib/integrations/index.js';
4
4
  export { copilotRuntimeNodeHttpEndpoint } from './lib/integrations/node-http/index.js';