@copilotkit/runtime 1.5.0-tyler-reset-chat.0 → 1.5.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 (77) hide show
  1. package/CHANGELOG.md +141 -3
  2. package/__snapshots__/schema/schema.graphql +7 -9
  3. package/dist/{chunk-K67A6XOJ.mjs → chunk-25G6SHWM.mjs} +458 -331
  4. package/dist/chunk-25G6SHWM.mjs.map +1 -0
  5. package/dist/{chunk-OKQVDDJ2.mjs → chunk-4AYRDPWK.mjs} +285 -63
  6. package/dist/chunk-4AYRDPWK.mjs.map +1 -0
  7. package/dist/{chunk-ZBG4KJW5.mjs → chunk-AFKLCW76.mjs} +2 -2
  8. package/dist/{chunk-AGSBOD2T.mjs → chunk-D6J2N5ZQ.mjs} +2 -2
  9. package/dist/{chunk-QNQ6UT3D.mjs → chunk-PIUHAIBR.mjs} +2 -2
  10. package/dist/{chunk-B74M7FXG.mjs → chunk-RFF5IIZJ.mjs} +3 -2
  11. package/dist/chunk-RFF5IIZJ.mjs.map +1 -0
  12. package/dist/{copilot-runtime-12e7ac40.d.ts → copilot-runtime-2e46a7b6.d.ts} +2 -2
  13. package/dist/graphql/types/converted/index.d.ts +1 -1
  14. package/dist/graphql/types/converted/index.js +2 -1
  15. package/dist/graphql/types/converted/index.js.map +1 -1
  16. package/dist/graphql/types/converted/index.mjs +1 -1
  17. package/dist/{groq-adapter-24abe931.d.ts → groq-adapter-7bf6824b.d.ts} +1 -1
  18. package/dist/{index-10b1c870.d.ts → index-ff3fbc33.d.ts} +7 -8
  19. package/dist/index.d.ts +5 -5
  20. package/dist/index.js +832 -480
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.mjs +15 -11
  23. package/dist/index.mjs.map +1 -1
  24. package/dist/{langserve-f021ab9c.d.ts → langserve-f318db89.d.ts} +53 -14
  25. package/dist/lib/index.d.ts +4 -4
  26. package/dist/lib/index.js +737 -459
  27. package/dist/lib/index.js.map +1 -1
  28. package/dist/lib/index.mjs +7 -7
  29. package/dist/lib/integrations/index.d.ts +4 -4
  30. package/dist/lib/integrations/index.js +71 -30
  31. package/dist/lib/integrations/index.js.map +1 -1
  32. package/dist/lib/integrations/index.mjs +6 -6
  33. package/dist/lib/integrations/nest/index.d.ts +3 -3
  34. package/dist/lib/integrations/nest/index.js +71 -30
  35. package/dist/lib/integrations/nest/index.js.map +1 -1
  36. package/dist/lib/integrations/nest/index.mjs +4 -4
  37. package/dist/lib/integrations/node-express/index.d.ts +3 -3
  38. package/dist/lib/integrations/node-express/index.js +71 -30
  39. package/dist/lib/integrations/node-express/index.js.map +1 -1
  40. package/dist/lib/integrations/node-express/index.mjs +4 -4
  41. package/dist/lib/integrations/node-http/index.d.ts +3 -3
  42. package/dist/lib/integrations/node-http/index.js +71 -30
  43. package/dist/lib/integrations/node-http/index.js.map +1 -1
  44. package/dist/lib/integrations/node-http/index.mjs +3 -3
  45. package/dist/service-adapters/index.d.ts +36 -5
  46. package/dist/service-adapters/index.js +285 -61
  47. package/dist/service-adapters/index.js.map +1 -1
  48. package/dist/service-adapters/index.mjs +5 -1
  49. package/package.json +4 -4
  50. package/src/agents/langgraph/event-source.ts +140 -148
  51. package/src/agents/langgraph/events.ts +1 -1
  52. package/src/graphql/inputs/message.input.ts +15 -3
  53. package/src/graphql/resolvers/copilot.resolver.ts +32 -6
  54. package/src/graphql/types/converted/index.ts +4 -3
  55. package/src/graphql/types/copilot-response.type.ts +12 -3
  56. package/src/graphql/types/enums.ts +0 -11
  57. package/src/lib/runtime/copilot-runtime.ts +1 -7
  58. package/src/lib/runtime/remote-action-constructors.ts +64 -58
  59. package/src/lib/runtime/remote-actions.ts +1 -0
  60. package/src/lib/runtime/remote-lg-action.ts +184 -154
  61. package/src/service-adapters/anthropic/anthropic-adapter.ts +16 -6
  62. package/src/service-adapters/conversion.ts +2 -1
  63. package/src/service-adapters/events.ts +118 -54
  64. package/src/service-adapters/experimental/empty/empty-adapter.ts +33 -0
  65. package/src/service-adapters/experimental/ollama/ollama-adapter.ts +7 -3
  66. package/src/service-adapters/groq/groq-adapter.ts +23 -8
  67. package/src/service-adapters/index.ts +7 -1
  68. package/src/service-adapters/langchain/utils.ts +55 -32
  69. package/src/service-adapters/openai/openai-adapter.ts +22 -9
  70. package/src/service-adapters/openai/openai-assistant-adapter.ts +22 -8
  71. package/src/service-adapters/unify/unify-adapter.ts +28 -11
  72. package/dist/chunk-B74M7FXG.mjs.map +0 -1
  73. package/dist/chunk-K67A6XOJ.mjs.map +0 -1
  74. package/dist/chunk-OKQVDDJ2.mjs.map +0 -1
  75. /package/dist/{chunk-ZBG4KJW5.mjs.map → chunk-AFKLCW76.mjs.map} +0 -0
  76. /package/dist/{chunk-AGSBOD2T.mjs.map → chunk-D6J2N5ZQ.mjs.map} +0 -0
  77. /package/dist/{chunk-QNQ6UT3D.mjs.map → chunk-PIUHAIBR.mjs.map} +0 -0
