@copilotkit/runtime 1.5.12-next.0 → 1.5.12-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 (51) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/dist/{chunk-4YJIXJLO.mjs → chunk-GOA7HNXW.mjs} +2 -2
  3. package/dist/chunk-HNUNXFTW.mjs +129 -0
  4. package/dist/chunk-HNUNXFTW.mjs.map +1 -0
  5. package/dist/{chunk-7BOVBWKI.mjs → chunk-NTSKJEJQ.mjs} +2 -2
  6. package/dist/{chunk-4QJA7OT2.mjs → chunk-P34QEPO5.mjs} +61 -19
  7. package/dist/chunk-P34QEPO5.mjs.map +1 -0
  8. package/dist/{chunk-XXYYCH4X.mjs → chunk-ZF34MJL7.mjs} +2 -2
  9. package/dist/{copilot-runtime-36700e00.d.ts → copilot-runtime-1a224a0f.d.ts} +2 -2
  10. package/dist/graphql/types/converted/index.d.ts +1 -1
  11. package/dist/graphql/types/converted/index.js +63 -0
  12. package/dist/graphql/types/converted/index.js.map +1 -1
  13. package/dist/graphql/types/converted/index.mjs +1 -1
  14. package/dist/{groq-adapter-696b5d29.d.ts → groq-adapter-c35c5374.d.ts} +1 -1
  15. package/dist/{index-cc2b17be.d.ts → index-24315d90.d.ts} +16 -0
  16. package/dist/index.d.ts +4 -4
  17. package/dist/index.js +121 -16
  18. package/dist/index.js.map +1 -1
  19. package/dist/index.mjs +5 -5
  20. package/dist/{langserve-9125a12e.d.ts → langserve-a16ef8f4.d.ts} +7 -3
  21. package/dist/lib/index.d.ts +4 -4
  22. package/dist/lib/index.js +121 -16
  23. package/dist/lib/index.js.map +1 -1
  24. package/dist/lib/index.mjs +5 -5
  25. package/dist/lib/integrations/index.d.ts +4 -4
  26. package/dist/lib/integrations/index.js +64 -1
  27. package/dist/lib/integrations/index.js.map +1 -1
  28. package/dist/lib/integrations/index.mjs +5 -5
  29. package/dist/lib/integrations/nest/index.d.ts +3 -3
  30. package/dist/lib/integrations/nest/index.js +64 -1
  31. package/dist/lib/integrations/nest/index.js.map +1 -1
  32. package/dist/lib/integrations/nest/index.mjs +3 -3
  33. package/dist/lib/integrations/node-express/index.d.ts +3 -3
  34. package/dist/lib/integrations/node-express/index.js +64 -1
  35. package/dist/lib/integrations/node-express/index.js.map +1 -1
  36. package/dist/lib/integrations/node-express/index.mjs +3 -3
  37. package/dist/lib/integrations/node-http/index.d.ts +3 -3
  38. package/dist/lib/integrations/node-http/index.js +64 -1
  39. package/dist/lib/integrations/node-http/index.js.map +1 -1
  40. package/dist/lib/integrations/node-http/index.mjs +2 -2
  41. package/dist/service-adapters/index.d.ts +4 -4
  42. package/package.json +2 -2
  43. package/src/graphql/types/converted/index.ts +66 -0
  44. package/src/lib/runtime/copilot-runtime.ts +5 -1
  45. package/src/service-adapters/events.ts +58 -16
  46. package/dist/chunk-4QJA7OT2.mjs.map +0 -1
  47. package/dist/chunk-RFF5IIZJ.mjs +0 -66
  48. package/dist/chunk-RFF5IIZJ.mjs.map +0 -1
  49. /package/dist/{chunk-4YJIXJLO.mjs.map → chunk-GOA7HNXW.mjs.map} +0 -0
  50. /package/dist/{chunk-7BOVBWKI.mjs.map → chunk-NTSKJEJQ.mjs.map} +0 -0
  51. /package/dist/{chunk-XXYYCH4X.mjs.map → chunk-ZF34MJL7.mjs.map} +0 -0
