@copilotkit/runtime 1.79.2-canary.1792172552 → 1.81.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/dist/_virtual/_rolldown/runtime.mjs +15 -1
- package/dist/agent/index.cjs.map +1 -1
- package/dist/agent/index.d.cts +5 -3
- package/dist/agent/index.d.cts.map +1 -1
- package/dist/agent/index.d.mts +4 -2
- package/dist/agent/index.d.mts.map +1 -1
- package/dist/agent/index.mjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs +25 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.cjs.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.cts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.d.mts.map +1 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs +25 -1
- package/dist/lib/runtime/agent-integrations/langgraph/agent.mjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.cjs +17 -3
- package/dist/lib/runtime/copilot-runtime.cjs.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.cts +2 -3
- package/dist/lib/runtime/copilot-runtime.d.cts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.d.mts +2 -3
- package/dist/lib/runtime/copilot-runtime.d.mts.map +1 -1
- package/dist/lib/runtime/copilot-runtime.mjs +18 -4
- package/dist/lib/runtime/copilot-runtime.mjs.map +1 -1
- package/dist/lib/runtime/legacy-service-adapter-agent.cjs +360 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.cjs.map +1 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.mjs +359 -0
- package/dist/lib/runtime/legacy-service-adapter-agent.mjs.map +1 -0
- package/dist/lib/telemetry-client.cjs +12 -1
- package/dist/lib/telemetry-client.cjs.map +1 -1
- package/dist/lib/telemetry-client.mjs +12 -1
- package/dist/lib/telemetry-client.mjs.map +1 -1
- package/dist/package.cjs +6 -6
- package/dist/package.mjs +6 -6
- package/dist/service-adapters/events.cjs +91 -0
- package/dist/service-adapters/events.cjs.map +1 -1
- package/dist/service-adapters/events.d.cts +6 -1
- package/dist/service-adapters/events.d.cts.map +1 -1
- package/dist/service-adapters/events.d.mts +6 -1
- package/dist/service-adapters/events.d.mts.map +1 -1
- package/dist/service-adapters/events.mjs +90 -1
- package/dist/service-adapters/events.mjs.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.cjs +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.cjs.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.cts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.d.mts.map +1 -1
- package/dist/service-adapters/langchain/langchain-adapter.mjs +2 -2
- package/dist/service-adapters/langchain/langchain-adapter.mjs.map +1 -1
- package/dist/service-adapters/langchain/utils.cjs +53 -15
- package/dist/service-adapters/langchain/utils.cjs.map +1 -1
- package/dist/service-adapters/langchain/utils.mjs +53 -16
- package/dist/service-adapters/langchain/utils.mjs.map +1 -1
- package/dist/v2/index.cjs +6 -0
- package/dist/v2/index.d.cts +7 -4
- package/dist/v2/index.d.mts +7 -4
- package/dist/v2/index.mjs +5 -3
- package/dist/v2/runtime/core/middleware-sse-parser.cjs +11 -2
- package/dist/v2/runtime/core/middleware-sse-parser.cjs.map +1 -1
- package/dist/v2/runtime/core/middleware-sse-parser.mjs +11 -2
- package/dist/v2/runtime/core/middleware-sse-parser.mjs.map +1 -1
- package/dist/v2/runtime/core/package-info.cjs +1 -1
- package/dist/v2/runtime/core/package-info.mjs +1 -1
- package/dist/v2/runtime/core/runtime.cjs +6 -3
- package/dist/v2/runtime/core/runtime.cjs.map +1 -1
- package/dist/v2/runtime/core/runtime.d.cts +15 -3
- package/dist/v2/runtime/core/runtime.d.cts.map +1 -1
- package/dist/v2/runtime/core/runtime.d.mts +15 -3
- package/dist/v2/runtime/core/runtime.d.mts.map +1 -1
- package/dist/v2/runtime/core/runtime.mjs +6 -3
- package/dist/v2/runtime/core/runtime.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.cjs +2 -2
- package/dist/v2/runtime/endpoints/express.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/express.mjs +2 -2
- package/dist/v2/runtime/endpoints/express.mjs.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs +51 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.cjs.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.cts.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.d.mts.map +1 -1
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs +52 -2
- package/dist/v2/runtime/endpoints/node-fetch-handler.mjs.map +1 -1
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs +394 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.cjs.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts +21 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.cts.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts +21 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.d.mts.map +1 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs +393 -0
- package/dist/v2/runtime/generative-ui/generative-ui-middleware.mjs.map +1 -0
- package/dist/v2/runtime/generative-ui/index.d.cts +3 -0
- package/dist/v2/runtime/generative-ui/index.d.mts +3 -0
- package/dist/v2/runtime/generative-ui/surface-writer.cjs +86 -0
- package/dist/v2/runtime/generative-ui/surface-writer.cjs.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.cts +33 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.cts.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.mts +33 -0
- package/dist/v2/runtime/generative-ui/surface-writer.d.mts.map +1 -0
- package/dist/v2/runtime/generative-ui/surface-writer.mjs +85 -0
- package/dist/v2/runtime/generative-ui/surface-writer.mjs.map +1 -0
- package/dist/v2/runtime/handlers/handle-run.cjs +8 -3
- package/dist/v2/runtime/handlers/handle-run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/handle-run.mjs +5 -1
- package/dist/v2/runtime/handlers/handle-run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.cjs +2 -3
- package/dist/v2/runtime/handlers/intelligence/run.cjs.map +1 -1
- package/dist/v2/runtime/handlers/intelligence/run.mjs +2 -3
- package/dist/v2/runtime/handlers/intelligence/run.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs +7 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs +7 -0
- package/dist/v2/runtime/handlers/shared/agent-utils.mjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.cjs +39 -0
- package/dist/v2/runtime/handlers/shared/sse-response.cjs.map +1 -1
- package/dist/v2/runtime/handlers/shared/sse-response.mjs +39 -0
- package/dist/v2/runtime/handlers/shared/sse-response.mjs.map +1 -1
- package/dist/v2/runtime/index.d.cts +7 -3
- package/dist/v2/runtime/index.d.cts.map +1 -1
- package/dist/v2/runtime/index.d.mts +7 -3
- package/dist/v2/runtime/index.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs +100 -1
- package/dist/v2/runtime/intelligence-platform/client.cjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts +33 -1
- package/dist/v2/runtime/intelligence-platform/client.d.cts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts +33 -1
- package/dist/v2/runtime/intelligence-platform/client.d.mts.map +1 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs +100 -1
- package/dist/v2/runtime/intelligence-platform/client.mjs.map +1 -1
- package/dist/v2/runtime/intelligence-platform/experimental.d.cts +27 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.cts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.mts +27 -0
- package/dist/v2/runtime/intelligence-platform/experimental.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/index.d.cts +2 -1
- package/dist/v2/runtime/intelligence-platform/index.d.mts +2 -1
- package/dist/v2/runtime/intelligence-platform/learning-management.cjs +204 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.cjs.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.cts +112 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.cts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.mts +112 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.d.mts.map +1 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.mjs +194 -0
- package/dist/v2/runtime/intelligence-platform/learning-management.mjs.map +1 -0
- package/dist/v2/runtime/runner/agent-runner.cjs +16 -0
- package/dist/v2/runtime/runner/agent-runner.cjs.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.d.cts +11 -1
- package/dist/v2/runtime/runner/agent-runner.d.cts.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.d.mts +11 -1
- package/dist/v2/runtime/runner/agent-runner.d.mts.map +1 -1
- package/dist/v2/runtime/runner/agent-runner.mjs +16 -1
- package/dist/v2/runtime/runner/agent-runner.mjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.cjs +1 -1
- package/dist/v2/runtime/runner/in-memory.cjs.map +1 -1
- package/dist/v2/runtime/runner/in-memory.mjs +2 -2
- package/dist/v2/runtime/runner/in-memory.mjs.map +1 -1
- package/dist/v2/runtime/runner/index.d.cts +2 -2
- package/dist/v2/runtime/runner/index.d.mts +2 -2
- package/dist/v2/runtime/runner/index.mjs +1 -1
- package/dist/v2/runtime/runner/intelligence.cjs +25 -85
- package/dist/v2/runtime/runner/intelligence.cjs.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.cts +2 -31
- package/dist/v2/runtime/runner/intelligence.d.cts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.d.mts +2 -31
- package/dist/v2/runtime/runner/intelligence.d.mts.map +1 -1
- package/dist/v2/runtime/runner/intelligence.mjs +27 -87
- package/dist/v2/runtime/runner/intelligence.mjs.map +1 -1
- package/package.json +8 -8
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs +0 -82
- package/dist/v2/runtime/endpoints/express-fetch-bridge.cjs.map +0 -1
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs +0 -81
- package/dist/v2/runtime/endpoints/express-fetch-bridge.mjs.map +0 -1
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
require("reflect-metadata");
|
|
2
|
+
const require_runtime = require('../_virtual/_rolldown/runtime.cjs');
|
|
3
|
+
const require_index = require('../graphql/types/converted/index.cjs');
|
|
2
4
|
let _copilotkit_shared = require("@copilotkit/shared");
|
|
3
5
|
let rxjs = require("rxjs");
|
|
4
6
|
|
|
@@ -22,8 +24,97 @@ let RuntimeMetaEventName = /* @__PURE__ */ function(RuntimeMetaEventName) {
|
|
|
22
24
|
RuntimeMetaEventName["CopilotKitLangGraphInterruptEvent"] = "CopilotKitLangGraphInterruptEvent";
|
|
23
25
|
return RuntimeMetaEventName;
|
|
24
26
|
}({});
|
|
27
|
+
var RuntimeEventSubject = class extends rxjs.ReplaySubject {
|
|
28
|
+
constructor(signal) {
|
|
29
|
+
super();
|
|
30
|
+
this.signal = signal;
|
|
31
|
+
}
|
|
32
|
+
sendTextMessageStart({ messageId, parentMessageId }) {
|
|
33
|
+
this.next({
|
|
34
|
+
type: RuntimeEventTypes.TextMessageStart,
|
|
35
|
+
messageId,
|
|
36
|
+
parentMessageId
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
sendTextMessageContent({ messageId, content }) {
|
|
40
|
+
this.next({
|
|
41
|
+
type: RuntimeEventTypes.TextMessageContent,
|
|
42
|
+
content,
|
|
43
|
+
messageId
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
sendTextMessageEnd({ messageId }) {
|
|
47
|
+
this.next({
|
|
48
|
+
type: RuntimeEventTypes.TextMessageEnd,
|
|
49
|
+
messageId
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
sendTextMessage(messageId, content) {
|
|
53
|
+
this.sendTextMessageStart({ messageId });
|
|
54
|
+
this.sendTextMessageContent({
|
|
55
|
+
messageId,
|
|
56
|
+
content
|
|
57
|
+
});
|
|
58
|
+
this.sendTextMessageEnd({ messageId });
|
|
59
|
+
}
|
|
60
|
+
sendActionExecutionStart({ actionExecutionId, actionName, parentMessageId }) {
|
|
61
|
+
this.next({
|
|
62
|
+
type: RuntimeEventTypes.ActionExecutionStart,
|
|
63
|
+
actionExecutionId,
|
|
64
|
+
actionName,
|
|
65
|
+
parentMessageId
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
sendActionExecutionArgs({ actionExecutionId, args }) {
|
|
69
|
+
this.next({
|
|
70
|
+
type: RuntimeEventTypes.ActionExecutionArgs,
|
|
71
|
+
args,
|
|
72
|
+
actionExecutionId
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
sendActionExecutionEnd({ actionExecutionId }) {
|
|
76
|
+
this.next({
|
|
77
|
+
type: RuntimeEventTypes.ActionExecutionEnd,
|
|
78
|
+
actionExecutionId
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
sendActionExecution({ actionExecutionId, actionName, args, parentMessageId }) {
|
|
82
|
+
this.sendActionExecutionStart({
|
|
83
|
+
actionExecutionId,
|
|
84
|
+
actionName,
|
|
85
|
+
parentMessageId
|
|
86
|
+
});
|
|
87
|
+
this.sendActionExecutionArgs({
|
|
88
|
+
actionExecutionId,
|
|
89
|
+
args
|
|
90
|
+
});
|
|
91
|
+
this.sendActionExecutionEnd({ actionExecutionId });
|
|
92
|
+
}
|
|
93
|
+
sendActionExecutionResult({ actionExecutionId, actionName, result, error }) {
|
|
94
|
+
this.next({
|
|
95
|
+
type: RuntimeEventTypes.ActionExecutionResult,
|
|
96
|
+
actionName,
|
|
97
|
+
actionExecutionId,
|
|
98
|
+
result: require_index.ResultMessage.encodeResult(result, error)
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
sendAgentStateMessage({ threadId, agentName, nodeName, runId, active, role, state, running }) {
|
|
102
|
+
this.next({
|
|
103
|
+
type: RuntimeEventTypes.AgentStateMessage,
|
|
104
|
+
threadId,
|
|
105
|
+
agentName,
|
|
106
|
+
nodeName,
|
|
107
|
+
runId,
|
|
108
|
+
active,
|
|
109
|
+
role,
|
|
110
|
+
state,
|
|
111
|
+
running
|
|
112
|
+
});
|
|
113
|
+
}
|
|
114
|
+
};
|
|
25
115
|
|
|
26
116
|
//#endregion
|
|
117
|
+
exports.RuntimeEventSubject = RuntimeEventSubject;
|
|
27
118
|
exports.RuntimeEventTypes = RuntimeEventTypes;
|
|
28
119
|
exports.RuntimeMetaEventName = RuntimeMetaEventName;
|
|
29
120
|
//# sourceMappingURL=events.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.cjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"events.cjs","names":["ReplaySubject","ResultMessage"],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n /**\n * Aborted when the consumer no longer wants events, for example when the\n * user stops the run. A producer that holds a model stream should cancel it.\n */\n readonly signal?: AbortSignal;\n\n constructor(signal?: AbortSignal) {\n super();\n this.signal = signal;\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA;;;AAoFF,IAAa,sBAAb,cAAyCA,mBAA4B;CAOnE,YAAY,QAAsB;AAChC,SAAO;AACP,OAAK,SAAS;;CAGhB,qBAAqB,EACnB,WACA,mBAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EACrB,WACA,WAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,mBAAmB,EAAE,aAAoC;AACvD,OAAK,KAAK;GAAE,MAAM,kBAAkB;GAAgB;GAAW,CAAC;;CAGlE,gBAAgB,WAAmB,SAAiB;AAClD,OAAK,qBAAqB,EAAE,WAAW,CAAC;AACxC,OAAK,uBAAuB;GAAE;GAAW;GAAS,CAAC;AACnD,OAAK,mBAAmB,EAAE,WAAW,CAAC;;CAGxC,yBAAyB,EACvB,mBACA,YACA,mBAKC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACD,CAAC;;CAGJ,wBAAwB,EACtB,mBACA,QAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EAAE,qBAAoD;AAC3E,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACD,CAAC;;CAGJ,oBAAoB,EAClB,mBACA,YACA,MACA,mBAMC;AACD,OAAK,yBAAyB;GAC5B;GACA;GACA;GACD,CAAC;AACF,OAAK,wBAAwB;GAAE;GAAmB;GAAM,CAAC;AACzD,OAAK,uBAAuB,EAAE,mBAAmB,CAAC;;CAGpD,0BAA0B,EACxB,mBACA,YACA,QACA,SAMC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA,QAAQC,4BAAc,aAAa,QAAQ,MAAM;GAClD,CAAC;;CAGJ,sBAAsB,EACpB,UACA,WACA,UACA,OACA,QACA,MACA,OACA,WAUC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC"}
|
|
@@ -82,7 +82,12 @@ type RuntimeEvent = {
|
|
|
82
82
|
} | RunTimeMetaEvent | RuntimeErrorEvent;
|
|
83
83
|
type EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;
|
|
84
84
|
declare class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {
|
|
85
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Aborted when the consumer no longer wants events, for example when the
|
|
87
|
+
* user stops the run. A producer that holds a model stream should cancel it.
|
|
88
|
+
*/
|
|
89
|
+
readonly signal?: AbortSignal;
|
|
90
|
+
constructor(signal?: AbortSignal);
|
|
86
91
|
sendTextMessageStart({
|
|
87
92
|
messageId,
|
|
88
93
|
parentMessageId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":";;;;;aAiCY,iBAAA;EACV,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;EACA,SAAA;EACA,QAAA;AAAA;AAAA,aAGU,oBAAA;EACV,uBAAA;EACA,6BAAA;EACA,iCAAA;AAAA;AAAA,KAGU,gBAAA;EAEN,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,uBAAA;EAC3B,KAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,iCAAA;EAC3B,IAAA;IACE,KAAA;IACA,QAAA,GAAW,WAAA,GAAc,sBAAA,GAAyB,aAAA;EAAA;AAAA;EAIpD,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,6BAAA;EAC3B,IAAA;AAAA;AAAA,KAGM,iBAAA;EACV,IAAA,EAAM,iBAAA,CAAkB,QAAA;EACxB,OAAA;EACA,IAAA;AAAA;AAAA,KAGU,YAAA;EAEN,IAAA,EAAM,iBAAA,CAAkB,gBAAA;EACxB,SAAA;EACA,eAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EACxB,SAAA;EACA,OAAA;AAAA;EAEA,IAAA,EAAM,iBAAA,CAAkB,cAAA;EAAgB,SAAA;AAAA;EAExC,IAAA,EAAM,iBAAA,CAAkB,oBAAA;EACxB,iBAAA;EACA,UAAA;EACA,eAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,mBAAA;EACxB,iBAAA;EACA,IAAA;AAAA;EAEA,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EAAoB,iBAAA;AAAA;EAE5C,IAAA,EAAM,iBAAA,CAAkB,qBAAA;EACxB,UAAA;EACA,iBAAA;EACA,MAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,iBAAA;EACxB,QAAA;EACA,SAAA;EACA,QAAA;EACA,KAAA;EACA,MAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;AAAA,IAEF,gBAAA,GACA,iBAAA;AAAA,KAWC,mBAAA,IAAuB,YAAA,EAAc,mBAAA,KAAwB,OAAA;AAAA,cAErD,mBAAA,SAA4B,aAAA,CAAc,YAAA
|
|
1
|
+
{"version":3,"file":"events.d.cts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
|
|
@@ -82,7 +82,12 @@ type RuntimeEvent = {
|
|
|
82
82
|
} | RunTimeMetaEvent | RuntimeErrorEvent;
|
|
83
83
|
type EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;
|
|
84
84
|
declare class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {
|
|
85
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Aborted when the consumer no longer wants events, for example when the
|
|
87
|
+
* user stops the run. A producer that holds a model stream should cancel it.
|
|
88
|
+
*/
|
|
89
|
+
readonly signal?: AbortSignal;
|
|
90
|
+
constructor(signal?: AbortSignal);
|
|
86
91
|
sendTextMessageStart({
|
|
87
92
|
messageId,
|
|
88
93
|
parentMessageId
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":";;;;;aAiCY,iBAAA;EACV,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,oBAAA;EACA,mBAAA;EACA,kBAAA;EACA,qBAAA;EACA,iBAAA;EACA,SAAA;EACA,QAAA;AAAA;AAAA,aAGU,oBAAA;EACV,uBAAA;EACA,6BAAA;EACA,iCAAA;AAAA;AAAA,KAGU,gBAAA;EAEN,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,uBAAA;EAC3B,KAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,iCAAA;EAC3B,IAAA;IACE,KAAA;IACA,QAAA,GAAW,WAAA,GAAc,sBAAA,GAAyB,aAAA;EAAA;AAAA;EAIpD,IAAA,EAAM,iBAAA,CAAkB,SAAA;EACxB,IAAA,EAAM,oBAAA,CAAqB,6BAAA;EAC3B,IAAA;AAAA;AAAA,KAGM,iBAAA;EACV,IAAA,EAAM,iBAAA,CAAkB,QAAA;EACxB,OAAA;EACA,IAAA;AAAA;AAAA,KAGU,YAAA;EAEN,IAAA,EAAM,iBAAA,CAAkB,gBAAA;EACxB,SAAA;EACA,eAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EACxB,SAAA;EACA,OAAA;AAAA;EAEA,IAAA,EAAM,iBAAA,CAAkB,cAAA;EAAgB,SAAA;AAAA;EAExC,IAAA,EAAM,iBAAA,CAAkB,oBAAA;EACxB,iBAAA;EACA,UAAA;EACA,eAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,mBAAA;EACxB,iBAAA;EACA,IAAA;AAAA;EAEA,IAAA,EAAM,iBAAA,CAAkB,kBAAA;EAAoB,iBAAA;AAAA;EAE5C,IAAA,EAAM,iBAAA,CAAkB,qBAAA;EACxB,UAAA;EACA,iBAAA;EACA,MAAA;AAAA;EAGA,IAAA,EAAM,iBAAA,CAAkB,iBAAA;EACxB,QAAA;EACA,SAAA;EACA,QAAA;EACA,KAAA;EACA,MAAA;EACA,IAAA;EACA,KAAA;EACA,OAAA;AAAA,IAEF,gBAAA,GACA,iBAAA;AAAA,KAWC,mBAAA,IAAuB,YAAA,EAAc,mBAAA,KAAwB,OAAA;AAAA,cAErD,mBAAA,SAA4B,aAAA,CAAc,YAAA
|
|
1
|
+
{"version":3,"file":"events.d.mts","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
|
+
import { ResultMessage } from "../graphql/types/converted/index.mjs";
|
|
2
3
|
import { CopilotKitError, CopilotKitErrorCode, CopilotKitLowLevelError } from "@copilotkit/shared";
|
|
3
4
|
import { ReplaySubject } from "rxjs";
|
|
4
5
|
|
|
@@ -22,7 +23,95 @@ let RuntimeMetaEventName = /* @__PURE__ */ function(RuntimeMetaEventName) {
|
|
|
22
23
|
RuntimeMetaEventName["CopilotKitLangGraphInterruptEvent"] = "CopilotKitLangGraphInterruptEvent";
|
|
23
24
|
return RuntimeMetaEventName;
|
|
24
25
|
}({});
|
|
26
|
+
var RuntimeEventSubject = class extends ReplaySubject {
|
|
27
|
+
constructor(signal) {
|
|
28
|
+
super();
|
|
29
|
+
this.signal = signal;
|
|
30
|
+
}
|
|
31
|
+
sendTextMessageStart({ messageId, parentMessageId }) {
|
|
32
|
+
this.next({
|
|
33
|
+
type: RuntimeEventTypes.TextMessageStart,
|
|
34
|
+
messageId,
|
|
35
|
+
parentMessageId
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
sendTextMessageContent({ messageId, content }) {
|
|
39
|
+
this.next({
|
|
40
|
+
type: RuntimeEventTypes.TextMessageContent,
|
|
41
|
+
content,
|
|
42
|
+
messageId
|
|
43
|
+
});
|
|
44
|
+
}
|
|
45
|
+
sendTextMessageEnd({ messageId }) {
|
|
46
|
+
this.next({
|
|
47
|
+
type: RuntimeEventTypes.TextMessageEnd,
|
|
48
|
+
messageId
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
sendTextMessage(messageId, content) {
|
|
52
|
+
this.sendTextMessageStart({ messageId });
|
|
53
|
+
this.sendTextMessageContent({
|
|
54
|
+
messageId,
|
|
55
|
+
content
|
|
56
|
+
});
|
|
57
|
+
this.sendTextMessageEnd({ messageId });
|
|
58
|
+
}
|
|
59
|
+
sendActionExecutionStart({ actionExecutionId, actionName, parentMessageId }) {
|
|
60
|
+
this.next({
|
|
61
|
+
type: RuntimeEventTypes.ActionExecutionStart,
|
|
62
|
+
actionExecutionId,
|
|
63
|
+
actionName,
|
|
64
|
+
parentMessageId
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
sendActionExecutionArgs({ actionExecutionId, args }) {
|
|
68
|
+
this.next({
|
|
69
|
+
type: RuntimeEventTypes.ActionExecutionArgs,
|
|
70
|
+
args,
|
|
71
|
+
actionExecutionId
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
sendActionExecutionEnd({ actionExecutionId }) {
|
|
75
|
+
this.next({
|
|
76
|
+
type: RuntimeEventTypes.ActionExecutionEnd,
|
|
77
|
+
actionExecutionId
|
|
78
|
+
});
|
|
79
|
+
}
|
|
80
|
+
sendActionExecution({ actionExecutionId, actionName, args, parentMessageId }) {
|
|
81
|
+
this.sendActionExecutionStart({
|
|
82
|
+
actionExecutionId,
|
|
83
|
+
actionName,
|
|
84
|
+
parentMessageId
|
|
85
|
+
});
|
|
86
|
+
this.sendActionExecutionArgs({
|
|
87
|
+
actionExecutionId,
|
|
88
|
+
args
|
|
89
|
+
});
|
|
90
|
+
this.sendActionExecutionEnd({ actionExecutionId });
|
|
91
|
+
}
|
|
92
|
+
sendActionExecutionResult({ actionExecutionId, actionName, result, error }) {
|
|
93
|
+
this.next({
|
|
94
|
+
type: RuntimeEventTypes.ActionExecutionResult,
|
|
95
|
+
actionName,
|
|
96
|
+
actionExecutionId,
|
|
97
|
+
result: ResultMessage.encodeResult(result, error)
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
sendAgentStateMessage({ threadId, agentName, nodeName, runId, active, role, state, running }) {
|
|
101
|
+
this.next({
|
|
102
|
+
type: RuntimeEventTypes.AgentStateMessage,
|
|
103
|
+
threadId,
|
|
104
|
+
agentName,
|
|
105
|
+
nodeName,
|
|
106
|
+
runId,
|
|
107
|
+
active,
|
|
108
|
+
role,
|
|
109
|
+
state,
|
|
110
|
+
running
|
|
111
|
+
});
|
|
112
|
+
}
|
|
113
|
+
};
|
|
25
114
|
|
|
26
115
|
//#endregion
|
|
27
|
-
export { RuntimeEventTypes, RuntimeMetaEventName };
|
|
116
|
+
export { RuntimeEventSubject, RuntimeEventTypes, RuntimeMetaEventName };
|
|
28
117
|
//# sourceMappingURL=events.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events.mjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n constructor() {\n super();\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA"}
|
|
1
|
+
{"version":3,"file":"events.mjs","names":[],"sources":["../../../src/v1-deprecated/service-adapters/events.ts"],"sourcesContent":["import {\n Action,\n CopilotKitError,\n CopilotKitErrorCode,\n CopilotKitLowLevelError,\n ensureStructuredError,\n randomId,\n Severity,\n} from \"@copilotkit/shared\";\nimport { plainToInstance } from \"class-transformer\";\nimport {\n catchError,\n concat,\n concatMap,\n EMPTY,\n firstValueFrom,\n from,\n of,\n ReplaySubject,\n scan,\n Subject,\n} from \"rxjs\";\nimport { ActionInput } from \"../graphql/inputs/action.input\";\nimport {\n ActionExecutionMessage,\n ResultMessage,\n TextMessage,\n} from \"../graphql/types/converted\";\nimport { GuardrailsResult } from \"../graphql/types/guardrails-result.type\";\nimport { generateHelpfulErrorMessage } from \"../lib/streaming\";\nimport telemetry from \"../lib/telemetry-client\";\nimport { streamLangChainResponse } from \"./langchain/utils\";\n\nexport enum RuntimeEventTypes {\n TextMessageStart = \"TextMessageStart\",\n TextMessageContent = \"TextMessageContent\",\n TextMessageEnd = \"TextMessageEnd\",\n ActionExecutionStart = \"ActionExecutionStart\",\n ActionExecutionArgs = \"ActionExecutionArgs\",\n ActionExecutionEnd = \"ActionExecutionEnd\",\n ActionExecutionResult = \"ActionExecutionResult\",\n AgentStateMessage = \"AgentStateMessage\",\n MetaEvent = \"MetaEvent\",\n RunError = \"RunError\",\n}\n\nexport enum RuntimeMetaEventName {\n LangGraphInterruptEvent = \"LangGraphInterruptEvent\",\n LangGraphInterruptResumeEvent = \"LangGraphInterruptResumeEvent\",\n CopilotKitLangGraphInterruptEvent = \"CopilotKitLangGraphInterruptEvent\",\n}\n\nexport type RunTimeMetaEvent =\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptEvent;\n value: string;\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.CopilotKitLangGraphInterruptEvent;\n data: {\n value: string;\n messages: (TextMessage | ActionExecutionMessage | ResultMessage)[];\n };\n }\n | {\n type: RuntimeEventTypes.MetaEvent;\n name: RuntimeMetaEventName.LangGraphInterruptResumeEvent;\n data: string;\n };\n\nexport type RuntimeErrorEvent = {\n type: RuntimeEventTypes.RunError;\n message: string;\n code?: string;\n};\n\nexport type RuntimeEvent =\n | {\n type: RuntimeEventTypes.TextMessageStart;\n messageId: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.TextMessageContent;\n messageId: string;\n content: string;\n }\n | { type: RuntimeEventTypes.TextMessageEnd; messageId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionStart;\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }\n | {\n type: RuntimeEventTypes.ActionExecutionArgs;\n actionExecutionId: string;\n args: string;\n }\n | { type: RuntimeEventTypes.ActionExecutionEnd; actionExecutionId: string }\n | {\n type: RuntimeEventTypes.ActionExecutionResult;\n actionName: string;\n actionExecutionId: string;\n result: string;\n }\n | {\n type: RuntimeEventTypes.AgentStateMessage;\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }\n | RunTimeMetaEvent\n | RuntimeErrorEvent;\n\ninterface RuntimeEventWithState {\n event: RuntimeEvent | null;\n callActionServerSide: boolean;\n action: Action<any> | null;\n actionExecutionId: string | null;\n args: string;\n actionExecutionParentMessageId: string | null;\n}\n\ntype EventSourceCallback = (eventStream$: RuntimeEventSubject) => Promise<void>;\n\nexport class RuntimeEventSubject extends ReplaySubject<RuntimeEvent> {\n /**\n * Aborted when the consumer no longer wants events, for example when the\n * user stops the run. A producer that holds a model stream should cancel it.\n */\n readonly signal?: AbortSignal;\n\n constructor(signal?: AbortSignal) {\n super();\n this.signal = signal;\n }\n\n sendTextMessageStart({\n messageId,\n parentMessageId,\n }: {\n messageId: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageStart,\n messageId,\n parentMessageId,\n });\n }\n\n sendTextMessageContent({\n messageId,\n content,\n }: {\n messageId: string;\n content: string;\n }) {\n this.next({\n type: RuntimeEventTypes.TextMessageContent,\n content,\n messageId,\n });\n }\n\n sendTextMessageEnd({ messageId }: { messageId: string }) {\n this.next({ type: RuntimeEventTypes.TextMessageEnd, messageId });\n }\n\n sendTextMessage(messageId: string, content: string) {\n this.sendTextMessageStart({ messageId });\n this.sendTextMessageContent({ messageId, content });\n this.sendTextMessageEnd({ messageId });\n }\n\n sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n parentMessageId?: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionStart,\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n }\n\n sendActionExecutionArgs({\n actionExecutionId,\n args,\n }: {\n actionExecutionId: string;\n args: string;\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionArgs,\n args,\n actionExecutionId,\n });\n }\n\n sendActionExecutionEnd({ actionExecutionId }: { actionExecutionId: string }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionEnd,\n actionExecutionId,\n });\n }\n\n sendActionExecution({\n actionExecutionId,\n actionName,\n args,\n parentMessageId,\n }: {\n actionExecutionId: string;\n actionName: string;\n args: string;\n parentMessageId?: string;\n }) {\n this.sendActionExecutionStart({\n actionExecutionId,\n actionName,\n parentMessageId,\n });\n this.sendActionExecutionArgs({ actionExecutionId, args });\n this.sendActionExecutionEnd({ actionExecutionId });\n }\n\n sendActionExecutionResult({\n actionExecutionId,\n actionName,\n result,\n error,\n }: {\n actionExecutionId: string;\n actionName: string;\n result?: string;\n error?: { code: string; message: string };\n }) {\n this.next({\n type: RuntimeEventTypes.ActionExecutionResult,\n actionName,\n actionExecutionId,\n result: ResultMessage.encodeResult(result, error),\n });\n }\n\n sendAgentStateMessage({\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n }: {\n threadId: string;\n agentName: string;\n nodeName: string;\n runId: string;\n active: boolean;\n role: string;\n state: string;\n running: boolean;\n }) {\n this.next({\n type: RuntimeEventTypes.AgentStateMessage,\n threadId,\n agentName,\n nodeName,\n runId,\n active,\n role,\n state,\n running,\n });\n }\n}\n\nexport class RuntimeEventSource {\n private eventStream$ = new RuntimeEventSubject();\n private callback!: EventSourceCallback;\n private errorHandler?: (error: any, context: any) => Promise<void>;\n private errorContext?: any;\n\n constructor(params?: {\n errorHandler?: (error: any, context: any) => Promise<void>;\n errorContext?: any;\n }) {\n this.errorHandler = params?.errorHandler;\n this.errorContext = params?.errorContext;\n }\n\n async stream(callback: EventSourceCallback): Promise<void> {\n this.callback = callback;\n }\n}\n\nfunction convertStreamingErrorToStructured(error: any): CopilotKitError {\n // Determine a more helpful error message based on context\n let helpfulMessage = generateHelpfulErrorMessage(\n error,\n \"event streaming connection\",\n );\n\n // For network-related errors, use CopilotKitLowLevelError to preserve the original error\n if (\n error?.message?.includes(\"fetch failed\") ||\n error?.message?.includes(\"ECONNREFUSED\") ||\n error?.message?.includes(\"ENOTFOUND\") ||\n error?.message?.includes(\"ETIMEDOUT\") ||\n error?.message?.includes(\"terminated\") ||\n error?.cause?.code === \"UND_ERR_SOCKET\" ||\n error?.message?.includes(\"other side closed\") ||\n error?.code === \"UND_ERR_SOCKET\"\n ) {\n return new CopilotKitLowLevelError({\n error: error instanceof Error ? error : new Error(String(error)),\n url: \"event streaming connection\",\n message: helpfulMessage,\n });\n }\n\n // For all other errors, preserve the raw error in a basic CopilotKitError\n return new CopilotKitError({\n message: helpfulMessage,\n code: CopilotKitErrorCode.UNKNOWN,\n severity: Severity.CRITICAL,\n });\n}\n"],"mappings":";;;;;;AAiCA,IAAY,gEAAL;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;AAGF,IAAY,sEAAL;AACL;AACA;AACA;;;AAoFF,IAAa,sBAAb,cAAyC,cAA4B;CAOnE,YAAY,QAAsB;AAChC,SAAO;AACP,OAAK,SAAS;;CAGhB,qBAAqB,EACnB,WACA,mBAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EACrB,WACA,WAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,mBAAmB,EAAE,aAAoC;AACvD,OAAK,KAAK;GAAE,MAAM,kBAAkB;GAAgB;GAAW,CAAC;;CAGlE,gBAAgB,WAAmB,SAAiB;AAClD,OAAK,qBAAqB,EAAE,WAAW,CAAC;AACxC,OAAK,uBAAuB;GAAE;GAAW;GAAS,CAAC;AACnD,OAAK,mBAAmB,EAAE,WAAW,CAAC;;CAGxC,yBAAyB,EACvB,mBACA,YACA,mBAKC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACD,CAAC;;CAGJ,wBAAwB,EACtB,mBACA,QAIC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACD,CAAC;;CAGJ,uBAAuB,EAAE,qBAAoD;AAC3E,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACD,CAAC;;CAGJ,oBAAoB,EAClB,mBACA,YACA,MACA,mBAMC;AACD,OAAK,yBAAyB;GAC5B;GACA;GACA;GACD,CAAC;AACF,OAAK,wBAAwB;GAAE;GAAmB;GAAM,CAAC;AACzD,OAAK,uBAAuB,EAAE,mBAAmB,CAAC;;CAGpD,0BAA0B,EACxB,mBACA,YACA,QACA,SAMC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA,QAAQ,cAAc,aAAa,QAAQ,MAAM;GAClD,CAAC;;CAGJ,sBAAsB,EACpB,UACA,WACA,UACA,OACA,QACA,MACA,OACA,WAUC;AACD,OAAK,KAAK;GACR,MAAM,kBAAkB;GACxB;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACD,CAAC"}
|
|
@@ -19,7 +19,7 @@ var LangChainAdapter = class {
|
|
|
19
19
|
const { eventSource, model, actions, messages, runId, threadId: threadIdFromRequest } = request;
|
|
20
20
|
const threadId = threadIdFromRequest ?? (0, _copilotkit_shared.randomUUID)();
|
|
21
21
|
const result = await this.options.chainFn({
|
|
22
|
-
messages: messages.map(require_utils.convertMessageToLangChainMessage),
|
|
22
|
+
messages: require_utils.mergeAssistantToolCalls(messages.map(require_utils.convertMessageToLangChainMessage)),
|
|
23
23
|
tools: actions.map(require_utils.convertActionInputToLangChainTool),
|
|
24
24
|
model,
|
|
25
25
|
threadId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain-adapter.cjs","names":["convertMessageToLangChainMessage","convertActionInputToLangChainTool","streamLangChainResponse"],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: messages.map(convertMessageToLangChainMessage),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"langchain-adapter.cjs","names":["mergeAssistantToolCalls","convertMessageToLangChainMessage","convertActionInputToLangChainTool","streamLangChainResponse"],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n mergeAssistantToolCalls,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: mergeAssistantToolCalls(\n messages.map(convertMessageToLangChainMessage),\n ),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAmFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,2DAAmC;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAUA,sCACR,SAAS,IAAIC,+CAAiC,CAC/C;IACD,OAAO,QAAQ,IAAIC,gDAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAMC,sCAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,sBACE,QAAQ,qCAAqC;AACjD,SAAM,mBAAmB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"langchain-adapter.d.cts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAoEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;
|
|
1
|
+
{"version":3,"file":"langchain-adapter.d.mts","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"mappings":";;;;;;;UAoEU,iBAAA;EACR,KAAA;EACA,QAAA,EAAU,WAAA;EACV,KAAA,EAAO,qBAAA;EACP,QAAA;EACA,KAAA;AAAA;AAAA,UAGQ,uBAAA;EAcY;;;EAVpB,OAAA,GAAU,UAAA,EAAY,iBAAA,KAAsB,OAAA,CAAQ,mBAAA;AAAA;AAAA,cAGzC,gBAAA,YAA4B,qBAAA;EAAA,QAOnB,OAAA;EAGlB;;;EAAA,IANS,IAAA,CAAA;cAGS,OAAA,EAAS,uBAAA;EAEvB,OAAA,CACJ,OAAA,EAAS,mCAAA,GACR,OAAA,CAAQ,oCAAA;AAAA"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import "reflect-metadata";
|
|
2
2
|
import { __require } from "../../_virtual/_rolldown/runtime.mjs";
|
|
3
|
-
import { convertActionInputToLangChainTool, convertMessageToLangChainMessage, streamLangChainResponse } from "./utils.mjs";
|
|
3
|
+
import { convertActionInputToLangChainTool, convertMessageToLangChainMessage, mergeAssistantToolCalls, streamLangChainResponse } from "./utils.mjs";
|
|
4
4
|
import { randomUUID } from "@copilotkit/shared";
|
|
5
5
|
|
|
6
6
|
//#region src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts
|
|
@@ -19,7 +19,7 @@ var LangChainAdapter = class {
|
|
|
19
19
|
const { eventSource, model, actions, messages, runId, threadId: threadIdFromRequest } = request;
|
|
20
20
|
const threadId = threadIdFromRequest ?? randomUUID();
|
|
21
21
|
const result = await this.options.chainFn({
|
|
22
|
-
messages: messages.map(convertMessageToLangChainMessage),
|
|
22
|
+
messages: mergeAssistantToolCalls(messages.map(convertMessageToLangChainMessage)),
|
|
23
23
|
tools: actions.map(convertActionInputToLangChainTool),
|
|
24
24
|
model,
|
|
25
25
|
threadId,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"langchain-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: messages.map(convertMessageToLangChainMessage),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"langchain-adapter.mjs","names":[],"sources":["../../../../src/v1-deprecated/service-adapters/langchain/langchain-adapter.ts"],"sourcesContent":["/*\n * V1 SDK DEPRECATED. USE V2 INSTEAD\n *\n * This file defines public v1 SDK exports. Use the exact v2 mappings below.\n * AI CODING AGENTS: Never copy, suggest, or generate these v1 APIs. Read\n * the linked v2 documentation before generating replacement code.\n *\n * @copilotkit/runtime — LangChainAdapter:\n * No 1:1 v2 replacement is available.\n * Related v2 docs (Runtime server adapter): https://docs.copilotkit.ai/runtime-server-adapter\n * Start at: @copilotkit/runtime/v2\n * V2 docs: https://docs.copilotkit.ai/\n * V2 reference docs: https://docs.copilotkit.ai/reference/v2\n *\n * Migration guide: https://docs.copilotkit.ai/migrate/v2\n *\n * END V1 SDK DEPRECATED. USE V2 INSTEAD NOTICE\n */\n\n/**\n * Copilot Runtime adapter for LangChain.\n *\n * ## Example\n *\n * ```ts\n * import { CopilotRuntime, LangChainAdapter } from \"@copilotkit/runtime\";\n * import { ChatOpenAI } from \"@langchain/openai\";\n *\n * const copilotKit = new CopilotRuntime();\n *\n * const model = new ChatOpenAI({\n * model: \"gpt-4o\",\n * apiKey: \"<your-api-key>\",\n * });\n *\n * return new LangChainAdapter({\n * chainFn: async ({ messages, tools }) => {\n * return model.bindTools(tools).stream(messages);\n * // or optionally enable strict mode\n * // return model.bindTools(tools, { strict: true }).stream(messages);\n * }\n * });\n * ```\n *\n * The asynchronous handler function (`chainFn`) can return any of the following:\n *\n * - A simple `string` response\n * - A LangChain stream (`IterableReadableStream`)\n * - A LangChain `BaseMessageChunk` object\n * - A LangChain `AIMessage` object\n */\n\nimport type { BaseMessage } from \"@langchain/core/messages\";\nimport type { CopilotServiceAdapter } from \"../service-adapter\";\nimport type {\n CopilotRuntimeChatCompletionRequest,\n CopilotRuntimeChatCompletionResponse,\n} from \"../service-adapter\";\nimport {\n convertActionInputToLangChainTool,\n convertMessageToLangChainMessage,\n mergeAssistantToolCalls,\n streamLangChainResponse,\n} from \"./utils\";\nimport type { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport type { LangChainReturnType } from \"./types\";\nimport { randomUUID } from \"@copilotkit/shared\";\n\ninterface ChainFnParameters {\n model: string;\n messages: BaseMessage[];\n tools: DynamicStructuredTool[];\n threadId?: string;\n runId?: string;\n}\n\ninterface LangChainAdapterOptions {\n /**\n * A function that uses the LangChain API to generate a response.\n */\n chainFn: (parameters: ChainFnParameters) => Promise<LangChainReturnType>;\n}\n\nexport class LangChainAdapter implements CopilotServiceAdapter {\n /**\n * To use LangChain as a backend, provide a handler function to the adapter with your custom LangChain logic.\n */\n public get name() {\n return \"LangChainAdapter\";\n }\n constructor(private options: LangChainAdapterOptions) {}\n\n async process(\n request: CopilotRuntimeChatCompletionRequest,\n ): Promise<CopilotRuntimeChatCompletionResponse> {\n try {\n const {\n eventSource,\n model,\n actions,\n messages,\n runId,\n threadId: threadIdFromRequest,\n } = request;\n const threadId = threadIdFromRequest ?? randomUUID();\n const result = await this.options.chainFn({\n messages: mergeAssistantToolCalls(\n messages.map(convertMessageToLangChainMessage),\n ),\n tools: actions.map(convertActionInputToLangChainTool),\n model,\n threadId,\n runId,\n });\n\n eventSource.stream(async (eventStream$) => {\n await streamLangChainResponse({\n result,\n eventStream$,\n });\n });\n\n return {\n threadId,\n };\n } finally {\n // Lazy require for optional peer dependency\n // eslint-disable-next-line @typescript-eslint/no-var-requires\n const {\n awaitAllCallbacks,\n } = require(\"@langchain/core/callbacks/promises\");\n await awaitAllCallbacks();\n }\n }\n}\n"],"mappings":";;;;;;AAmFA,IAAa,mBAAb,MAA+D;;;;CAI7D,IAAW,OAAO;AAChB,SAAO;;CAET,YAAY,AAAQ,SAAkC;EAAlC;;CAEpB,MAAM,QACJ,SAC+C;AAC/C,MAAI;GACF,MAAM,EACJ,aACA,OACA,SACA,UACA,OACA,UAAU,wBACR;GACJ,MAAM,WAAW,uBAAuB,YAAY;GACpD,MAAM,SAAS,MAAM,KAAK,QAAQ,QAAQ;IACxC,UAAU,wBACR,SAAS,IAAI,iCAAiC,CAC/C;IACD,OAAO,QAAQ,IAAI,kCAAkC;IACrD;IACA;IACA;IACD,CAAC;AAEF,eAAY,OAAO,OAAO,iBAAiB;AACzC,UAAM,wBAAwB;KAC5B;KACA;KACD,CAAC;KACF;AAEF,UAAO,EACL,UACD;YACO;GAGR,MAAM,EACJ,gCACU,qCAAqC;AACjD,SAAM,mBAAmB"}
|
|
@@ -23,6 +23,28 @@ function convertMessageToLangChainMessage(message) {
|
|
|
23
23
|
tool_call_id: message.actionExecutionId
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Folds an assistant turn back into one message. A v1 history carries each
|
|
28
|
+
* tool call as its own message (plus an empty text message before them), so
|
|
29
|
+
* parallel calls arrive as several `AIMessage`s in a row. OpenAI rejects that
|
|
30
|
+
* shape: an assistant message with `tool_calls` must be followed directly by
|
|
31
|
+
* the results for each of its calls.
|
|
32
|
+
*/
|
|
33
|
+
function mergeAssistantToolCalls(messages) {
|
|
34
|
+
const merged = [];
|
|
35
|
+
for (const message of messages) {
|
|
36
|
+
const previous = merged[merged.length - 1];
|
|
37
|
+
if (isAIMessage(previous) && isAIMessage(message) && message.tool_calls?.length) {
|
|
38
|
+
merged[merged.length - 1] = new _langchain_core_messages.AIMessage({
|
|
39
|
+
content: previous.content || message.content,
|
|
40
|
+
tool_calls: [...previous.tool_calls ?? [], ...message.tool_calls]
|
|
41
|
+
});
|
|
42
|
+
continue;
|
|
43
|
+
}
|
|
44
|
+
merged.push(message);
|
|
45
|
+
}
|
|
46
|
+
return merged;
|
|
47
|
+
}
|
|
26
48
|
function convertActionInputToLangChainTool(actionInput) {
|
|
27
49
|
return new _langchain_core_tools.DynamicStructuredTool({
|
|
28
50
|
...actionInput,
|
|
@@ -51,21 +73,17 @@ function maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution)
|
|
|
51
73
|
});
|
|
52
74
|
}
|
|
53
75
|
async function streamLangChainResponse({ result, eventStream$, actionExecution }) {
|
|
54
|
-
if (typeof result === "string")
|
|
55
|
-
eventStream$.sendActionExecutionResult({
|
|
76
|
+
if (typeof result === "string") {
|
|
77
|
+
if (actionExecution) eventStream$.sendActionExecutionResult({
|
|
56
78
|
actionExecutionId: actionExecution.id,
|
|
57
79
|
actionName: actionExecution.name,
|
|
58
80
|
result
|
|
59
81
|
});
|
|
60
|
-
eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result);
|
|
61
|
-
} else
|
|
62
|
-
actionExecutionId: actionExecution.id,
|
|
63
|
-
actionName: actionExecution.name,
|
|
64
|
-
result
|
|
65
|
-
});
|
|
66
|
-
else if (isAIMessage(result)) {
|
|
82
|
+
if (!actionExecution || actionExecution.returnDirect) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), result);
|
|
83
|
+
} else if (isAIMessage(result)) {
|
|
67
84
|
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
68
|
-
|
|
85
|
+
const text = contentToText(result.content);
|
|
86
|
+
if (text) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), text);
|
|
69
87
|
for (const toolCall of result.tool_calls) eventStream$.sendActionExecution({
|
|
70
88
|
actionExecutionId: toolCall.id || (0, _copilotkit_shared.randomId)(),
|
|
71
89
|
actionName: toolCall.name,
|
|
@@ -73,7 +91,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
73
91
|
});
|
|
74
92
|
} else if (isBaseMessageChunk(result)) {
|
|
75
93
|
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
76
|
-
|
|
94
|
+
const text = contentToText(result.lc_kwargs?.content);
|
|
95
|
+
if (text) eventStream$.sendTextMessage((0, _copilotkit_shared.randomId)(), text);
|
|
77
96
|
if (result.lc_kwargs?.tool_calls) for (const toolCall of result.lc_kwargs?.tool_calls) eventStream$.sendActionExecution({
|
|
78
97
|
actionExecutionId: toolCall.id || (0, _copilotkit_shared.randomId)(),
|
|
79
98
|
actionName: toolCall.name,
|
|
@@ -82,8 +101,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
82
101
|
} else if (result && "getReader" in result) {
|
|
83
102
|
maybeSendActionExecutionResultIsMessage(eventStream$, actionExecution);
|
|
84
103
|
let reader = result.getReader();
|
|
104
|
+
const cancelReader = () => {
|
|
105
|
+
reader.cancel().catch(() => {});
|
|
106
|
+
};
|
|
107
|
+
eventStream$.signal?.addEventListener("abort", cancelReader, { once: true });
|
|
108
|
+
if (eventStream$.signal?.aborted) cancelReader();
|
|
85
109
|
let mode = null;
|
|
86
110
|
let currentMessageId;
|
|
111
|
+
let openToolCallId;
|
|
87
112
|
const toolCallDetails = {
|
|
88
113
|
name: null,
|
|
89
114
|
id: null,
|
|
@@ -96,8 +121,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
96
121
|
let toolCallId = void 0;
|
|
97
122
|
let toolCallArgs = void 0;
|
|
98
123
|
let hasToolCall = false;
|
|
99
|
-
|
|
100
|
-
if (value && value.content) content = Array.isArray(value.content) ? value.content[0]?.text ?? "" : value.content;
|
|
124
|
+
const content = contentToText(value?.content);
|
|
101
125
|
if (isAIMessageChunk(value)) {
|
|
102
126
|
let chunk = value.tool_call_chunks?.[0];
|
|
103
127
|
toolCallArgs = chunk?.args;
|
|
@@ -122,12 +146,14 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
122
146
|
eventStream$.sendTextMessageEnd({ messageId: currentMessageId });
|
|
123
147
|
} else if (mode === "function" && (!hasToolCall || done)) {
|
|
124
148
|
mode = null;
|
|
125
|
-
eventStream$.sendActionExecutionEnd({ actionExecutionId:
|
|
149
|
+
eventStream$.sendActionExecutionEnd({ actionExecutionId: openToolCallId });
|
|
150
|
+
openToolCallId = void 0;
|
|
126
151
|
}
|
|
127
152
|
if (done) break;
|
|
128
153
|
if (mode === null) {
|
|
129
154
|
if (hasToolCall && toolCallId && toolCallName) {
|
|
130
155
|
mode = "function";
|
|
156
|
+
openToolCallId = toolCallId;
|
|
131
157
|
eventStream$.sendActionExecutionStart({
|
|
132
158
|
actionExecutionId: toolCallId,
|
|
133
159
|
actionName: toolCallName,
|
|
@@ -145,7 +171,8 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
145
171
|
});
|
|
146
172
|
else if (mode === "function" && toolCallArgs) {
|
|
147
173
|
if (toolCallDetails.index !== toolCallDetails.prevIndex) {
|
|
148
|
-
eventStream$.sendActionExecutionEnd({ actionExecutionId:
|
|
174
|
+
eventStream$.sendActionExecutionEnd({ actionExecutionId: openToolCallId });
|
|
175
|
+
openToolCallId = toolCallId;
|
|
149
176
|
eventStream$.sendActionExecutionStart({
|
|
150
177
|
actionExecutionId: toolCallId,
|
|
151
178
|
actionName: toolCallName,
|
|
@@ -162,6 +189,7 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
162
189
|
console.error("Error reading from stream", error);
|
|
163
190
|
break;
|
|
164
191
|
}
|
|
192
|
+
eventStream$.signal?.removeEventListener("abort", cancelReader);
|
|
165
193
|
} else if (actionExecution) eventStream$.sendActionExecutionResult({
|
|
166
194
|
actionExecutionId: actionExecution.id,
|
|
167
195
|
actionName: actionExecution.name,
|
|
@@ -170,6 +198,15 @@ async function streamLangChainResponse({ result, eventStream$, actionExecution }
|
|
|
170
198
|
else throw new Error("Invalid return type from LangChain function.");
|
|
171
199
|
eventStream$.complete();
|
|
172
200
|
}
|
|
201
|
+
/**
|
|
202
|
+
* Message content as plain text. Some providers (Anthropic) return an array of
|
|
203
|
+
* content parts, where text sits next to `tool_use` and other parts.
|
|
204
|
+
*/
|
|
205
|
+
function contentToText(content) {
|
|
206
|
+
if (typeof content === "string") return content;
|
|
207
|
+
if (!Array.isArray(content)) return "";
|
|
208
|
+
return content.map((part) => part?.type === "text" && typeof part.text === "string" ? part.text : "").join("");
|
|
209
|
+
}
|
|
173
210
|
function encodeResult(result) {
|
|
174
211
|
if (result === void 0) return "";
|
|
175
212
|
else if (typeof result === "string") return result;
|
|
@@ -179,5 +216,6 @@ function encodeResult(result) {
|
|
|
179
216
|
//#endregion
|
|
180
217
|
exports.convertActionInputToLangChainTool = convertActionInputToLangChainTool;
|
|
181
218
|
exports.convertMessageToLangChainMessage = convertMessageToLangChainMessage;
|
|
219
|
+
exports.mergeAssistantToolCalls = mergeAssistantToolCalls;
|
|
182
220
|
exports.streamLangChainResponse = streamLangChainResponse;
|
|
183
221
|
//# sourceMappingURL=utils.cjs.map
|