@@ -140,7 +140,8 @@ export class OpenAIAdapter implements CopilotServiceAdapter {
140
140
 
141
141
  eventSource.stream(async (eventStream$) => {
142
142
  let mode: "function" | "message" | null = null;
143
-
143
+ let currentMessageId: string;
144
+ let currentToolCallId: string;
144
145
  for await (const chunk of stream) {
145
146
  if (chunk.choices.length === 0) {
146
147
  continue;
@@ -154,36 +155,48 @@ export class OpenAIAdapter implements CopilotServiceAdapter {
154
155
  // If toolCall?.id is defined, it means a new tool call starts.
155
156
  if (mode === "message" && toolCall?.id) {
156
157
  mode = null;
157
- eventStream$.sendTextMessageEnd();
158
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
158
159
  } else if (mode === "function" && (toolCall === undefined || toolCall?.id)) {
159
160
  mode = null;
160
- eventStream$.sendActionExecutionEnd();
161
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
161
162
  }
162
163
 
163
164
  // If we send a new message type, send the appropriate start event.
164
165
  if (mode === null) {
165
166
  if (toolCall?.id) {
166
167
  mode = "function";
167
- eventStream$.sendActionExecutionStart(toolCall!.id, toolCall!.function!.name);
168
+ currentToolCallId = toolCall!.id;
169
+ eventStream$.sendActionExecutionStart({
170
+ actionExecutionId: currentToolCallId,
171
+ parentMessageId: chunk.id,
172
+ actionName: toolCall!.function!.name,
173
+ });
168
174
  } else if (content) {
169
175
  mode = "message";
170
- eventStream$.sendTextMessageStart(chunk.id);
176
+ currentMessageId = chunk.id;
177
+ eventStream$.sendTextMessageStart({ messageId: currentMessageId });
171
178
  }
172
179
  }
173
180
 
174
181
  // send the content events
175
182
  if (mode === "message" && content) {
176
- eventStream$.sendTextMessageContent(content);
183
+ eventStream$.sendTextMessageContent({
184
+ messageId: currentMessageId,
185
+ content: content,
186
+ });
177
187
  } else if (mode === "function" && toolCall?.function?.arguments) {
178
- eventStream$.sendActionExecutionArgs(toolCall.function.arguments);
188
+ eventStream$.sendActionExecutionArgs({
189
+ actionExecutionId: currentToolCallId,
190
+ args: toolCall.function.arguments,
191
+ });
179
192
  }
180
193
  }
181
194
 
182
195
  // send the end events
183
196
  if (mode === "message") {
184
- eventStream$.sendTextMessageEnd();
197
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
185
198
  } else if (mode === "function") {
186
- eventStream$.sendActionExecutionEnd();
199
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
187
200
  }
188
201
 
189
202
  eventStream$.complete();
@@ -226,22 +226,28 @@ export class OpenAIAssistantAdapter implements CopilotServiceAdapter {
226
226
  private async streamResponse(stream: AssistantStream, eventSource: RuntimeEventSource) {
227
227
  eventSource.stream(async (eventStream$) => {
228
228
  let inFunctionCall = false;
229
+ let currentMessageId: string;
230
+ let currentToolCallId: string;
229
231
 
230
232
  for await (const chunk of stream) {
231
233
  switch (chunk.event) {
232
234
  case "thread.message.created":
233
235
  if (inFunctionCall) {
234
- eventStream$.sendActionExecutionEnd();
236
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
235
237
  }
236
- eventStream$.sendTextMessageStart(chunk.data.id);
238
+ currentMessageId = chunk.data.id;
239
+ eventStream$.sendTextMessageStart({ messageId: currentMessageId });
237
240
  break;
238
241
  case "thread.message.delta":
239
242
  if (chunk.data.delta.content?.[0].type === "text") {
240
- eventStream$.sendTextMessageContent(chunk.data.delta.content?.[0].text.value);
243
+ eventStream$.sendTextMessageContent({
244
+ messageId: currentMessageId,
245
+ content: chunk.data.delta.content?.[0].text.value,
246
+ });
241
247
  }
242
248
  break;
243
249
  case "thread.message.completed":
244
- eventStream$.sendTextMessageEnd();
250
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
245
251
  break;
246
252
  case "thread.run.step.delta":
247
253
  let toolCallId: string | undefined;
@@ -258,18 +264,26 @@ export class OpenAIAssistantAdapter implements CopilotServiceAdapter {
258
264
 
259
265
  if (toolCallName && toolCallId) {
260
266
  if (inFunctionCall) {
261
- eventStream$.sendActionExecutionEnd();
267
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
262
268
  }
263
269
  inFunctionCall = true;
264
- eventStream$.sendActionExecutionStart(toolCallId, toolCallName);
270
+ currentToolCallId = toolCallId;
271
+ eventStream$.sendActionExecutionStart({
272
+ actionExecutionId: currentToolCallId,
273
+ parentMessageId: chunk.data.id,
274
+ actionName: toolCallName,
275
+ });
265
276
  } else if (toolCallArgs) {
266
- eventStream$.sendActionExecutionArgs(toolCallArgs);
277
+ eventStream$.sendActionExecutionArgs({
278
+ actionExecutionId: currentToolCallId,
279
+ args: toolCallArgs,
280
+ });
267
281
  }
268
282
  break;
269
283
  }
270
284
  }
271
285
  if (inFunctionCall) {
272
- eventStream$.sendActionExecutionEnd();
286
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
273
287
  }
274
288
  eventStream$.complete();
275
289
  });
@@ -66,14 +66,20 @@ export class UnifyAdapter implements CopilotServiceAdapter {
66
66
  });
67
67
 
68
68
  let model = null;
69
+ let currentMessageId: string;
70
+ let currentToolCallId: string;
69
71
  request.eventSource.stream(async (eventStream$) => {
70
72
  let mode: "function" | "message" | null = null;
71
73
  for await (const chunk of stream) {
72
74
  if (this.start) {
73
75
  model = chunk.model;
74
- eventStream$.sendTextMessageStart(randomId());
75
- eventStream$.sendTextMessageContent(`Model used: ${model}\n`);
76
- eventStream$.sendTextMessageEnd();
76
+ currentMessageId = randomId();
77
+ eventStream$.sendTextMessageStart({ messageId: currentMessageId });
78
+ eventStream$.sendTextMessageContent({
79
+ messageId: currentMessageId,
80
+ content: `Model used: ${model}\n`,
81
+ });
82
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
77
83
  this.start = false;
78
84
  }
79
85
  const toolCall = chunk.choices[0].delta.tool_calls?.[0];
@@ -84,36 +90,47 @@ export class UnifyAdapter implements CopilotServiceAdapter {
84
90
  // If toolCall?.id is defined, it means a new tool call starts.
85
91
  if (mode === "message" && toolCall?.id) {
86
92
  mode = null;
87
- eventStream$.sendTextMessageEnd();
93
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
88
94
  } else if (mode === "function" && (toolCall === undefined || toolCall?.id)) {
89
95
  mode = null;
90
- eventStream$.sendActionExecutionEnd();
96
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
91
97
  }
92
98
 
93
99
  // If we send a new message type, send the appropriate start event.
94
100
  if (mode === null) {
95
101
  if (toolCall?.id) {
96
102
  mode = "function";
97
- eventStream$.sendActionExecutionStart(toolCall!.id, toolCall!.function!.name);
103
+ currentToolCallId = toolCall!.id;
104
+ eventStream$.sendActionExecutionStart({
105
+ actionExecutionId: currentToolCallId,
106
+ actionName: toolCall!.function!.name,
107
+ });
98
108
  } else if (content) {
99
109
  mode = "message";
100
- eventStream$.sendTextMessageStart(chunk.id);
110
+ currentMessageId = chunk.id;
111
+ eventStream$.sendTextMessageStart({ messageId: currentMessageId });
101
112
  }
102
113
  }
103
114
 
104
115
  // send the content events
105
116
  if (mode === "message" && content) {
106
- eventStream$.sendTextMessageContent(content);
117
+ eventStream$.sendTextMessageContent({
118
+ messageId: currentMessageId,
119
+ content: content,
120
+ });
107
121
  } else if (mode === "function" && toolCall?.function?.arguments) {
108
- eventStream$.sendActionExecutionArgs(toolCall.function.arguments);
122
+ eventStream$.sendActionExecutionArgs({
123
+ actionExecutionId: currentToolCallId,
124
+ args: toolCall.function.arguments,
125
+ });
109
126
  }
110
127
  }
111
128
 
112
129
  // send the end events
113
130
  if (mode === "message") {
114
- eventStream$.sendTextMessageEnd();
131
+ eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
115
132
  } else if (mode === "function") {
116
- eventStream$.sendActionExecutionEnd();
133
+ eventStream$.sendActionExecutionEnd({ actionExecutionId: currentToolCallId });
117
134
  }
118
135
 
119
136
  eventStream$.complete();
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/graphql/types/converted/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n AgentStateMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessageInput } from \"../base\";\nimport { ActionExecutionScope, MessageRole } from \"../enums\";\n\nexport type MessageType =\n | \"TextMessage\"\n | \"ActionExecutionMessage\"\n | \"ResultMessage\"\n | \"AgentStateMessage\";\n\nexport class Message extends BaseMessageInput {\n type: MessageType;\n\n isTextMessage(): this is TextMessage {\n return this.type === \"TextMessage\";\n }\n\n isActionExecutionMessage(): this is ActionExecutionMessage {\n return this.type === \"ActionExecutionMessage\";\n }\n\n isResultMessage(): this is ResultMessage {\n return this.type === \"ResultMessage\";\n }\n\n isAgentStateMessage(): this is AgentStateMessage {\n return this.type === \"AgentStateMessage\";\n }\n}\n\nexport class TextMessage extends Message implements TextMessageInput {\n type: MessageType = \"TextMessage\";\n content: string;\n role: MessageRole;\n}\n\nexport class ActionExecutionMessage\n extends Message\n implements Omit<ActionExecutionMessageInput, \"arguments\">\n{\n type: MessageType = \"ActionExecutionMessage\";\n name: string;\n arguments: Record<string, any>;\n scope: ActionExecutionScope;\n}\n\nexport class ResultMessage extends Message implements ResultMessageInput {\n type: MessageType = \"ResultMessage\";\n actionExecutionId: string;\n actionName: string;\n result: string;\n}\n\nexport class AgentStateMessage extends Message implements Omit<AgentStateMessageInput, \"state\"> {\n type: MessageType = \"AgentStateMessage\";\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: MessageRole;\n state: any;\n running: boolean;\n}\n"],"mappings":";;;;;;;;AAeO,IAAMA,UAAN,cAAsBC,iBAAAA;EAC3BC;EAEAC,gBAAqC;AACnC,WAAO,KAAKD,SAAS;EACvB;EAEAE,2BAA2D;AACzD,WAAO,KAAKF,SAAS;EACvB;EAEAG,kBAAyC;AACvC,WAAO,KAAKH,SAAS;EACvB;EAEAI,sBAAiD;AAC/C,WAAO,KAAKJ,SAAS;EACvB;AACF;AAlBaF;AAoBN,IAAMO,cAAN,cAA0BP,QAAAA;EAC/BE,OAAoB;EACpBM;EACAC;AACF;AAJaF;AAMN,IAAMG,yBAAN,cACGV,QAAAA;EAGRE,OAAoB;EACpBS;EACAC;EACAC;AACF;AARaH;AAUN,IAAMI,gBAAN,cAA4Bd,QAAAA;EACjCE,OAAoB;EACpBa;EACAC;EACAC;AACF;AALaH;AAON,IAAMI,oBAAN,cAAgClB,QAAAA;EACrCE,OAAoB;EACpBiB;EACAC;EACAC;EACAC;EACAC;EACAd;EACAe;EACAC;AACF;AAVaP;","names":["Message","BaseMessageInput","type","isTextMessage","isActionExecutionMessage","isResultMessage","isAgentStateMessage","TextMessage","content","role","ActionExecutionMessage","name","arguments","scope","ResultMessage","actionExecutionId","actionName","result","AgentStateMessage","threadId","agentName","nodeName","runId","active","state","running"]}