@copilotkit/runtime-client-gql 1.9.3-next.4 → 1.10.0-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.
- package/CHANGELOG.md +35 -0
- package/dist/chunk-2R7M2FWR.mjs +17765 -0
- package/dist/chunk-2R7M2FWR.mjs.map +1 -0
- package/dist/chunk-CA4VMP2C.mjs +1 -0
- package/dist/chunk-CA4VMP2C.mjs.map +1 -0
- package/dist/chunk-DELDZXUX.mjs +31 -0
- package/dist/chunk-DELDZXUX.mjs.map +1 -0
- package/dist/chunk-MTD2RJDJ.mjs +187 -0
- package/dist/chunk-MTD2RJDJ.mjs.map +1 -0
- package/dist/{chunk-MCVCTWSF.mjs → chunk-UQACSQNW.mjs} +5 -5
- package/dist/{chunk-MCVCTWSF.mjs.map → chunk-UQACSQNW.mjs.map} +1 -1
- package/dist/chunk-YNQMTL2P.mjs +191 -0
- package/dist/chunk-YNQMTL2P.mjs.map +1 -0
- package/dist/client/CopilotRuntimeClient.js +1 -1
- package/dist/client/CopilotRuntimeClient.js.map +1 -1
- package/dist/client/CopilotRuntimeClient.mjs +3 -2
- package/dist/client/conversion.mjs +1 -0
- package/dist/client/index.d.ts +2 -2
- package/dist/client/index.js +1 -1
- package/dist/client/index.js.map +1 -1
- package/dist/client/index.mjs +5 -4
- package/dist/client/types.mjs +1 -0
- package/dist/graphql/@generated/fragment-masking.mjs +1 -0
- package/dist/graphql/@generated/gql.mjs +1 -0
- package/dist/graphql/@generated/graphql.mjs +1 -0
- package/dist/graphql/@generated/index.mjs +5 -4
- package/dist/graphql/definitions/mutations.mjs +1 -0
- package/dist/graphql/definitions/queries.mjs +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.js +370 -1
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +30 -4
- package/dist/magic-string.es-O42ACB6H.mjs +1373 -0
- package/dist/magic-string.es-O42ACB6H.mjs.map +1 -0
- package/dist/message-conversion/agui-to-gql.d.ts +13 -0
- package/dist/message-conversion/agui-to-gql.js +293 -0
- package/dist/message-conversion/agui-to-gql.js.map +1 -0
- package/dist/message-conversion/agui-to-gql.mjs +26 -0
- package/dist/message-conversion/agui-to-gql.mjs.map +1 -0
- package/dist/message-conversion/agui-to-gql.test.d.ts +2 -0
- package/dist/message-conversion/agui-to-gql.test.js +19958 -0
- package/dist/message-conversion/agui-to-gql.test.js.map +1 -0
- package/dist/message-conversion/agui-to-gql.test.mjs +565 -0
- package/dist/message-conversion/agui-to-gql.test.mjs.map +1 -0
- package/dist/message-conversion/gql-to-agui.d.ts +11 -0
- package/dist/message-conversion/gql-to-agui.js +227 -0
- package/dist/message-conversion/gql-to-agui.js.map +1 -0
- package/dist/message-conversion/gql-to-agui.mjs +22 -0
- package/dist/message-conversion/gql-to-agui.mjs.map +1 -0
- package/dist/message-conversion/gql-to-agui.test.d.ts +2 -0
- package/dist/message-conversion/gql-to-agui.test.js +20134 -0
- package/dist/message-conversion/gql-to-agui.test.js.map +1 -0
- package/dist/message-conversion/gql-to-agui.test.mjs +737 -0
- package/dist/message-conversion/gql-to-agui.test.mjs.map +1 -0
- package/dist/message-conversion/index.d.ts +6 -0
- package/dist/message-conversion/index.js +477 -0
- package/dist/message-conversion/index.js.map +1 -0
- package/dist/message-conversion/index.mjs +37 -0
- package/dist/message-conversion/index.mjs.map +1 -0
- package/dist/message-conversion/roundtrip-conversion.test.d.ts +2 -0
- package/dist/message-conversion/roundtrip-conversion.test.js +19768 -0
- package/dist/message-conversion/roundtrip-conversion.test.js.map +1 -0
- package/dist/message-conversion/roundtrip-conversion.test.mjs +219 -0
- package/dist/message-conversion/roundtrip-conversion.test.mjs.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +1 -0
- package/src/message-conversion/agui-to-gql.test.ts +640 -0
- package/src/message-conversion/agui-to-gql.ts +255 -0
- package/src/message-conversion/gql-to-agui.test.ts +844 -0
- package/src/message-conversion/gql-to-agui.ts +237 -0
- package/src/message-conversion/index.ts +2 -0
- package/src/message-conversion/roundtrip-conversion.test.ts +212 -0
package/dist/index.d.ts
CHANGED
|
@@ -3,6 +3,9 @@ export { convertGqlOutputToMessages, convertMessagesToGqlInput, filterAdjacentAg
|
|
|
3
3
|
export { ActionExecutionMessage, AgentStateMessage, ImageMessage, LangGraphInterruptEvent, Message, MetaEvent, ResultMessage, Role, TextMessage, langGraphInterruptEvent } from './client/types.js';
|
|
4
4
|
export { GraphQLError } from 'graphql';
|
|
5
5
|
export { ActionExecutionMessageInput, ActionExecutionMessageOutput, ActionInput, ActionInputAvailability, Agent, AgentSessionInput, AgentStateInput, AgentStateMessageInput, AgentStateMessageOutput, AgentsResponse, AvailableAgentsDocument, AvailableAgentsQuery, AvailableAgentsQueryVariables, BaseMessageOutput, BaseMetaEvent, BaseResponseStatus, CloudInput, CopilotKitLangGraphInterruptEvent, CopilotKitLangGraphInterruptEventData, CopilotRequestType, CopilotResponse, Exact, ExtensionsInput, ExtensionsResponse, FailedMessageStatus, FailedResponseStatus, FailedResponseStatusReason, ForwardedParametersInput, FrontendInput, GenerateCopilotResponseDocument, GenerateCopilotResponseInput, GenerateCopilotResponseMetadataInput, GenerateCopilotResponseMutation, GenerateCopilotResponseMutationVariables, GuardrailsInput, GuardrailsRuleInput, ImageMessageInput, ImageMessageOutput, Incremental, InputMaybe, LoadAgentStateDocument, LoadAgentStateInput, LoadAgentStateQuery, LoadAgentStateQueryVariables, LoadAgentStateResponse, MakeEmpty, MakeMaybe, MakeOptional, Maybe, MessageInput, MessageRole, MessageStatus, MessageStatusCode, MetaEventInput, MetaEventName, Mutation, MutationGenerateCopilotResponseArgs, OpenAiApiAssistantApiInput, OpenAiApiAssistantApiResponse, PendingMessageStatus, PendingResponseStatus, Query, QueryLoadAgentStateArgs, ResponseStatus, ResponseStatusCode, ResultMessageInput, ResultMessageOutput, Scalars, SuccessMessageStatus, SuccessResponseStatus, TextMessageInput, TextMessageOutput } from './graphql/@generated/graphql.js';
|
|
6
|
+
export { aguiMessageWithImageToGQLMessage, aguiMessageWithRenderToGQL, aguiTextMessageToGQLMessage, aguiToGQL, aguiToolCallToGQLActionExecution, aguiToolMessageToGQLResultMessage } from './message-conversion/agui-to-gql.js';
|
|
7
|
+
export { gqlImageMessageToAGUIMessage, gqlResultMessageToAGUIMessage, gqlTextMessageToAGUIMessage, gqlToAGUI } from './message-conversion/gql-to-agui.js';
|
|
6
8
|
import 'urql';
|
|
7
9
|
import '@urql/core';
|
|
8
10
|
import '@graphql-typed-document-node/core';
|
|
11
|
+
import '@copilotkit/shared';
|
package/dist/index.js
CHANGED
|
@@ -48,10 +48,20 @@ __export(src_exports, {
|
|
|
48
48
|
ResultMessage: () => ResultMessage,
|
|
49
49
|
Role: () => Role,
|
|
50
50
|
TextMessage: () => TextMessage,
|
|
51
|
+
aguiMessageWithImageToGQLMessage: () => aguiMessageWithImageToGQLMessage,
|
|
52
|
+
aguiMessageWithRenderToGQL: () => aguiMessageWithRenderToGQL,
|
|
53
|
+
aguiTextMessageToGQLMessage: () => aguiTextMessageToGQLMessage,
|
|
54
|
+
aguiToGQL: () => aguiToGQL,
|
|
55
|
+
aguiToolCallToGQLActionExecution: () => aguiToolCallToGQLActionExecution,
|
|
56
|
+
aguiToolMessageToGQLResultMessage: () => aguiToolMessageToGQLResultMessage,
|
|
51
57
|
convertGqlOutputToMessages: () => convertGqlOutputToMessages,
|
|
52
58
|
convertMessagesToGqlInput: () => convertMessagesToGqlInput,
|
|
53
59
|
filterAdjacentAgentStateMessages: () => filterAdjacentAgentStateMessages,
|
|
54
60
|
filterAgentStateMessages: () => filterAgentStateMessages,
|
|
61
|
+
gqlImageMessageToAGUIMessage: () => gqlImageMessageToAGUIMessage,
|
|
62
|
+
gqlResultMessageToAGUIMessage: () => gqlResultMessageToAGUIMessage,
|
|
63
|
+
gqlTextMessageToAGUIMessage: () => gqlTextMessageToAGUIMessage,
|
|
64
|
+
gqlToAGUI: () => gqlToAGUI,
|
|
55
65
|
langGraphInterruptEvent: () => langGraphInterruptEvent,
|
|
56
66
|
loadMessagesFromJsonRepresentation: () => loadMessagesFromJsonRepresentation
|
|
57
67
|
});
|
|
@@ -61,7 +71,7 @@ module.exports = __toCommonJS(src_exports);
|
|
|
61
71
|
var import_core = require("@urql/core");
|
|
62
72
|
|
|
63
73
|
// package.json
|
|
64
|
-
var version = "1.
|
|
74
|
+
var version = "1.10.0-next.0";
|
|
65
75
|
|
|
66
76
|
// src/graphql/@generated/graphql.ts
|
|
67
77
|
var ActionInputAvailability = /* @__PURE__ */ ((ActionInputAvailability2) => {
|
|
@@ -724,6 +734,355 @@ function getPartialArguments(args) {
|
|
|
724
734
|
return {};
|
|
725
735
|
}
|
|
726
736
|
}
|
|
737
|
+
|
|
738
|
+
// src/message-conversion/agui-to-gql.ts
|
|
739
|
+
function extractAgentName(message) {
|
|
740
|
+
if (message.role !== "assistant") {
|
|
741
|
+
throw new Error(`Cannot extract agent name from message with role ${message.role}`);
|
|
742
|
+
}
|
|
743
|
+
return message.agentName || "unknown";
|
|
744
|
+
}
|
|
745
|
+
function isAgentStateMessage(message) {
|
|
746
|
+
return message.role === "assistant" && "agentName" in message && "state" in message;
|
|
747
|
+
}
|
|
748
|
+
function hasImageProperty(message) {
|
|
749
|
+
const canContainImage = message.role === "assistant" || message.role === "user";
|
|
750
|
+
if (!canContainImage || message.image === void 0) {
|
|
751
|
+
return false;
|
|
752
|
+
}
|
|
753
|
+
const isMalformed = message.image.format === void 0 || message.image.bytes === void 0;
|
|
754
|
+
if (isMalformed) {
|
|
755
|
+
return false;
|
|
756
|
+
}
|
|
757
|
+
return true;
|
|
758
|
+
}
|
|
759
|
+
function aguiToGQL(messages, actions, coAgentStateRenders) {
|
|
760
|
+
const gqlMessages = [];
|
|
761
|
+
messages = Array.isArray(messages) ? messages : [messages];
|
|
762
|
+
const toolCallNames = {};
|
|
763
|
+
for (const message of messages) {
|
|
764
|
+
if (isAgentStateMessage(message)) {
|
|
765
|
+
const agentName = extractAgentName(message);
|
|
766
|
+
const state = "state" in message && message.state ? message.state : {};
|
|
767
|
+
gqlMessages.push(
|
|
768
|
+
new AgentStateMessage({
|
|
769
|
+
id: message.id,
|
|
770
|
+
agentName,
|
|
771
|
+
state,
|
|
772
|
+
role: Role.Assistant
|
|
773
|
+
})
|
|
774
|
+
);
|
|
775
|
+
if ("generativeUI" in message && message.generativeUI && coAgentStateRenders) {
|
|
776
|
+
coAgentStateRenders[agentName] = {
|
|
777
|
+
name: agentName,
|
|
778
|
+
render: message.generativeUI
|
|
779
|
+
};
|
|
780
|
+
}
|
|
781
|
+
continue;
|
|
782
|
+
}
|
|
783
|
+
if (hasImageProperty(message)) {
|
|
784
|
+
gqlMessages.push(aguiMessageWithImageToGQLMessage(message));
|
|
785
|
+
continue;
|
|
786
|
+
}
|
|
787
|
+
if (message.role === "assistant" && message.toolCalls) {
|
|
788
|
+
gqlMessages.push(aguiTextMessageToGQLMessage(message));
|
|
789
|
+
for (const toolCall of message.toolCalls) {
|
|
790
|
+
toolCallNames[toolCall.id] = toolCall.function.name;
|
|
791
|
+
const actionExecMsg = aguiToolCallToGQLActionExecution(toolCall, message.id);
|
|
792
|
+
if ("generativeUI" in message && message.generativeUI && actions) {
|
|
793
|
+
const actionName = toolCall.function.name;
|
|
794
|
+
if (actions[actionName]) {
|
|
795
|
+
actions[actionName].render = message.generativeUI;
|
|
796
|
+
}
|
|
797
|
+
}
|
|
798
|
+
gqlMessages.push(actionExecMsg);
|
|
799
|
+
}
|
|
800
|
+
continue;
|
|
801
|
+
}
|
|
802
|
+
if (message.role === "developer" || message.role === "system" || message.role === "assistant" || message.role === "user") {
|
|
803
|
+
gqlMessages.push(aguiTextMessageToGQLMessage(message));
|
|
804
|
+
continue;
|
|
805
|
+
}
|
|
806
|
+
if (message.role === "tool") {
|
|
807
|
+
gqlMessages.push(aguiToolMessageToGQLResultMessage(message, toolCallNames));
|
|
808
|
+
continue;
|
|
809
|
+
}
|
|
810
|
+
throw new Error(
|
|
811
|
+
`Unknown message role: "${message.role}" in message with id: ${message.id}`
|
|
812
|
+
);
|
|
813
|
+
}
|
|
814
|
+
return gqlMessages;
|
|
815
|
+
}
|
|
816
|
+
function aguiTextMessageToGQLMessage(message) {
|
|
817
|
+
if (message.role !== "developer" && message.role !== "system" && message.role !== "assistant" && message.role !== "user") {
|
|
818
|
+
throw new Error(`Cannot convert message with role ${message.role} to TextMessage`);
|
|
819
|
+
}
|
|
820
|
+
let roleValue;
|
|
821
|
+
if (message.role === "developer") {
|
|
822
|
+
roleValue = Role.Developer;
|
|
823
|
+
} else if (message.role === "system") {
|
|
824
|
+
roleValue = Role.System;
|
|
825
|
+
} else if (message.role === "assistant") {
|
|
826
|
+
roleValue = Role.Assistant;
|
|
827
|
+
} else {
|
|
828
|
+
roleValue = Role.User;
|
|
829
|
+
}
|
|
830
|
+
return new TextMessage({
|
|
831
|
+
id: message.id,
|
|
832
|
+
content: message.content || "",
|
|
833
|
+
role: roleValue
|
|
834
|
+
});
|
|
835
|
+
}
|
|
836
|
+
function aguiToolCallToGQLActionExecution(toolCall, parentMessageId) {
|
|
837
|
+
if (toolCall.type !== "function") {
|
|
838
|
+
throw new Error(`Unsupported tool call type: ${toolCall.type}`);
|
|
839
|
+
}
|
|
840
|
+
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);
|
|
845
|
+
argumentsObj = {};
|
|
846
|
+
}
|
|
847
|
+
return new ActionExecutionMessage({
|
|
848
|
+
id: toolCall.id,
|
|
849
|
+
name: toolCall.function.name,
|
|
850
|
+
arguments: argumentsObj,
|
|
851
|
+
parentMessageId
|
|
852
|
+
});
|
|
853
|
+
}
|
|
854
|
+
function aguiToolMessageToGQLResultMessage(message, toolCallNames) {
|
|
855
|
+
if (message.role !== "tool") {
|
|
856
|
+
throw new Error(`Cannot convert message with role ${message.role} to ResultMessage`);
|
|
857
|
+
}
|
|
858
|
+
if (!message.toolCallId) {
|
|
859
|
+
throw new Error("Tool message must have a toolCallId");
|
|
860
|
+
}
|
|
861
|
+
const actionName = toolCallNames[message.toolCallId] || "unknown";
|
|
862
|
+
return new ResultMessage({
|
|
863
|
+
id: message.id,
|
|
864
|
+
result: message.content || "",
|
|
865
|
+
actionExecutionId: message.toolCallId,
|
|
866
|
+
actionName: message.toolName || actionName
|
|
867
|
+
});
|
|
868
|
+
}
|
|
869
|
+
function aguiMessageWithRenderToGQL(message, actions, coAgentStateRenders) {
|
|
870
|
+
if (message.role === "assistant" && "generativeUI" in message && message.generativeUI && !message.toolCalls) {
|
|
871
|
+
const gqlMessages = [];
|
|
872
|
+
gqlMessages.push(
|
|
873
|
+
new AgentStateMessage({
|
|
874
|
+
id: message.id,
|
|
875
|
+
agentName: "unknown",
|
|
876
|
+
state: {},
|
|
877
|
+
role: Role.Assistant
|
|
878
|
+
})
|
|
879
|
+
);
|
|
880
|
+
if (coAgentStateRenders) {
|
|
881
|
+
coAgentStateRenders.unknown = {
|
|
882
|
+
name: "unknown",
|
|
883
|
+
render: message.generativeUI
|
|
884
|
+
};
|
|
885
|
+
}
|
|
886
|
+
return gqlMessages;
|
|
887
|
+
}
|
|
888
|
+
return aguiToGQL([message], actions, coAgentStateRenders);
|
|
889
|
+
}
|
|
890
|
+
function aguiMessageWithImageToGQLMessage(message) {
|
|
891
|
+
if (!hasImageProperty(message)) {
|
|
892
|
+
throw new Error(`Cannot convert message to ImageMessage: missing format or bytes`);
|
|
893
|
+
}
|
|
894
|
+
let roleValue;
|
|
895
|
+
if (message.role === "assistant") {
|
|
896
|
+
roleValue = Role.Assistant;
|
|
897
|
+
} else {
|
|
898
|
+
roleValue = Role.User;
|
|
899
|
+
}
|
|
900
|
+
if (message.role !== "assistant" && message.role !== "user") {
|
|
901
|
+
throw new Error(`Cannot convert message with role ${message.role} to ImageMessage`);
|
|
902
|
+
}
|
|
903
|
+
return new ImageMessage({
|
|
904
|
+
id: message.id,
|
|
905
|
+
format: message.image.format,
|
|
906
|
+
bytes: message.image.bytes,
|
|
907
|
+
role: roleValue
|
|
908
|
+
});
|
|
909
|
+
}
|
|
910
|
+
|
|
911
|
+
// src/message-conversion/gql-to-agui.ts
|
|
912
|
+
var VALID_IMAGE_FORMATS = ["jpeg", "png", "webp", "gif"];
|
|
913
|
+
function validateImageFormat(format) {
|
|
914
|
+
return VALID_IMAGE_FORMATS.includes(format);
|
|
915
|
+
}
|
|
916
|
+
function gqlToAGUI(messages, actions, coAgentStateRenders) {
|
|
917
|
+
let aguiMessages = [];
|
|
918
|
+
messages = Array.isArray(messages) ? messages : [messages];
|
|
919
|
+
const actionResults = /* @__PURE__ */ new Map();
|
|
920
|
+
for (const message of messages) {
|
|
921
|
+
if (message.isResultMessage()) {
|
|
922
|
+
actionResults.set(message.actionExecutionId, message.result);
|
|
923
|
+
}
|
|
924
|
+
}
|
|
925
|
+
for (const message of messages) {
|
|
926
|
+
if (message.isTextMessage()) {
|
|
927
|
+
aguiMessages.push(gqlTextMessageToAGUIMessage(message));
|
|
928
|
+
} else if (message.isResultMessage()) {
|
|
929
|
+
aguiMessages.push(gqlResultMessageToAGUIMessage(message));
|
|
930
|
+
} else if (message.isActionExecutionMessage()) {
|
|
931
|
+
aguiMessages.push(gqlActionExecutionMessageToAGUIMessage(message, actions, actionResults));
|
|
932
|
+
} else if (message.isAgentStateMessage()) {
|
|
933
|
+
aguiMessages.push(gqlAgentStateMessageToAGUIMessage(message, coAgentStateRenders));
|
|
934
|
+
} else if (message.isImageMessage()) {
|
|
935
|
+
aguiMessages.push(gqlImageMessageToAGUIMessage(message));
|
|
936
|
+
} else {
|
|
937
|
+
throw new Error("Unknown message type");
|
|
938
|
+
}
|
|
939
|
+
}
|
|
940
|
+
return aguiMessages;
|
|
941
|
+
}
|
|
942
|
+
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
|
+
};
|
|
969
|
+
return {
|
|
970
|
+
id: message.id,
|
|
971
|
+
role: "assistant",
|
|
972
|
+
content: "",
|
|
973
|
+
toolCalls: [actionExecutionMessageToAGUIMessage(message)],
|
|
974
|
+
generativeUI: createRenderWrapper(action.render),
|
|
975
|
+
name: message.name
|
|
976
|
+
};
|
|
977
|
+
}
|
|
978
|
+
return {
|
|
979
|
+
id: message.id,
|
|
980
|
+
role: "assistant",
|
|
981
|
+
toolCalls: [actionExecutionMessageToAGUIMessage(message)],
|
|
982
|
+
name: message.name
|
|
983
|
+
};
|
|
984
|
+
}
|
|
985
|
+
function gqlAgentStateMessageToAGUIMessage(message, coAgentStateRenders) {
|
|
986
|
+
if (coAgentStateRenders && Object.values(coAgentStateRenders).some((render) => render.name === message.agentName)) {
|
|
987
|
+
const render = Object.values(coAgentStateRenders).find(
|
|
988
|
+
(render2) => render2.name === message.agentName
|
|
989
|
+
);
|
|
990
|
+
const createRenderWrapper = (originalRender) => {
|
|
991
|
+
if (!originalRender)
|
|
992
|
+
return void 0;
|
|
993
|
+
return (props) => {
|
|
994
|
+
const state = message.state;
|
|
995
|
+
const renderProps = {
|
|
996
|
+
state
|
|
997
|
+
};
|
|
998
|
+
return originalRender(renderProps);
|
|
999
|
+
};
|
|
1000
|
+
};
|
|
1001
|
+
return {
|
|
1002
|
+
id: message.id,
|
|
1003
|
+
role: "assistant",
|
|
1004
|
+
generativeUI: createRenderWrapper(render.render),
|
|
1005
|
+
agentName: message.agentName,
|
|
1006
|
+
state: message.state
|
|
1007
|
+
};
|
|
1008
|
+
}
|
|
1009
|
+
return {
|
|
1010
|
+
id: message.id,
|
|
1011
|
+
role: "assistant",
|
|
1012
|
+
agentName: message.agentName,
|
|
1013
|
+
state: message.state
|
|
1014
|
+
};
|
|
1015
|
+
}
|
|
1016
|
+
function actionExecutionMessageToAGUIMessage(actionExecutionMessage) {
|
|
1017
|
+
return {
|
|
1018
|
+
id: actionExecutionMessage.id,
|
|
1019
|
+
function: {
|
|
1020
|
+
name: actionExecutionMessage.name,
|
|
1021
|
+
arguments: JSON.stringify(actionExecutionMessage.arguments)
|
|
1022
|
+
},
|
|
1023
|
+
type: "function"
|
|
1024
|
+
};
|
|
1025
|
+
}
|
|
1026
|
+
function gqlTextMessageToAGUIMessage(message) {
|
|
1027
|
+
switch (message.role) {
|
|
1028
|
+
case Role.Developer:
|
|
1029
|
+
return {
|
|
1030
|
+
id: message.id,
|
|
1031
|
+
role: "developer",
|
|
1032
|
+
content: message.content
|
|
1033
|
+
};
|
|
1034
|
+
case Role.System:
|
|
1035
|
+
return {
|
|
1036
|
+
id: message.id,
|
|
1037
|
+
role: "system",
|
|
1038
|
+
content: message.content
|
|
1039
|
+
};
|
|
1040
|
+
case Role.Assistant:
|
|
1041
|
+
return {
|
|
1042
|
+
id: message.id,
|
|
1043
|
+
role: "assistant",
|
|
1044
|
+
content: message.content
|
|
1045
|
+
};
|
|
1046
|
+
case Role.User:
|
|
1047
|
+
return {
|
|
1048
|
+
id: message.id,
|
|
1049
|
+
role: "user",
|
|
1050
|
+
content: message.content
|
|
1051
|
+
};
|
|
1052
|
+
default:
|
|
1053
|
+
throw new Error("Unknown message role");
|
|
1054
|
+
}
|
|
1055
|
+
}
|
|
1056
|
+
function gqlResultMessageToAGUIMessage(message) {
|
|
1057
|
+
return {
|
|
1058
|
+
id: message.id,
|
|
1059
|
+
role: "tool",
|
|
1060
|
+
content: message.result,
|
|
1061
|
+
toolCallId: message.actionExecutionId,
|
|
1062
|
+
toolName: message.actionName
|
|
1063
|
+
};
|
|
1064
|
+
}
|
|
1065
|
+
function gqlImageMessageToAGUIMessage(message) {
|
|
1066
|
+
if (!validateImageFormat(message.format)) {
|
|
1067
|
+
throw new Error(
|
|
1068
|
+
`Invalid image format: ${message.format}. Supported formats are: ${VALID_IMAGE_FORMATS.join(", ")}`
|
|
1069
|
+
);
|
|
1070
|
+
}
|
|
1071
|
+
if (!message.bytes || typeof message.bytes !== "string" || message.bytes.trim() === "") {
|
|
1072
|
+
throw new Error("Image bytes must be a non-empty string");
|
|
1073
|
+
}
|
|
1074
|
+
const role = message.role === Role.Assistant ? "assistant" : "user";
|
|
1075
|
+
const imageMessage = {
|
|
1076
|
+
id: message.id,
|
|
1077
|
+
role,
|
|
1078
|
+
content: "",
|
|
1079
|
+
image: {
|
|
1080
|
+
format: message.format,
|
|
1081
|
+
bytes: message.bytes
|
|
1082
|
+
}
|
|
1083
|
+
};
|
|
1084
|
+
return imageMessage;
|
|
1085
|
+
}
|
|
727
1086
|
// Annotate the CommonJS export names for ESM import in node:
|
|
728
1087
|
0 && (module.exports = {
|
|
729
1088
|
ActionExecutionMessage,
|
|
@@ -744,10 +1103,20 @@ function getPartialArguments(args) {
|
|
|
744
1103
|
ResultMessage,
|
|
745
1104
|
Role,
|
|
746
1105
|
TextMessage,
|
|
1106
|
+
aguiMessageWithImageToGQLMessage,
|
|
1107
|
+
aguiMessageWithRenderToGQL,
|
|
1108
|
+
aguiTextMessageToGQLMessage,
|
|
1109
|
+
aguiToGQL,
|
|
1110
|
+
aguiToolCallToGQLActionExecution,
|
|
1111
|
+
aguiToolMessageToGQLResultMessage,
|
|
747
1112
|
convertGqlOutputToMessages,
|
|
748
1113
|
convertMessagesToGqlInput,
|
|
749
1114
|
filterAdjacentAgentStateMessages,
|
|
750
1115
|
filterAgentStateMessages,
|
|
1116
|
+
gqlImageMessageToAGUIMessage,
|
|
1117
|
+
gqlResultMessageToAGUIMessage,
|
|
1118
|
+
gqlTextMessageToAGUIMessage,
|
|
1119
|
+
gqlToAGUI,
|
|
751
1120
|
langGraphInterruptEvent,
|
|
752
1121
|
loadMessagesFromJsonRepresentation
|
|
753
1122
|
});
|