@copilotkit/runtime 0.37.0 → 0.38.0-mme-alpha.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 (88) hide show
  1. package/.turbo/turbo-build.log +69 -54
  2. package/CHANGELOG.md +11 -0
  3. package/__snapshots__/schema/schema.graphql +15 -4
  4. package/dist/{chunk-NFCPM5AM.mjs → chunk-6NZ4UMOD.mjs} +4 -4
  5. package/dist/chunk-6NZ4UMOD.mjs.map +1 -0
  6. package/dist/{chunk-2CCVVJDU.mjs → chunk-6OJ47NCG.mjs} +13 -15
  7. package/dist/chunk-6OJ47NCG.mjs.map +1 -0
  8. package/dist/chunk-BYB2LNMK.mjs +152 -0
  9. package/dist/chunk-BYB2LNMK.mjs.map +1 -0
  10. package/dist/{chunk-XPAUPJMW.mjs → chunk-EWS5TMDA.mjs} +411 -206
  11. package/dist/chunk-EWS5TMDA.mjs.map +1 -0
  12. package/dist/{chunk-7IFP53C6.mjs → chunk-FRK6BXXV.mjs} +49 -11
  13. package/dist/chunk-FRK6BXXV.mjs.map +1 -0
  14. package/dist/{chunk-BLTAUVRP.mjs → chunk-OZMCHYYR.mjs} +5 -3
  15. package/dist/{chunk-BLTAUVRP.mjs.map → chunk-OZMCHYYR.mjs.map} +1 -1
  16. package/dist/chunk-RHQLCJGG.mjs +7 -0
  17. package/dist/chunk-RHQLCJGG.mjs.map +1 -0
  18. package/dist/{chunk-5HGYI6EG.mjs → chunk-XI3HBDMA.mjs} +13 -5
  19. package/dist/chunk-XI3HBDMA.mjs.map +1 -0
  20. package/dist/{chunk-4UA4RB4C.mjs → chunk-XXYCNRFT.mjs} +12 -10
  21. package/dist/chunk-XXYCNRFT.mjs.map +1 -0
  22. package/dist/failed-response-status-reasons-0ab19e06.d.ts +49 -0
  23. package/dist/graphql/types/base/index.mjs +2 -1
  24. package/dist/graphql/types/converted/index.mjs +3 -2
  25. package/dist/{index-f0875df3.d.ts → index-d5ba24be.d.ts} +24 -23
  26. package/dist/index.d.ts +7 -4
  27. package/dist/index.js +486 -96
  28. package/dist/index.js.map +1 -1
  29. package/dist/index.mjs +16 -7
  30. package/dist/index.mjs.map +1 -1
  31. package/dist/{langchain-adapter-9ce103f3.d.ts → langchain-adapter-54784d29.d.ts} +1 -1
  32. package/dist/{langserve-fd5066ee.d.ts → langserve-63794237.d.ts} +24 -7
  33. package/dist/lib/cloud/index.d.ts +6 -0
  34. package/dist/lib/cloud/index.js +18 -0
  35. package/dist/lib/cloud/index.js.map +1 -0
  36. package/dist/lib/cloud/index.mjs +1 -0
  37. package/dist/lib/cloud/index.mjs.map +1 -0
  38. package/dist/lib/index.d.ts +6 -4
  39. package/dist/lib/index.js +480 -96
  40. package/dist/lib/index.js.map +1 -1
  41. package/dist/lib/index.mjs +9 -7
  42. package/dist/lib/integrations/index.d.ts +5 -3
  43. package/dist/lib/integrations/index.js +419 -80
  44. package/dist/lib/integrations/index.js.map +1 -1
  45. package/dist/lib/integrations/index.mjs +7 -5
  46. package/dist/lib/integrations/node-http/index.d.ts +4 -2
  47. package/dist/lib/integrations/node-http/index.js +409 -68
  48. package/dist/lib/integrations/node-http/index.js.map +1 -1
  49. package/dist/lib/integrations/node-http/index.mjs +6 -4
  50. package/dist/pages-router-d94f01da.d.ts +21 -0
  51. package/dist/service-adapters/index.d.ts +2 -2
  52. package/dist/service-adapters/index.js +54 -8
  53. package/dist/service-adapters/index.js.map +1 -1
  54. package/dist/service-adapters/index.mjs +5 -4
  55. package/dist/utils/index.d.ts +1 -0
  56. package/dist/utils/index.js +174 -0
  57. package/dist/utils/index.js.map +1 -0
  58. package/dist/utils/index.mjs +12 -0
  59. package/dist/utils/index.mjs.map +1 -0
  60. package/package.json +6 -4
  61. package/src/graphql/inputs/cloud-guardrails.input.ts +2 -5
  62. package/src/graphql/inputs/cloud.input.ts +2 -2
  63. package/src/graphql/resolvers/copilot.resolver.ts +269 -30
  64. package/src/graphql/types/response-status.type.ts +16 -2
  65. package/src/index.ts +1 -0
  66. package/src/lib/cloud/index.ts +4 -0
  67. package/src/lib/copilot-runtime.ts +13 -37
  68. package/src/lib/integrations/nextjs/app-router.ts +9 -17
  69. package/src/lib/integrations/nextjs/pages-router.ts +9 -15
  70. package/src/lib/integrations/node-http/index.ts +6 -14
  71. package/src/lib/integrations/shared.ts +37 -17
  72. package/src/lib/logger.ts +28 -0
  73. package/src/service-adapters/events.ts +20 -2
  74. package/src/service-adapters/google/google-genai-adapter.ts +3 -0
  75. package/src/service-adapters/google/utils.ts +1 -1
  76. package/src/service-adapters/index.ts +1 -1
  77. package/src/service-adapters/langchain/langserve.ts +10 -4
  78. package/src/service-adapters/langchain/utils.ts +58 -9
  79. package/src/utils/failed-response-status-reasons.ts +48 -0
  80. package/src/utils/index.ts +1 -0
  81. package/dist/chunk-2CCVVJDU.mjs.map +0 -1
  82. package/dist/chunk-4UA4RB4C.mjs.map +0 -1
  83. package/dist/chunk-5HGYI6EG.mjs.map +0 -1
  84. package/dist/chunk-7IFP53C6.mjs.map +0 -1
  85. package/dist/chunk-NFCPM5AM.mjs.map +0 -1
  86. package/dist/chunk-XPAUPJMW.mjs.map +0 -1
  87. package/dist/pages-router-b6bc6c60.d.ts +0 -30
  88. package/src/lib/guardrails.ts +0 -3
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../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/types/base/index.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/types/copilot-response.type.ts","../../../../src/graphql/types/message-status.type.ts","../../../../src/graphql/types/response-status.type.ts","../../../../src/service-adapters/events.ts"],"sourcesContent":["import { createYoga } from \"graphql-yoga\";\nimport { getCommonConfig } from \"../shared\";\nimport { CopilotRuntime } from \"../../copilot-runtime\";\nimport { CopilotServiceAdapter } from \"../../../service-adapters\";\n\nexport function copilotRuntimeNodeHttpEndpoint({\n runtime,\n endpoint,\n serviceAdapter,\n}: {\n runtime: CopilotRuntime;\n serviceAdapter: CopilotServiceAdapter;\n endpoint: string;\n}) {\n const commonConfig = getCommonConfig({ runtime, serviceAdapter });\n\n const yoga = createYoga({\n ...commonConfig,\n graphqlEndpoint: endpoint,\n });\n\n return yoga;\n}\n","import { YogaInitialContext } from \"graphql-yoga\";\nimport { GuardrailsOptions } from \"../guardrails\";\nimport { buildSchemaSync } from \"type-graphql\";\nimport { CopilotResolver } from \"../../graphql/resolvers/copilot.resolver\";\nimport { useDeferStream } from \"@graphql-yoga/plugin-defer-stream\";\nimport { CopilotRuntime } from \"../copilot-runtime\";\nimport { CopilotServiceAdapter } from \"../../service-adapters\";\n\ntype AnyPrimitive = string | boolean | number | null;\nexport type CopilotRequestContextProperties = Record<\n string,\n AnyPrimitive | Record<string, AnyPrimitive>\n>;\n\ntype CopilotKitContext = {\n runtime: CopilotRuntime;\n serviceAdapter: CopilotServiceAdapter;\n properties: CopilotRequestContextProperties;\n};\n\nexport type GraphQLContext = YogaInitialContext & {\n _copilotkit: CopilotKitContext;\n};\n\nexport interface CreateCopilotRuntimeServerOptions {\n runtime: CopilotRuntime;\n serviceAdapter: CopilotServiceAdapter;\n guardrails?: GuardrailsOptions;\n}\n\nexport async function createContext(\n initialContext: YogaInitialContext,\n copilotKitContext: CopilotKitContext,\n): Promise<Partial<GraphQLContext>> {\n const ctx: GraphQLContext = {\n ...initialContext,\n _copilotkit: {\n ...copilotKitContext,\n },\n };\n\n return ctx;\n}\n\nexport function buildSchema(\n options: {\n emitSchemaFile?: string;\n } = {},\n) {\n const schema = buildSchemaSync({\n resolvers: [CopilotResolver],\n emitSchemaFile: options.emitSchemaFile,\n });\n return schema;\n}\n\nexport function getCommonConfig(options?: CreateCopilotRuntimeServerOptions) {\n return {\n schema: buildSchema(),\n plugins: [useDeferStream()],\n context: (ctx: YogaInitialContext): Promise<Partial<GraphQLContext>> =>\n createContext(ctx, {\n runtime: options.runtime,\n serviceAdapter: options.serviceAdapter,\n properties: {},\n }),\n };\n}\n","import { Arg, Ctx, Mutation, Query, Resolver } from \"type-graphql\";\nimport { Subject, firstValueFrom, shareReplay, skipWhile, takeWhile } 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 { nanoid } from \"nanoid\";\nimport { RuntimeEvent, RuntimeEventTypes } from \"../../service-adapters/events\";\nimport { MessageStatusUnion, SuccessMessageStatus } from \"../types/message-status.type\";\nimport { ResponseStatusUnion, SuccessResponseStatus } from \"../types/response-status.type\";\nimport { GraphQLJSONObject } from \"graphql-scalars\";\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 if (properties) {\n ctx._copilotkit.properties = { ...ctx._copilotkit.properties, ...properties };\n }\n const copilotRuntime = ctx._copilotkit.runtime;\n const serviceAdapter = ctx._copilotkit.serviceAdapter;\n const responseStatus = new Subject<typeof ResponseStatusUnion>();\n\n const {\n eventSource,\n threadId = nanoid(),\n runId,\n } = await copilotRuntime.process({\n serviceAdapter,\n messages: data.messages,\n actions: data.frontend.actions,\n threadId: data.threadId,\n runId: data.runId,\n publicApiKey: undefined,\n });\n\n const response = {\n threadId,\n runId,\n status: firstValueFrom(responseStatus),\n messages: new Repeater(async (pushMessage, stopStreamingMessages) => {\n // run and process the event stream\n const eventStream = eventSource.process(copilotRuntime.actions).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 );\n 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 // push the new message\n pushMessage({\n id: nanoid(),\n status: firstValueFrom(streamingTextStatus),\n createdAt: new Date(),\n role: MessageRole.assistant,\n content: new Repeater(async (pushTextChunk, stopStreamingText) => {\n // push the message content\n await textMessageContentStream.forEach(async (e: RuntimeEvent) => {\n if (e.type == RuntimeEventTypes.TextMessageContent) {\n await pushTextChunk(e.content);\n }\n });\n stopStreamingText();\n streamingTextStatus.next(new SuccessMessageStatus());\n }),\n });\n break;\n ////////////////////////////////\n // ActionExecutionStart\n ////////////////////////////////\n case RuntimeEventTypes.ActionExecutionStart:\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 await actionExecutionArgumentStream.forEach(async (e: RuntimeEvent) => {\n if (e.type == RuntimeEventTypes.ActionExecutionArgs) {\n await pushArgumentsChunk(e.args);\n }\n });\n stopStreamingArguments();\n streamingArgumentsStatus.next(new SuccessMessageStatus());\n }),\n });\n break;\n ////////////////////////////////\n // ActionExecutionResult\n ////////////////////////////////\n case RuntimeEventTypes.ActionExecutionResult:\n pushMessage({\n id: nanoid(),\n status: new SuccessMessageStatus(),\n createdAt: new Date(),\n actionExecutionId: event.actionExecutionId,\n actionName: event.actionName,\n result: event.result,\n });\n break;\n }\n },\n error: (err) => console.error(\"Error in event source\", err),\n complete: () => {\n responseStatus.next(new SuccessResponseStatus());\n stopStreamingMessages();\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\";\n\n@InputType()\nexport class GenerateCopilotResponseInput {\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","import { Field, InputType } from \"type-graphql\";\nimport { MessageRole, ActionExecutionScope } from \"../types/enums\";\nimport { BaseMessage } 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 BaseMessage {\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\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","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}\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","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessage {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\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","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)\n guardrails: GuardrailsInput;\n}\n","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class GuardrailsRuleInput {\n @Field(() => String)\n id: string;\n\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: true })\n inputValidationRules?: GuardrailsRuleInput[] = [];\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 }\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()\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 { Field, InterfaceType, ObjectType, createUnionType, registerEnumType } from \"type-graphql\";\n\nexport enum ResponseStatusCode {\n Pending = \"pending\",\n Success = \"success\",\n Failed = \"failed\",\n}\n\nregisterEnumType(ResponseStatusCode, {\n name: \"ResponseStatusCode\",\n});\n\n@InterfaceType({\n resolveType(value) {\n if (value.code === ResponseStatusCode.Success) {\n return SuccessResponseStatus;\n } else if (value.code === ResponseStatusCode.Failed) {\n return FailedResponseStatus;\n } else if (value.code === ResponseStatusCode.Pending) {\n return PendingResponseStatus;\n }\n return undefined;\n },\n})\n@ObjectType()\nabstract class BaseResponseStatus {\n @Field(() => ResponseStatusCode)\n code: ResponseStatusCode;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class PendingResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Pending;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class SuccessResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Success;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class FailedResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Failed;\n\n @Field(() => String)\n reason: string;\n}\n\nexport const ResponseStatusUnion = createUnionType({\n name: \"ResponseStatus\",\n types: () => [PendingResponseStatus, SuccessResponseStatus, FailedResponseStatus] as const,\n});\n","import { Action } from \"@copilotkit/shared\";\nimport { of, concat, map, scan, concatMap, ReplaySubject } from \"rxjs\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\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}\n\ntype FunctionCallScope = \"client\" | \"server\";\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\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\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 process(serversideActions: Action<any>[]) {\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 event.scope = serversideActions.find((action) => action.name === event.actionName)\n ? \"server\"\n : \"client\";\n }\n return event;\n }),\n // track state\n scan(\n (acc, event) => {\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 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 eventWithState.action!,\n eventWithState.args,\n eventWithState.actionExecutionId,\n ).catch((error) => {\n console.error(error);\n });\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 action: Action<any>,\n actionArguments: string,\n actionExecutionId: string,\n) {\n // Prepare arguments for function calling\n let args: Record<string, any>[] = [];\n if (actionArguments) {\n args = JSON.parse(actionArguments);\n }\n\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"],"mappings":"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","names":["import_graphql_yoga","import_type_graphql","import_type_graphql","import_rxjs","import_type_graphql","import_type_graphql","MessageRole","ActionExecutionScope","registerEnumType","name","description","import_type_graphql","BaseMessage","id","createdAt","Field","String","Date","InputType","MessageInput","BaseMessage","textMessage","actionExecutionMessage","resultMessage","Field","TextMessageInput","nullable","ActionExecutionMessageInput","ResultMessageInput","InputType","content","role","String","MessageRole","name","arguments","scope","ActionExecutionScope","actionExecutionId","actionName","result","import_type_graphql","import_type_graphql","ActionInput","name","description","jsonSchema","Field","String","InputType","FrontendInput","toDeprecate_fullContext","actions","Field","String","nullable","ActionInput","InputType","import_type_graphql","import_type_graphql","GuardrailsRuleInput","id","allowList","denyList","Field","String","nullable","InputType","GuardrailsInput","inputValidationRules","CloudInput","guardrails","Field","GuardrailsInput","InputType","GenerateCopilotResponseInput","threadId","runId","messages","frontend","cloud","Field","String","nullable","MessageInput","FrontendInput","CloudInput","InputType","import_type_graphql","import_type_graphql","MessageStatusCode","registerEnumType","name","BaseMessageStatus","code","Field","ObjectType","PendingMessageStatus","SuccessMessageStatus","FailedMessageStatus","reason","String","MessageStatusUnion","createUnionType","types","import_type_graphql","ResponseStatusCode","registerEnumType","name","BaseResponseStatus","code","Field","InterfaceType","resolveType","value","SuccessResponseStatus","FailedResponseStatus","PendingResponseStatus","undefined","ObjectType","implements","reason","String","ResponseStatusUnion","createUnionType","types","BaseMessageOutput","id","createdAt","status","Field","String","Date","MessageStatusUnion","InterfaceType","resolveType","value","hasOwnProperty","TextMessageOutput","ActionExecutionMessageOutput","ResultMessageOutput","undefined","role","content","MessageRole","ObjectType","implements","name","scope","arguments","ActionExecutionScope","actionExecutionId","actionName","result","CopilotResponse","threadId","runId","messages","ResponseStatusUnion","nullable","RuntimeEventTypes","CopilotResolver","hello","generateCopilotResponse","ctx","data","properties","_copilotkit","copilotRuntime","runtime","serviceAdapter","responseStatus","Subject","eventSource","threadId","nanoid","runId","process","messages","actions","frontend","publicApiKey","undefined","response","status","firstValueFrom","Repeater","pushMessage","stopStreamingMessages","eventStream","pipe","shareReplay","subscribe","next","event","type","RuntimeEventTypes","TextMessageStart","textMessageContentStream","skipWhile","e","takeWhile","TextMessageEnd","streamingTextStatus","id","createdAt","Date","role","MessageRole","assistant","content","pushTextChunk","stopStreamingText","forEach","TextMessageContent","SuccessMessageStatus","ActionExecutionStart","actionExecutionArgumentStream","ActionExecutionEnd","streamingArgumentsStatus","actionExecutionId","name","actionName","scope","arguments","pushArgumentsChunk","stopStreamingArguments","ActionExecutionArgs","args","ActionExecutionResult","result","error","err","console","complete","SuccessResponseStatus","Query","String","Mutation","CopilotResponse","Ctx","Arg","GraphQLJSONObject","nullable","Resolver","createContext","initialContext","copilotKitContext","ctx","_copilotkit","buildSchema","options","schema","buildSchemaSync","resolvers","CopilotResolver","emitSchemaFile","getCommonConfig","plugins","useDeferStream","context","runtime","serviceAdapter","properties","copilotRuntimeNodeHttpEndpoint","runtime","endpoint","serviceAdapter","commonConfig","getCommonConfig","yoga","createYoga","graphqlEndpoint"]}
1
+ {"version":3,"sources":["../../../../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/types/base/index.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/types/copilot-response.type.ts","../../../../src/graphql/types/message-status.type.ts","../../../../src/graphql/types/response-status.type.ts","../../../../src/service-adapters/events.ts","../../../../src/graphql/types/guardrails-result.type.ts","../../../../src/utils/failed-response-status-reasons.ts","../../../../src/lib/logger.ts"],"sourcesContent":["import { createYoga } from \"graphql-yoga\";\nimport { CreateCopilotRuntimeServerOptions, getCommonConfig } from \"../shared\";\n\nexport function copilotRuntimeNodeHttpEndpoint(options: CreateCopilotRuntimeServerOptions) {\n const commonConfig = getCommonConfig(options);\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 \"../copilot-runtime\";\nimport { CopilotServiceAdapter } from \"../../service-adapters\";\nimport { CopilotCloudOptions } from \"../cloud\";\nimport { LogLevel, createLogger } from \"../../lib/logger\";\nimport { createYoga } from \"graphql-yoga\";\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;\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 logger.debug(\"Getting common config\");\n\n const contextLogger = createLogger({ level: logLevel });\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 { nanoid } from \"nanoid\";\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, GuardrailsResultStatus } from \"../types/guardrails-result.type\";\nimport { GraphQLError } from \"graphql\";\nimport {\n GuardrailsValidationFailureResponse,\n MessageStreamInterruptedResponse,\n UnknownErrorResponse,\n} from \"../../utils\";\nimport { CopilotRuntimeLogger } from \"../../lib/logger\";\n\nconst invokeGuardrails = async ({\n baseUrl,\n copilotCloudPublicApiKey,\n data,\n logger,\n onResult,\n}: {\n baseUrl: string;\n copilotCloudPublicApiKey: string;\n data: GenerateCopilotResponseInput;\n logger: CopilotRuntimeLogger;\n onResult: (result: GuardrailsResult) => 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 const responseBody = await guardrailsResult.json();\n\n if (!guardrailsResult.ok) {\n logger.error({ error: responseBody }, \"Failed to invoke guardrails\");\n throw new GraphQLError(\"Failed to invoke guardrails\");\n }\n\n onResult(responseBody);\n } else {\n onResult({ status: GuardrailsResultStatus.ALLOWED });\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 let logger = ctx.logger.child({ component: \"CopilotResolver.generateCopilotResponse\" });\n logger.debug({ data }, \"Generating Copilot response\");\n\n const copilotRuntime = ctx._copilotkit.runtime;\n const serviceAdapter = ctx._copilotkit.serviceAdapter;\n\n if (properties) {\n logger.debug(\"Properties provided, merging with context properties\");\n ctx.properties = { ...ctx.properties, ...properties };\n }\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.baseUrl) {\n copilotCloudBaseUrl = ctx._copilotkit.baseUrl;\n } else {\n copilotCloudBaseUrl = \"https://api.cloud.copilotkit.ai\";\n }\n\n logger = logger.child({ copilotCloudBaseUrl });\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 logger.debug(\"Processing\");\n const {\n eventSource,\n threadId = nanoid(),\n runId,\n actions,\n } = await copilotRuntime.process({\n serviceAdapter,\n messages: data.messages,\n actions: data.frontend.actions,\n threadId: data.threadId,\n runId: data.runId,\n publicApiKey: undefined,\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 logger,\n onResult: (result) => {\n logger.debug({ status: result.status }, \"Guardrails validation done\");\n guardrailsResult$.next(result);\n if (result.status === \"denied\") {\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 },\n });\n }\n\n let eventStreamSubscription: Subscription;\n\n // run and process the event stream\n const eventStream = eventSource\n .process({\n serversideActions: copilotRuntime.actions,\n guardrailsResult$: data.cloud?.guardrails ? guardrailsResult$ : null,\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, stopping streaming messages\");\n stopStreamingMessages();\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 = nanoid();\n\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 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 }\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 });\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 let actionExecutionArgumentSubscription: Subscription;\n actionExecutionArgumentSubscription = actionExecutionArgumentStream.subscribe({\n next: async (e: RuntimeEvent) => {\n if (e.type == RuntimeEventTypes.ActionExecutionArgs) {\n await pushArgumentsChunk(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 });\n }),\n });\n break;\n ////////////////////////////////\n // ActionExecutionResult\n ////////////////////////////////\n case RuntimeEventTypes.ActionExecutionResult:\n logger.debug(\"Action execution result event received\");\n pushMessage({\n id: nanoid(),\n status: new SuccessMessageStatus(),\n createdAt: new Date(),\n actionExecutionId: event.actionExecutionId,\n actionName: event.actionName,\n result: event.result,\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 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 });\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\";\n\n@InputType()\nexport class GenerateCopilotResponseInput {\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","import { Field, InputType } from \"type-graphql\";\nimport { MessageRole, ActionExecutionScope } from \"../types/enums\";\nimport { BaseMessage } 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 BaseMessage {\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\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","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}\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","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessage {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\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","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: true })\n inputValidationRules: GuardrailsRuleInput = { allowList: [], denyList: [] };\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 }\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()\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 { GraphQLJSON } from \"graphql-scalars\";\nimport { Field, InterfaceType, ObjectType, createUnionType, registerEnumType } from \"type-graphql\";\n\nexport enum ResponseStatusCode {\n Pending = \"pending\",\n Success = \"success\",\n Failed = \"failed\",\n}\n\nregisterEnumType(ResponseStatusCode, {\n name: \"ResponseStatusCode\",\n});\n\n@InterfaceType({\n resolveType(value) {\n if (value.code === ResponseStatusCode.Success) {\n return SuccessResponseStatus;\n } else if (value.code === ResponseStatusCode.Failed) {\n return FailedResponseStatus;\n } else if (value.code === ResponseStatusCode.Pending) {\n return PendingResponseStatus;\n }\n return undefined;\n },\n})\n@ObjectType()\nabstract class BaseResponseStatus {\n @Field(() => ResponseStatusCode)\n code: ResponseStatusCode;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class PendingResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Pending;\n}\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class SuccessResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Success;\n}\n\nexport enum FailedResponseStatusReason {\n GUARDRAILS_VALIDATION_FAILED = \"GUARDRAILS_VALIDATION_FAILED\",\n MESSAGE_STREAM_INTERRUPTED = \"MESSAGE_STREAM_INTERRUPTED\",\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n}\n\nregisterEnumType(FailedResponseStatusReason, {\n name: \"FailedResponseStatusReason\",\n});\n\n@ObjectType({ implements: BaseResponseStatus })\nexport class FailedResponseStatus extends BaseResponseStatus {\n code: ResponseStatusCode = ResponseStatusCode.Failed;\n\n @Field(() => FailedResponseStatusReason)\n reason: FailedResponseStatusReason;\n\n @Field(() => GraphQLJSON, { nullable: true })\n details?: Record<string, any> = null;\n}\n\nexport const ResponseStatusUnion = createUnionType({\n name: \"ResponseStatus\",\n types: () => [PendingResponseStatus, SuccessResponseStatus, FailedResponseStatus] as const,\n});\n","import { Action } from \"@copilotkit/shared\";\nimport { of, concat, map, scan, concatMap, ReplaySubject, Subject, firstValueFrom } from \"rxjs\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\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}\n\ntype FunctionCallScope = \"client\" | \"server\";\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\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\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 process({\n serversideActions,\n guardrailsResult$,\n }: {\n serversideActions: Action<any>[];\n guardrailsResult$?: Subject<GuardrailsResult>;\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 event.scope = serversideActions.find((action) => action.name === event.actionName)\n ? \"server\"\n : \"client\";\n }\n return event;\n }),\n // track state\n scan(\n (acc, event) => {\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 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 ).catch((error) => {\n console.error(error);\n });\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) {\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 // 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","import { Field, ObjectType, registerEnumType } from \"type-graphql\";\n\nexport enum GuardrailsResultStatus {\n ALLOWED = \"allowed\",\n DENIED = \"denied\",\n}\n\nregisterEnumType(GuardrailsResultStatus, {\n name: \"GuardrailsResultStatus\",\n description: \"The status of the guardrails check\",\n});\n\n@ObjectType()\nexport class GuardrailsResult {\n @Field(() => GuardrailsResultStatus)\n status: GuardrailsResultStatus;\n\n @Field(() => String, { nullable: true })\n reason?: string;\n}\n","import {\n FailedResponseStatus,\n FailedResponseStatusReason,\n} from \"../graphql/types/response-status.type\";\n\nexport class GuardrailsValidationFailureResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.GUARDRAILS_VALIDATION_FAILED;\n declare details: {\n guardrailsReason: string;\n };\n\n constructor({ guardrailsReason }) {\n super();\n this.details = {\n guardrailsReason,\n };\n }\n}\n\nexport class MessageStreamInterruptedResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.MESSAGE_STREAM_INTERRUPTED;\n declare details: {\n messageId: string;\n description: string;\n };\n\n constructor({ messageId }: { messageId: string }) {\n super();\n this.details = {\n messageId,\n description: \"Check the message for mode details\",\n };\n }\n}\n\nexport class UnknownErrorResponse extends FailedResponseStatus {\n reason = FailedResponseStatusReason.UNKNOWN_ERROR;\n declare details: {\n description?: string;\n };\n\n constructor({ description }: { description?: string }) {\n super();\n this.details = {\n description,\n };\n }\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":["import_graphql_yoga","import_type_graphql","import_type_graphql","import_rxjs","import_type_graphql","import_type_graphql","MessageRole","ActionExecutionScope","registerEnumType","name","description","import_type_graphql","BaseMessage","id","createdAt","Field","String","Date","InputType","MessageInput","BaseMessage","textMessage","actionExecutionMessage","resultMessage","Field","TextMessageInput","nullable","ActionExecutionMessageInput","ResultMessageInput","InputType","content","role","String","MessageRole","name","arguments","scope","ActionExecutionScope","actionExecutionId","actionName","result","import_type_graphql","import_type_graphql","ActionInput","name","description","jsonSchema","Field","String","InputType","FrontendInput","toDeprecate_fullContext","actions","Field","String","nullable","ActionInput","InputType","import_type_graphql","import_type_graphql","GuardrailsRuleInput","allowList","denyList","Field","String","nullable","InputType","GuardrailsInput","inputValidationRules","CloudInput","guardrails","Field","GuardrailsInput","nullable","InputType","GenerateCopilotResponseInput","threadId","runId","messages","frontend","cloud","Field","String","nullable","MessageInput","FrontendInput","CloudInput","InputType","import_type_graphql","import_type_graphql","MessageStatusCode","registerEnumType","name","BaseMessageStatus","code","Field","ObjectType","PendingMessageStatus","SuccessMessageStatus","FailedMessageStatus","reason","String","MessageStatusUnion","createUnionType","types","import_type_graphql","ResponseStatusCode","registerEnumType","name","BaseResponseStatus","code","Field","InterfaceType","resolveType","value","SuccessResponseStatus","FailedResponseStatus","PendingResponseStatus","undefined","ObjectType","implements","FailedResponseStatusReason","reason","details","GraphQLJSON","nullable","ResponseStatusUnion","createUnionType","types","BaseMessageOutput","id","createdAt","status","Field","String","Date","MessageStatusUnion","InterfaceType","resolveType","value","hasOwnProperty","TextMessageOutput","ActionExecutionMessageOutput","ResultMessageOutput","undefined","role","content","MessageRole","ObjectType","implements","name","scope","arguments","ActionExecutionScope","actionExecutionId","actionName","result","CopilotResponse","threadId","runId","messages","ResponseStatusUnion","nullable","RuntimeEventTypes","import_graphql_scalars","import_type_graphql","GuardrailsResultStatus","registerEnumType","name","description","GuardrailsResult","status","reason","Field","String","nullable","ObjectType","GuardrailsValidationFailureResponse","FailedResponseStatus","reason","FailedResponseStatusReason","GUARDRAILS_VALIDATION_FAILED","constructor","guardrailsReason","details","MessageStreamInterruptedResponse","MESSAGE_STREAM_INTERRUPTED","messageId","description","UnknownErrorResponse","UNKNOWN_ERROR","invokeGuardrails","baseUrl","copilotCloudPublicApiKey","data","logger","onResult","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","responseBody","json","ok","error","GraphQLError","status","GuardrailsResultStatus","ALLOWED","CopilotResolver","hello","generateCopilotResponse","ctx","properties","child","component","debug","copilotRuntime","_copilotkit","runtime","serviceAdapter","copilotCloudBaseUrl","key","request","get","process","env","COPILOT_CLOUD_BASE_URL","responseStatus$","ReplaySubject","interruptStreaming$","guardrailsResult$","eventSource","threadId","nanoid","runId","actions","frontend","publicApiKey","response","firstValueFrom","Repeater","pushMessage","stopStreamingMessages","result","next","GuardrailsValidationFailureResponse","guardrailsReason","reason","eventStreamSubscription","eventStream","serversideActions","pipe","shareReplay","finalize","subscribe","event","type","RuntimeEventTypes","TextMessageStart","textMessageContentStream","skipWhile","e","takeWhile","TextMessageEnd","streamingTextStatus","Subject","messageId","id","createdAt","Date","pushTextChunk","stopStreamingText","textSubscription","take","tap","plainToInstance","FailedMessageStatus","MessageStreamInterruptedResponse","unsubscribe","TextMessageContent","err","complete","SuccessMessageStatus","ActionExecutionStart","actionExecutionArgumentStream","ActionExecutionEnd","streamingArgumentsStatus","actionExecutionId","name","actionName","scope","arguments","pushArgumentsChunk","stopStreamingArguments","actionExecutionArgumentSubscription","ActionExecutionArgs","args","ActionExecutionResult","UnknownErrorResponse","description","SuccessResponseStatus","Query","String","Mutation","CopilotResponse","Ctx","Arg","GraphQLJSONObject","nullable","Resolver","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","logging","plugins","useDeferStream","context","copilotRuntimeNodeHttpEndpoint","options","commonConfig","getCommonConfig","logger","logging","debug","yoga","createYoga","graphqlEndpoint","endpoint"]}
@@ -1,9 +1,11 @@
1
1
  import {
2
2
  copilotRuntimeNodeHttpEndpoint
3
- } from "../../../chunk-XPAUPJMW.mjs";
4
- import "../../../chunk-7IFP53C6.mjs";
5
- import "../../../chunk-BLTAUVRP.mjs";
6
- import "../../../chunk-NFCPM5AM.mjs";
3
+ } from "../../../chunk-EWS5TMDA.mjs";
4
+ import "../../../chunk-FRK6BXXV.mjs";
5
+ import "../../../chunk-BYB2LNMK.mjs";
6
+ import "../../../chunk-OZMCHYYR.mjs";
7
+ import "../../../chunk-6NZ4UMOD.mjs";
8
+ import "../../../chunk-RHQLCJGG.mjs";
7
9
  export {
8
10
  copilotRuntimeNodeHttpEndpoint
9
11
  };