@@ -99,6 +99,69 @@ var ResultMessage = class extends Message {
99
99
  actionExecutionId;
100
100
  actionName;
101
101
  result;
102
+ static encodeResult(result, error) {
103
+ const errorObj = error ? typeof error === "string" ? {
104
+ code: "ERROR",
105
+ message: error
106
+ } : error instanceof Error ? {
107
+ code: "ERROR",
108
+ message: error.message
109
+ } : error : void 0;
110
+ if (errorObj) {
111
+ return JSON.stringify({
112
+ error: errorObj,
113
+ result: result || ""
114
+ });
115
+ }
116
+ if (result === void 0) {
117
+ return "";
118
+ }
119
+ return typeof result === "string" ? result : JSON.stringify(result);
120
+ }
121
+ static decodeResult(result) {
122
+ if (!result) {
123
+ return {
124
+ result: ""
125
+ };
126
+ }
127
+ try {
128
+ const parsed = JSON.parse(result);
129
+ if (parsed && typeof parsed === "object") {
130
+ if ("error" in parsed) {
131
+ return {
132
+ error: parsed.error,
133
+ result: parsed.result || ""
134
+ };
135
+ }
136
+ return {
137
+ result: JSON.stringify(parsed)
138
+ };
139
+ }
140
+ return {
141
+ result
142
+ };
143
+ } catch (e) {
144
+ return {
145
+ result
146
+ };
147
+ }
148
+ }
149
+ hasError() {
150
+ try {
151
+ const { error } = ResultMessage.decodeResult(this.result);
152
+ return !!error;
153
+ } catch {
154
+ return false;
155
+ }
156
+ }
157
+ getError() {
158
+ try {
159
+ const { error } = ResultMessage.decodeResult(this.result);
160
+ return error;
161
+ } catch {
162
+ return void 0;
163
+ }
164
+ }
102
165
  };
103
166
  __name(ResultMessage, "ResultMessage");
