@copilotkit/runtime 1.50.0-beta.1 → 1.50.0-beta.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/index.d.ts +76 -286
- package/dist/index.js +306 -281
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +299 -270
- package/dist/index.mjs.map +1 -1
- package/dist/langgraph.d.ts +284 -0
- package/dist/langgraph.js +211 -0
- package/dist/langgraph.js.map +1 -0
- package/dist/langgraph.mjs +206 -0
- package/dist/langgraph.mjs.map +1 -0
- package/dist/v2/index.d.ts +1 -0
- package/dist/v2/index.js +7 -0
- package/dist/v2/index.js.map +1 -1
- package/dist/v2/index.mjs +1 -0
- package/dist/v2/index.mjs.map +1 -1
- package/package.json +55 -17
- package/src/graphql/message-conversion/agui-to-gql.test.ts +2 -2
- package/src/graphql/message-conversion/gql-to-agui.test.ts +30 -28
- package/src/graphql/message-conversion/roundtrip-conversion.test.ts +8 -8
- package/src/langgraph.ts +1 -0
- package/src/lib/index.ts +41 -1
- package/src/lib/integrations/nextjs/app-router.ts +3 -1
- package/src/lib/integrations/node-http/index.ts +132 -11
- package/src/lib/integrations/shared.ts +2 -2
- package/src/lib/runtime/agent-integrations/{langgraph.agent.ts → langgraph/agent.ts} +5 -30
- package/src/lib/runtime/agent-integrations/langgraph/consts.ts +34 -0
- package/src/lib/runtime/agent-integrations/langgraph/index.ts +2 -0
- package/src/lib/runtime/copilot-runtime.ts +25 -46
- package/src/service-adapters/anthropic/anthropic-adapter.ts +16 -3
- package/src/service-adapters/bedrock/bedrock-adapter.ts +4 -1
- package/src/service-adapters/experimental/ollama/ollama-adapter.ts +2 -1
- package/src/service-adapters/google/google-genai-adapter.ts +9 -4
- package/src/service-adapters/groq/groq-adapter.ts +16 -3
- package/src/service-adapters/langchain/langchain-adapter.ts +5 -3
- package/src/service-adapters/langchain/langserve.ts +2 -1
- package/src/service-adapters/openai/openai-adapter.ts +17 -3
- package/src/service-adapters/openai/openai-assistant-adapter.ts +26 -11
- package/src/service-adapters/unify/unify-adapter.ts +3 -1
- package/src/v2/index.ts +1 -0
- package/tsup.config.ts +5 -2
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
import { map } from 'rxjs';
|
|
2
|
+
import { LangGraphAgent as LangGraphAgent$1 } from '@ag-ui/langgraph';
|
|
3
|
+
export { LangGraphHttpAgent } from '@ag-ui/langgraph';
|
|
4
|
+
import { EventType } from '@ag-ui/client';
|
|
5
|
+
|
|
6
|
+
var __defProp = Object.defineProperty;
|
|
7
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
8
|
+
|
|
9
|
+
// src/lib/runtime/agent-integrations/langgraph/consts.ts
|
|
10
|
+
var CustomEventNames;
|
|
11
|
+
(function(CustomEventNames3) {
|
|
12
|
+
CustomEventNames3["CopilotKitManuallyEmitMessage"] = "copilotkit_manually_emit_message";
|
|
13
|
+
CustomEventNames3["CopilotKitManuallyEmitToolCall"] = "copilotkit_manually_emit_tool_call";
|
|
14
|
+
CustomEventNames3["CopilotKitManuallyEmitIntermediateState"] = "copilotkit_manually_emit_intermediate_state";
|
|
15
|
+
CustomEventNames3["CopilotKitExit"] = "copilotkit_exit";
|
|
16
|
+
})(CustomEventNames || (CustomEventNames = {}));
|
|
17
|
+
|
|
18
|
+
// src/agents/langgraph/events.ts
|
|
19
|
+
var LangGraphEventTypes;
|
|
20
|
+
(function(LangGraphEventTypes2) {
|
|
21
|
+
LangGraphEventTypes2["OnChainStart"] = "on_chain_start";
|
|
22
|
+
LangGraphEventTypes2["OnChainStream"] = "on_chain_stream";
|
|
23
|
+
LangGraphEventTypes2["OnChainEnd"] = "on_chain_end";
|
|
24
|
+
LangGraphEventTypes2["OnChatModelStart"] = "on_chat_model_start";
|
|
25
|
+
LangGraphEventTypes2["OnChatModelStream"] = "on_chat_model_stream";
|
|
26
|
+
LangGraphEventTypes2["OnChatModelEnd"] = "on_chat_model_end";
|
|
27
|
+
LangGraphEventTypes2["OnToolStart"] = "on_tool_start";
|
|
28
|
+
LangGraphEventTypes2["OnToolEnd"] = "on_tool_end";
|
|
29
|
+
LangGraphEventTypes2["OnCopilotKitStateSync"] = "on_copilotkit_state_sync";
|
|
30
|
+
LangGraphEventTypes2["OnCopilotKitEmitMessage"] = "on_copilotkit_emit_message";
|
|
31
|
+
LangGraphEventTypes2["OnCopilotKitEmitToolCall"] = "on_copilotkit_emit_tool_call";
|
|
32
|
+
LangGraphEventTypes2["OnCustomEvent"] = "on_custom_event";
|
|
33
|
+
LangGraphEventTypes2["OnInterrupt"] = "on_interrupt";
|
|
34
|
+
LangGraphEventTypes2["OnCopilotKitInterrupt"] = "on_copilotkit_interrupt";
|
|
35
|
+
LangGraphEventTypes2["OnCopilotKitError"] = "on_copilotkit_error";
|
|
36
|
+
})(LangGraphEventTypes || (LangGraphEventTypes = {}));
|
|
37
|
+
var MetaEventNames;
|
|
38
|
+
(function(MetaEventNames2) {
|
|
39
|
+
MetaEventNames2["LangGraphInterruptEvent"] = "LangGraphInterruptEvent";
|
|
40
|
+
MetaEventNames2["CopilotKitLangGraphInterruptEvent"] = "CopilotKitLangGraphInterruptEvent";
|
|
41
|
+
})(MetaEventNames || (MetaEventNames = {}));
|
|
42
|
+
var CustomEventNames2;
|
|
43
|
+
(function(CustomEventNames3) {
|
|
44
|
+
CustomEventNames3["CopilotKitManuallyEmitMessage"] = "copilotkit_manually_emit_message";
|
|
45
|
+
CustomEventNames3["CopilotKitManuallyEmitToolCall"] = "copilotkit_manually_emit_tool_call";
|
|
46
|
+
CustomEventNames3["CopilotKitManuallyEmitIntermediateState"] = "copilotkit_manually_emit_intermediate_state";
|
|
47
|
+
CustomEventNames3["CopilotKitExit"] = "copilotkit_exit";
|
|
48
|
+
})(CustomEventNames2 || (CustomEventNames2 = {}));
|
|
49
|
+
var LangGraphAgent = class extends LangGraphAgent$1 {
|
|
50
|
+
constructor(config) {
|
|
51
|
+
super(config);
|
|
52
|
+
}
|
|
53
|
+
// @ts-ignore
|
|
54
|
+
clone() {
|
|
55
|
+
return new LangGraphAgent(this.config);
|
|
56
|
+
}
|
|
57
|
+
dispatchEvent(event) {
|
|
58
|
+
if (event.type === EventType.CUSTOM) {
|
|
59
|
+
const customEvent = event;
|
|
60
|
+
if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitMessage) {
|
|
61
|
+
this.subscriber.next({
|
|
62
|
+
type: EventType.TEXT_MESSAGE_START,
|
|
63
|
+
role: "assistant",
|
|
64
|
+
messageId: customEvent.value.message_id,
|
|
65
|
+
rawEvent: event
|
|
66
|
+
});
|
|
67
|
+
this.subscriber.next({
|
|
68
|
+
type: EventType.TEXT_MESSAGE_CONTENT,
|
|
69
|
+
messageId: customEvent.value.message_id,
|
|
70
|
+
delta: customEvent.value.message,
|
|
71
|
+
rawEvent: event
|
|
72
|
+
});
|
|
73
|
+
this.subscriber.next({
|
|
74
|
+
type: EventType.TEXT_MESSAGE_END,
|
|
75
|
+
messageId: customEvent.value.message_id,
|
|
76
|
+
rawEvent: event
|
|
77
|
+
});
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitToolCall) {
|
|
81
|
+
this.subscriber.next({
|
|
82
|
+
type: EventType.TOOL_CALL_START,
|
|
83
|
+
toolCallId: customEvent.value.id,
|
|
84
|
+
toolCallName: customEvent.value.name,
|
|
85
|
+
parentMessageId: customEvent.value.id,
|
|
86
|
+
rawEvent: event
|
|
87
|
+
});
|
|
88
|
+
this.subscriber.next({
|
|
89
|
+
type: EventType.TOOL_CALL_ARGS,
|
|
90
|
+
toolCallId: customEvent.value.id,
|
|
91
|
+
delta: customEvent.value.args,
|
|
92
|
+
rawEvent: event
|
|
93
|
+
});
|
|
94
|
+
this.subscriber.next({
|
|
95
|
+
type: EventType.TOOL_CALL_END,
|
|
96
|
+
toolCallId: customEvent.value.id,
|
|
97
|
+
rawEvent: event
|
|
98
|
+
});
|
|
99
|
+
return true;
|
|
100
|
+
}
|
|
101
|
+
if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitIntermediateState) {
|
|
102
|
+
this.activeRun.manuallyEmittedState = customEvent.value;
|
|
103
|
+
this.dispatchEvent({
|
|
104
|
+
type: EventType.STATE_SNAPSHOT,
|
|
105
|
+
snapshot: this.getStateSnapshot({
|
|
106
|
+
values: this.activeRun.manuallyEmittedState
|
|
107
|
+
}),
|
|
108
|
+
rawEvent: event
|
|
109
|
+
});
|
|
110
|
+
return true;
|
|
111
|
+
}
|
|
112
|
+
if (customEvent.name === CustomEventNames.CopilotKitExit) {
|
|
113
|
+
this.subscriber.next({
|
|
114
|
+
type: EventType.CUSTOM,
|
|
115
|
+
name: "Exit",
|
|
116
|
+
value: true
|
|
117
|
+
});
|
|
118
|
+
return true;
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const rawEvent = event.rawEvent;
|
|
122
|
+
if (!rawEvent) {
|
|
123
|
+
this.subscriber.next(event);
|
|
124
|
+
return true;
|
|
125
|
+
}
|
|
126
|
+
const isMessageEvent = event.type === EventType.TEXT_MESSAGE_START || event.type === EventType.TEXT_MESSAGE_CONTENT || event.type === EventType.TEXT_MESSAGE_END;
|
|
127
|
+
const isToolEvent = event.type === EventType.TOOL_CALL_START || event.type === EventType.TOOL_CALL_ARGS || event.type === EventType.TOOL_CALL_END;
|
|
128
|
+
if ("copilotkit:emit-tool-calls" in (rawEvent.metadata || {})) {
|
|
129
|
+
if (rawEvent.metadata["copilotkit:emit-tool-calls"] === false && isToolEvent) {
|
|
130
|
+
return false;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
if ("copilotkit:emit-messages" in (rawEvent.metadata || {})) {
|
|
134
|
+
if (rawEvent.metadata["copilotkit:emit-messages"] === false && isMessageEvent) {
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
this.subscriber.next(event);
|
|
139
|
+
return true;
|
|
140
|
+
}
|
|
141
|
+
// @ts-ignore
|
|
142
|
+
run(input) {
|
|
143
|
+
return super.run(input).pipe(map((processedEvent) => {
|
|
144
|
+
var _a, _b, _c, _d, _e;
|
|
145
|
+
if (processedEvent.type === EventType.RAW) {
|
|
146
|
+
const event = processedEvent.event ?? processedEvent.rawEvent;
|
|
147
|
+
const eventType = event.event;
|
|
148
|
+
const toolCallData = (_c = (_b = (_a = event.data) == null ? void 0 : _a.chunk) == null ? void 0 : _b.tool_call_chunks) == null ? void 0 : _c[0];
|
|
149
|
+
const toolCallUsedToPredictState = (_e = (_d = event.metadata) == null ? void 0 : _d["copilotkit:emit-intermediate-state"]) == null ? void 0 : _e.some((predictStateTool) => predictStateTool.tool === (toolCallData == null ? void 0 : toolCallData.name));
|
|
150
|
+
if (eventType === LangGraphEventTypes.OnChatModelStream && toolCallUsedToPredictState) {
|
|
151
|
+
return {
|
|
152
|
+
type: EventType.CUSTOM,
|
|
153
|
+
name: "PredictState",
|
|
154
|
+
value: event.metadata["copilotkit:emit-intermediate-state"]
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return processedEvent;
|
|
159
|
+
}));
|
|
160
|
+
}
|
|
161
|
+
langGraphDefaultMergeState(state, messages, input) {
|
|
162
|
+
const aguiMergedState = super.langGraphDefaultMergeState(state, messages, input);
|
|
163
|
+
const { tools: returnedTools, "ag-ui": agui } = aguiMergedState;
|
|
164
|
+
const rawCombinedTools = [
|
|
165
|
+
...returnedTools ?? [],
|
|
166
|
+
...(agui == null ? void 0 : agui.tools) ?? []
|
|
167
|
+
];
|
|
168
|
+
const combinedTools = Array.from(new Map(rawCombinedTools.map((t) => [
|
|
169
|
+
(t == null ? void 0 : t.id) ?? (t == null ? void 0 : t.name) ?? (t == null ? void 0 : t.key) ?? JSON.stringify(t),
|
|
170
|
+
t
|
|
171
|
+
])).values());
|
|
172
|
+
return {
|
|
173
|
+
...aguiMergedState,
|
|
174
|
+
copilotkit: {
|
|
175
|
+
actions: combinedTools,
|
|
176
|
+
context: (agui == null ? void 0 : agui.context) ?? []
|
|
177
|
+
}
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
async getSchemaKeys() {
|
|
181
|
+
const CONSTANT_KEYS = [
|
|
182
|
+
"copilotkit"
|
|
183
|
+
];
|
|
184
|
+
const schemaKeys = await super.getSchemaKeys();
|
|
185
|
+
return {
|
|
186
|
+
config: schemaKeys.config,
|
|
187
|
+
input: schemaKeys.input ? [
|
|
188
|
+
...schemaKeys.input,
|
|
189
|
+
...CONSTANT_KEYS
|
|
190
|
+
] : null,
|
|
191
|
+
output: schemaKeys.output ? [
|
|
192
|
+
...schemaKeys.output,
|
|
193
|
+
...CONSTANT_KEYS
|
|
194
|
+
] : null,
|
|
195
|
+
context: schemaKeys.context ? [
|
|
196
|
+
...schemaKeys.context,
|
|
197
|
+
...CONSTANT_KEYS
|
|
198
|
+
] : null
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
};
|
|
202
|
+
__name(LangGraphAgent, "LangGraphAgent");
|
|
203
|
+
|
|
204
|
+
export { CustomEventNames, LangGraphAgent };
|
|
205
|
+
//# sourceMappingURL=out.js.map
|
|
206
|
+
//# sourceMappingURL=langgraph.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/lib/runtime/agent-integrations/langgraph/consts.ts","../src/lib/runtime/agent-integrations/langgraph/agent.ts","../src/agents/langgraph/events.ts"],"names":["CustomEventNames","map","LangGraphEventTypes","MetaEventNames","LangGraphAgent","AGUILangGraphAgent","LangGraphHttpAgent","EventType","constructor","config","clone","dispatchEvent","event","type","CUSTOM","customEvent","name","CopilotKitManuallyEmitMessage","subscriber","next","TEXT_MESSAGE_START","role","messageId","value","message_id","rawEvent","TEXT_MESSAGE_CONTENT","delta","message","TEXT_MESSAGE_END","CopilotKitManuallyEmitToolCall","TOOL_CALL_START","toolCallId","id","toolCallName","parentMessageId","TOOL_CALL_ARGS","args","TOOL_CALL_END","CopilotKitManuallyEmitIntermediateState","activeRun","manuallyEmittedState","STATE_SNAPSHOT","snapshot","getStateSnapshot","values","CopilotKitExit","isMessageEvent","isToolEvent","metadata","run","input","pipe","processedEvent","RAW","eventType","toolCallData","data","chunk","tool_call_chunks","toolCallUsedToPredictState","some","predictStateTool","tool","OnChatModelStream","langGraphDefaultMergeState","state","messages","aguiMergedState","tools","returnedTools","agui","rawCombinedTools","combinedTools","Array","from","Map","t","key","JSON","stringify","copilotkit","actions","context","getSchemaKeys","CONSTANT_KEYS","schemaKeys","output"],"mappings":"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","sourcesContent":["/**\n * Constants for LangGraph integration.\n * This file is separate from langgraph.agent.ts to avoid pulling in @ag-ui/langgraph\n * when only these constants are needed.\n */\n\nimport {\n TextMessageStartEvent,\n TextMessageContentEvent,\n TextMessageEndEvent,\n ToolCallStartEvent,\n ToolCallArgsEvent,\n ToolCallEndEvent,\n} from \"@ag-ui/client\";\n\nexport type TextMessageEvents =\n | TextMessageStartEvent\n | TextMessageContentEvent\n | TextMessageEndEvent;\n\nexport type ToolCallEvents = ToolCallStartEvent | ToolCallArgsEvent | ToolCallEndEvent;\n\nexport enum CustomEventNames {\n CopilotKitManuallyEmitMessage = \"copilotkit_manually_emit_message\",\n CopilotKitManuallyEmitToolCall = \"copilotkit_manually_emit_tool_call\",\n CopilotKitManuallyEmitIntermediateState = \"copilotkit_manually_emit_intermediate_state\",\n CopilotKitExit = \"copilotkit_exit\",\n}\n\nexport interface PredictStateTool {\n tool: string;\n state_key: string;\n tool_argument: string;\n}\n","import { map } from \"rxjs\";\nimport { LangGraphEventTypes } from \"../../../../agents/langgraph/events\";\nimport { RawEvent } from \"@ag-ui/core\";\nimport {\n LangGraphAgent as AGUILangGraphAgent,\n LangGraphHttpAgent,\n type LangGraphAgentConfig,\n ProcessedEvents,\n SchemaKeys,\n type State,\n StateEnrichment,\n} from \"@ag-ui/langgraph\";\nimport { Message as LangGraphMessage } from \"@langchain/langgraph-sdk/dist/types.messages\";\nimport { ThreadState } from \"@langchain/langgraph-sdk\";\n\ninterface CopilotKitStateEnrichment {\n copilotkit: {\n actions: StateEnrichment[\"ag-ui\"][\"tools\"];\n context: StateEnrichment[\"ag-ui\"][\"context\"];\n };\n}\n\nimport { RunAgentInput, EventType, CustomEvent } from \"@ag-ui/client\";\n\n// Import and re-export from separate file to maintain API compatibility\nimport { CustomEventNames, TextMessageEvents, ToolCallEvents, PredictStateTool } from \"./consts\";\nexport { CustomEventNames };\n\nexport class LangGraphAgent extends AGUILangGraphAgent {\n constructor(config: LangGraphAgentConfig) {\n super(config);\n }\n\n // @ts-ignore\n public clone() {\n return new LangGraphAgent(this.config);\n }\n\n dispatchEvent(event: ProcessedEvents) {\n if (event.type === EventType.CUSTOM) {\n // const event = processedEvent as unknown as CustomEvent;\n const customEvent = event as unknown as CustomEvent;\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitMessage) {\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_START,\n role: \"assistant\",\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_CONTENT,\n messageId: customEvent.value.message_id,\n delta: customEvent.value.message,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TEXT_MESSAGE_END,\n messageId: customEvent.value.message_id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitToolCall) {\n this.subscriber.next({\n type: EventType.TOOL_CALL_START,\n toolCallId: customEvent.value.id,\n toolCallName: customEvent.value.name,\n parentMessageId: customEvent.value.id,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_ARGS,\n toolCallId: customEvent.value.id,\n delta: customEvent.value.args,\n rawEvent: event,\n });\n this.subscriber.next({\n type: EventType.TOOL_CALL_END,\n toolCallId: customEvent.value.id,\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitManuallyEmitIntermediateState) {\n this.activeRun.manuallyEmittedState = customEvent.value;\n this.dispatchEvent({\n type: EventType.STATE_SNAPSHOT,\n snapshot: this.getStateSnapshot({\n values: this.activeRun.manuallyEmittedState,\n } as ThreadState<State>),\n rawEvent: event,\n });\n return true;\n }\n\n if (customEvent.name === CustomEventNames.CopilotKitExit) {\n this.subscriber.next({\n type: EventType.CUSTOM,\n name: \"Exit\",\n value: true,\n });\n return true;\n }\n }\n\n // Intercept all text message and tool call events and check if should disable\n const rawEvent = (event as ToolCallEvents | TextMessageEvents).rawEvent;\n if (!rawEvent) {\n this.subscriber.next(event);\n return true;\n }\n\n const isMessageEvent =\n event.type === EventType.TEXT_MESSAGE_START ||\n event.type === EventType.TEXT_MESSAGE_CONTENT ||\n event.type === EventType.TEXT_MESSAGE_END;\n const isToolEvent =\n event.type === EventType.TOOL_CALL_START ||\n event.type === EventType.TOOL_CALL_ARGS ||\n event.type === EventType.TOOL_CALL_END;\n if (\"copilotkit:emit-tool-calls\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-tool-calls\"] === false && isToolEvent) {\n return false;\n }\n }\n if (\"copilotkit:emit-messages\" in (rawEvent.metadata || {})) {\n if (rawEvent.metadata[\"copilotkit:emit-messages\"] === false && isMessageEvent) {\n return false;\n }\n }\n\n this.subscriber.next(event);\n return true;\n }\n\n // @ts-ignore\n run(input: RunAgentInput) {\n return super.run(input).pipe(\n map((processedEvent) => {\n // Turn raw event into emit state snapshot from tool call event\n if (processedEvent.type === EventType.RAW) {\n // Get the LangGraph event from the AGUI event.\n const event = (processedEvent as RawEvent).event ?? (processedEvent as RawEvent).rawEvent;\n\n const eventType = event.event;\n const toolCallData = event.data?.chunk?.tool_call_chunks?.[0];\n const toolCallUsedToPredictState = event.metadata?.[\n \"copilotkit:emit-intermediate-state\"\n ]?.some(\n (predictStateTool: PredictStateTool) => predictStateTool.tool === toolCallData?.name,\n );\n\n if (eventType === LangGraphEventTypes.OnChatModelStream && toolCallUsedToPredictState) {\n return {\n type: EventType.CUSTOM,\n name: \"PredictState\",\n value: event.metadata[\"copilotkit:emit-intermediate-state\"],\n };\n }\n }\n\n return processedEvent;\n }),\n );\n }\n\n langGraphDefaultMergeState(\n state: State,\n messages: LangGraphMessage[],\n input: RunAgentInput,\n ): State<StateEnrichment & CopilotKitStateEnrichment> {\n const aguiMergedState = super.langGraphDefaultMergeState(state, messages, input);\n const { tools: returnedTools, \"ag-ui\": agui } = aguiMergedState;\n // tolerate undefined and de-duplicate by stable key (id | name | key)\n const rawCombinedTools = [\n ...((returnedTools as any[]) ?? []),\n ...((agui?.tools as any[]) ?? []),\n ];\n const combinedTools = Array.from(\n new Map(\n rawCombinedTools.map((t: any) => [t?.id ?? t?.name ?? t?.key ?? JSON.stringify(t), t]),\n ).values(),\n );\n\n return {\n ...aguiMergedState,\n copilotkit: {\n actions: combinedTools,\n context: agui?.context ?? [],\n },\n };\n }\n\n async getSchemaKeys(): Promise<SchemaKeys> {\n const CONSTANT_KEYS = [\"copilotkit\"];\n const schemaKeys = await super.getSchemaKeys();\n return {\n config: schemaKeys.config,\n input: schemaKeys.input ? [...schemaKeys.input, ...CONSTANT_KEYS] : null,\n output: schemaKeys.output ? [...schemaKeys.output, ...CONSTANT_KEYS] : null,\n context: schemaKeys.context ? [...schemaKeys.context, ...CONSTANT_KEYS] : null,\n };\n }\n}\n\nexport { LangGraphHttpAgent };\n","import { ActionExecutionMessage, ResultMessage, TextMessage } from \"../../graphql/types/converted\";\n\nexport enum LangGraphEventTypes {\n OnChainStart = \"on_chain_start\",\n OnChainStream = \"on_chain_stream\",\n OnChainEnd = \"on_chain_end\",\n OnChatModelStart = \"on_chat_model_start\",\n OnChatModelStream = \"on_chat_model_stream\",\n OnChatModelEnd = \"on_chat_model_end\",\n OnToolStart = \"on_tool_start\",\n OnToolEnd = \"on_tool_end\",\n OnCopilotKitStateSync = \"on_copilotkit_state_sync\",\n OnCopilotKitEmitMessage = \"on_copilotkit_emit_message\",\n OnCopilotKitEmitToolCall = \"on_copilotkit_emit_tool_call\",\n OnCustomEvent = \"on_custom_event\",\n OnInterrupt = \"on_interrupt\",\n OnCopilotKitInterrupt = \"on_copilotkit_interrupt\",\n OnCopilotKitError = \"on_copilotkit_error\",\n}\n\nexport enum MetaEventNames {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport enum CustomEventNames {\n CopilotKitManuallyEmitMessage = \"copilotkit_manually_emit_message\",\n CopilotKitManuallyEmitToolCall = \"copilotkit_manually_emit_tool_call\",\n CopilotKitManuallyEmitIntermediateState = \"copilotkit_manually_emit_intermediate_state\",\n CopilotKitExit = \"copilotkit_exit\",\n}\n\ntype LangGraphOnCopilotKitStateSyncEvent = {\n event: LangGraphEventTypes.OnCopilotKitStateSync;\n thread_id: string;\n agent_name: string;\n node_name: string;\n run_id: string;\n active: boolean;\n role: string;\n state: any;\n running: boolean;\n};\n\ntype LangGraphOnChainStartEvent = {\n event: LangGraphEventTypes.OnChainStart;\n run_id: string;\n name: string;\n tags: string[];\n metadata: { thread_id: string };\n data: {\n input: any;\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChainEndEvent = {\n event: LangGraphEventTypes.OnChainEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: any;\n output: any;\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelStartEvent = {\n event: LangGraphEventTypes.OnChatModelStart;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n input: {\n messages: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n type: string;\n id: string;\n };\n }[][];\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelStreamEvent = {\n event: LangGraphEventTypes.OnChatModelStream;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n chunk: {\n lc: number;\n type: string;\n id: string;\n kwargs: {\n content: string | { text: string; type: string; index: number }[];\n additional_kwargs: {\n tool_calls: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n type: string;\n id: string;\n tool_calls: { name: string; args: {}; id: string; type: string }[];\n tool_call_chunks: {\n name: string;\n args: string;\n id: string;\n index: number;\n type: string;\n }[];\n invalid_tool_calls: any[];\n };\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChatModelEndEvent = {\n event: LangGraphEventTypes.OnChatModelEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n ls_provider: string;\n ls_model_name: string;\n ls_model_type: string;\n ls_temperature: number;\n };\n data: {\n input: any;\n output: {\n generations: {\n text: string;\n generation_info: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n message: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n additional_kwargs: {\n tool_calls: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n response_metadata: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n id: string;\n tool_calls: { name: string; args: { query: string }; id: string; type: string }[];\n invalid_tool_calls: any[];\n };\n };\n }[][];\n llm_output: any;\n run: any;\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnChainStreamEvent = {\n event: LangGraphEventTypes.OnChainStream;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step?: number;\n langgraph_node?: string;\n langgraph_triggers?: string[];\n langgraph_task_idx?: number;\n thread_ts?: string;\n };\n data: {\n chunk: {\n messages: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string;\n additional_kwargs?: {\n tool_calls?: {\n index: number;\n id: string;\n function: { arguments: string; name: string };\n type: string;\n }[];\n };\n response_metadata?: {\n finish_reason: string;\n model_name: string;\n system_fingerprint: string;\n };\n type: string;\n id: string;\n tool_calls?: { name: string; args: { query: string }; id: string; type: string }[];\n invalid_tool_calls?: any[];\n };\n }[];\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnToolStartEvent = {\n event: LangGraphEventTypes.OnToolStart;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: {\n query: string;\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnToolEndEvent = {\n event: LangGraphEventTypes.OnToolEnd;\n name: string;\n run_id: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_task_idx: number;\n thread_ts: string;\n };\n data: {\n input: {\n query: string;\n };\n output: {\n lc: number;\n type: string;\n id: string[];\n kwargs: {\n content: string[];\n type: string;\n name: string;\n tool_call_id: string;\n status: string;\n };\n };\n };\n parent_ids: string[];\n};\n\ntype LangGraphOnCustomEvent = {\n event: LangGraphEventTypes.OnCustomEvent;\n run_id: string;\n name: string;\n tags: string[];\n metadata: {\n thread_id: string;\n langgraph_step: number;\n langgraph_node: string;\n langgraph_triggers: string[];\n langgraph_path: [string, string];\n langgraph_checkpoint_ns: string;\n checkpoint_ns: string;\n };\n data: any;\n parent_ids: string[];\n};\n\ninterface LangGraphInterruptEvent {\n event: LangGraphEventTypes.OnInterrupt;\n value: string;\n}\n\ninterface CopilotKitLangGraphInterruptEvent {\n event: LangGraphEventTypes.OnCopilotKitInterrupt;\n data: { value: string; messages: (TextMessage | ActionExecutionMessage | ResultMessage)[] };\n}\n\ninterface CopilotKitLangGraphErrorEvent {\n event: LangGraphEventTypes.OnCopilotKitError;\n data: {\n error: {\n message: string;\n type: string;\n agent_name: string;\n status_code?: number;\n response_data?: any;\n };\n thread_id: string;\n agent_name: string;\n node_name: string;\n };\n}\n\nexport type LangGraphEvent =\n | LangGraphOnChainStartEvent\n | LangGraphOnChainStreamEvent\n | LangGraphOnChainEndEvent\n | LangGraphOnChatModelStartEvent\n | LangGraphOnChatModelStreamEvent\n | LangGraphOnChatModelEndEvent\n | LangGraphOnToolStartEvent\n | LangGraphOnToolEndEvent\n | LangGraphOnCopilotKitStateSyncEvent\n | LangGraphOnCustomEvent\n | LangGraphInterruptEvent\n | CopilotKitLangGraphInterruptEvent\n | CopilotKitLangGraphErrorEvent;\n"]}
|
package/dist/v2/index.d.ts
CHANGED
package/dist/v2/index.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
require('reflect-metadata');
|
|
4
4
|
var runtime = require('@copilotkitnext/runtime');
|
|
5
|
+
var agent = require('@copilotkitnext/agent');
|
|
5
6
|
|
|
6
7
|
|
|
7
8
|
|
|
@@ -11,5 +12,11 @@ Object.keys(runtime).forEach(function (k) {
|
|
|
11
12
|
get: function () { return runtime[k]; }
|
|
12
13
|
});
|
|
13
14
|
});
|
|
15
|
+
Object.keys(agent).forEach(function (k) {
|
|
16
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
17
|
+
enumerable: true,
|
|
18
|
+
get: function () { return agent[k]; }
|
|
19
|
+
});
|
|
20
|
+
});
|
|
14
21
|
//# sourceMappingURL=out.js.map
|
|
15
22
|
//# sourceMappingURL=index.js.map
|
package/dist/v2/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc;AACd,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\nexport * from \"@copilotkitnext/agent\";\n"]}
|
package/dist/v2/index.mjs
CHANGED
package/dist/v2/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/v2/index.ts"],"names":[],"mappings":";AAAA,OAAO;AACP,cAAc;AACd,cAAc","sourcesContent":["import \"reflect-metadata\";\nexport * from \"@copilotkitnext/runtime\";\nexport * from \"@copilotkitnext/agent\";\n"]}
|
package/package.json
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
"publishConfig": {
|
|
10
10
|
"access": "public"
|
|
11
11
|
},
|
|
12
|
-
"version": "1.50.0-beta.
|
|
12
|
+
"version": "1.50.0-beta.3",
|
|
13
13
|
"sideEffects": false,
|
|
14
14
|
"main": "./dist/index.js",
|
|
15
15
|
"module": "./dist/index.mjs",
|
|
@@ -23,6 +23,11 @@
|
|
|
23
23
|
"import": "./dist/v2/index.mjs",
|
|
24
24
|
"require": "./dist/v2/index.js",
|
|
25
25
|
"types": "./dist/v2/index.d.ts"
|
|
26
|
+
},
|
|
27
|
+
"./langgraph": {
|
|
28
|
+
"import": "./dist/langgraph.mjs",
|
|
29
|
+
"require": "./dist/langgraph.js",
|
|
30
|
+
"types": "./dist/langgraph.d.ts"
|
|
26
31
|
}
|
|
27
32
|
},
|
|
28
33
|
"types": "./dist/index.d.ts",
|
|
@@ -41,29 +46,21 @@
|
|
|
41
46
|
"tsup": "^6.7.0",
|
|
42
47
|
"typescript": "^5.2.3",
|
|
43
48
|
"vitest": "^3.2.4",
|
|
44
|
-
"
|
|
45
|
-
"eslint-config-custom": "1.4.6"
|
|
46
|
-
"tsconfig": "1.4.6"
|
|
49
|
+
"tsconfig": "1.4.6",
|
|
50
|
+
"eslint-config-custom": "1.4.6"
|
|
47
51
|
},
|
|
48
52
|
"dependencies": {
|
|
49
|
-
"@
|
|
50
|
-
"@copilotkitnext/
|
|
51
|
-
"@copilotkitnext/runtime": "0.0.22",
|
|
53
|
+
"@copilotkitnext/agent": "0.0.23",
|
|
54
|
+
"@copilotkitnext/runtime": "0.0.23",
|
|
52
55
|
"@graphql-yoga/plugin-defer-stream": "^3.3.1",
|
|
53
|
-
"@
|
|
54
|
-
"@langchain/community": "^0.3.29",
|
|
56
|
+
"@hono/node-server": "^1.13.5",
|
|
55
57
|
"@langchain/core": "^0.3.38",
|
|
56
|
-
"@langchain/google-gauth": "^0.1.0",
|
|
57
|
-
"@langchain/langgraph-sdk": "^0.0.70",
|
|
58
|
-
"@langchain/openai": "^0.4.2",
|
|
59
58
|
"@scarf/scarf": "^1.3.0",
|
|
60
59
|
"class-transformer": "^0.5.1",
|
|
61
60
|
"class-validator": "^0.14.1",
|
|
62
61
|
"graphql": "^16.8.1",
|
|
63
62
|
"graphql-scalars": "^1.23.0",
|
|
64
63
|
"graphql-yoga": "^5.3.1",
|
|
65
|
-
"groq-sdk": "^0.5.0",
|
|
66
|
-
"@hono/node-server": "^1.13.5",
|
|
67
64
|
"hono": "^4.10.3",
|
|
68
65
|
"langchain": "^0.3.3",
|
|
69
66
|
"openai": "^4.85.1",
|
|
@@ -74,14 +71,55 @@
|
|
|
74
71
|
"rxjs": "7.8.1",
|
|
75
72
|
"type-graphql": "2.0.0-rc.1",
|
|
76
73
|
"zod": "^3.23.3",
|
|
77
|
-
"@copilotkit/shared": "1.50.0-beta.
|
|
74
|
+
"@copilotkit/shared": "1.50.0-beta.3"
|
|
78
75
|
},
|
|
79
76
|
"peerDependencies": {
|
|
80
|
-
"@
|
|
77
|
+
"@anthropic-ai/sdk": "^0.57.0",
|
|
78
|
+
"@ag-ui/client": "^0.0.41",
|
|
81
79
|
"@ag-ui/core": ">=0.0.39",
|
|
82
80
|
"@ag-ui/encoder": ">=0.0.39",
|
|
83
81
|
"@ag-ui/langgraph": ">=0.0.18",
|
|
84
|
-
"@ag-ui/proto": ">=0.0.39"
|
|
82
|
+
"@ag-ui/proto": ">=0.0.39",
|
|
83
|
+
"@langchain/aws": "^0.1.9",
|
|
84
|
+
"@langchain/community": "^0.3.58",
|
|
85
|
+
"@langchain/google-gauth": "^0.1.0",
|
|
86
|
+
"@langchain/langgraph-sdk": "^0.0.70",
|
|
87
|
+
"@langchain/openai": "^0.4.2",
|
|
88
|
+
"groq-sdk": "^0.5.0",
|
|
89
|
+
"langchain": "^0.3.3",
|
|
90
|
+
"openai": "^4.85.1"
|
|
91
|
+
},
|
|
92
|
+
"peerDependenciesMeta": {
|
|
93
|
+
"@anthropic-ai/sdk": {
|
|
94
|
+
"optional": true
|
|
95
|
+
},
|
|
96
|
+
"@ag-ui/langgraph": {
|
|
97
|
+
"optional": true
|
|
98
|
+
},
|
|
99
|
+
"@langchain/aws": {
|
|
100
|
+
"optional": true
|
|
101
|
+
},
|
|
102
|
+
"@langchain/community": {
|
|
103
|
+
"optional": true
|
|
104
|
+
},
|
|
105
|
+
"@langchain/google-gauth": {
|
|
106
|
+
"optional": true
|
|
107
|
+
},
|
|
108
|
+
"@langchain/langgraph-sdk": {
|
|
109
|
+
"optional": true
|
|
110
|
+
},
|
|
111
|
+
"@langchain/openai": {
|
|
112
|
+
"optional": true
|
|
113
|
+
},
|
|
114
|
+
"groq-sdk": {
|
|
115
|
+
"optional": true
|
|
116
|
+
},
|
|
117
|
+
"langchain": {
|
|
118
|
+
"optional": true
|
|
119
|
+
},
|
|
120
|
+
"openai": {
|
|
121
|
+
"optional": true
|
|
122
|
+
}
|
|
85
123
|
},
|
|
86
124
|
"keywords": [
|
|
87
125
|
"copilotkit",
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, test, expect
|
|
1
|
+
import { describe, test, expect } from "@jest/globals";
|
|
2
2
|
import * as gql from "../types/converted/index";
|
|
3
3
|
import agui from "@copilotkit/shared";
|
|
4
4
|
import {
|
|
@@ -587,7 +587,7 @@ describe("agui-to-gql", () => {
|
|
|
587
587
|
});
|
|
588
588
|
|
|
589
589
|
test("should verify render function receives correct props including name", () => {
|
|
590
|
-
const mockRender =
|
|
590
|
+
const mockRender = jest.fn(
|
|
591
591
|
(props) => `Rendered: ${props.name} with args: ${JSON.stringify(props.args)}`,
|
|
592
592
|
);
|
|
593
593
|
const aguiMessage: agui.Message = {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { describe, test, expect
|
|
1
|
+
import { describe, test, expect } from "@jest/globals";
|
|
2
2
|
import * as gql from "../types/converted/index";
|
|
3
3
|
import { MessageStatusCode } from "../types/message-status.type";
|
|
4
4
|
import {
|
|
@@ -370,7 +370,7 @@ describe("message-conversion", () => {
|
|
|
370
370
|
status: { code: MessageStatusCode.Pending },
|
|
371
371
|
});
|
|
372
372
|
|
|
373
|
-
const mockRender =
|
|
373
|
+
const mockRender = jest.fn();
|
|
374
374
|
const mockRenderAndWaitForResponse = (props: any) => "Test Render With Response";
|
|
375
375
|
|
|
376
376
|
const actions = {
|
|
@@ -414,7 +414,7 @@ describe("message-conversion", () => {
|
|
|
414
414
|
status: { code: MessageStatusCode.Pending },
|
|
415
415
|
});
|
|
416
416
|
|
|
417
|
-
const mockRender =
|
|
417
|
+
const mockRender = jest.fn();
|
|
418
418
|
const actions = {
|
|
419
419
|
testAction: {
|
|
420
420
|
name: "testAction",
|
|
@@ -445,7 +445,7 @@ describe("message-conversion", () => {
|
|
|
445
445
|
status: { code: MessageStatusCode.Success },
|
|
446
446
|
});
|
|
447
447
|
|
|
448
|
-
const mockRender =
|
|
448
|
+
const mockRender = jest.fn();
|
|
449
449
|
const actions = {
|
|
450
450
|
testAction: {
|
|
451
451
|
name: "testAction",
|
|
@@ -483,7 +483,7 @@ describe("message-conversion", () => {
|
|
|
483
483
|
actionName: "testAction",
|
|
484
484
|
});
|
|
485
485
|
|
|
486
|
-
const mockRender =
|
|
486
|
+
const mockRender = jest.fn();
|
|
487
487
|
const actions = {
|
|
488
488
|
testAction: {
|
|
489
489
|
name: "testAction",
|
|
@@ -517,7 +517,7 @@ describe("message-conversion", () => {
|
|
|
517
517
|
status: { code: MessageStatusCode.Pending },
|
|
518
518
|
});
|
|
519
519
|
|
|
520
|
-
const mockRender =
|
|
520
|
+
const mockRender = jest.fn();
|
|
521
521
|
const actions = {
|
|
522
522
|
testAction: {
|
|
523
523
|
name: "testAction",
|
|
@@ -627,7 +627,7 @@ describe("message-conversion", () => {
|
|
|
627
627
|
role: gql.Role.assistant,
|
|
628
628
|
});
|
|
629
629
|
|
|
630
|
-
const mockRender =
|
|
630
|
+
const mockRender = jest.fn();
|
|
631
631
|
const coAgentStateRenders = {
|
|
632
632
|
testAgent: {
|
|
633
633
|
name: "testAgent",
|
|
@@ -740,7 +740,7 @@ describe("message-conversion", () => {
|
|
|
740
740
|
role: gql.Role.assistant,
|
|
741
741
|
});
|
|
742
742
|
|
|
743
|
-
const mockRender =
|
|
743
|
+
const mockRender = jest.fn();
|
|
744
744
|
const coAgentStateRenders = {
|
|
745
745
|
testAgent: {
|
|
746
746
|
name: "testAgent",
|
|
@@ -853,7 +853,7 @@ describe("message-conversion", () => {
|
|
|
853
853
|
const actions = {
|
|
854
854
|
testAction: {
|
|
855
855
|
name: "testAction",
|
|
856
|
-
render:
|
|
856
|
+
render: jest.fn((props) => `Rendered: ${props.args.test}`),
|
|
857
857
|
},
|
|
858
858
|
};
|
|
859
859
|
|
|
@@ -889,7 +889,7 @@ describe("message-conversion", () => {
|
|
|
889
889
|
const actions = {
|
|
890
890
|
"*": {
|
|
891
891
|
name: "*",
|
|
892
|
-
render:
|
|
892
|
+
render: jest.fn((props) => `Wildcard rendered: ${props.args.test}`),
|
|
893
893
|
},
|
|
894
894
|
};
|
|
895
895
|
|
|
@@ -922,7 +922,7 @@ describe("message-conversion", () => {
|
|
|
922
922
|
});
|
|
923
923
|
|
|
924
924
|
test("should pass tool name to wildcard action render function", () => {
|
|
925
|
-
const mockRender =
|
|
925
|
+
const mockRender = jest.fn(
|
|
926
926
|
(props) => `Wildcard rendered: ${props.name} with args: ${JSON.stringify(props.args)}`,
|
|
927
927
|
);
|
|
928
928
|
const actions = {
|
|
@@ -954,7 +954,9 @@ describe("message-conversion", () => {
|
|
|
954
954
|
});
|
|
955
955
|
|
|
956
956
|
test("should pass tool name to regular action render function", () => {
|
|
957
|
-
const mockRender =
|
|
957
|
+
const mockRender = jest.fn(
|
|
958
|
+
(props) => `Regular action rendered: ${JSON.stringify(props.args)}`,
|
|
959
|
+
);
|
|
958
960
|
const actions = {
|
|
959
961
|
testAction: {
|
|
960
962
|
name: "testAction",
|
|
@@ -992,11 +994,11 @@ describe("message-conversion", () => {
|
|
|
992
994
|
const actions = {
|
|
993
995
|
specificAction: {
|
|
994
996
|
name: "specificAction",
|
|
995
|
-
render:
|
|
997
|
+
render: jest.fn((props) => "Specific action rendered"),
|
|
996
998
|
},
|
|
997
999
|
"*": {
|
|
998
1000
|
name: "*",
|
|
999
|
-
render:
|
|
1001
|
+
render: jest.fn((props) => "Wildcard action rendered"),
|
|
1000
1002
|
},
|
|
1001
1003
|
};
|
|
1002
1004
|
|
|
@@ -1032,7 +1034,7 @@ describe("message-conversion", () => {
|
|
|
1032
1034
|
const actions = {
|
|
1033
1035
|
otherAction: {
|
|
1034
1036
|
name: "otherAction",
|
|
1035
|
-
render:
|
|
1037
|
+
render: jest.fn(),
|
|
1036
1038
|
},
|
|
1037
1039
|
};
|
|
1038
1040
|
|
|
@@ -1095,7 +1097,7 @@ describe("message-conversion", () => {
|
|
|
1095
1097
|
const actions = {
|
|
1096
1098
|
"*": {
|
|
1097
1099
|
name: "*",
|
|
1098
|
-
render:
|
|
1100
|
+
render: jest.fn((props) => `Result: ${props.result}`),
|
|
1099
1101
|
},
|
|
1100
1102
|
};
|
|
1101
1103
|
|
|
@@ -1133,7 +1135,7 @@ describe("message-conversion", () => {
|
|
|
1133
1135
|
const actions = {
|
|
1134
1136
|
"*": {
|
|
1135
1137
|
name: "*",
|
|
1136
|
-
render:
|
|
1138
|
+
render: jest.fn((props) => `Status: ${props.status}`),
|
|
1137
1139
|
},
|
|
1138
1140
|
};
|
|
1139
1141
|
|
|
@@ -1170,7 +1172,7 @@ describe("message-conversion", () => {
|
|
|
1170
1172
|
const actions = {
|
|
1171
1173
|
"*": {
|
|
1172
1174
|
name: "*",
|
|
1173
|
-
render:
|
|
1175
|
+
render: jest.fn((props) => `Status: ${props.status}`),
|
|
1174
1176
|
},
|
|
1175
1177
|
};
|
|
1176
1178
|
|
|
@@ -1207,7 +1209,7 @@ describe("message-conversion", () => {
|
|
|
1207
1209
|
const actions = {
|
|
1208
1210
|
"*": {
|
|
1209
1211
|
name: "*",
|
|
1210
|
-
render:
|
|
1212
|
+
render: jest.fn((props) => `Status: ${props.status}`),
|
|
1211
1213
|
},
|
|
1212
1214
|
};
|
|
1213
1215
|
|
|
@@ -1244,7 +1246,7 @@ describe("message-conversion", () => {
|
|
|
1244
1246
|
const actions = {
|
|
1245
1247
|
"*": {
|
|
1246
1248
|
name: "*",
|
|
1247
|
-
render:
|
|
1249
|
+
render: jest.fn((props) => `Status: ${props.status}`),
|
|
1248
1250
|
},
|
|
1249
1251
|
};
|
|
1250
1252
|
|
|
@@ -1281,7 +1283,7 @@ describe("message-conversion", () => {
|
|
|
1281
1283
|
const actions = {
|
|
1282
1284
|
"*": {
|
|
1283
1285
|
name: "*",
|
|
1284
|
-
render:
|
|
1286
|
+
render: jest.fn((props) => `Args: ${JSON.stringify(props.args)}`),
|
|
1285
1287
|
},
|
|
1286
1288
|
};
|
|
1287
1289
|
|
|
@@ -1317,7 +1319,7 @@ describe("message-conversion", () => {
|
|
|
1317
1319
|
const actions = {
|
|
1318
1320
|
"*": {
|
|
1319
1321
|
name: "*",
|
|
1320
|
-
render:
|
|
1322
|
+
render: jest.fn((props) => `Args: ${JSON.stringify(props.args)}`),
|
|
1321
1323
|
},
|
|
1322
1324
|
};
|
|
1323
1325
|
|
|
@@ -1353,7 +1355,7 @@ describe("message-conversion", () => {
|
|
|
1353
1355
|
const actions = {
|
|
1354
1356
|
"*": {
|
|
1355
1357
|
name: "*",
|
|
1356
|
-
render:
|
|
1358
|
+
render: jest.fn((props) => `Complex: ${JSON.stringify(props.args)}`),
|
|
1357
1359
|
},
|
|
1358
1360
|
};
|
|
1359
1361
|
|
|
@@ -1401,11 +1403,11 @@ describe("message-conversion", () => {
|
|
|
1401
1403
|
const actions = {
|
|
1402
1404
|
wildcard1: {
|
|
1403
1405
|
name: "*",
|
|
1404
|
-
render:
|
|
1406
|
+
render: jest.fn((props) => "First wildcard"),
|
|
1405
1407
|
},
|
|
1406
1408
|
wildcard2: {
|
|
1407
1409
|
name: "*",
|
|
1408
|
-
render:
|
|
1410
|
+
render: jest.fn((props) => "Second wildcard"),
|
|
1409
1411
|
},
|
|
1410
1412
|
};
|
|
1411
1413
|
|
|
@@ -1441,7 +1443,7 @@ describe("message-conversion", () => {
|
|
|
1441
1443
|
const actions = {
|
|
1442
1444
|
"*": {
|
|
1443
1445
|
name: "*",
|
|
1444
|
-
render:
|
|
1446
|
+
render: jest.fn((props) => `Result: ${JSON.stringify(props.result)}`),
|
|
1445
1447
|
},
|
|
1446
1448
|
};
|
|
1447
1449
|
|
|
@@ -1478,7 +1480,7 @@ describe("message-conversion", () => {
|
|
|
1478
1480
|
const actions = {
|
|
1479
1481
|
"*": {
|
|
1480
1482
|
name: "*",
|
|
1481
|
-
render:
|
|
1483
|
+
render: jest.fn((props) => `Result: ${JSON.stringify(props.result)}`),
|
|
1482
1484
|
},
|
|
1483
1485
|
};
|
|
1484
1486
|
|
|
@@ -1515,7 +1517,7 @@ describe("message-conversion", () => {
|
|
|
1515
1517
|
const actions = {
|
|
1516
1518
|
"*": {
|
|
1517
1519
|
name: "*",
|
|
1518
|
-
render:
|
|
1520
|
+
render: jest.fn((props) => `Result: ${JSON.stringify(props.result)}`),
|
|
1519
1521
|
},
|
|
1520
1522
|
};
|
|
1521
1523
|
|