@@ -0,0 +1,21 @@
1
+ import * as graphql_yoga from 'graphql-yoga';
2
+ import { YogaServerInstance } from 'graphql-yoga';
3
+ import { h as CreateCopilotRuntimeServerOptions, G as GraphQLContext } from './index-d5ba24be.js';
4
+
5
+ declare function copilotRuntimeNextJSAppRouterEndpoint(options: CreateCopilotRuntimeServerOptions): {
6
+ handleRequest: graphql_yoga.YogaServerInstance<{}, Partial<GraphQLContext>>;
7
+ GET: any;
8
+ POST: any;
9
+ OPTIONS: any;
10
+ };
11
+
12
+ declare const config: {
13
+ api: {
14
+ bodyParser: boolean;
15
+ };
16
+ };
17
+ type CopilotRuntimeServerInstance<T> = YogaServerInstance<T, Partial<GraphQLContext>>;
18
+
19
+ declare function copilotRuntimeNextJSPagesRouterEndpoint(options: CreateCopilotRuntimeServerOptions): CopilotRuntimeServerInstance<GraphQLContext>;
20
+
21
+ export { CopilotRuntimeServerInstance as C, config as a, copilotRuntimeNextJSPagesRouterEndpoint as b, copilotRuntimeNextJSAppRouterEndpoint as c };
@@ -1,5 +1,5 @@
1
- export { C as CopilotServiceAdapter, R as RemoteChain } from '../langserve-fd5066ee.js';
2
- export { G as GoogleGenerativeAIAdapter, L as LangChainAdapter, a as OpenAIAdapter, c as OpenAIAssistantAdapter } from '../langchain-adapter-9ce103f3.js';
1
+ export { C as CopilotServiceAdapter, d as RemoteChain, R as RemoteChainParameters } from '../langserve-63794237.js';
2
+ export { G as GoogleGenerativeAIAdapter, L as LangChainAdapter, a as OpenAIAdapter, c as OpenAIAssistantAdapter } from '../langchain-adapter-54784d29.js';
3
3
  import '../index-aa091e3c.js';
