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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (40) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/dist/{chunk-RQS3BGAT.mjs → chunk-5PFBYGDX.mjs} +2 -2
  3. package/dist/{chunk-QTRO3GPV.mjs → chunk-ANTSN7W3.mjs} +136 -20
  4. package/dist/chunk-ANTSN7W3.mjs.map +1 -0
  5. package/dist/{chunk-QZ6X33MR.mjs → chunk-LOGYVH7X.mjs} +2 -2
  6. package/dist/{chunk-D6YNY2XB.mjs → chunk-SJPSYQ4P.mjs} +2 -2
  7. package/dist/{copilot-runtime-5103c7e7.d.ts → copilot-runtime-eb953402.d.ts} +78 -46
  8. package/dist/index.d.ts +1 -1
  9. package/dist/index.js +135 -19
  10. package/dist/index.js.map +1 -1
  11. package/dist/index.mjs +4 -4
  12. package/dist/lib/index.d.ts +1 -1
  13. package/dist/lib/index.js +135 -19
  14. package/dist/lib/index.js.map +1 -1
  15. package/dist/lib/index.mjs +4 -4
  16. package/dist/lib/integrations/index.d.ts +2 -2
  17. package/dist/lib/integrations/index.js +2 -2
  18. package/dist/lib/integrations/index.js.map +1 -1
  19. package/dist/lib/integrations/index.mjs +4 -4
  20. package/dist/lib/integrations/nest/index.d.ts +1 -1
  21. package/dist/lib/integrations/nest/index.js +2 -2
  22. package/dist/lib/integrations/nest/index.js.map +1 -1
  23. package/dist/lib/integrations/nest/index.mjs +2 -2
  24. package/dist/lib/integrations/node-express/index.d.ts +1 -1
  25. package/dist/lib/integrations/node-express/index.js +2 -2
  26. package/dist/lib/integrations/node-express/index.js.map +1 -1
  27. package/dist/lib/integrations/node-express/index.mjs +2 -2
  28. package/dist/lib/integrations/node-http/index.d.ts +1 -1
  29. package/dist/lib/integrations/node-http/index.js +2 -2
  30. package/dist/lib/integrations/node-http/index.js.map +1 -1
  31. package/dist/lib/integrations/node-http/index.mjs +1 -1
  32. package/package.json +2 -2
  33. package/src/graphql/resolvers/copilot.resolver.ts +1 -1
  34. package/src/lib/logger.ts +0 -48
  35. package/src/lib/observability.ts +73 -0
  36. package/src/lib/runtime/copilot-runtime.ts +182 -22
  37. package/dist/chunk-QTRO3GPV.mjs.map +0 -1
  38. /package/dist/{chunk-RQS3BGAT.mjs.map → chunk-5PFBYGDX.mjs.map} +0 -0
  39. /package/dist/{chunk-QZ6X33MR.mjs.map → chunk-LOGYVH7X.mjs.map} +0 -0
  40. /package/dist/{chunk-D6YNY2XB.mjs.map → chunk-SJPSYQ4P.mjs.map} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # @copilotkit/runtime
2
2
 
3
+ ## 1.7.1-next.0
4
+
5
+ ### Patch Changes
6
+
7
+ - 261b2be: - simplifies interface + adds o11y in agents
8
+ - @copilotkit/shared@1.7.1-next.0
9
+
10
+ ## 1.7.0
11
+
12
+ ### Minor Changes
13
+
14
+ - 082db7a: - CrewAI support
15
+
16
+ ### Patch Changes
17
+
18
+ - 082db7a: - Added RemoteAgentAdapter and implemented CopilotKit (protocol & events).
19
+ - Integrated CrewAI (with a prototype, HITL, event system, and chat/demo tweaks).
20
+ - Updated docs and cleaned up code (fixing stdout issues, restricting Python version, and streamlining demos).
21
+ - 1e934e4: - feat(runtime): Add LangFuse logging integration
22
+ - @copilotkit/shared@1.7.0
23
+
3
24
  ## 1.7.0-next.1
