@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.
- package/.turbo/turbo-build.log +69 -54
- package/CHANGELOG.md +11 -0
- package/__snapshots__/schema/schema.graphql +15 -4
- package/dist/{chunk-NFCPM5AM.mjs → chunk-6NZ4UMOD.mjs} +4 -4
- package/dist/chunk-6NZ4UMOD.mjs.map +1 -0
- package/dist/{chunk-2CCVVJDU.mjs → chunk-6OJ47NCG.mjs} +13 -15
- package/dist/chunk-6OJ47NCG.mjs.map +1 -0
- package/dist/chunk-BYB2LNMK.mjs +152 -0
- package/dist/chunk-BYB2LNMK.mjs.map +1 -0
- package/dist/{chunk-XPAUPJMW.mjs → chunk-EWS5TMDA.mjs} +411 -206
- package/dist/chunk-EWS5TMDA.mjs.map +1 -0
- package/dist/{chunk-7IFP53C6.mjs → chunk-FRK6BXXV.mjs} +49 -11
- package/dist/chunk-FRK6BXXV.mjs.map +1 -0
- package/dist/{chunk-BLTAUVRP.mjs → chunk-OZMCHYYR.mjs} +5 -3
- package/dist/{chunk-BLTAUVRP.mjs.map → chunk-OZMCHYYR.mjs.map} +1 -1
- package/dist/chunk-RHQLCJGG.mjs +7 -0
- package/dist/chunk-RHQLCJGG.mjs.map +1 -0
- package/dist/{chunk-5HGYI6EG.mjs → chunk-XI3HBDMA.mjs} +13 -5
- package/dist/chunk-XI3HBDMA.mjs.map +1 -0
- package/dist/{chunk-4UA4RB4C.mjs → chunk-XXYCNRFT.mjs} +12 -10
- package/dist/chunk-XXYCNRFT.mjs.map +1 -0
- package/dist/failed-response-status-reasons-0ab19e06.d.ts +49 -0
- package/dist/graphql/types/base/index.mjs +2 -1
- package/dist/graphql/types/converted/index.mjs +3 -2
- package/dist/{index-f0875df3.d.ts → index-d5ba24be.d.ts} +24 -23
- package/dist/index.d.ts +7 -4
- package/dist/index.js +486 -96
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +16 -7
- package/dist/index.mjs.map +1 -1
- package/dist/{langchain-adapter-9ce103f3.d.ts → langchain-adapter-54784d29.d.ts} +1 -1
- package/dist/{langserve-fd5066ee.d.ts → langserve-63794237.d.ts} +24 -7
- package/dist/lib/cloud/index.d.ts +6 -0
- package/dist/lib/cloud/index.js +18 -0
- package/dist/lib/cloud/index.js.map +1 -0
- package/dist/lib/cloud/index.mjs +1 -0
- package/dist/lib/cloud/index.mjs.map +1 -0
- package/dist/lib/index.d.ts +6 -4
- package/dist/lib/index.js +480 -96
- package/dist/lib/index.js.map +1 -1
- package/dist/lib/index.mjs +9 -7
- package/dist/lib/integrations/index.d.ts +5 -3
- package/dist/lib/integrations/index.js +419 -80
- package/dist/lib/integrations/index.js.map +1 -1
- package/dist/lib/integrations/index.mjs +7 -5
- package/dist/lib/integrations/node-http/index.d.ts +4 -2
- package/dist/lib/integrations/node-http/index.js +409 -68
- package/dist/lib/integrations/node-http/index.js.map +1 -1
- package/dist/lib/integrations/node-http/index.mjs +6 -4
- package/dist/pages-router-d94f01da.d.ts +21 -0
- package/dist/service-adapters/index.d.ts +2 -2
- package/dist/service-adapters/index.js +54 -8
- package/dist/service-adapters/index.js.map +1 -1
- package/dist/service-adapters/index.mjs +5 -4
- package/dist/utils/index.d.ts +1 -0
- package/dist/utils/index.js +174 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/index.mjs +12 -0
- package/dist/utils/index.mjs.map +1 -0
- package/package.json +6 -4
- package/src/graphql/inputs/cloud-guardrails.input.ts +2 -5
- package/src/graphql/inputs/cloud.input.ts +2 -2
- package/src/graphql/resolvers/copilot.resolver.ts +269 -30
- package/src/graphql/types/response-status.type.ts +16 -2
- package/src/index.ts +1 -0
- package/src/lib/cloud/index.ts +4 -0
- package/src/lib/copilot-runtime.ts +13 -37
- package/src/lib/integrations/nextjs/app-router.ts +9 -17
- package/src/lib/integrations/nextjs/pages-router.ts +9 -15
- package/src/lib/integrations/node-http/index.ts +6 -14
- package/src/lib/integrations/shared.ts +37 -17
- package/src/lib/logger.ts +28 -0
- package/src/service-adapters/events.ts +20 -2
- package/src/service-adapters/google/google-genai-adapter.ts +3 -0
- package/src/service-adapters/google/utils.ts +1 -1
- package/src/service-adapters/index.ts +1 -1
- package/src/service-adapters/langchain/langserve.ts +10 -4
- package/src/service-adapters/langchain/utils.ts +58 -9
- package/src/utils/failed-response-status-reasons.ts +48 -0
- package/src/utils/index.ts +1 -0
- package/dist/chunk-2CCVVJDU.mjs.map +0 -1
- package/dist/chunk-4UA4RB4C.mjs.map +0 -1
- package/dist/chunk-5HGYI6EG.mjs.map +0 -1
- package/dist/chunk-7IFP53C6.mjs.map +0 -1
- package/dist/chunk-NFCPM5AM.mjs.map +0 -1
- package/dist/chunk-XPAUPJMW.mjs.map +0 -1
- package/dist/pages-router-b6bc6c60.d.ts +0 -30
- package/src/lib/guardrails.ts +0 -3
|
@@ -0,0 +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/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/service-adapters/events.ts","../src/graphql/types/guardrails-result.type.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\";\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 { 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 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","name","description","MessageInput","BaseMessage","textMessage","actionExecutionMessage","resultMessage","Field","TextMessageInput","nullable","ActionExecutionMessageInput","ResultMessageInput","InputType","content","role","String","MessageRole","name","arguments","scope","ActionExecutionScope","actionExecutionId","actionName","result","Field","InputType","Field","InputType","ActionInput","name","description","jsonSchema","Field","String","InputType","FrontendInput","toDeprecate_fullContext","actions","Field","String","nullable","ActionInput","InputType","Field","InputType","Field","InputType","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","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","undefined","role","content","MessageRole","ObjectType","implements","name","scope","arguments","ActionExecutionScope","actionExecutionId","actionName","result","CopilotResponse","threadId","runId","messages","ResponseStatusUnion","nullable","Repeater","nanoid","of","concat","map","scan","concatMap","ReplaySubject","firstValueFrom","RuntimeEventTypes","RuntimeEventSubject","ReplaySubject","constructor","sendTextMessageStart","messageId","next","type","sendTextMessageContent","content","sendTextMessageEnd","sendTextMessage","sendActionExecutionStart","actionExecutionId","actionName","sendActionExecutionArgs","args","sendActionExecutionEnd","sendActionExecution","toolName","sendActionExecutionResult","result","RuntimeEventSource","eventStream$","callback","stream","process","serversideActions","guardrailsResult$","catch","error","console","pipe","map","event","scope","find","action","name","scan","acc","callActionServerSide","concatMap","eventWithState","toolCallEventStream$","executeAction","concat","of","actionArguments","status","firstValueFrom","complete","JSON","parse","handler","streamLangChainResponse","actionExecution","id","GraphQLJSONObject","plainToInstance","Field","ObjectType","registerEnumType","GuardrailsResultStatus","registerEnumType","name","description","GuardrailsResult","status","reason","Field","String","nullable","ObjectType","GraphQLError","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","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","logging","plugins","useDeferStream","context","copilotRuntimeNodeHttpEndpoint","options","commonConfig","getCommonConfig","logger","logging","debug","yoga","createYoga","graphqlEndpoint","endpoint"]}
|
|
@@ -2,13 +2,13 @@ import {
|
|
|
2
2
|
ActionExecutionMessage,
|
|
3
3
|
ResultMessage,
|
|
4
4
|
TextMessage
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-OZMCHYYR.mjs";
|
|
6
6
|
import {
|
|
7
7
|
__name
|
|
8
|
-
} from "./chunk-
|
|
8
|
+
} from "./chunk-RHQLCJGG.mjs";
|
|
9
9
|
|
|
10
10
|
// src/service-adapters/langchain/utils.ts
|
|
11
|
-
import { AIMessage,
|
|
11
|
+
import { AIMessage, HumanMessage, SystemMessage, ToolMessage } from "@langchain/core/messages";
|
|
12
12
|
import { DynamicStructuredTool } from "@langchain/core/tools";
|
|
13
13
|
import { z } from "zod";
|
|
14
14
|
import { nanoid } from "nanoid";
|
|
@@ -75,6 +75,31 @@ function convertActionInputToLangChainTool(actionInput) {
|
|
|
75
75
|
});
|
|
76
76
|
}
|
|
77
77
|
__name(convertActionInputToLangChainTool, "convertActionInputToLangChainTool");
|
|
78
|
+
function getConstructorName(object) {
|
|
79
|
+
if (object && typeof object === "object" && object.constructor && object.constructor.name) {
|
|
80
|
+
return object.constructor.name;
|
|
81
|
+
}
|
|
82
|
+
return "";
|
|
83
|
+
}
|
|
84
|
+
__name(getConstructorName, "getConstructorName");
|
|
85
|
+
function isAIMessage(message) {
|
|
86
|
+
return getConstructorName(message) === "AIMessage";
|
|
87
|
+
}
|
|
88
|
+
__name(isAIMessage, "isAIMessage");
|
|
89
|
+
function isAIMessageChunk(message) {
|
|
90
|
+
return getConstructorName(message) === "AIMessageChunk";
|
|
91
|
+
}
|
|
92
|
+
__name(isAIMessageChunk, "isAIMessageChunk");
|
|
93
|
+
function isBaseMessageChunk(message) {
|
|
94
|
+
return getConstructorName(message) === "BaseMessageChunk";
|
|
95
|
+
}
|
|
96
|
+
__name(isBaseMessageChunk, "isBaseMessageChunk");
|
|
97
|
+
function maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution) {
|
|
98
|
+
if (actionExecution) {
|
|
99
|
+
eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, "Sending a message");
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
__name(maybeSendActionExecutionResultIsMessage, "maybeSendActionExecutionResultIsMessage");
|
|
78
103
|
async function streamLangChainResponse({ result, eventStream$, actionExecution }) {
|
|
79
104
|
var _a, _b, _c, _d, _e, _f, _g, _h;
|
|
80
105
|
if (typeof result === "string") {
|
|
@@ -83,14 +108,16 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
83
108
|
} else {
|
|
84
109
|
eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, result);
|
|
85
110
|
}
|
|
86
|
-
} else if (result
|
|
111
|
+
} else if (isAIMessage(result)) {
|
|
112
|
+
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
87
113
|
if (result.content) {
|
|
88
114
|
eventStream$.sendTextMessage(nanoid(), result.content);
|
|
89
115
|
}
|
|
90
116
|
for (const toolCall of result.tool_calls) {
|
|
91
117
|
eventStream$.sendActionExecution(toolCall.id || nanoid(), toolCall.name, JSON.stringify(toolCall.args));
|
|
92
118
|
}
|
|
93
|
-
} else if (result
|
|
119
|
+
} else if (isBaseMessageChunk(result)) {
|
|
120
|
+
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
94
121
|
if ((_a = result.lc_kwargs) == null ? void 0 : _a.content) {
|
|
95
122
|
eventStream$.sendTextMessage(nanoid(), result.content);
|
|
96
123
|
}
|
|
@@ -99,7 +126,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
99
126
|
eventStream$.sendActionExecution(toolCall.id || nanoid(), toolCall.name, JSON.stringify(toolCall.args));
|
|
100
127
|
}
|
|
101
128
|
}
|
|
102
|
-
} else if ("getReader" in result) {
|
|
129
|
+
} else if (result && "getReader" in result) {
|
|
130
|
+
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
103
131
|
let reader = result.getReader();
|
|
104
132
|
let mode = null;
|
|
105
133
|
while (true) {
|
|
@@ -109,14 +137,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
109
137
|
let toolCallId = void 0;
|
|
110
138
|
let toolCallArgs = void 0;
|
|
111
139
|
let hasToolCall = false;
|
|
112
|
-
let content = value.content;
|
|
113
|
-
if (value
|
|
140
|
+
let content = value == null ? void 0 : value.content;
|
|
141
|
+
if (isAIMessageChunk(value)) {
|
|
114
142
|
let chunk = (_d = value.tool_call_chunks) == null ? void 0 : _d[0];
|
|
115
143
|
toolCallName = chunk == null ? void 0 : chunk.name;
|
|
116
144
|
toolCallId = chunk == null ? void 0 : chunk.id;
|
|
117
145
|
toolCallArgs = chunk == null ? void 0 : chunk.args;
|
|
118
146
|
hasToolCall = chunk != void 0;
|
|
119
|
-
} else if (value
|
|
147
|
+
} else if (isBaseMessageChunk(value)) {
|
|
120
148
|
let chunk = (_f = (_e = value.additional_kwargs) == null ? void 0 : _e.tool_calls) == null ? void 0 : _f[0];
|
|
121
149
|
toolCallName = (_g = chunk == null ? void 0 : chunk.function) == null ? void 0 : _g.name;
|
|
122
150
|
toolCallId = chunk == null ? void 0 : chunk.id;
|
|
@@ -153,17 +181,27 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
153
181
|
}
|
|
154
182
|
}
|
|
155
183
|
} else if (actionExecution) {
|
|
156
|
-
eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name,
|
|
184
|
+
eventStream$.sendActionExecutionResult(actionExecution.id, actionExecution.name, encodeResult(result));
|
|
157
185
|
} else {
|
|
158
186
|
throw new Error("Invalid return type from LangChain function.");
|
|
159
187
|
}
|
|
160
188
|
eventStream$.complete();
|
|
161
189
|
}
|
|
162
190
|
__name(streamLangChainResponse, "streamLangChainResponse");
|
|
191
|
+
function encodeResult(result) {
|
|
192
|
+
if (result === void 0) {
|
|
193
|
+
return "";
|
|
194
|
+
} else if (typeof result === "string") {
|
|
195
|
+
return result;
|
|
196
|
+
} else {
|
|
197
|
+
return JSON.stringify(result);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
__name(encodeResult, "encodeResult");
|
|
163
201
|
|
|
164
202
|
export {
|
|
165
203
|
convertMessageToLangChainMessage,
|
|
166
204
|
convertActionInputToLangChainTool,
|
|
167
205
|
streamLangChainResponse
|
|
168
206
|
};
|
|
169
|
-
//# sourceMappingURL=chunk-
|
|
207
|
+
//# sourceMappingURL=chunk-FRK6BXXV.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 { nanoid } from \"nanoid\";\n\nexport function convertMessageToLangChainMessage(message: Message): BaseMessage {\n if (message instanceof TextMessage) {\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 instanceof ActionExecutionMessage) {\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 instanceof ResultMessage) {\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, false);\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 getConstructorName(message) === \"AIMessage\";\n}\n\nfunction isAIMessageChunk(message: any): message is AIMessageChunk {\n return getConstructorName(message) === \"AIMessageChunk\";\n}\n\nfunction isBaseMessageChunk(message: any): message is BaseMessageChunk {\n return getConstructorName(message) === \"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(nanoid(), 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(nanoid(), result.content as string);\n }\n for (const toolCall of result.tool_calls) {\n eventStream$.sendActionExecution(\n toolCall.id || nanoid(),\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(nanoid(), 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 || nanoid(),\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(nanoid());\n }\n }\n\n // send the content events\n if (mode === \"message\" && content) {\n eventStream$.sendTextMessageContent(content);\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","nanoid","convertMessageToLangChainMessage","message","TextMessage","role","HumanMessage","content","AIMessage","SystemMessage","ActionExecutionMessage","tool_calls","id","args","arguments","name","ResultMessage","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","getConstructorName","constructor","isAIMessage","isAIMessageChunk","isBaseMessageChunk","maybeSendActionExecutionResultIsMessage","eventStream$","actionExecution","sendActionExecutionResult","streamLangChainResponse","sendTextMessage","nanoid","toolCall","sendActionExecution","stringify","lc_kwargs","reader","getReader","mode","done","read","toolCallName","undefined","toolCallId","toolCallArgs","hasToolCall","chunk","tool_call_chunks","additional_kwargs","function","sendTextMessageEnd","sendActionExecutionEnd","sendActionExecutionStart","sendTextMessageStart","sendTextMessageContent","sendActionExecutionArgs","error","console","encodeResult","Error","complete"]}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import {
|
|
2
|
-
BaseMessage
|
|
2
|
+
BaseMessage
|
|
3
|
+
} from "./chunk-6NZ4UMOD.mjs";
|
|
4
|
+
import {
|
|
3
5
|
__name
|
|
4
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-RHQLCJGG.mjs";
|
|
5
7
|
|
|
6
8
|
// src/graphql/types/converted/index.ts
|
|
7
9
|
var TextMessage = class extends BaseMessage {
|
|
@@ -27,4 +29,4 @@ export {
|
|
|
27
29
|
ActionExecutionMessage,
|
|
28
30
|
ResultMessage
|
|
29
31
|
};
|
|
30
|
-
//# sourceMappingURL=chunk-
|
|
32
|
+
//# sourceMappingURL=chunk-OZMCHYYR.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/graphql/types/converted/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessage } from \"../base\";\nimport { ActionExecutionScope, MessageRole } from \"../enums\";\n\nexport class TextMessage extends BaseMessage implements TextMessageInput {\n content: string;\n role: MessageRole;\n}\n\nexport type Message = BaseMessage;\n\nexport class ActionExecutionMessage\n extends BaseMessage\n implements Omit<ActionExecutionMessageInput, \"arguments\">\n{\n name: string;\n arguments: Record<string, any>;\n scope: ActionExecutionScope;\n}\n\nexport class ResultMessage extends BaseMessage implements ResultMessageInput {\n actionExecutionId: string;\n actionName: string;\n result: string;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../src/graphql/types/converted/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessage } from \"../base\";\nimport { ActionExecutionScope, MessageRole } from \"../enums\";\n\nexport class TextMessage extends BaseMessage implements TextMessageInput {\n content: string;\n role: MessageRole;\n}\n\nexport type Message = BaseMessage;\n\nexport class ActionExecutionMessage\n extends BaseMessage\n implements Omit<ActionExecutionMessageInput, \"arguments\">\n{\n name: string;\n arguments: Record<string, any>;\n scope: ActionExecutionScope;\n}\n\nexport class ResultMessage extends BaseMessage implements ResultMessageInput {\n actionExecutionId: string;\n actionName: string;\n result: string;\n}\n"],"mappings":";;;;;;;;AAQO,IAAMA,cAAN,cAA0BC,YAAAA;EAC/BC;EACAC;AACF;AAHaH;AAON,IAAMI,yBAAN,cACGH,YAAAA;EAGRI;EACAC;EACAC;AACF;AAPaH;AASN,IAAMI,gBAAN,cAA4BP,YAAAA;EACjCQ;EACAC;EACAC;AACF;AAJaH;","names":["TextMessage","BaseMessage","content","role","ActionExecutionMessage","name","arguments","scope","ResultMessage","actionExecutionId","actionName","result"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -2,15 +2,15 @@ import {
|
|
|
2
2
|
convertActionInputToLangChainTool,
|
|
3
3
|
convertMessageToLangChainMessage,
|
|
4
4
|
streamLangChainResponse
|
|
5
|
-
} from "./chunk-
|
|
5
|
+
} from "./chunk-FRK6BXXV.mjs";
|
|
6
6
|
import {
|
|
7
7
|
ActionExecutionMessage,
|
|
8
8
|
ResultMessage,
|
|
9
9
|
TextMessage
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-OZMCHYYR.mjs";
|
|
11
11
|
import {
|
|
12
12
|
__name
|
|
13
|
-
} from "./chunk-
|
|
13
|
+
} from "./chunk-RHQLCJGG.mjs";
|
|
14
14
|
|
|
15
15
|
// src/service-adapters/openai/openai-adapter.ts
|
|
16
16
|
import OpenAI from "openai";
|
|
@@ -411,7 +411,7 @@ function convertMessageToGoogleGenAIMessage(message) {
|
|
|
411
411
|
};
|
|
412
412
|
} else if (message instanceof ResultMessage) {
|
|
413
413
|
return {
|
|
414
|
-
role: "
|
|
414
|
+
role: "function",
|
|
415
415
|
parts: [
|
|
416
416
|
{
|
|
417
417
|
functionResponse: {
|
|
@@ -528,6 +528,9 @@ var GoogleGenerativeAIAdapter = class {
|
|
|
528
528
|
let isTextMessage = false;
|
|
529
529
|
for await (const chunk of result.stream) {
|
|
530
530
|
const chunkText = chunk.text();
|
|
531
|
+
if (chunkText === "") {
|
|
532
|
+
continue;
|
|
533
|
+
}
|
|
531
534
|
if (!isTextMessage) {
|
|
532
535
|
isTextMessage = true;
|
|
533
536
|
eventStream$.sendTextMessageStart(nanoid());
|
|
@@ -598,6 +601,11 @@ __name(LangChainAdapter, "LangChainAdapter");
|
|
|
598
601
|
// src/service-adapters/langchain/langserve.ts
|
|
599
602
|
import { RemoteRunnable } from "langchain/runnables/remote";
|
|
600
603
|
var RemoteChain = class {
|
|
604
|
+
name;
|
|
605
|
+
description;
|
|
606
|
+
chainUrl;
|
|
607
|
+
parameters;
|
|
608
|
+
parameterType;
|
|
601
609
|
constructor(options) {
|
|
602
610
|
this.name = options.name;
|
|
603
611
|
this.description = options.description;
|
|
@@ -675,4 +683,4 @@ export {
|
|
|
675
683
|
LangChainAdapter,
|
|
676
684
|
RemoteChain
|
|
677
685
|
};
|
|
678
|
-
//# sourceMappingURL=chunk-
|
|
686
|
+
//# sourceMappingURL=chunk-XI3HBDMA.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/service-adapters/openai/openai-adapter.ts","../src/service-adapters/openai/utils.ts","../src/service-adapters/openai/openai-assistant-adapter.ts","../src/service-adapters/google/google-genai-adapter.ts","../src/service-adapters/google/utils.ts","../src/service-adapters/langchain/langchain-adapter.ts","../src/service-adapters/langchain/langserve.ts"],"sourcesContent":["/**\n * CopilotRuntime Adapter for OpenAI.\n *\n * <RequestExample>\n * ```jsx CopilotRuntime Example\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(req, new OpenAIAdapter());\n * ```\n * </RequestExample>\n *\n * You can easily set the model to use by passing it to the constructor.\n * ```jsx\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(\n * req,\n * new OpenAIAdapter({ model: \"gpt-4o\" }),\n * );\n * ```\n *\n * To use your custom OpenAI instance, pass the `openai` property.\n * ```jsx\n * const openai = new OpenAI({\n * organization: \"your-organization-id\",\n * apiKey: \"your-api-key\"\n * });\n *\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(\n * req,\n * new OpenAIAdapter({ openai }),\n * );\n * ```\n *\n */\nimport OpenAI from \"openai\";\nimport {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToOpenAITool,\n convertMessageToOpenAIMessage,\n limitMessagesToTokenCount,\n} from \"./utils\";\n\nconst DEFAULT_MODEL = \"gpt-4o\";\n\nexport interface OpenAIAdapterParams {\n /**\n * An optional OpenAI instance to use.\n */\n openai?: OpenAI;\n\n /**\n * The model to use.\n */\n model?: string;\n}\n\nexport class OpenAIAdapter implements CopilotServiceAdapter {\n private model: string = DEFAULT_MODEL;\n\n private _openai: OpenAI;\n public get openai(): OpenAI {\n return this._openai;\n }\n\n constructor(params?: OpenAIAdapterParams) {\n this._openai = params?.openai || new OpenAI({});\n if (params?.model) {\n this.model = params.model;\n }\n }\n\n async process({\n model = this.model,\n messages,\n actions,\n eventSource,\n }: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse> {\n const tools = actions.map(convertActionInputToOpenAITool);\n\n let openaiMessages = messages.map(convertMessageToOpenAIMessage);\n openaiMessages = limitMessagesToTokenCount(openaiMessages, tools, model);\n\n const stream = this.openai.beta.chat.completions.stream({\n model: model,\n stream: true,\n messages: openaiMessages,\n ...(tools.length > 0 && { tools }),\n });\n\n eventSource.stream(async (eventStream$) => {\n let mode: \"function\" | \"message\" | null = null;\n for await (const chunk of stream) {\n const toolCall = chunk.choices[0].delta.tool_calls?.[0];\n const content = chunk.choices[0].delta.content;\n\n // When switching from message to function or vice versa,\n // send the respective end event.\n // If toolCall?.id is defined, it means a new tool call starts.\n if (mode === \"message\" && toolCall?.id) {\n mode = null;\n eventStream$.sendTextMessageEnd();\n } else if (mode === \"function\" && (toolCall === undefined || toolCall?.id)) {\n mode = null;\n eventStream$.sendActionExecutionEnd();\n }\n\n // If we send a new message type, send the appropriate start event.\n if (mode === null) {\n if (toolCall?.id) {\n mode = \"function\";\n eventStream$.sendActionExecutionStart(toolCall!.id, toolCall!.function!.name);\n } else if (content) {\n mode = \"message\";\n eventStream$.sendTextMessageStart(chunk.id);\n }\n }\n\n // send the content events\n if (mode === \"message\" && content) {\n eventStream$.sendTextMessageContent(content);\n } else if (mode === \"function\" && toolCall?.function?.arguments) {\n eventStream$.sendActionExecutionArgs(toolCall.function.arguments);\n }\n }\n\n // send the end events\n if (mode === \"message\") {\n eventStream$.sendTextMessageEnd();\n } else if (mode === \"function\") {\n eventStream$.sendActionExecutionEnd();\n }\n\n eventStream$.complete();\n });\n\n return {};\n }\n}\n","import {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n} from \"../../graphql/types/converted\";\nimport { Tiktoken, TiktokenModel, encodingForModel } from \"js-tiktoken\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { ChatCompletionMessageParam, ChatCompletionTool } from \"openai/resources\";\n\nexport function limitMessagesToTokenCount(\n messages: any[],\n tools: any[],\n model: string,\n maxTokens?: number,\n): any[] {\n maxTokens ||= maxTokensForOpenAIModel(model);\n\n const result: any[] = [];\n const toolsNumTokens = countToolsTokens(model, tools);\n if (toolsNumTokens > maxTokens) {\n throw new Error(`Too many tokens in function definitions: ${toolsNumTokens} > ${maxTokens}`);\n }\n maxTokens -= toolsNumTokens;\n\n for (const message of messages) {\n if (message.role === \"system\") {\n const numTokens = countMessageTokens(model, message);\n maxTokens -= numTokens;\n\n if (maxTokens < 0) {\n throw new Error(\"Not enough tokens for system message.\");\n }\n }\n }\n\n let cutoff: boolean = false;\n\n const reversedMessages = [...messages].reverse();\n for (const message of reversedMessages) {\n if (message.role === \"system\") {\n result.unshift(message);\n continue;\n } else if (cutoff) {\n continue;\n }\n let numTokens = countMessageTokens(model, message);\n if (maxTokens < numTokens) {\n cutoff = true;\n continue;\n }\n result.unshift(message);\n maxTokens -= numTokens;\n }\n\n return result;\n}\n\nexport function maxTokensForOpenAIModel(model: string): number {\n return maxTokensByModel[model] || DEFAULT_MAX_TOKENS;\n}\n\nconst DEFAULT_MAX_TOKENS = 128000;\n\nconst maxTokensByModel: { [key: string]: number } = {\n // GPT-4\n \"gpt-4o\": 128000,\n \"gpt-4o-2024-05-13\": 128000,\n \"gpt-4-turbo\": 128000,\n \"gpt-4-turbo-2024-04-09\": 128000,\n \"gpt-4-0125-preview\": 128000,\n \"gpt-4-turbo-preview\": 128000,\n \"gpt-4-1106-preview\": 128000,\n \"gpt-4-vision-preview\": 128000,\n \"gpt-4-1106-vision-preview\": 128000,\n \"gpt-4-32k\": 32768,\n \"gpt-4-32k-0613\": 32768,\n \"gpt-4-32k-0314\": 32768,\n \"gpt-4\": 8192,\n \"gpt-4-0613\": 8192,\n \"gpt-4-0314\": 8192,\n\n // GPT-3.5\n \"gpt-3.5-turbo-0125\": 16385,\n \"gpt-3.5-turbo\": 16385,\n \"gpt-3.5-turbo-1106\": 16385,\n \"gpt-3.5-turbo-instruct\": 4096,\n \"gpt-3.5-turbo-16k\": 16385,\n \"gpt-3.5-turbo-0613\": 4096,\n \"gpt-3.5-turbo-16k-0613\": 16385,\n \"gpt-3.5-turbo-0301\": 4097,\n};\n\nfunction countToolsTokens(model: string, tools: any[]): number {\n if (tools.length === 0) {\n return 0;\n }\n const json = JSON.stringify(tools);\n return countTokens(model, json);\n}\n\nfunction countMessageTokens(model: string, message: any): number {\n return countTokens(model, message.content || \"\");\n}\n\nfunction countTokens(model: string, text: string): number {\n let enc: Tiktoken;\n try {\n enc = encodingForModel(model as TiktokenModel);\n } catch (e) {\n enc = encodingForModel(\"gpt-4\");\n }\n return enc.encode(text).length;\n}\n\nexport function convertActionInputToOpenAITool(action: ActionInput): ChatCompletionTool {\n return {\n type: \"function\",\n function: {\n name: action.name,\n description: action.description,\n parameters: JSON.parse(action.jsonSchema),\n },\n };\n}\n\nexport function convertMessageToOpenAIMessage(message: Message): ChatCompletionMessageParam {\n if (message instanceof TextMessage) {\n return {\n role: message.role,\n content: message.content,\n };\n } else if (message instanceof ActionExecutionMessage) {\n return {\n role: \"assistant\",\n tool_calls: [\n {\n id: message.id,\n type: \"function\",\n function: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n },\n },\n ],\n };\n } else if (message instanceof ResultMessage) {\n return {\n role: \"tool\",\n content: message.result,\n tool_call_id: message.actionExecutionId,\n };\n }\n}\n\nexport function convertSystemMessageToAssistantAPI(message: ChatCompletionMessageParam) {\n return {\n ...message,\n ...(message.role === \"system\" && {\n role: \"assistant\",\n content: \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content,\n }),\n };\n}\n","/**\n * CopilotKit Adapter for the OpenAI Assistant API.\n *\n * Use this adapter to get responses from the OpenAI Assistant API.\n *\n * <RequestExample>\n * ```typescript\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(\n * req,\n * new OpenAIAssistantAdapter({\n * assistantId: \"your-assistant-id\"\n * })\n * );\n * ```\n * </RequestExample>\n */\nimport OpenAI from \"openai\";\nimport {\n CopilotServiceAdapter,\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { Message, ResultMessage, TextMessage } from \"../../graphql/types/converted\";\nimport {\n convertActionInputToOpenAITool,\n convertMessageToOpenAIMessage,\n convertSystemMessageToAssistantAPI,\n} from \"./utils\";\nimport { RunSubmitToolOutputsStreamParams } from \"openai/resources/beta/threads/runs/runs\";\nimport { AssistantStream } from \"openai/lib/AssistantStream\";\nimport { RuntimeEventSource } from \"../events\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\nimport { AssistantStreamEvent, AssistantTool } from \"openai/resources/beta/assistants\";\n\nexport interface OpenAIAssistantAdapterParams {\n /**\n * The ID of the assistant to use.\n */\n assistantId: string;\n\n /**\n * An instance of `OpenAI` to use for the request. If not provided, a new instance will be created.\n */\n openai?: OpenAI;\n\n /**\n * Whether to enable the code interpreter. Defaults to `true`.\n */\n codeInterpreterEnabled?: boolean;\n\n /**\n * Whether to enable retrieval. Defaults to `true`.\n */\n fileSearchEnabled?: boolean;\n}\n\nexport class OpenAIAssistantAdapter implements CopilotServiceAdapter {\n private openai: OpenAI;\n private codeInterpreterEnabled: boolean;\n private assistantId: string;\n private fileSearchEnabled: boolean;\n\n constructor(params: OpenAIAssistantAdapterParams) {\n this.openai = params.openai || new OpenAI({});\n this.codeInterpreterEnabled = params.codeInterpreterEnabled === false || true;\n this.fileSearchEnabled = params.fileSearchEnabled === false || true;\n this.assistantId = params.assistantId;\n }\n\n async process({\n messages,\n actions,\n eventSource,\n threadId,\n runId,\n }: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse> {\n // if we don't have a threadId, create a new thread\n threadId ||= (await this.openai.beta.threads.create()).id;\n const lastMessage = messages.at(-1);\n\n let nextRunId: string | undefined = undefined;\n\n // submit function outputs\n if (lastMessage instanceof ResultMessage && runId) {\n nextRunId = await this.submitToolOutputs(threadId, runId, messages, eventSource);\n }\n // submit user message\n else if (lastMessage instanceof TextMessage) {\n nextRunId = await this.submitUserMessage(threadId, messages, actions, eventSource);\n }\n // unsupported message\n else {\n throw new Error(\"No actionable message found in the messages\");\n }\n\n return {\n threadId,\n runId: nextRunId,\n };\n }\n\n private async submitToolOutputs(\n threadId: string,\n runId: string,\n messages: Message[],\n eventSource: RuntimeEventSource,\n ) {\n let run = await this.openai.beta.threads.runs.retrieve(threadId, runId);\n if (!run.required_action) {\n throw new Error(\"No tool outputs required\");\n }\n\n // get the required tool call ids\n const toolCallsIds = run.required_action.submit_tool_outputs.tool_calls.map(\n (toolCall) => toolCall.id,\n );\n\n // search for these tool calls\n const resultMessages = messages.filter(\n (message) =>\n message instanceof ResultMessage && toolCallsIds.includes(message.actionExecutionId),\n ) as ResultMessage[];\n\n if (toolCallsIds.length != resultMessages.length) {\n throw new Error(\"Number of function results does not match the number of tool calls\");\n }\n\n // submit the tool outputs\n const toolOutputs: RunSubmitToolOutputsStreamParams.ToolOutput[] = resultMessages.map(\n (message) => {\n return {\n tool_call_id: message.actionExecutionId,\n output: message.result,\n };\n },\n );\n\n const stream = this.openai.beta.threads.runs.submitToolOutputsStream(threadId, runId, {\n tool_outputs: toolOutputs,\n });\n\n await this.streamResponse(stream, eventSource);\n return runId;\n }\n\n private async submitUserMessage(\n threadId: string,\n messages: Message[],\n actions: ActionInput[],\n eventSource: RuntimeEventSource,\n ) {\n messages = [...messages];\n\n // get the instruction message\n const instructionsMessage = messages.shift();\n const instructions =\n instructionsMessage instanceof TextMessage ? instructionsMessage.content : \"\";\n\n // get the latest user message\n const userMessage = messages\n .map(convertMessageToOpenAIMessage)\n .map(convertSystemMessageToAssistantAPI)\n .at(-1);\n\n if (userMessage.role !== \"user\") {\n throw new Error(\"No user message found\");\n }\n\n // create a new message on the thread\n await this.openai.beta.threads.messages.create(threadId, {\n role: \"user\",\n content: userMessage.content,\n });\n\n const openaiTools = actions.map(convertActionInputToOpenAITool);\n\n const tools = [\n ...openaiTools,\n ...(this.codeInterpreterEnabled ? [{ type: \"code_interpreter\" } as AssistantTool] : []),\n ...(this.fileSearchEnabled ? [{ type: \"file_search\" } as AssistantTool] : []),\n ];\n\n // run the thread\n let stream = this.openai.beta.threads.runs.stream(threadId, {\n assistant_id: this.assistantId,\n instructions,\n tools: tools,\n });\n\n await this.streamResponse(stream, eventSource);\n\n return getRunIdFromStream(stream);\n }\n\n private async streamResponse(stream: AssistantStream, eventSource: RuntimeEventSource) {\n eventSource.stream(async (eventStream$) => {\n let inFunctionCall = false;\n\n for await (const chunk of stream) {\n switch (chunk.event) {\n case \"thread.message.created\":\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd();\n }\n eventStream$.sendTextMessageStart(chunk.data.id);\n break;\n case \"thread.message.delta\":\n if (chunk.data.delta.content?.[0].type === \"text\") {\n eventStream$.sendTextMessageContent(chunk.data.delta.content?.[0].text.value);\n }\n break;\n case \"thread.message.completed\":\n eventStream$.sendTextMessageEnd();\n break;\n case \"thread.run.step.delta\":\n let toolCallId: string | undefined;\n let toolCallName: string | undefined;\n let toolCallArgs: string | undefined;\n if (\n chunk.data.delta.step_details.type === \"tool_calls\" &&\n chunk.data.delta.step_details.tool_calls?.[0].type === \"function\"\n ) {\n toolCallId = chunk.data.delta.step_details.tool_calls?.[0].id;\n toolCallName = chunk.data.delta.step_details.tool_calls?.[0].function.name;\n toolCallArgs = chunk.data.delta.step_details.tool_calls?.[0].function.arguments;\n }\n\n if (toolCallName && toolCallId) {\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd();\n }\n inFunctionCall = true;\n eventStream$.sendActionExecutionStart(toolCallId, toolCallName);\n } else if (toolCallArgs) {\n eventStream$.sendActionExecutionArgs(toolCallArgs);\n }\n break;\n }\n }\n if (inFunctionCall) {\n eventStream$.sendActionExecutionEnd();\n }\n eventStream$.complete();\n });\n }\n}\n\nfunction getRunIdFromStream(stream: AssistantStream): Promise<string> {\n return new Promise<string>((resolve, reject) => {\n let runIdGetter = (event: AssistantStreamEvent) => {\n if (event.event === \"thread.run.created\") {\n const runId = event.data.id;\n stream.off(\"event\", runIdGetter);\n resolve(runId);\n }\n };\n stream.on(\"event\", runIdGetter);\n });\n}\n","/**\n * CopilotKit Adapter for Google Gemini\n *\n * Use this adapter for a Google Gemini backend.\n *\n * <RequestExample>\n * ```typescript\n * const copilotKit = new CopilotRuntime();\n * return copilotKit.response(\n * req,\n * new GoogleGenerativeAIAdapter()\n * );\n * ```\n * </RequestExample>\n *\n * To set up a different model, pass the model prop:\n *\n * ```typescript\n * const copilotKit = new CopilotRuntime();\n * const genAI = new GoogleGenerativeAI(\n * process.env[\"GOOGLE_API_KEY\"]!\n * );\n * const model = genAI.getGenerativeModel(\n * { model: \"gemini-pro\" }\n * );\n * return copilotKit.response(\n * req,\n * new GoogleGenerativeAIAdapter()\n * );\n * ```\n */\nimport { CopilotServiceAdapter } from \"../service-adapter\";\nimport {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport { GenerativeModel, GoogleGenerativeAI } from \"@google/generative-ai\";\nimport { TextMessage } from \"../../graphql/types/converted\";\nimport { convertMessageToGoogleGenAIMessage, transformActionToGoogleGenAITool } from \"./utils\";\nimport { nanoid } from \"nanoid\";\n\ninterface GoogleGenerativeAIAdapterOptions {\n /**\n * A custom `GenerativeModel` to use for the request.\n */\n model?: GenerativeModel;\n}\n\nexport class GoogleGenerativeAIAdapter implements CopilotServiceAdapter {\n private model: GenerativeModel;\n\n constructor(options?: GoogleGenerativeAIAdapterOptions) {\n if (options?.model) {\n this.model = options.model;\n } else {\n const genAI = new GoogleGenerativeAI(process.env[\"GOOGLE_API_KEY\"]!);\n this.model = genAI.getGenerativeModel({ model: \"gemini-pro\" });\n }\n }\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n const { messages, actions, eventSource } = request;\n\n // get the history (everything except the first and last message)\n const history = messages.slice(1, -1).map(convertMessageToGoogleGenAIMessage);\n\n // get the current message (the last message)\n const currentMessage = convertMessageToGoogleGenAIMessage(messages.at(-1));\n if (!currentMessage) {\n throw new Error(\"No current message\");\n }\n\n let systemMessage: string;\n const firstMessage = messages.at(0);\n if (firstMessage instanceof TextMessage && firstMessage.role === \"system\") {\n systemMessage = firstMessage.content.trim();\n } else {\n throw new Error(\"First message is not a system message\");\n }\n\n const tools = actions.map(transformActionToGoogleGenAITool);\n\n const isFirstGenGeminiPro =\n this.model.model === \"gemini-pro\" || this.model.model === \"models/gemini-pro\";\n\n const chat = this.model.startChat({\n history: [\n ...history,\n // gemini-pro does not support system instructions, so we need to add them to the history\n ...(isFirstGenGeminiPro ? [{ role: \"user\", parts: [{ text: systemMessage }] }] : []),\n ],\n // only gemini-1.5-pro-latest and later supports setting system instructions\n ...(isFirstGenGeminiPro\n ? {}\n : { systemInstruction: { role: \"user\", parts: [{ text: systemMessage }] } }),\n tools,\n });\n\n const result = await chat.sendMessageStream(currentMessage.parts);\n\n eventSource.stream(async (eventStream$) => {\n let isTextMessage = false;\n for await (const chunk of result.stream) {\n const chunkText = chunk.text();\n if (chunkText === \"\") {\n continue;\n }\n if (!isTextMessage) {\n isTextMessage = true;\n eventStream$.sendTextMessageStart(nanoid());\n }\n eventStream$.sendTextMessageContent(chunkText);\n }\n if (isTextMessage) {\n eventStream$.sendTextMessageEnd();\n }\n\n let calls = (await result.response).functionCalls();\n if (calls) {\n for (let call of calls) {\n eventStream$.sendActionExecution(\n nanoid(),\n call.name,\n JSON.stringify(replaceNewlinesInObject(call.args)),\n );\n }\n }\n eventStream$.complete();\n });\n\n return {};\n }\n}\n\nfunction replaceNewlinesInObject(obj: any): any {\n if (typeof obj === \"string\") {\n return obj.replace(/\\\\\\\\n/g, \"\\n\");\n } else if (Array.isArray(obj)) {\n return obj.map(replaceNewlinesInObject);\n } else if (typeof obj === \"object\" && obj !== null) {\n const newObj: any = {};\n for (const key in obj) {\n if (obj.hasOwnProperty(key)) {\n newObj[key] = replaceNewlinesInObject(obj[key]);\n }\n }\n return newObj;\n }\n return obj;\n}\n","import {\n ActionExecutionMessage,\n Message,\n ResultMessage,\n TextMessage,\n} from \"../../graphql/types/converted\";\nimport { Tool } from \"@google/generative-ai\";\nimport { ActionInput } from \"../../graphql/inputs/action.input\";\n\nexport function convertMessageToGoogleGenAIMessage(message: Message) {\n if (message instanceof TextMessage) {\n const role = {\n user: \"user\",\n assistant: \"model\",\n system: \"user\",\n }[message.role];\n\n const text =\n message.role === \"system\"\n ? \"THE FOLLOWING MESSAGE IS A SYSTEM MESSAGE: \" + message.content\n : message.content;\n\n return {\n role,\n parts: [{ text }],\n };\n } else if (message instanceof ActionExecutionMessage) {\n return {\n role: \"model\",\n parts: [\n {\n functionCall: {\n name: message.name,\n args: message.arguments,\n },\n },\n ],\n };\n } else if (message instanceof ResultMessage) {\n return {\n role: \"function\",\n parts: [\n {\n functionResponse: {\n name: message.actionName,\n response: {\n name: message.actionName,\n content: tryParseJson(message.result),\n },\n },\n },\n ],\n };\n }\n}\n\nexport function transformActionToGoogleGenAITool(action: ActionInput): Tool {\n const name = action.name;\n const description = action.description;\n const parameters = JSON.parse(action.jsonSchema);\n\n const transformProperties = (props: any) => {\n for (const key in props) {\n if (props[key].type) {\n props[key].type = props[key].type.toUpperCase();\n }\n if (props[key].properties) {\n transformProperties(props[key].properties);\n }\n }\n };\n transformProperties(parameters);\n\n return {\n functionDeclarations: [\n {\n name,\n description,\n parameters,\n },\n ],\n };\n}\n\nfunction tryParseJson(str?: string) {\n if (!str) {\n return \"\";\n }\n try {\n return JSON.parse(str);\n } catch (e) {\n return str;\n }\n}\n","/**\n * CopilotKit Adapter for LangChain\n *\n * Use this adapter to use LangChain as a backend.\n *\n * ```typescript\n * return copilotKit.response(\n * req,\n * new LangChainAdapter(async (forwardedProps) => {\n * const model = new ChatOpenAI({ modelName: \"gpt-4o\" });\n * return model.stream(forwardedProps.messages, {\n * tools: forwardedProps.tools,\n * });\n * })\n * );\n * ```\n * The async handler function can return:\n *\n * - a simple `string` response\n * - a LangChain stream `IterableReadableStream`\n * - a LangChain `BaseMessageChunk` object\n * - a LangChain `AIMessage` object\n */\n\nimport { BaseMessage } from \"@langchain/core/messages\";\nimport { CopilotServiceAdapter } from \"../service-adapter\";\nimport {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n streamLangChainResponse,\n} from \"./utils\";\nimport { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport { LangChainReturnType } from \"./types\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n constructor(private options: LangChainAdapterOptions) {}\n\n async process({\n eventSource,\n model,\n actions,\n messages,\n threadId,\n runId,\n }: CopilotRuntimeChatCompletionRequest): Promise<CopilotRuntimeChatCompletionResponse> {\n const result = await this.options.chainFn({\n messages: messages.map(convertMessageToLangChainMessage),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {};\n }\n}\n","import { Parameter, Action } from \"@copilotkit/shared\";\nimport { RemoteRunnable } from \"langchain/runnables/remote\";\n\nexport interface RemoteChainParameters {\n name: string;\n description: string;\n chainUrl: string;\n parameters?: Parameter[];\n parameterType?: \"single\" | \"multi\";\n}\n\nexport class RemoteChain {\n name: string;\n description: string;\n chainUrl: string;\n parameters?: Parameter[];\n parameterType: \"single\" | \"multi\";\n\n constructor(options: RemoteChainParameters) {\n this.name = options.name;\n this.description = options.description;\n this.chainUrl = options.chainUrl;\n this.parameters = options.parameters;\n this.parameterType = options.parameterType || \"multi\";\n }\n\n async toAction(): Promise<Action<any>> {\n if (!this.parameters) {\n await this.inferLangServeParameters();\n }\n\n return {\n name: this.name,\n description: this.description,\n parameters: this.parameters!,\n handler: async (args: any) => {\n const runnable = new RemoteRunnable({ url: this.chainUrl });\n let input: any;\n if (this.parameterType === \"single\") {\n input = args[Object.keys(args)[0]];\n } else {\n input = args;\n }\n return await runnable.invoke(input);\n },\n };\n }\n\n async inferLangServeParameters() {\n const supportedTypes = [\"string\", \"number\", \"boolean\"];\n\n let schemaUrl = this.chainUrl.replace(/\\/+$/, \"\") + \"/input_schema\";\n let schema = await fetch(schemaUrl)\n .then((res) => res.json())\n .catch(() => {\n throw new Error(\"Failed to fetch langserve schema at \" + schemaUrl);\n });\n // for now, don't use json schema, just do a simple conversion\n\n if (supportedTypes.includes(schema.type)) {\n this.parameterType = \"single\";\n this.parameters = [\n {\n name: \"input\",\n type: schema.type,\n description: \"The input to the chain\",\n },\n ];\n } else if (schema.type === \"object\") {\n this.parameterType = \"multi\";\n this.parameters = Object.keys(schema.properties).map((key) => {\n let property = schema.properties[key];\n if (!supportedTypes.includes(property.type)) {\n throw new Error(\"Unsupported schema type\");\n }\n return {\n name: key,\n type: property.type,\n description: property.description || \"\",\n required: schema.required?.includes(key) || false,\n };\n });\n } else {\n throw new Error(\"Unsupported schema type\");\n }\n }\n}\n"],"mappings":"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","names":["OpenAI","encodingForModel","limitMessagesToTokenCount","messages","tools","model","maxTokens","maxTokensForOpenAIModel","result","toolsNumTokens","countToolsTokens","Error","message","role","numTokens","countMessageTokens","cutoff","reversedMessages","reverse","unshift","maxTokensByModel","DEFAULT_MAX_TOKENS","length","json","JSON","stringify","countTokens","content","text","enc","encodingForModel","e","encode","convertActionInputToOpenAITool","action","type","function","name","description","parameters","parse","jsonSchema","convertMessageToOpenAIMessage","TextMessage","ActionExecutionMessage","tool_calls","id","arguments","ResultMessage","tool_call_id","actionExecutionId","convertSystemMessageToAssistantAPI","DEFAULT_MODEL","OpenAIAdapter","model","_openai","openai","constructor","params","OpenAI","process","messages","actions","eventSource","tools","map","convertActionInputToOpenAITool","openaiMessages","convertMessageToOpenAIMessage","limitMessagesToTokenCount","stream","beta","chat","completions","length","eventStream$","mode","chunk","toolCall","choices","delta","tool_calls","content","id","sendTextMessageEnd","undefined","sendActionExecutionEnd","sendActionExecutionStart","function","name","sendTextMessageStart","sendTextMessageContent","arguments","sendActionExecutionArgs","complete","OpenAI","OpenAIAssistantAdapter","openai","codeInterpreterEnabled","assistantId","fileSearchEnabled","constructor","params","OpenAI","process","messages","actions","eventSource","threadId","runId","beta","threads","create","id","lastMessage","at","nextRunId","undefined","ResultMessage","submitToolOutputs","TextMessage","submitUserMessage","Error","run","runs","retrieve","required_action","toolCallsIds","submit_tool_outputs","tool_calls","map","toolCall","resultMessages","filter","message","includes","actionExecutionId","length","toolOutputs","tool_call_id","output","result","stream","submitToolOutputsStream","tool_outputs","streamResponse","instructionsMessage","shift","instructions","content","userMessage","convertMessageToOpenAIMessage","convertSystemMessageToAssistantAPI","role","openaiTools","convertActionInputToOpenAITool","tools","type","assistant_id","getRunIdFromStream","eventStream$","inFunctionCall","chunk","event","sendActionExecutionEnd","sendTextMessageStart","data","delta","sendTextMessageContent","text","value","sendTextMessageEnd","toolCallId","toolCallName","toolCallArgs","step_details","function","name","arguments","sendActionExecutionStart","sendActionExecutionArgs","complete","Promise","resolve","reject","runIdGetter","off","on","GoogleGenerativeAI","convertMessageToGoogleGenAIMessage","message","TextMessage","role","user","assistant","system","text","content","parts","ActionExecutionMessage","functionCall","name","args","arguments","ResultMessage","functionResponse","actionName","response","tryParseJson","result","transformActionToGoogleGenAITool","action","description","parameters","JSON","parse","jsonSchema","transformProperties","props","key","type","toUpperCase","properties","functionDeclarations","str","e","nanoid","GoogleGenerativeAIAdapter","model","constructor","options","genAI","GoogleGenerativeAI","process","env","getGenerativeModel","request","messages","actions","eventSource","history","slice","map","convertMessageToGoogleGenAIMessage","currentMessage","at","Error","systemMessage","firstMessage","TextMessage","role","content","trim","tools","transformActionToGoogleGenAITool","isFirstGenGeminiPro","chat","startChat","parts","text","systemInstruction","result","sendMessageStream","stream","eventStream$","isTextMessage","chunk","chunkText","sendTextMessageStart","nanoid","sendTextMessageContent","sendTextMessageEnd","calls","response","functionCalls","call","sendActionExecution","name","JSON","stringify","replaceNewlinesInObject","args","complete","obj","replace","Array","isArray","newObj","key","hasOwnProperty","LangChainAdapter","constructor","options","process","eventSource","model","actions","messages","threadId","runId","result","chainFn","map","convertMessageToLangChainMessage","tools","convertActionInputToLangChainTool","stream","eventStream$","streamLangChainResponse","RemoteRunnable","RemoteChain","name","description","chainUrl","parameters","parameterType","constructor","options","toAction","inferLangServeParameters","handler","args","runnable","RemoteRunnable","url","input","Object","keys","invoke","supportedTypes","schemaUrl","replace","schema","fetch","then","res","json","catch","Error","includes","type","properties","map","key","property","required"]}
|
|
@@ -1,17 +1,17 @@
|
|
|
1
1
|
import {
|
|
2
2
|
RemoteChain
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-XI3HBDMA.mjs";
|
|
4
4
|
import {
|
|
5
5
|
RuntimeEventSource
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-EWS5TMDA.mjs";
|
|
7
7
|
import {
|
|
8
8
|
ActionExecutionMessage,
|
|
9
9
|
ResultMessage,
|
|
10
10
|
TextMessage
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-OZMCHYYR.mjs";
|
|
12
12
|
import {
|
|
13
13
|
__name
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-RHQLCJGG.mjs";
|
|
15
15
|
|
|
16
16
|
// src/lib/copilot-runtime.ts
|
|
17
17
|
import { actionParametersToJsonSchema } from "@copilotkit/shared";
|
|
@@ -126,15 +126,16 @@ var CopilotRuntime = class {
|
|
|
126
126
|
console.error("Error loading langserve chain:", error);
|
|
127
127
|
}
|
|
128
128
|
}
|
|
129
|
-
const
|
|
129
|
+
const actions = [
|
|
130
130
|
...this.actions,
|
|
131
131
|
...langserveFunctions
|
|
132
|
-
]
|
|
132
|
+
];
|
|
133
|
+
const serverSideActionsInput = actions.map((action) => ({
|
|
133
134
|
name: action.name,
|
|
134
135
|
description: action.description,
|
|
135
136
|
jsonSchema: JSON.stringify(actionParametersToJsonSchema(action.parameters))
|
|
136
137
|
}));
|
|
137
|
-
const
|
|
138
|
+
const actionInputs = flattenToolCallsNoDuplicates([
|
|
138
139
|
...serverSideActionsInput,
|
|
139
140
|
...clientSideActionsInput
|
|
140
141
|
]);
|
|
@@ -142,7 +143,7 @@ var CopilotRuntime = class {
|
|
|
142
143
|
const eventSource = new RuntimeEventSource();
|
|
143
144
|
const result = await serviceAdapter.process({
|
|
144
145
|
messages: convertGqlInputToMessages(messages),
|
|
145
|
-
actions,
|
|
146
|
+
actions: actionInputs,
|
|
146
147
|
threadId,
|
|
147
148
|
runId,
|
|
148
149
|
eventSource
|
|
@@ -150,7 +151,8 @@ var CopilotRuntime = class {
|
|
|
150
151
|
return {
|
|
151
152
|
threadId: result.threadId,
|
|
152
153
|
runId: result.runId,
|
|
153
|
-
eventSource
|
|
154
|
+
eventSource,
|
|
155
|
+
actions
|
|
154
156
|
};
|
|
155
157
|
} catch (error) {
|
|
156
158
|
console.error("Error getting response:", error);
|
|
@@ -182,4 +184,4 @@ export {
|
|
|
182
184
|
flattenToolCallsNoDuplicates,
|
|
183
185
|
CopilotBackend
|
|
184
186
|
};
|
|
185
|
-
//# sourceMappingURL=chunk-
|
|
187
|
+
//# sourceMappingURL=chunk-XXYCNRFT.mjs.map
|