@copilotkit/runtime-client-gql 1.10.0 → 1.10.1-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 (48) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/dist/{chunk-PAQ6AHHC.mjs → chunk-5V6B3OXS.mjs} +2 -2
  3. package/dist/{chunk-PAQ6AHHC.mjs.map → chunk-5V6B3OXS.mjs.map} +1 -1
  4. package/dist/{chunk-YNQMTL2P.mjs → chunk-SCACOKQX.mjs} +38 -8
  5. package/dist/chunk-SCACOKQX.mjs.map +1 -0
  6. package/dist/{chunk-MTD2RJDJ.mjs → chunk-ZYA32QXZ.mjs} +44 -29
  7. package/dist/chunk-ZYA32QXZ.mjs.map +1 -0
  8. package/dist/client/CopilotRuntimeClient.js +1 -1
  9. package/dist/client/CopilotRuntimeClient.js.map +1 -1
  10. package/dist/client/CopilotRuntimeClient.mjs +1 -1
  11. package/dist/client/index.js +1 -1
  12. package/dist/client/index.js.map +1 -1
  13. package/dist/client/index.mjs +1 -1
  14. package/dist/index.d.ts +1 -1
  15. package/dist/index.js +82 -36
  16. package/dist/index.js.map +1 -1
  17. package/dist/index.mjs +5 -3
  18. package/dist/message-conversion/agui-to-gql.js +37 -7
  19. package/dist/message-conversion/agui-to-gql.js.map +1 -1
  20. package/dist/message-conversion/agui-to-gql.mjs +2 -2
  21. package/dist/message-conversion/agui-to-gql.test.js +529 -7
  22. package/dist/message-conversion/agui-to-gql.test.js.map +1 -1
  23. package/dist/message-conversion/agui-to-gql.test.mjs +494 -2
  24. package/dist/message-conversion/agui-to-gql.test.mjs.map +1 -1
  25. package/dist/message-conversion/gql-to-agui.d.ts +3 -2
  26. package/dist/message-conversion/gql-to-agui.js +44 -28
  27. package/dist/message-conversion/gql-to-agui.js.map +1 -1
  28. package/dist/message-conversion/gql-to-agui.mjs +4 -2
  29. package/dist/message-conversion/gql-to-agui.test.js +622 -28
  30. package/dist/message-conversion/gql-to-agui.test.js.map +1 -1
  31. package/dist/message-conversion/gql-to-agui.test.mjs +583 -2
  32. package/dist/message-conversion/gql-to-agui.test.mjs.map +1 -1
  33. package/dist/message-conversion/index.d.ts +1 -1
  34. package/dist/message-conversion/index.js +81 -35
  35. package/dist/message-conversion/index.js.map +1 -1
  36. package/dist/message-conversion/index.mjs +5 -3
  37. package/dist/message-conversion/roundtrip-conversion.test.js +250 -35
  38. package/dist/message-conversion/roundtrip-conversion.test.js.map +1 -1
  39. package/dist/message-conversion/roundtrip-conversion.test.mjs +174 -3
  40. package/dist/message-conversion/roundtrip-conversion.test.mjs.map +1 -1
  41. package/package.json +3 -3
  42. package/src/message-conversion/agui-to-gql.test.ts +566 -0
  43. package/src/message-conversion/agui-to-gql.ts +56 -9
  44. package/src/message-conversion/gql-to-agui.test.ts +663 -0
  45. package/src/message-conversion/gql-to-agui.ts +62 -35
  46. package/src/message-conversion/roundtrip-conversion.test.ts +228 -0
  47. package/dist/chunk-MTD2RJDJ.mjs.map +0 -1
  48. package/dist/chunk-YNQMTL2P.mjs.map +0 -1