104
167
  var AgentStateMessage = class extends Message {
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../src/graphql/types/converted/index.ts","../../../../src/graphql/types/base/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n AgentStateMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessageInput } from \"../base\";\nimport { 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 parentMessageId?: string;\n}\n\nexport class ActionExecutionMessage\n extends Message\n implements Omit<ActionExecutionMessageInput, \"arguments\" | \"scope\">\n{\n type: MessageType = \"ActionExecutionMessage\";\n name: string;\n arguments: Record<string, any>;\n parentMessageId?: string;\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","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessageInput {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;ACNA,0BAAiC;;;;;;;;;;;;;;;;;AAG1B,IAAMA,mBAAN,MAAMA;EAEXC;EAGAC;AACF;AANaF;;MACVG,2BAAM,MAAMC,MAAAA;;GADFJ,iBAAAA,WAAAA,MAAAA,MAAAA;;MAIVG,2BAAM,MAAME,IAAAA;qCACF,SAAA,cAAA,SAAA,IAAA;GALAL,iBAAAA,WAAAA,aAAAA,MAAAA;AAAAA,mBAAAA,aAAAA;MADZM,+BAAAA;GACYN,gBAAAA;;;ADYN,IAAMO,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;EACAC;AACF;AALaH;AAON,IAAMI,yBAAN,cACGX,QAAAA;EAGRE,OAAoB;EACpBU;EACAC;EACAH;AACF;AARaC;AAUN,IAAMG,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":["BaseMessageInput","id","createdAt","Field","String","Date","InputType","Message","BaseMessageInput","type","isTextMessage","isActionExecutionMessage","isResultMessage","isAgentStateMessage","TextMessage","content","role","parentMessageId","ActionExecutionMessage","name","arguments","ResultMessage","actionExecutionId","actionName","result","AgentStateMessage","threadId","agentName","nodeName","runId","active","state","running"]}
1
+ {"version":3,"sources":["../../../../src/graphql/types/converted/index.ts","../../../../src/graphql/types/base/index.ts"],"sourcesContent":["import {\n ActionExecutionMessageInput,\n ResultMessageInput,\n TextMessageInput,\n AgentStateMessageInput,\n} from \"../../inputs/message.input\";\nimport { BaseMessageInput } from \"../base\";\nimport { 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 parentMessageId?: string;\n}\n\nexport class ActionExecutionMessage\n extends Message\n implements Omit<ActionExecutionMessageInput, \"arguments\" | \"scope\">\n{\n type: MessageType = \"ActionExecutionMessage\";\n name: string;\n arguments: Record<string, any>;\n parentMessageId?: string;\n}\n\nexport class ResultMessage extends Message implements ResultMessageInput {\n type: MessageType = \"ResultMessage\";\n actionExecutionId: string;\n actionName: string;\n result: string;\n\n static encodeResult(\n result: any,\n error?: { code: string; message: string } | string | Error,\n ): string {\n const errorObj = error\n ? typeof error === \"string\"\n ? { code: \"ERROR\", message: error }\n : error instanceof Error\n ? { code: \"ERROR\", message: error.message }\n : error\n : undefined;\n\n if (errorObj) {\n return JSON.stringify({\n error: errorObj,\n result: result || \"\",\n });\n }\n if (result === undefined) {\n return \"\";\n }\n return typeof result === \"string\" ? result : JSON.stringify(result);\n }\n\n static decodeResult(result: string): {\n error?: { code: string; message: string };\n result: string;\n } {\n if (!result) {\n return { result: \"\" };\n }\n try {\n const parsed = JSON.parse(result);\n if (parsed && typeof parsed === \"object\") {\n if (\"error\" in parsed) {\n return {\n error: parsed.error,\n result: parsed.result || \"\",\n };\n }\n return { result: JSON.stringify(parsed) };\n }\n return { result };\n } catch (e) {\n return { result };\n }\n }\n\n hasError(): boolean {\n try {\n const { error } = ResultMessage.decodeResult(this.result);\n return !!error;\n } catch {\n return false;\n }\n }\n\n getError(): { code: string; message: string } | undefined {\n try {\n const { error } = ResultMessage.decodeResult(this.result);\n return error;\n } catch {\n return undefined;\n }\n }\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","import { Field, InputType } from \"type-graphql\";\n\n@InputType()\nexport class BaseMessageInput {\n @Field(() => String)\n id: string;\n\n @Field(() => Date)\n createdAt: Date;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAMA;;;;;;;;;;;ACNA,0BAAiC;;;;;;;;;;;;;;;;;AAG1B,IAAMA,mBAAN,MAAMA;EAEXC;EAGAC;AACF;AANaF;;MACVG,2BAAM,MAAMC,MAAAA;;GADFJ,iBAAAA,WAAAA,MAAAA,MAAAA;;MAIVG,2BAAM,MAAME,IAAAA;qCACF,SAAA,cAAA,SAAA,IAAA;GALAL,iBAAAA,WAAAA,aAAAA,MAAAA;AAAAA,mBAAAA,aAAAA;MADZM,+BAAAA;GACYN,gBAAAA;;;ADYN,IAAMO,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;EACAC;AACF;AALaH;AAON,IAAMI,yBAAN,cACGX,QAAAA;EAGRE,OAAoB;EACpBU;EACAC;EACAH;AACF;AARaC;AAUN,IAAMG,gBAAN,cAA4Bd,QAAAA;EACjCE,OAAoB;EACpBa;EACAC;EACAC;EAEA,OAAOC,aACLD,QACAE,OACQ;AACR,UAAMC,WAAWD,QACb,OAAOA,UAAU,WACf;MAAEE,MAAM;MAASC,SAASH;IAAM,IAChCA,iBAAiBI,QACf;MAAEF,MAAM;MAASC,SAASH,MAAMG;IAAQ,IACxCH,QACJK;AAEJ,QAAIJ,UAAU;AACZ,aAAOK,KAAKC,UAAU;QACpBP,OAAOC;QACPH,QAAQA,UAAU;MACpB,CAAA;IACF;AACA,QAAIA,WAAWO,QAAW;AACxB,aAAO;IACT;AACA,WAAO,OAAOP,WAAW,WAAWA,SAASQ,KAAKC,UAAUT,MAAAA;EAC9D;EAEA,OAAOU,aAAaV,QAGlB;AACA,QAAI,CAACA,QAAQ;AACX,aAAO;QAAEA,QAAQ;MAAG;IACtB;AACA,QAAI;AACF,YAAMW,SAASH,KAAKI,MAAMZ,MAAAA;AAC1B,UAAIW,UAAU,OAAOA,WAAW,UAAU;AACxC,YAAI,WAAWA,QAAQ;AACrB,iBAAO;YACLT,OAAOS,OAAOT;YACdF,QAAQW,OAAOX,UAAU;UAC3B;QACF;AACA,eAAO;UAAEA,QAAQQ,KAAKC,UAAUE,MAAAA;QAAQ;MAC1C;AACA,aAAO;QAAEX;MAAO;IAClB,SAASa,GAAP;AACA,aAAO;QAAEb;MAAO;IAClB;EACF;EAEAc,WAAoB;AAClB,QAAI;AACF,YAAM,EAAEZ,MAAK,IAAKL,cAAca,aAAa,KAAKV,MAAM;AACxD,aAAO,CAAC,CAACE;IACX,QAAE;AACA,aAAO;IACT;EACF;EAEAa,WAA0D;AACxD,QAAI;AACF,YAAM,EAAEb,MAAK,IAAKL,cAAca,aAAa,KAAKV,MAAM;AACxD,aAAOE;IACT,QAAE;AACA,aAAOK;IACT;EACF;AACF;AAvEaV;AAyEN,IAAMmB,oBAAN,cAAgCjC,QAAAA;EACrCE,OAAoB;EACpBgC;EACAC;EACAC;EACAC;EACAC;EACA7B;EACA8B;EACAC;AACF;AAVaP;","names":["BaseMessageInput","id","createdAt","Field","String","Date","InputType","Message","BaseMessageInput","type","isTextMessage","isActionExecutionMessage","isResultMessage","isAgentStateMessage","TextMessage","content","role","parentMessageId","ActionExecutionMessage","name","arguments","ResultMessage","actionExecutionId","actionName","result","encodeResult","error","errorObj","code","message","Error","undefined","JSON","stringify","decodeResult","parsed","parse","e","hasError","getError","AgentStateMessage","threadId","agentName","nodeName","runId","active","state","running"]}
@@ -4,7 +4,7 @@ import {
4
4
  Message,
5
5
  ResultMessage,
6
6
  TextMessage
7
- } from "../../../chunk-RFF5IIZJ.mjs";
7
+ } from "../../../chunk-HNUNXFTW.mjs";
8
8
  import "../../../chunk-D2WLFQS6.mjs";
