@copilotkit/runtime 1.7.0-next.0 → 1.7.0-next.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (43) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/README.md +75 -0
  3. package/dist/{chunk-PH24IU7T.mjs → chunk-D6YNY2XB.mjs} +2 -2
  4. package/dist/chunk-PTC5JN3P.mjs +1 -0
  5. package/dist/{chunk-34Y5DNNJ.mjs → chunk-QTRO3GPV.mjs} +120 -5
  6. package/dist/{chunk-34Y5DNNJ.mjs.map → chunk-QTRO3GPV.mjs.map} +1 -1
  7. package/dist/{chunk-2BN7NZNC.mjs → chunk-QZ6X33MR.mjs} +2 -2
  8. package/dist/{chunk-ZYFN76KV.mjs → chunk-RQS3BGAT.mjs} +2 -2
  9. package/dist/{copilot-runtime-15bfc4f4.d.ts → copilot-runtime-5103c7e7.d.ts} +66 -1
  10. package/dist/index.d.ts +1 -1
  11. package/dist/index.js +120 -4
  12. package/dist/index.js.map +1 -1
  13. package/dist/index.mjs +7 -5
  14. package/dist/index.mjs.map +1 -1
  15. package/dist/lib/index.d.ts +1 -1
  16. package/dist/lib/index.js +120 -4
  17. package/dist/lib/index.js.map +1 -1
  18. package/dist/lib/index.mjs +7 -5
  19. package/dist/lib/integrations/index.d.ts +2 -2
  20. package/dist/lib/integrations/index.js +1 -1
  21. package/dist/lib/integrations/index.js.map +1 -1
  22. package/dist/lib/integrations/index.mjs +4 -4
  23. package/dist/lib/integrations/nest/index.d.ts +1 -1
  24. package/dist/lib/integrations/nest/index.js +1 -1
  25. package/dist/lib/integrations/nest/index.js.map +1 -1
  26. package/dist/lib/integrations/nest/index.mjs +2 -2
  27. package/dist/lib/integrations/node-express/index.d.ts +1 -1
  28. package/dist/lib/integrations/node-express/index.js +1 -1
  29. package/dist/lib/integrations/node-express/index.js.map +1 -1
  30. package/dist/lib/integrations/node-express/index.mjs +2 -2
  31. package/dist/lib/integrations/node-http/index.d.ts +1 -1
  32. package/dist/lib/integrations/node-http/index.js +1 -1
  33. package/dist/lib/integrations/node-http/index.js.map +1 -1
  34. package/dist/lib/integrations/node-http/index.mjs +1 -1
  35. package/package.json +2 -2
  36. package/src/lib/index.ts +1 -0
  37. package/src/lib/logger.ts +48 -0
  38. package/src/lib/runtime/copilot-runtime.ts +162 -2
  39. package/dist/chunk-DFOKBSIS.mjs +0 -1
  40. /package/dist/{chunk-PH24IU7T.mjs.map → chunk-D6YNY2XB.mjs.map} +0 -0
  41. /package/dist/{chunk-DFOKBSIS.mjs.map → chunk-PTC5JN3P.mjs.map} +0 -0
  42. /package/dist/{chunk-2BN7NZNC.mjs.map → chunk-QZ6X33MR.mjs.map} +0 -0
  43. /package/dist/{chunk-ZYFN76KV.mjs.map → chunk-RQS3BGAT.mjs.map} +0 -0