4
25
 
5
26
  ### Patch Changes
@@ -2,7 +2,7 @@ import {
2
2
  copilotRuntimeNodeHttpEndpoint,
3
3
  getRuntimeInstanceTelemetryInfo,
4
4
  telemetry_client_default
5
- } from "./chunk-QTRO3GPV.mjs";
5
+ } from "./chunk-ANTSN7W3.mjs";
6
6
  import {
7
7
  __name
8
8
  } from "./chunk-FHD4JECV.mjs";
@@ -22,4 +22,4 @@ __name(copilotRuntimeNodeExpressEndpoint, "copilotRuntimeNodeExpressEndpoint");
22
22
  export {
23
23
  copilotRuntimeNodeExpressEndpoint
24
24
  };
25
- //# sourceMappingURL=chunk-RQS3BGAT.mjs.map
25
+ //# sourceMappingURL=chunk-5PFBYGDX.mjs.map
@@ -39,7 +39,7 @@ var require_package = __commonJS({
39
39
  publishConfig: {
40
40
  access: "public"
41
41
  },
42
- version: "1.7.0-next.1",
42
+ version: "1.7.1-next.0",
43
43
  sideEffects: false,
44
44
  main: "./dist/index.js",
45
45
  module: "./dist/index.mjs",
@@ -2712,7 +2712,7 @@ var CopilotRuntime = class {
2712
2712
  onBeforeRequest;
2713
2713
  onAfterRequest;
2714
2714
  delegateAgentProcessingToServiceAdapter;
2715
- logging;
2715
+ observability;
2716
2716
  constructor(params) {
2717
2717
  var _a, _b;
2718
2718
  if ((params == null ? void 0 : params.actions) && (params == null ? void 0 : params.remoteEndpoints)) {
@@ -2729,11 +2729,11 @@ var CopilotRuntime = class {
2729
2729
  this.onBeforeRequest = (_a = params == null ? void 0 : params.middleware) == null ? void 0 : _a.onBeforeRequest;
2730
2730
  this.onAfterRequest = (_b = params == null ? void 0 : params.middleware) == null ? void 0 : _b.onAfterRequest;
2731
2731
  this.delegateAgentProcessingToServiceAdapter = (params == null ? void 0 : params.delegateAgentProcessingToServiceAdapter) || false;
2732
- this.logging = params == null ? void 0 : params.logging;
2732
+ this.observability = params == null ? void 0 : params.observability_c;
2733
2733
  }
2734
2734
  async processRuntimeRequest(request) {
2735
2735
  var _a, _b, _c, _d, _e;
2736
- const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, url, extensions, agentSession, agentStates } = request;
2736
+ const { serviceAdapter, messages: rawMessages, actions: clientSideActionsInput, threadId, runId, outputMessagesPromise, graphqlContext, forwardedParameters, url, extensions, agentSession, agentStates, publicApiKey } = request;
2737
2737
  const eventSource = new RuntimeEventSource();
2738
2738
  const requestStartTime = Date.now();
2739
2739
  const streamedChunks = [];
@@ -2751,7 +2751,7 @@ please use an LLM adapter instead.`
2751
2751
  const messages = rawMessages.filter((message) => !message.agentStateMessage);
2752
2752
  const inputMessages = convertGqlInputToMessages(messages);
2753
2753
  const serverSideActions = await this.getServerSideActions(request);
2754
- if ((_a = this.logging) == null ? void 0 : _a.enabled) {
2754
+ if (((_a = this.observability) == null ? void 0 : _a.enabled) && publicApiKey) {
2755
2755
  try {
2756
2756
  const requestData = {
2757
2757
  threadId,
@@ -2763,7 +2763,7 @@ please use an LLM adapter instead.`
2763
2763
  timestamp: requestStartTime,
2764
2764
  provider: this.detectProvider(serviceAdapter)
2765
2765
  };
2766
- await this.logging.logger.logRequest(requestData);
2766
+ await this.observability.hooks.handleRequest(requestData);
2767
2767
  } catch (error) {
2768
2768
  console.error("Error logging LLM request:", error);
2769
2769
  }
@@ -2811,16 +2811,15 @@ please use an LLM adapter instead.`
2811
2811
  });
2812
2812
  }).catch((_error) => {
2813
2813
  });
2814
- if ((_c = this.logging) == null ? void 0 : _c.enabled) {
2814
+ if (((_c = this.observability) == null ? void 0 : _c.enabled) && publicApiKey) {
2815
2815
  try {
2816
2816
  outputMessagesPromise.then((outputMessages) => {
2817
- var _a2;
2818
2817
  const responseData = {
2819
2818
  threadId: result.threadId,
2820
2819
  runId: result.runId,
2821
2820
  model: forwardedParameters == null ? void 0 : forwardedParameters.model,
2822
2821
  // Use collected chunks for progressive mode or outputMessages for regular mode
2823
- output: this.logging.progressive ? streamedChunks : outputMessages,
2822
+ output: this.observability.progressive ? streamedChunks : outputMessages,
2824
2823
  latency: Date.now() - requestStartTime,
2825
2824
  timestamp: Date.now(),
2826
2825
  provider: this.detectProvider(serviceAdapter),
@@ -2828,7 +2827,7 @@ please use an LLM adapter instead.`
2828
2827
  isFinalResponse: true
2829
2828
  };
2830
2829
  try {
2831
- (_a2 = this.logging) == null ? void 0 : _a2.logger.logResponse(responseData);
2830
+ this.observability.hooks.handleResponse(responseData);
2832
2831
  } catch (logError) {
2833
2832
  console.error("Error logging LLM response:", logError);
2834
2833
  }
@@ -2839,7 +2838,7 @@ please use an LLM adapter instead.`
2839
2838
  console.error("Error setting up logging for LLM response:", error);
2840
2839
  }
2841
2840
  }
2842
- if (((_d = this.logging) == null ? void 0 : _d.enabled) && this.logging.progressive) {
2841
+ if (((_d = this.observability) == null ? void 0 : _d.enabled) && this.observability.progressive && publicApiKey) {
2843
2842
  const originalStream = eventSource.stream.bind(eventSource);
2844
2843
  eventSource.stream = async (callback) => {
2845
2844
  await originalStream(async (eventStream$) => {
@@ -2859,8 +2858,7 @@ please use an LLM adapter instead.`
2859
2858
  isProgressiveChunk: true
2860
2859
  };
2861
2860
  Promise.resolve().then(() => {
2862
- var _a2;
2863
- (_a2 = this.logging) == null ? void 0 : _a2.logger.logResponse(progressiveData);
2861
+ this.observability.hooks.handleResponse(progressiveData);
2864
2862
  }).catch((error) => {
2865
2863
  console.error("Error in progressive logging:", error);
2866
2864
  });
@@ -2886,7 +2884,7 @@ please use an LLM adapter instead.`
2886
2884
  extensions: result.extensions
2887
2885
  };
2888
2886
  } catch (error) {
2889
- if ((_e = this.logging) == null ? void 0 : _e.enabled) {
2887
+ if (((_e = this.observability) == null ? void 0 : _e.enabled) && publicApiKey) {
2890
2888
  try {
2891
2889
  const errorData = {
2892
2890
  threadId,
@@ -2897,7 +2895,7 @@ please use an LLM adapter instead.`
2897
2895
  latency: Date.now() - requestStartTime,
2898
2896
  provider: this.detectProvider(serviceAdapter)
2899
2897
  };