9
9
  import "../../../chunk-44O2JGUY.mjs";
10
10
  export {
@@ -1,5 +1,5 @@
1
1
  import OpenAI from 'openai';
2
- import { b as CopilotServiceAdapter, C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse } from './langserve-9125a12e.js';
2
+ import { b as CopilotServiceAdapter, C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse } from './langserve-a16ef8f4.js';
3
3
  import { BaseMessageChunk, AIMessage, AIMessageChunk, BaseMessage } from '@langchain/core/messages';
4
4
  import { DynamicStructuredTool } from '@langchain/core/tools';
5
5
  import { IterableReadableStream, IterableReadableStreamInterface } from '@langchain/core/utils/stream';
@@ -71,6 +71,22 @@ declare class ResultMessage extends Message implements ResultMessageInput {
71
71
  actionExecutionId: string;
72
72
  actionName: string;
73
73
  result: string;
74
+ static encodeResult(result: any, error?: {
75
+ code: string;
76
+ message: string;
77
+ } | string | Error): string;
78
+ static decodeResult(result: string): {
79
+ error?: {
80
+ code: string;
81
+ message: string;
82
+ };
83
+ result: string;
84
+ };
85
+ hasError(): boolean;
86
+ getError(): {
87
+ code: string;
88
+ message: string;
89
+ } | undefined;
74
90
  }
75
91
  declare class AgentStateMessage extends Message implements Omit<AgentStateMessageInput, "state"> {
76
92
  type: MessageType;
package/dist/index.d.ts CHANGED
@@ -1,14 +1,14 @@
1
- export { h as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, d as CreateCopilotRuntimeServerOptions, G as GraphQLContext, g as buildSchema, c as copilotKitEndpoint, e as createContext, f as flattenToolCallsNoDuplicates, i as getCommonConfig, l as langGraphPlatformEndpoint, r as resolveEndpointType } from './copilot-runtime-36700e00.js';
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-696b5d29.js';
1
+ export { h as CommonConfig, b as CopilotRequestContextProperties, a as CopilotRuntime, C as CopilotRuntimeConstructorParams, d as CreateCopilotRuntimeServerOptions, G as GraphQLContext, g as buildSchema, c as copilotKitEndpoint, e as createContext, f as flattenToolCallsNoDuplicates, i as getCommonConfig, l as langGraphPlatformEndpoint, r as resolveEndpointType } from './copilot-runtime-1a224a0f.js';
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-c35c5374.js';
3
3
  export { CopilotRuntimeServerInstance, config, copilotRuntimeNextJSAppRouterEndpoint, copilotRuntimeNextJSPagesRouterEndpoint } from './lib/integrations/index.js';
4
4
  export { copilotRuntimeNodeHttpEndpoint } from './lib/integrations/node-http/index.js';
5
5
  export { copilotRuntimeNodeExpressEndpoint } from './lib/integrations/node-express/index.js';
6
6
  export { copilotRuntimeNestEndpoint } from './lib/integrations/nest/index.js';
7
7
  export { GuardrailsValidationFailureResponse, MessageStreamInterruptedResponse, UnknownErrorResponse } from './utils/index.js';
8
- export { C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse, b as CopilotServiceAdapter, c as RemoteChain, R as RemoteChainParameters } from './langserve-9125a12e.js';
8
+ export { C as CopilotRuntimeChatCompletionRequest, a as CopilotRuntimeChatCompletionResponse, b as CopilotServiceAdapter, c as RemoteChain, R as RemoteChainParameters } from './langserve-a16ef8f4.js';
9
9
  export { AnthropicAdapter, AnthropicAdapterParams, ExperimentalEmptyAdapter, ExperimentalOllamaAdapter } from './service-adapters/index.js';
10
10
  import '@copilotkit/shared';
11
- import './index-cc2b17be.js';
11
+ import './index-24315d90.js';
12
12
  import './graphql/types/base/index.js';
13
13
  import 'graphql';
14
14
  import 'pino';
package/dist/index.js CHANGED
@@ -44,7 +44,7 @@ var require_package = __commonJS({
44
44
  publishConfig: {
45
45
  access: "public"
46
46
  },
47
- version: "1.5.12-next.0",
47
+ version: "1.5.12-next.1",
48
48
  sideEffects: false,
49
49
  main: "./dist/index.js",
50
50
  module: "./dist/index.mjs",
@@ -2764,6 +2764,69 @@ var ResultMessage = class extends Message {
2764
2764
  actionExecutionId;
2765
2765
  actionName;
2766
2766
  result;
2767
+ static encodeResult(result, error) {
2768
+ const errorObj = error ? typeof error === "string" ? {
2769
+ code: "ERROR",
2770
+ message: error
2771
+ } : error instanceof Error ? {
2772
+ code: "ERROR",
2773
+ message: error.message
2774
+ } : error : void 0;
2775
+ if (errorObj) {
2776
+ return JSON.stringify({
2777
+ error: errorObj,
2778
+ result: result || ""
2779
+ });
2780
+ }
2781
+ if (result === void 0) {
2782
+ return "";
2783
+ }
2784
+ return typeof result === "string" ? result : JSON.stringify(result);
2785
+ }
2786
+ static decodeResult(result) {
2787
+ if (!result) {
2788
+ return {
2789
+ result: ""
2790
+ };
2791
+ }
2792
+ try {
2793
+ const parsed = JSON.parse(result);
2794
+ if (parsed && typeof parsed === "object") {
2795
+ if ("error" in parsed) {
2796
+ return {
2797
+ error: parsed.error,
2798
+ result: parsed.result || ""
2799
+ };
2800
+ }
2801
+ return {
2802
+ result: JSON.stringify(parsed)
2803
+ };
2804
+ }
2805
+ return {
2806
+ result
2807
+ };
2808
+ } catch (e) {
2809
+ return {
2810
+ result
2811
+ };
2812
+ }
2813
+ }
2814
+ hasError() {
2815
+ try {
2816
+ const { error } = ResultMessage.decodeResult(this.result);
2817
+ return !!error;
2818
+ } catch {
2819
+ return false;
2820
+ }
2821
+ }
2822
+ getError() {
2823
+ try {
2824
+ const { error } = ResultMessage.decodeResult(this.result);
2825
+ return error;
2826
+ } catch {
2827
+ return void 0;
2828
+ }
2829
+ }
2767
2830
  };
2768
2831
  __name(ResultMessage, "ResultMessage");
2769
2832
  var AgentStateMessage = class extends Message {
@@ -2863,12 +2926,12 @@ var RuntimeEventSubject = class extends import_rxjs2.ReplaySubject {
2863
2926
  actionExecutionId
2864
2927
  });
2865
2928
  }
2866
- sendActionExecutionResult({ actionExecutionId, actionName, result }) {
2929
+ sendActionExecutionResult({ actionExecutionId, actionName, result, error }) {
2867
2930
  this.next({
2868
2931
  type: "ActionExecutionResult",
2869
2932
  actionName,
2870
2933
  actionExecutionId,
2871
- result
2934
+ result: ResultMessage.encodeResult(result, error)
2872
2935
  });
2873
2936
  }
2874
2937
  sendAgentStateMessage({ threadId, agentName, nodeName, runId, active, role, state, running }) {
@@ -2906,6 +2969,7 @@ var RuntimeEventSource = class {
2906
2969
  this.callback(this.eventStream$).catch((error) => {
2907
2970
  console.error("Error in event source callback", error);
2908
2971
  this.sendErrorMessageToChat();
2972
+ this.eventStream$.complete();
2909
2973
  });
2910
2974
  return this.eventStream$.pipe(
2911
2975
  // track state
@@ -2941,7 +3005,11 @@ var RuntimeEventSource = class {
2941
3005
  console.error(error);
2942
3006
  });
2943
3007
  telemetry_client_default.capture("oss.runtime.server_action_executed", {});
2944
- return (0, import_rxjs2.concat)((0, import_rxjs2.of)(eventWithState.event), toolCallEventStream$);
3008
+ return (0, import_rxjs2.concat)((0, import_rxjs2.of)(eventWithState.event), toolCallEventStream$).pipe((0, import_rxjs2.catchError)((error) => {
3009
+ console.error("Error in tool call stream", error);
3010
+ this.sendErrorMessageToChat();
3011
+ return import_rxjs2.EMPTY;
3012
+ }));
2945
3013
  } else {
2946
3014
  return (0, import_rxjs2.of)(eventWithState.event);
2947
3015
  }
@@ -2964,9 +3032,18 @@ async function executeAction(eventStream$, guardrailsResult$, action, actionArgu
2964
3032
  try {
2965
3033
  args = JSON.parse(actionArguments);
2966
3034
  } catch (e) {
2967
- console.warn("Action argument unparsable", {
3035
+ console.error("Action argument unparsable", {
2968
3036
  actionArguments
2969
3037
  });
3038
+ eventStream$.sendActionExecutionResult({
3039
+ actionExecutionId,
3040
+ actionName: action.name,
3041
+ error: {
3042
+ code: "INVALID_ARGUMENTS",
3043
+ message: "Failed to parse action arguments"
3044
+ }
3045
+ });
3046
+ return;
2970
3047
  }
2971
3048
  }
2972
3049
  if (isLangGraphAgentAction(action)) {
@@ -3000,19 +3077,43 @@ async function executeAction(eventStream$, guardrailsResult$, action, actionArgu
3000
3077
  });
3001
3078
  (0, import_rxjs2.from)(stream).subscribe({
3002
3079
  next: (event) => eventStream$.next(event),
3003
- error: (err) => console.error("Error in stream", err),
3080
+ error: (err) => {
3081
+ console.error("Error in stream", err);
3082
+ eventStream$.sendActionExecutionResult({
3083
+ actionExecutionId,
3084
+ actionName: action.name,
3085
+ error: {
3086
+ code: "STREAM_ERROR",
3087
+ message: err.message
3088
+ }
3089
+ });
3090
+ eventStream$.complete();
3091
+ },
3004
3092
  complete: () => eventStream$.complete()
3005
3093
  });
3006
3094
  } else {
3007
- const result = await ((_a = action.handler) == null ? void 0 : _a.call(action, args));
3008
- await streamLangChainResponse({
3009
- result,
3010
- eventStream$,
3011
- actionExecution: {
3012
- name: action.name,
3013
- id: actionExecutionId
3014
- }
3015
- });
3095
+ try {
3096
+ const result = await ((_a = action.handler) == null ? void 0 : _a.call(action, args));
3097
+ await streamLangChainResponse({
3098
+ result,
3099
+ eventStream$,
3100
+ actionExecution: {
3101
+ name: action.name,
3102
+ id: actionExecutionId
3103
+ }
3104
+ });
3105
+ } catch (e) {
3106
+ console.error("Error in action handler", e);
3107
+ eventStream$.sendActionExecutionResult({
3108
+ actionExecutionId,
3109
+ actionName: action.name,
3110
+ error: {
3111
+ code: "HANDLER_ERROR",
3112
+ message: e.message
3113
+ }
3114
+ });
3115
+ eventStream$.complete();
3116
+ }
3016
3117
  }
3017
3118
  }
3018
3119
  __name(executeAction, "executeAction");
@@ -3225,7 +3326,11 @@ var CopilotRuntime = class {
3225
3326
  eventSource.stream(async (eventStream$) => {
3226
3327
  (0, import_rxjs3.from)(stream).subscribe({
3227
3328
  next: (event) => eventStream$.next(event),
3228
- error: (err) => console.error("Error in stream", err),
3329
+ error: (err) => {
3330
+ console.error("Error in stream", err);
3331
+ eventStream$.error(err);
3332
+ eventStream$.complete();
3333
+ },
3229
3334
  complete: () => eventStream$.complete()
3230
3335
  });
3231
3336
  });