package/dist/index.mjs CHANGED
@@ -1,15 +1,15 @@
1
- import "./chunk-DFOKBSIS.mjs";
1
+ import "./chunk-PTC5JN3P.mjs";
2
2
  import {
3
3
  config,
4
4
  copilotRuntimeNextJSAppRouterEndpoint,
5
5
  copilotRuntimeNextJSPagesRouterEndpoint
6
- } from "./chunk-PH24IU7T.mjs";
6
+ } from "./chunk-D6YNY2XB.mjs";
7
7
  import {
8
8
  copilotRuntimeNestEndpoint
9
- } from "./chunk-2BN7NZNC.mjs";
9
+ } from "./chunk-QZ6X33MR.mjs";
10
10
  import {
11
11
  copilotRuntimeNodeExpressEndpoint
12
- } from "./chunk-ZYFN76KV.mjs";
12
+ } from "./chunk-RQS3BGAT.mjs";
13
13
  import {
14
14
  CopilotRuntime,
15
15
  addCustomHeaderPlugin,
@@ -17,11 +17,12 @@ import {
17
17
  copilotKitEndpoint,
18
18
  copilotRuntimeNodeHttpEndpoint,
19
19
  createContext,
20
+ createLogger,
20
21
  flattenToolCallsNoDuplicates,
21
22
  getCommonConfig,
22
23
  langGraphPlatformEndpoint,
23
24
  resolveEndpointType
24
- } from "./chunk-34Y5DNNJ.mjs";
25
+ } from "./chunk-QTRO3GPV.mjs";
25
26
  import {
26
27
  AnthropicAdapter,
27
28
  EmptyAdapter,
@@ -72,6 +73,7 @@ export {
72
73
  copilotRuntimeNodeExpressEndpoint,
73
74
  copilotRuntimeNodeHttpEndpoint,
74
75
  createContext,
76
+ createLogger,
75
77
  flattenToolCallsNoDuplicates,
76
78
  getCommonConfig,
77
79
  langGraphPlatformEndpoint,
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import \"reflect-metadata\";\nexport * from \"./lib\";\nexport * from \"./utils\";\nexport * from \"./service-adapters\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["import \"reflect-metadata\";\nexport * from \"./lib\";\nexport * from \"./utils\";\nexport * from \"./service-adapters\";\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,OAAO;","names":[]}
@@ -1,4 +1,4 @@
1
- export { i as CommonConfig, d as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, e as CreateCopilotRuntimeServerOptions, G as GraphQLContext, b as addCustomHeaderPlugin, h as buildSchema, c as copilotKitEndpoint, g as createContext, f as flattenToolCallsNoDuplicates, j as getCommonConfig, l as langGraphPlatformEndpoint, r as resolveEndpointType } from '../copilot-runtime-15bfc4f4.js';
1
+ export { i as CommonConfig, q as CopilotLoggerHooks, s as CopilotLoggingConfig, d as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, k as CopilotRuntimeLogger, e as CreateCopilotRuntimeServerOptions, G as GraphQLContext, p as LogLLMErrorData, n as LogLLMRequestData, o as LogLLMResponseData, L as LogLevel, b as addCustomHeaderPlugin, h as buildSchema, c as copilotKitEndpoint, g as createContext, m as createLogger, f as flattenToolCallsNoDuplicates, j as getCommonConfig, l as langGraphPlatformEndpoint, r as resolveEndpointType } from '../copilot-runtime-5103c7e7.js';
2
2
  export { G as GoogleGenerativeAIAdapter, f as GroqAdapter, e as GroqAdapterParams, L as LangChainAdapter, a as OpenAIAdapter, O as OpenAIAdapterParams, c as OpenAIAssistantAdapter, b as OpenAIAssistantAdapterParams, d as UnifyAdapter, U as UnifyAdapterParams } from '../groq-adapter-fb9aa3ab.js';
3
3
  export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './integrations/index.js';
4
4
  export { copilotRuntimeNodeHttpEndpoint } from './integrations/node-http/index.js';
package/dist/lib/index.js CHANGED
@@ -44,7 +44,7 @@ var require_package = __commonJS({
44
44
  publishConfig: {
45
45
  access: "public"
46
46
  },
47
- version: "1.7.0-next.0",
47
+ version: "1.7.0-next.1",
48
48
  sideEffects: false,
49
49
  main: "./dist/index.js",
50
50
  module: "./dist/index.mjs",
@@ -142,6 +142,7 @@ __export(lib_exports, {
142
142
  copilotRuntimeNodeExpressEndpoint: () => copilotRuntimeNodeExpressEndpoint,
143
143
  copilotRuntimeNodeHttpEndpoint: () => copilotRuntimeNodeHttpEndpoint,
144
144
  createContext: () => createContext,
145
+ createLogger: () => createLogger,
145
146
  flattenToolCallsNoDuplicates: () => flattenToolCallsNoDuplicates,
146
147
  getCommonConfig: () => getCommonConfig,
147
148
  langGraphPlatformEndpoint: () => langGraphPlatformEndpoint,
@@ -3672,6 +3673,7 @@ var CopilotRuntime = class {
3672
3673
  onBeforeRequest;
3673
3674
  onAfterRequest;
3674
3675
  delegateAgentProcessingToServiceAdapter;
3676
+ logging;
3675
3677
  constructor(params) {
3676
3678
  var _a, _b;
3677
3679
  if ((params == null ? void 0 : params.actions) && (params == null ? void 0 : params.remoteEndpoints)) {
@@ -3688,11 +3690,14 @@ var CopilotRuntime = class {
3688
3690
  this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
3689
3691
  this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
3690
3692
  this.delegateAgentProcessingToServiceAdapter = (params == null ? void 0 : params.delegateAgentProcessingToServiceAdapter) || false;
3693
+ this.logging = params == null ? void 0 : params.logging;
3691
3694
  }
3692
3695
  async processRuntimeRequest(request) {
3693
- var _a;
3696
+ var _a, _b, _c, _d, _e;
3694
3697
  const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, url, extensions, agentSession, agentStates } = request;
3695
3698
  const eventSource = new RuntimeEventSource();
3699
+ const requestStartTime = Date.now();
3700
+ const streamedChunks = [];
3696
3701
  try {
3697
3702
  if (agentSession && !this.delegateAgentProcessingToServiceAdapter) {
3698
3703
  return await this.processAgentRequest(request);
@@ -3707,6 +3712,23 @@ please use an LLM adapter instead.`
3707
3712
  const messages = rawMessages.filter((message) => !message.agentStateMessage);
3708
3713
  const inputMessages = convertGqlInputToMessages(messages);
3709
3714
  const serverSideActions = await this.getServerSideActions(request);
3715
+ if ((_a = this.logging) == null ? void 0 : _a.enabled) {
3716
+ try {
3717
+ const requestData = {
3718
+ threadId,
3719
+ runId,
3720
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3721
+ messages: inputMessages,
3722
+ actions: clientSideActionsInput,
3723
+ forwardedParameters,
3724
+ timestamp: requestStartTime,
3725
+ provider: this.detectProvider(serviceAdapter)
3726
+ };
3727
+ await this.logging.logger.logRequest(requestData);
3728
+ } catch (error) {
3729
+ console.error("Error logging LLM request:", error);
3730
+ }
3731
+ }
3710
3732
  const serverSideActionsInput = serverSideActions.map((action) => ({
3711
3733
  name: action.name,
3712
3734
  description: action.description,
@@ -3719,7 +3741,7 @@ please use an LLM adapter instead.`
3719
3741
  (action) => action.available !== ActionInputAvailability.remote
3720
3742
  )
3721
3743
  ]);
3722
- await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
3744
+ await ((_b = this.onBeforeRequest) == null ? void 0 : _b.call(this, {
3723
3745
  threadId,
3724
3746
  runId,
3725
3747
  inputMessages,
@@ -3750,6 +3772,69 @@ please use an LLM adapter instead.`
3750
3772
  });
3751
3773
  }).catch((_error) => {
3752
3774
  });
3775
+ if ((_c = this.logging) == null ? void 0 : _c.enabled) {
3776
+ try {
3777
+ outputMessagesPromise.then((outputMessages) => {
3778
+ var _a2;
3779
+ const responseData = {
3780
+ threadId: result.threadId,
3781
+ runId: result.runId,
3782
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3783
+ // Use collected chunks for progressive mode or outputMessages for regular mode
3784
+ output: this.logging.progressive ? streamedChunks : outputMessages,
3785
+ latency: Date.now() - requestStartTime,
3786
+ timestamp: Date.now(),
3787
+ provider: this.detectProvider(serviceAdapter),
3788
+ // Indicate this is the final response
3789
+ isFinalResponse: true
3790
+ };
3791
+ try {
3792
+ (_a2 = this.logging) == null ? void 0 : _a2.logger.logResponse(responseData);
3793
+ } catch (logError) {
3794
+ console.error("Error logging LLM response:", logError);
3795
+ }
3796
+ }).catch((error) => {
3797
+ console.error("Failed to get output messages for logging:", error);
3798
+ });
3799
+ } catch (error) {
3800
+ console.error("Error setting up logging for LLM response:", error);
3801
+ }
3802
+ }
3803
+ if (((_d = this.logging) == null ? void 0 : _d.enabled) && this.logging.progressive) {
3804
+ const originalStream = eventSource.stream.bind(eventSource);
3805
+ eventSource.stream = async (callback) => {
3806
+ await originalStream(async (eventStream$) => {
3807
+ eventStream$.subscribe({
3808
+ next: (event) => {
3809
+ if (event.type === RuntimeEventTypes.TextMessageContent) {
3810
+ streamedChunks.push(event.content);
3811
+ try {
3812
+ const progressiveData = {
3813
+ threadId: threadId || "",
3814
+ runId,
3815
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3816
+ output: event.content,
3817
+ latency: Date.now() - requestStartTime,
3818
+ timestamp: Date.now(),
3819
+ provider: this.detectProvider(serviceAdapter),
3820
+ isProgressiveChunk: true
3821
+ };
3822
+ Promise.resolve().then(() => {
3823
+ var _a2;
3824
+ (_a2 = this.logging) == null ? void 0 : _a2.logger.logResponse(progressiveData);
3825
+ }).catch((error) => {
3826
+ console.error("Error in progressive logging:", error);
3827
+ });
3828
+ } catch (error) {
3829
+ console.error("Error preparing progressive log data:", error);
3830
+ }
3831
+ }
3832
+ }
3833
+ });
3834
+ await callback(eventStream$);
3835
+ });
3836
+ };
3837
+ }
3753
3838
  return {
3754
3839
  threadId: nonEmptyThreadId,
3755
3840
  runId: result.runId,
@@ -3762,6 +3847,22 @@ please use an LLM adapter instead.`
3762
3847
  extensions: result.extensions
3763
3848
  };
3764
3849
  } catch (error) {
3850
+ if ((_e = this.logging) == null ? void 0 : _e.enabled) {
3851
+ try {
3852
+ const errorData = {
3853
+ threadId,
3854
+ runId,
3855
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3856
+ error: error instanceof Error ? error : String(error),
3857
+ timestamp: Date.now(),
3858
+ latency: Date.now() - requestStartTime,
3859
+ provider: this.detectProvider(serviceAdapter)
3860
+ };
3861
+ await this.logging.logger.logError(errorData);
3862
+ } catch (logError) {
3863
+ console.error("Error logging LLM error:", logError);
3864
+ }
3865
+ }
3765
3866
  if (error instanceof import_shared18.CopilotKitError) {
3766
3867
  throw error;
3767
3868
  }
@@ -3847,7 +3948,6 @@ please use an LLM adapter instead.`
3847
3948
  if (!agentWithEndpoint) {
3848
3949
  throw new Error("Agent not found");
3849
3950
  }
3850
- const headers = createHeaders(null, graphqlContext);
3851
3951
  if (agentWithEndpoint.endpoint.type === EndpointType.LangGraphPlatform) {
3852
3952
  const propertyHeaders = graphqlContext.properties.authorization ? {
3853
3953
  authorization: `Bearer ${graphqlContext.properties.authorization}`
@@ -4033,6 +4133,21 @@ please use an LLM adapter instead.`
4033
4133
  ...remoteActions
4034
4134
  ];
4035
4135
  }
4136
+ // Add helper method to detect provider
4137
+ detectProvider(serviceAdapter) {
4138
+ const adapterName = serviceAdapter.constructor.name;
4139
+ if (adapterName.includes("OpenAI"))
4140
+ return "openai";
4141
+ if (adapterName.includes("Anthropic"))
4142
+ return "anthropic";
4143
+ if (adapterName.includes("Google"))
4144
+ return "google";
4145
+ if (adapterName.includes("Groq"))
4146
+ return "groq";
4147
+ if (adapterName.includes("LangChain"))
4148
+ return "langchain";
4149
+ return void 0;
4150
+ }
4036
4151
  };
4037
4152
  __name(CopilotRuntime, "CopilotRuntime");
4038
4153
  function flattenToolCallsNoDuplicates(toolsByPriority) {
@@ -5843,6 +5958,7 @@ __name(copilotRuntimeNestEndpoint, "copilotRuntimeNestEndpoint");
5843
5958
  copilotRuntimeNodeExpressEndpoint,
5844
5959
  copilotRuntimeNodeHttpEndpoint,
5845
5960
  createContext,
5961
+ createLogger,
5846
5962
  flattenToolCallsNoDuplicates,
5847
5963
  getCommonConfig,
5848
5964
  langGraphPlatformEndpoint,