2900
- await this.logging.logger.logError(errorData);
2898
+ await this.observability.hooks.handleError(errorData);
2901
2899
  } catch (logError) {
2902
2900
  console.error("Error logging LLM error:", logError);
2903
2901
  }
@@ -3065,9 +3063,11 @@ please use an LLM adapter instead.`
3065
3063
  }
3066
3064
  }
3067
3065
  async processAgentRequest(request) {
3068
- var _a;
3069
- const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession, threadId: threadIdFromRequest, metaEvents } = request;
3066
+ var _a, _b, _c, _d, _e;
3067
+ const { messages: rawMessages, outputMessagesPromise, graphqlContext, agentSession, threadId: threadIdFromRequest, metaEvents, publicApiKey, forwardedParameters } = request;
3070
3068
  const { agentName, nodeName } = agentSession;
3069
+ const requestStartTime = Date.now();
3070
+ const streamedChunks = [];
3071
3071
  const threadId = threadIdFromRequest ?? agentSession.threadId;
3072
3072
  const serverSideActions = await this.getServerSideActions(request);
3073
3073
  const messages = convertGqlInputToMessages(rawMessages);
@@ -3090,7 +3090,26 @@ please use an LLM adapter instead.`
3090
3090
  ...availableActionsForCurrentAgent,
