@copilotkit/runtime-client-gql 1.53.1-next.2 → 1.54.0-next.3
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/CHANGELOG.md +6 -0
- package/dist/client/conversion.cjs +6 -1
- package/dist/client/conversion.cjs.map +1 -1
- package/dist/client/conversion.mjs +6 -1
- package/dist/client/conversion.mjs.map +1 -1
- package/dist/index.umd.js +13 -4
- package/dist/index.umd.js.map +1 -1
- package/dist/message-conversion/agui-to-gql.cjs +6 -2
- package/dist/message-conversion/agui-to-gql.cjs.map +1 -1
- package/dist/message-conversion/agui-to-gql.d.cts.map +1 -1
- package/dist/message-conversion/agui-to-gql.d.mts.map +1 -1
- package/dist/message-conversion/agui-to-gql.mjs +6 -2
- package/dist/message-conversion/agui-to-gql.mjs.map +1 -1
- package/dist/package.cjs +1 -1
- package/dist/package.mjs +1 -1
- package/package.json +2 -2
- package/src/client/__tests__/conversion.test.ts +64 -0
- package/src/client/conversion.ts +13 -1
- package/src/message-conversion/agui-to-gql.test.ts +19 -0
- package/src/message-conversion/agui-to-gql.ts +14 -4
package/CHANGELOG.md
CHANGED
|
@@ -179,7 +179,12 @@ function loadMessagesFromJsonRepresentation(json) {
|
|
|
179
179
|
function getPartialArguments(args) {
|
|
180
180
|
try {
|
|
181
181
|
if (!args.length) return {};
|
|
182
|
-
|
|
182
|
+
const parsed = JSON.parse((0, untruncate_json.default)(args.join("")));
|
|
183
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
184
|
+
console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
|
|
185
|
+
return {};
|
|
186
|
+
}
|
|
187
|
+
return parsed;
|
|
183
188
|
} catch (e) {
|
|
184
189
|
return {};
|
|
185
190
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.cjs","names":["TextMessage","MessageStatusCode","ActionExecutionMessage","ResultMessage","AgentStateMessage","ImageMessage"],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n return JSON.parse(untruncateJson(args.join(\"\")));\n } catch (e) {\n return {};\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversion.cjs","names":["TextMessage","MessageStatusCode","ActionExecutionMessage","ResultMessage","AgentStateMessage","ImageMessage"],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n const parsed = JSON.parse(untruncateJson(args.join(\"\")));\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n Array.isArray(parsed)\n ) {\n console.warn(\n `[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`,\n );\n return {};\n }\n return parsed;\n } catch (e) {\n // Incomplete JSON is expected during streaming — no warning needed\n return {};\n }\n}\n"],"mappings":"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"}
|
|
@@ -177,7 +177,12 @@ function loadMessagesFromJsonRepresentation(json) {
|
|
|
177
177
|
function getPartialArguments(args) {
|
|
178
178
|
try {
|
|
179
179
|
if (!args.length) return {};
|
|
180
|
-
|
|
180
|
+
const parsed = JSON.parse(untruncateJson(args.join("")));
|
|
181
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
182
|
+
console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
|
|
183
|
+
return {};
|
|
184
|
+
}
|
|
185
|
+
return parsed;
|
|
181
186
|
} catch (e) {
|
|
182
187
|
return {};
|
|
183
188
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.mjs","names":[],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n return JSON.parse(untruncateJson(args.join(\"\")));\n } catch (e) {\n return {};\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"conversion.mjs","names":[],"sources":["../../src/client/conversion.ts"],"sourcesContent":["import {\n GenerateCopilotResponseMutation,\n MessageInput,\n MessageStatusCode,\n} from \"../graphql/@generated/graphql\";\nimport {\n ActionExecutionMessage,\n AgentStateMessage,\n Message,\n ResultMessage,\n TextMessage,\n ImageMessage,\n} from \"./types\";\n\nimport untruncateJson from \"untruncate-json\";\nimport { parseJson } from \"@copilotkit/shared\";\n\nexport function filterAgentStateMessages(messages: Message[]): Message[] {\n return messages.filter((message) => !message.isAgentStateMessage());\n}\n\nexport function convertMessagesToGqlInput(messages: Message[]): MessageInput[] {\n return messages.map((message) => {\n if (message.isTextMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n textMessage: {\n content: message.content,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isActionExecutionMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n actionExecutionMessage: {\n name: message.name,\n arguments: JSON.stringify(message.arguments),\n parentMessageId: message.parentMessageId,\n },\n };\n } else if (message.isResultMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n resultMessage: {\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n },\n };\n } else if (message.isAgentStateMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n agentStateMessage: {\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: JSON.stringify(message.state),\n },\n };\n } else if (message.isImageMessage()) {\n return {\n id: message.id,\n createdAt: message.createdAt,\n imageMessage: {\n format: message.format,\n bytes: message.bytes,\n role: message.role as any,\n parentMessageId: message.parentMessageId,\n },\n };\n } else {\n throw new Error(\"Unknown message type\");\n }\n });\n}\n\nexport function filterAdjacentAgentStateMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] {\n const filteredMessages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"] =\n [];\n\n messages.forEach((message, i) => {\n // keep all other message types\n if (message.__typename !== \"AgentStateMessageOutput\") {\n filteredMessages.push(message);\n } else {\n const prevAgentStateMessageIndex = filteredMessages.findIndex(\n // TODO: also check runId\n (m) =>\n m.__typename === \"AgentStateMessageOutput\" &&\n m.agentName === message.agentName,\n );\n if (prevAgentStateMessageIndex === -1) {\n filteredMessages.push(message);\n } else {\n filteredMessages[prevAgentStateMessageIndex] = message;\n }\n }\n });\n\n return filteredMessages;\n}\n\nexport function convertGqlOutputToMessages(\n messages: GenerateCopilotResponseMutation[\"generateCopilotResponse\"][\"messages\"],\n): Message[] {\n return messages.map((message) => {\n if (message.__typename === \"TextMessageOutput\") {\n return new TextMessage({\n id: message.id,\n role: message.role,\n content: message.content.join(\"\"),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ActionExecutionMessageOutput\") {\n return new ActionExecutionMessage({\n id: message.id,\n name: message.name,\n arguments: getPartialArguments(message.arguments),\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"ResultMessageOutput\") {\n return new ResultMessage({\n id: message.id,\n result: message.result,\n actionExecutionId: message.actionExecutionId,\n actionName: message.actionName,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n } else if (message.__typename === \"AgentStateMessageOutput\") {\n return new AgentStateMessage({\n id: message.id,\n threadId: message.threadId,\n role: message.role,\n agentName: message.agentName,\n nodeName: message.nodeName,\n runId: message.runId,\n active: message.active,\n running: message.running,\n state: parseJson(message.state, {}),\n createdAt: new Date(),\n });\n } else if (message.__typename === \"ImageMessageOutput\") {\n return new ImageMessage({\n id: message.id,\n format: message.format,\n bytes: message.bytes,\n role: message.role,\n parentMessageId: message.parentMessageId,\n createdAt: new Date(),\n status: message.status || { code: MessageStatusCode.Pending },\n });\n }\n\n throw new Error(\"Unknown message type\");\n });\n}\n\nexport function loadMessagesFromJsonRepresentation(json: any[]): Message[] {\n const result: Message[] = [];\n for (const item of json) {\n if (\"content\" in item) {\n result.push(\n new TextMessage({\n id: item.id,\n role: item.role,\n content: item.content,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"arguments\" in item) {\n result.push(\n new ActionExecutionMessage({\n id: item.id,\n name: item.name,\n arguments: item.arguments,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"result\" in item) {\n result.push(\n new ResultMessage({\n id: item.id,\n result: item.result,\n actionExecutionId: item.actionExecutionId,\n actionName: item.actionName,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n } else if (\"state\" in item) {\n result.push(\n new AgentStateMessage({\n id: item.id,\n threadId: item.threadId,\n role: item.role,\n agentName: item.agentName,\n nodeName: item.nodeName,\n runId: item.runId,\n active: item.active,\n running: item.running,\n state: item.state,\n createdAt: item.createdAt || new Date(),\n }),\n );\n } else if (\"format\" in item && \"bytes\" in item) {\n result.push(\n new ImageMessage({\n id: item.id,\n format: item.format,\n bytes: item.bytes,\n role: item.role,\n parentMessageId: item.parentMessageId,\n createdAt: item.createdAt || new Date(),\n status: item.status || { code: MessageStatusCode.Success },\n }),\n );\n }\n }\n return result;\n}\n\nfunction getPartialArguments(args: string[]) {\n try {\n if (!args.length) return {};\n\n const parsed = JSON.parse(untruncateJson(args.join(\"\")));\n if (\n typeof parsed !== \"object\" ||\n parsed === null ||\n Array.isArray(parsed)\n ) {\n console.warn(\n `[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`,\n );\n return {};\n }\n return parsed;\n } catch (e) {\n // Incomplete JSON is expected during streaming — no warning needed\n return {};\n }\n}\n"],"mappings":"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"}
|
package/dist/index.umd.js
CHANGED
|
@@ -34,7 +34,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
|
34
34
|
untruncate_json = __toESM(untruncate_json);
|
|
35
35
|
|
|
36
36
|
//#region package.json
|
|
37
|
-
var version = "1.
|
|
37
|
+
var version = "1.54.0-next.3";
|
|
38
38
|
|
|
39
39
|
//#endregion
|
|
40
40
|
//#region src/graphql/@generated/graphql.ts
|
|
@@ -1719,7 +1719,12 @@ untruncate_json = __toESM(untruncate_json);
|
|
|
1719
1719
|
function getPartialArguments(args) {
|
|
1720
1720
|
try {
|
|
1721
1721
|
if (!args.length) return {};
|
|
1722
|
-
|
|
1722
|
+
const parsed = JSON.parse((0, untruncate_json.default)(args.join("")));
|
|
1723
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
|
|
1724
|
+
console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof parsed}), falling back to empty object`);
|
|
1725
|
+
return {};
|
|
1726
|
+
}
|
|
1727
|
+
return parsed;
|
|
1723
1728
|
} catch (e) {
|
|
1724
1729
|
return {};
|
|
1725
1730
|
}
|
|
@@ -1811,12 +1816,16 @@ untruncate_json = __toESM(untruncate_json);
|
|
|
1811
1816
|
if (typeof toolCall.function.arguments === "string") try {
|
|
1812
1817
|
argumentsObj = JSON.parse(toolCall.function.arguments);
|
|
1813
1818
|
} catch (error) {
|
|
1814
|
-
console.warn(`Failed to parse tool
|
|
1819
|
+
console.warn(`[CopilotKit] Failed to parse tool arguments, falling back to empty object`);
|
|
1815
1820
|
argumentsObj = {};
|
|
1816
1821
|
}
|
|
1817
1822
|
else if (typeof toolCall.function.arguments === "object" && toolCall.function.arguments !== null) argumentsObj = toolCall.function.arguments;
|
|
1818
1823
|
else {
|
|
1819
|
-
console.warn(`
|
|
1824
|
+
console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof toolCall.function.arguments}), falling back to empty object`);
|
|
1825
|
+
argumentsObj = {};
|
|
1826
|
+
}
|
|
1827
|
+
if (typeof argumentsObj !== "object" || argumentsObj === null || Array.isArray(argumentsObj)) {
|
|
1828
|
+
console.warn(`[CopilotKit] Tool arguments parsed to non-object (${typeof argumentsObj}), falling back to empty object`);
|
|
1820
1829
|
argumentsObj = {};
|
|
1821
1830
|
}
|
|
1822
1831
|
return new ActionExecutionMessage({
|