4
4
  import '../graphql/types/base/index.js';
5
5
  import 'rxjs';
@@ -491,7 +491,7 @@ function convertMessageToGoogleGenAIMessage(message) {
491
491
  };
492
492
  } else if (message instanceof ResultMessage) {
493
493
  return {
494
- role: "model",
494
+ role: "function",
495
495
  parts: [
496
496
  {
497
497
  functionResponse: {
@@ -608,6 +608,9 @@ var GoogleGenerativeAIAdapter = class {
608
608
  let isTextMessage = false;
609
609
  for await (const chunk of result.stream) {
610
610
  const chunkText = chunk.text();
611
+ if (chunkText === "") {
612
+ continue;
613
+ }
611
614
  if (!isTextMessage) {
612
615
  isTextMessage = true;
613
616
  eventStream$.sendTextMessageStart((0, import_nanoid.nanoid)());
@@ -715,6 +718,31 @@ function convertActionInputToLangChainTool(actionInput) {
715
718
  });
716
719
  }
717
720
  __name(convertActionInputToLangChainTool, "convertActionInputToLangChainTool");
721
+ function getConstructorName(object) {
722
+ if (object && typeof object === "object" && object.constructor && object.constructor.name) {
723
+ return object.constructor.name;
724
+ }
725
+ return "";
726
+ }
727
+ __name(getConstructorName, "getConstructorName");
728
+ function isAIMessage(message) {
729
+ return getConstructorName(message) === "AIMessage";
730
+ }
731
+ __name(isAIMessage, "isAIMessage");
732
+ function isAIMessageChunk(message) {
733
+ return getConstructorName(message) === "AIMessageChunk";
734
+ }
735
+ __name(isAIMessageChunk, "isAIMessageChunk");
736
+ function isBaseMessageChunk(message) {
737
+ return getConstructorName(message) === "BaseMessageChunk";
738
+ }
739
+ __name(isBaseMessageChunk, "isBaseMessageChunk");
740
+ function maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution) {
741
+ if (actionExecution) {
742
+ eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, "Sending a message");
743
+ }
744
+ }
745
+ __name(maybeSendActionExecutionResultIsMessage, "maybeSendActionExecutionResultIsMessage");
718
746
  async function streamLangChainResponse({ result, eventStream$, actionExecution }) {
719
747
  var _a, _b, _c, _d, _e, _f, _g, _h;
720
748
  if (typeof result === "string") {
@@ -723,14 +751,16 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
723
751
  } else {
724
752
  eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, result);
725
753
  }
726
- } else if (result instanceof import_messages.AIMessage) {
754
+ } else if (isAIMessage(result)) {
755
+ maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
727
756
  if (result.content) {
728
757
  eventStream$.sendTextMessage((0, import_nanoid2.nanoid)(), result.content);
729
758
  }
730
759
  for (const toolCall of result.tool_calls) {
731
760
  eventStream$.sendActionExecution(toolCall.id || (0, import_nanoid2.nanoid)(), toolCall.name, JSON.stringify(toolCall.args));
732
761
  }
733
- } else if (result instanceof import_messages.BaseMessageChunk) {
762
+ } else if (isBaseMessageChunk(result)) {
763
+ maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
734
764
  if ((_a = result.lc_kwargs) == null ? void 0 : _a.content) {
735
765
  eventStream$.sendTextMessage((0, import_nanoid2.nanoid)(), result.content);
736
766
  }
@@ -739,7 +769,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
739
769
  eventStream$.sendActionExecution(toolCall.id || (0, import_nanoid2.nanoid)(), toolCall.name, JSON.stringify(toolCall.args));
740
770
  }
741
771
  }
742
- } else if ("getReader" in result) {
772
+ } else if (result && "getReader" in result) {
773
+ maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
743
774
  let reader = result.getReader();
744
775
  let mode = null;
745
776
  while (true) {
@@ -749,14 +780,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
749
780
  let toolCallId = void 0;
750
781
  let toolCallArgs = void 0;
751
782
  let hasToolCall = false;
752
- let content = value.content;
753
- if (value instanceof import_messages.AIMessageChunk) {
783
+ let content = value == null ? void 0 : value.content;
784
+ if (isAIMessageChunk(value)) {
754
785
  let chunk = (_d = value.tool_call_chunks) == null ? void 0 : _d[0];
755
786
  toolCallName = chunk == null ? void 0 : chunk.name;
756
787
  toolCallId = chunk == null ? void 0 : chunk.id;
757
788
  toolCallArgs = chunk == null ? void 0 : chunk.args;
758
789
  hasToolCall = chunk != void 0;
759
- } else if (value instanceof import_messages.BaseMessageChunk) {
790
+ } else if (isBaseMessageChunk(value)) {
760
791
  let chunk = (_f = (_e = value.additional_kwargs) == null ? void 0 : _e.tool_calls) == null ? void 0 : _f[0];
761
792
  toolCallName = (_g = chunk == null ? void 0 : chunk.function) == null ? void 0 : _g.name;
762
793
  toolCallId = chunk == null ? void 0 : chunk.id;
@@ -793,13 +824,23 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
793
824
  }
794
825
  }
795
826
  } else if (actionExecution) {
796
- eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, JSON.stringify(result));
827
+ eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, encodeResult(result));
797
828
  } else {
798
829
  throw new Error("Invalid return type from LangChain function.");
799
830
  }
800
831
  eventStream$.complete();
801
832
  }
802
833
  __name(streamLangChainResponse, "streamLangChainResponse");
834
+ function encodeResult(result) {
835
+ if (result === void 0) {
836
+ return "";
837
+ } else if (typeof result === "string") {
838
+ return result;
839
+ } else {
840
+ return JSON.stringify(result);
841
+ }
842
+ }
843
+ __name(encodeResult, "encodeResult");
803
844
 
804
845
  // src/service-adapters/langchain/langchain-adapter.ts
805
846
  var LangChainAdapter = class {
@@ -832,6 +873,11 @@ __name(LangChainAdapter, "LangChainAdapter");
832
873
  // src/service-adapters/langchain/langserve.ts
833
874
  var import_remote = require("langchain/runnables/remote");
834
875
  var RemoteChain = class {
876
+ name;
877
+ description;
878
+ chainUrl;
879
+ parameters;
880
+ parameterType;
835
881
  constructor(options) {
836
882
  this.name = options.name;
837
883
  this.description = options.description;