3091
3091
  ...request.actions
3092
3092
  ]);
3093
- await ((_a = this.onBeforeRequest) == null ? void 0 : _a.call(this, {
3093
+ if (((_a = this.observability) == null ? void 0 : _a.enabled) && publicApiKey) {
3094
+ try {
3095
+ const requestData = {
3096
+ threadId,
3097
+ runId: void 0,
3098
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3099
+ messages,
3100
+ actions: allAvailableActions,
3101
+ forwardedParameters,
3102
+ timestamp: requestStartTime,
3103
+ provider: "agent",
3104
+ agentName,
3105
+ nodeName
3106
+ };
3107
+ await this.observability.hooks.handleRequest(requestData);
3108
+ } catch (error) {
3109
+ console.error("Error logging agent request:", error);
3110
+ }
3111
+ }
3112
+ await ((_b = this.onBeforeRequest) == null ? void 0 : _b.call(this, {
3094
3113
  threadId,
3095
3114
  runId: void 0,
3096
3115
  inputMessages: messages,
@@ -3105,17 +3124,96 @@ please use an LLM adapter instead.`
3105
3124
  metaEvents,
3106
3125
  actionInputsWithoutAgents: allAvailableActions
3107
3126
  });
3127
+ if (((_c = this.observability) == null ? void 0 : _c.enabled) && this.observability.progressive && publicApiKey) {
3128
+ const originalStream = eventSource.stream.bind(eventSource);
3129
+ eventSource.stream = async (callback) => {
3130
+ await originalStream(async (eventStream$) => {
3131
+ eventStream$.subscribe({
3132
+ next: (event) => {
3133
+ if (event.type === RuntimeEventTypes.TextMessageContent) {
3134
+ streamedChunks.push(event.content);
3135
+ try {
3136
+ const progressiveData = {
3137
+ threadId: threadId || "",
3138
+ runId: void 0,
3139
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3140
+ output: event.content,
3141
+ latency: Date.now() - requestStartTime,
3142
+ timestamp: Date.now(),
3143
+ provider: "agent",
3144
+ isProgressiveChunk: true,
3145
+ agentName,
3146
+ nodeName
3147
+ };
3148
+ Promise.resolve().then(() => {
3149
+ this.observability.hooks.handleResponse(progressiveData);
3150
+ }).catch((error) => {
3151
+ console.error("Error in progressive agent logging:", error);
3152
+ });
3153
+ } catch (error) {
3154
+ console.error("Error preparing progressive agent log data:", error);
3155
+ }
3156
+ }
3157
+ }
3158
+ });
3159
+ await callback(eventStream$);
3160
+ });
3161
+ };
3162
+ }
3108
3163
  eventSource.stream(async (eventStream$) => {
3109
3164
  from(stream).subscribe({
3110
3165
  next: (event) => eventStream$.next(event),
3111
3166
  error: (err) => {
3167
+ var _a2;
3112
3168
  console.error("Error in stream", err);
3169
+ if (((_a2 = this.observability) == null ? void 0 : _a2.enabled) && publicApiKey) {
3170
+ try {
3171
+ const errorData = {
3172
+ threadId,
3173
+ runId: void 0,
3174
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3175
+ error: err instanceof Error ? err : String(err),
3176
+ timestamp: Date.now(),
3177
+ latency: Date.now() - requestStartTime,
3178
+ provider: "agent",
3179
+ agentName,
3180
+ nodeName
3181
+ };
3182
+ this.observability.hooks.handleError(errorData);
3183
+ } catch (logError) {
3184
+ console.error("Error logging agent error:", logError);
3185
+ }
3186
+ }
3113
3187
  eventStream$.error(err);
3114
3188
  eventStream$.complete();
3115
3189
  },
3116
3190
  complete: () => eventStream$.complete()
3117
3191
  });
3118
3192
  });
3193
+ if (((_d = this.observability) == null ? void 0 : _d.enabled) && publicApiKey) {
3194
+ outputMessagesPromise.then((outputMessages) => {
3195
+ const responseData = {
3196
+ threadId,
3197
+ runId: void 0,
3198
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3199
+ // Use collected chunks for progressive mode or outputMessages for regular mode
3200
+ output: this.observability.progressive ? streamedChunks : outputMessages,
3201
+ latency: Date.now() - requestStartTime,
3202
+ timestamp: Date.now(),
3203
+ provider: "agent",
3204
+ isFinalResponse: true,
3205
+ agentName,
3206
+ nodeName
3207
+ };
3208
+ try {
3209
+ this.observability.hooks.handleResponse(responseData);
3210
+ } catch (logError) {
3211
+ console.error("Error logging agent response:", logError);
3212
+ }
3213
+ }).catch((error) => {
3214
+ console.error("Failed to get output messages for agent logging:", error);
3215
+ });
3216
+ }
3119
3217
  outputMessagesPromise.then((outputMessages) => {
3120
3218
  var _a2;
3121
3219
  (_a2 = this.onAfterRequest) == null ? void 0 : _a2.call(this, {
@@ -3135,6 +3233,24 @@ please use an LLM adapter instead.`
3135
3233
  actionInputsWithoutAgents: allAvailableActions
3136
3234
  };
3137
3235
  } catch (error) {
3236
+ if (((_e = this.observability) == null ? void 0 : _e.enabled) && publicApiKey) {
3237
+ try {
3238
+ const errorData = {
3239
+ threadId,
3240
+ runId: void 0,
3241
+ model: forwardedParameters == null ? void 0 : forwardedParameters.model,
3242
+ error: error instanceof Error ? error : String(error),
3243
+ timestamp: Date.now(),
3244
+ latency: Date.now() - requestStartTime,
3245
+ provider: "agent",
3246
+ agentName,
3247
+ nodeName
3248
+ };
3249
+ await this.observability.hooks.handleError(errorData);
3250
+ } catch (logError) {
3251
+ console.error("Error logging agent error:", logError);
3252
+ }
3253
+ }
3138
3254
  console.error("Error getting response:", error);
3139
3255
  throw error;
3140
3256
  }
@@ -3753,7 +3869,7 @@ var CopilotResolver = class {
3753
3869
  actions: data.frontend.actions.filter((action) => action.available !== ActionInputAvailability.disabled),
3754
3870
  threadId: data.threadId,
3755
3871
  runId: data.runId,
3756
- publicApiKey: void 0,
3872
+ publicApiKey: copilotCloudPublicApiKey,
3757
3873
  outputMessagesPromise,
3758
3874
  graphqlContext: ctx,
3759
3875
  forwardedParameters: data.forwardedParameters,
@@ -4441,4 +4557,4 @@ export {
4441
4557
  getCommonConfig,
4442
4558
  copilotRuntimeNodeHttpEndpoint
4443
4559
  };
4444
- //# sourceMappingURL=chunk-QTRO3GPV.mjs.map
4560
+ //# sourceMappingURL=chunk-ANTSN7W3.mjs.map