package/dist/index.js CHANGED
@@ -58,6 +58,7 @@ __export(src_exports, {
58
58
  convertMessagesToGqlInput: () => convertMessagesToGqlInput,
59
59
  filterAdjacentAgentStateMessages: () => filterAdjacentAgentStateMessages,
60
60
  filterAgentStateMessages: () => filterAgentStateMessages,
61
+ gqlActionExecutionMessageToAGUIMessage: () => gqlActionExecutionMessageToAGUIMessage,
61
62
  gqlImageMessageToAGUIMessage: () => gqlImageMessageToAGUIMessage,
62
63
  gqlResultMessageToAGUIMessage: () => gqlResultMessageToAGUIMessage,
63
64
  gqlTextMessageToAGUIMessage: () => gqlTextMessageToAGUIMessage,
@@ -71,7 +72,7 @@ module.exports = __toCommonJS(src_exports);
71
72
  var import_core = require("@urql/core");
72
73
 
73
74
  // package.json
74
- var version = "1.10.0";
75
+ var version = "1.10.1-next.1";
75
76
 
76
77
  // src/graphql/@generated/graphql.ts
77
78
  var ActionInputAvailability = /* @__PURE__ */ ((ActionInputAvailability2) => {
@@ -791,8 +792,14 @@ function aguiToGQL(messages, actions, coAgentStateRenders) {
791
792
  const actionExecMsg = aguiToolCallToGQLActionExecution(toolCall, message.id);
792
793
  if ("generativeUI" in message && message.generativeUI && actions) {
793
794
  const actionName = toolCall.function.name;
794
- if (actions[actionName]) {
795
- actions[actionName].render = message.generativeUI;
795
+ const specificAction = Object.values(actions).find(
796
+ (action) => action.name === actionName
797
+ );
798
+ const wildcardAction = Object.values(actions).find((action) => action.name === "*");
799
+ if (specificAction) {
800
+ specificAction.render = message.generativeUI;
801
+ } else if (wildcardAction) {
802
+ wildcardAction.render = message.generativeUI;
796
803
  }
797
804
  }
798
805
  gqlMessages.push(actionExecMsg);
@@ -838,10 +845,20 @@ function aguiToolCallToGQLActionExecution(toolCall, parentMessageId) {
838
845
  throw new Error(`Unsupported tool call type: ${toolCall.type}`);
839
846
  }
840
847
  let argumentsObj;
841
- try {
842
- argumentsObj = JSON.parse(toolCall.function.arguments);
843
- } catch (error) {
844
- console.warn(`Failed to parse tool call arguments for ${toolCall.function.name}:`, error);
848
+ if (typeof toolCall.function.arguments === "string") {
849
+ try {
850
+ argumentsObj = JSON.parse(toolCall.function.arguments);
851
+ } catch (error) {
852
+ console.warn(`Failed to parse tool call arguments for ${toolCall.function.name}:`, error);
853
+ argumentsObj = {};
854
+ }
855
+ } else if (typeof toolCall.function.arguments === "object" && toolCall.function.arguments !== null) {
856
+ argumentsObj = toolCall.function.arguments;
857
+ } else {
858
+ console.warn(
859
+ `Invalid tool call arguments type for ${toolCall.function.name}:`,
860
+ typeof toolCall.function.arguments
861
+ );
845
862
  argumentsObj = {};
846
863
  }
847
864
  return new ActionExecutionMessage({
@@ -859,9 +876,23 @@ function aguiToolMessageToGQLResultMessage(message, toolCallNames) {
859
876
  throw new Error("Tool message must have a toolCallId");
860
877
  }
861
878
  const actionName = toolCallNames[message.toolCallId] || "unknown";
879
+ let resultContent;
880
+ const messageContent = message.content || "";
881
+ if (typeof messageContent === "string") {
882
+ resultContent = messageContent;
883
+ } else if (typeof messageContent === "object" && messageContent !== null) {
884
+ try {
885
+ resultContent = JSON.stringify(messageContent);
886
+ } catch (error) {
887
+ console.warn(`Failed to stringify tool result for ${actionName}:`, error);
888
+ resultContent = String(messageContent);
889
+ }
890
+ } else {
891
+ resultContent = String(messageContent);
892
+ }
862
893
  return new ResultMessage({
863
894
  id: message.id,
864
- result: message.content || "",
895
+ result: resultContent,
865
896
  actionExecutionId: message.toolCallId,
866
897
  actionName: message.toolName || actionName
867
898
  });
@@ -940,45 +971,59 @@ function gqlToAGUI(messages, actions, coAgentStateRenders) {
940
971
  return aguiMessages;
941
972
  }
942
973
  function gqlActionExecutionMessageToAGUIMessage(message, actions, actionResults) {
943
- if (actions && Object.values(actions).some((action) => action.name === message.name)) {
944
- const action = Object.values(actions).find((action2) => action2.name === message.name);
945
- const createRenderWrapper = (originalRender) => {
946
- if (!originalRender)
947
- return void 0;
948
- return (props) => {
949
- var _a;
950
- const actionResult = actionResults == null ? void 0 : actionResults.get(message.id);
951
- let status = "inProgress";
952
- if (actionResult !== void 0) {
953
- status = "complete";
954
- } else if (((_a = message.status) == null ? void 0 : _a.code) !== "Pending" /* Pending */) {
955
- status = "executing";
956
- }
957
- const renderProps = {
958
- status: (props == null ? void 0 : props.status) || status,
959
- args: message.arguments || {},
960
- result: (props == null ? void 0 : props.result) || actionResult || void 0,
961
- respond: (props == null ? void 0 : props.respond) || (() => {
962
- }),
963
- messageId: message.id,
964
- ...props
965
- };
966
- return originalRender(renderProps);
967
- };
968
- };
974
+ const hasSpecificAction = actions && Object.values(actions).some((action2) => action2.name === message.name);
975
+ const hasWildcardAction = actions && Object.values(actions).some((action2) => action2.name === "*");
976
+ if (!actions || !hasSpecificAction && !hasWildcardAction) {
969
977
  return {
970
978
  id: message.id,
971
979
  role: "assistant",
972
- content: "",
973
980
  toolCalls: [actionExecutionMessageToAGUIMessage(message)],
974
- generativeUI: createRenderWrapper(action.render),
975
981
  name: message.name
976
982
  };
977
983
  }
984
+ const action = Object.values(actions).find((action2) => action2.name === message.name) || Object.values(actions).find((action2) => action2.name === "*");
985
+ const createRenderWrapper = (originalRender) => {
986
+ if (!originalRender)
987
+ return void 0;
988
+ return (props) => {
989
+ var _a;
990
+ let actionResult = actionResults == null ? void 0 : actionResults.get(message.id);
991
+ let status = "inProgress";
992
+ if (actionResult !== void 0) {
993
+ status = "complete";
994
+ } else if (((_a = message.status) == null ? void 0 : _a.code) !== "Pending" /* Pending */) {
995
+ status = "executing";
996
+ }
997
+ if (typeof (props == null ? void 0 : props.result) === "string") {
998
+ try {
999
+ props.result = JSON.parse(props.result);
1000
+ } catch (e) {
1001
+ }
1002
+ }
1003
+ if (typeof actionResult === "string") {
1004
+ try {
1005
+ actionResult = JSON.parse(actionResult);
1006
+ } catch (e) {
1007
+ }
1008
+ }
1009
+ const renderProps = {
1010
+ status: (props == null ? void 0 : props.status) || status,
1011
+ args: message.arguments || {},
1012
+ result: (props == null ? void 0 : props.result) || actionResult || void 0,
1013
+ respond: (props == null ? void 0 : props.respond) || (() => {
1014
+ }),
1015
+ messageId: message.id,
1016
+ ...props
1017
+ };
1018
+ return originalRender(renderProps);
1019
+ };
1020
+ };
978
1021
  return {
979
1022
  id: message.id,
980
1023
  role: "assistant",
1024
+ content: "",
981
1025
  toolCalls: [actionExecutionMessageToAGUIMessage(message)],
1026
+ generativeUI: createRenderWrapper(action.render),
982
1027
  name: message.name
983
1028
  };
984
1029
  }
@@ -1113,6 +1158,7 @@ function gqlImageMessageToAGUIMessage(message) {
1113
1158
  convertMessagesToGqlInput,
1114
1159
  filterAdjacentAgentStateMessages,
1115
1160
  filterAgentStateMessages,
1161
+ gqlActionExecutionMessageToAGUIMessage,
1116
1162
  gqlImageMessageToAGUIMessage,
1117
1163
  gqlResultMessageToAGUIMessage,
1118
1164
  gqlTextMessageToAGUIMessage,