@voltagent/core 0.1.37 → 0.1.38
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/index.d.ts +19 -30
- package/dist/index.js +195 -117
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +193 -116
- package/dist/index.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.ts
CHANGED
|
@@ -2956,7 +2956,7 @@ declare class Agent<TProvider extends {
|
|
|
2956
2956
|
*/
|
|
2957
2957
|
private _endOtelToolSpan;
|
|
2958
2958
|
/**
|
|
2959
|
-
* Create an enhanced fullStream
|
|
2959
|
+
* Create an enhanced fullStream with real-time SubAgent event injection
|
|
2960
2960
|
*/
|
|
2961
2961
|
private createEnhancedFullStream;
|
|
2962
2962
|
/**
|
|
@@ -3335,34 +3335,6 @@ declare const updateSinglePackage: (packageName: string, packagePath?: string) =
|
|
|
3335
3335
|
declare function safeJsonParse(value: string | null | undefined): any;
|
|
3336
3336
|
declare function serializeValueForDebug(value: unknown): unknown;
|
|
3337
3337
|
|
|
3338
|
-
/**
|
|
3339
|
-
* Utility for merging multiple async streams with event queue integration
|
|
3340
|
-
*/
|
|
3341
|
-
interface StreamMergerOptions {
|
|
3342
|
-
/**
|
|
3343
|
-
* Polling interval for checking events (in milliseconds)
|
|
3344
|
-
* Default: 16ms (~60fps for smooth UI updates)
|
|
3345
|
-
*/
|
|
3346
|
-
pollingInterval?: number;
|
|
3347
|
-
/**
|
|
3348
|
-
* Post-stream polling interval when main stream is finished (in milliseconds)
|
|
3349
|
-
* Default: 10ms
|
|
3350
|
-
*/
|
|
3351
|
-
postStreamInterval?: number;
|
|
3352
|
-
}
|
|
3353
|
-
/**
|
|
3354
|
-
* Creates an enhanced stream that merges an original async iterable with events
|
|
3355
|
-
* from a shared queue, ensuring chronological order and smooth UI updates.
|
|
3356
|
-
*
|
|
3357
|
-
* @param originalStream - The main stream to merge with
|
|
3358
|
-
* @param eventsQueue - Shared array that other sources push events to
|
|
3359
|
-
* @param options - Configuration options for polling intervals
|
|
3360
|
-
* @returns Enhanced async iterable that yields events from both sources
|
|
3361
|
-
*/
|
|
3362
|
-
declare function createMergedStream<T>(originalStream: AsyncIterable<T>, eventsQueue: T[], options?: StreamMergerOptions): AsyncIterable<T>;
|
|
3363
|
-
/**
|
|
3364
|
-
* Helper type for SubAgent events that can be merged into a main stream
|
|
3365
|
-
*/
|
|
3366
3338
|
interface SubAgentEvent {
|
|
3367
3339
|
type: string;
|
|
3368
3340
|
data: any;
|
|
@@ -3370,6 +3342,23 @@ interface SubAgentEvent {
|
|
|
3370
3342
|
subAgentId: string;
|
|
3371
3343
|
subAgentName: string;
|
|
3372
3344
|
}
|
|
3345
|
+
interface StreamEventForwarderOptions {
|
|
3346
|
+
forwarder?: (event: any) => Promise<void>;
|
|
3347
|
+
filterTypes?: string[];
|
|
3348
|
+
addSubAgentPrefix?: boolean;
|
|
3349
|
+
}
|
|
3350
|
+
/**
|
|
3351
|
+
* Forwards SubAgent events to a stream with optional filtering and prefixing
|
|
3352
|
+
* @param event - The SubAgent event to forward
|
|
3353
|
+
* @param options - Configuration options for forwarding
|
|
3354
|
+
*/
|
|
3355
|
+
declare function streamEventForwarder(event: SubAgentEvent, options?: StreamEventForwarderOptions): Promise<void>;
|
|
3356
|
+
/**
|
|
3357
|
+
* Creates a configured streamEventForwarder function
|
|
3358
|
+
* @param options - Configuration options
|
|
3359
|
+
* @returns A configured forwarder function
|
|
3360
|
+
*/
|
|
3361
|
+
declare function createStreamEventForwarder(options?: StreamEventForwarderOptions): (event: SubAgentEvent) => Promise<void>;
|
|
3373
3362
|
|
|
3374
3363
|
/**
|
|
3375
3364
|
* Creates an AgentTool from a retriever, allowing it to be used as a tool in an agent.
|
|
@@ -3972,4 +3961,4 @@ declare class VoltAgent {
|
|
|
3972
3961
|
shutdownTelemetry(): Promise<void>;
|
|
3973
3962
|
}
|
|
3974
3963
|
|
|
3975
|
-
export { Agent, AgentErrorEvent, AgentHistoryEntry, AgentHookOnEnd, AgentHookOnHandoff, AgentHookOnStart, AgentHookOnToolEnd, AgentHookOnToolStart, AgentHooks, AgentOptions, AgentRegistry, AgentResponse, AgentStartEvent, AgentStartEventMetadata, AgentSuccessEvent, AgentSuccessEventMetadata, AgentTool, AllowedVariableValue, AnyToolConfig, AsyncIterableStream, BaseEventMetadata, BaseLLMOptions, BaseMessage, BaseRetriever, BaseTimelineEvent, BaseTool, BaseToolCall, ClientInfo, Conversation, ConversationQueryOptions, CreateConversationInput, CreateReasoningToolsOptions, CustomEndpointDefinition, CustomEndpointError, CustomEndpointHandler, DEFAULT_INSTRUCTIONS, DataContent, ErrorStreamPart, EventStatus, ExtractVariableNames, FEW_SHOT_EXAMPLES, FilePart, FinishStreamPart, GenerateObjectOptions, GenerateTextOptions, HTTPServerConfig, HistoryStatus, HttpMethod, ImagePart, InMemoryStorage, InferGenerateObjectResponse, InferGenerateTextResponse, InferMessage, InferModel, InferProviderParams, InferStreamResponse, InferTool, LLMProvider, LibSQLStorage, MCPClient, MCPClientConfig, MCPClientEvents, MCPConfiguration, MCPOptions, MCPServerConfig, MCPToolCall, MCPToolResult, Memory, MemoryEventMetadata, MemoryManager, MemoryMessage, MemoryOptions, MemoryReadErrorEvent, MemoryReadStartEvent, MemoryReadSuccessEvent, MemoryWriteErrorEvent, MemoryWriteStartEvent, MemoryWriteSuccessEvent, MessageContent, MessageFilterOptions, MessageRole, ModelToolCall, NewTimelineEvent, NextAction, NodeType, OnEndHookArgs, OnHandoffHookArgs, OnStartHookArgs, OnToolEndHookArgs, OnToolStartHookArgs, OperationContext, PackageUpdateInfo, PromptCreator, PromptTemplate, ProviderObjectResponse, ProviderObjectStreamResponse, ProviderParams, ProviderResponse, ProviderTextResponse, ProviderTextStreamResponse, ReadableStreamType, ReasoningStep, ReasoningStepSchema, ReasoningStreamPart, ReasoningToolExecuteOptions, RetrieveOptions, Retriever, RetrieverErrorEvent, RetrieverOptions, RetrieverStartEvent, RetrieverSuccessEvent, SSEServerConfig, ServerOptions, SourceStreamPart, StandardEventData, StandardTimelineEvent, StdioServerConfig, StepChunkCallback, StepFinishCallback, StepWithContent,
|
|
3964
|
+
export { Agent, AgentErrorEvent, AgentHistoryEntry, AgentHookOnEnd, AgentHookOnHandoff, AgentHookOnStart, AgentHookOnToolEnd, AgentHookOnToolStart, AgentHooks, AgentOptions, AgentRegistry, AgentResponse, AgentStartEvent, AgentStartEventMetadata, AgentSuccessEvent, AgentSuccessEventMetadata, AgentTool, AllowedVariableValue, AnyToolConfig, AsyncIterableStream, BaseEventMetadata, BaseLLMOptions, BaseMessage, BaseRetriever, BaseTimelineEvent, BaseTool, BaseToolCall, ClientInfo, Conversation, ConversationQueryOptions, CreateConversationInput, CreateReasoningToolsOptions, CustomEndpointDefinition, CustomEndpointError, CustomEndpointHandler, DEFAULT_INSTRUCTIONS, DataContent, ErrorStreamPart, EventStatus, ExtractVariableNames, FEW_SHOT_EXAMPLES, FilePart, FinishStreamPart, GenerateObjectOptions, GenerateTextOptions, HTTPServerConfig, HistoryStatus, HttpMethod, ImagePart, InMemoryStorage, InferGenerateObjectResponse, InferGenerateTextResponse, InferMessage, InferModel, InferProviderParams, InferStreamResponse, InferTool, LLMProvider, LibSQLStorage, MCPClient, MCPClientConfig, MCPClientEvents, MCPConfiguration, MCPOptions, MCPServerConfig, MCPToolCall, MCPToolResult, Memory, MemoryEventMetadata, MemoryManager, MemoryMessage, MemoryOptions, MemoryReadErrorEvent, MemoryReadStartEvent, MemoryReadSuccessEvent, MemoryWriteErrorEvent, MemoryWriteStartEvent, MemoryWriteSuccessEvent, MessageContent, MessageFilterOptions, MessageRole, ModelToolCall, NewTimelineEvent, NextAction, NodeType, OnEndHookArgs, OnHandoffHookArgs, OnStartHookArgs, OnToolEndHookArgs, OnToolStartHookArgs, OperationContext, PackageUpdateInfo, PromptCreator, PromptTemplate, ProviderObjectResponse, ProviderObjectStreamResponse, ProviderParams, ProviderResponse, ProviderTextResponse, ProviderTextStreamResponse, ReadableStreamType, ReasoningStep, ReasoningStepSchema, ReasoningStreamPart, ReasoningToolExecuteOptions, RetrieveOptions, Retriever, RetrieverErrorEvent, RetrieverOptions, RetrieverStartEvent, RetrieverSuccessEvent, SSEServerConfig, ServerOptions, SourceStreamPart, StandardEventData, StandardTimelineEvent, StdioServerConfig, StepChunkCallback, StepFinishCallback, StepWithContent, StreamEventForwarderOptions, StreamObjectFinishResult, StreamObjectOnFinishCallback, StreamObjectOptions, StreamPart, StreamTextFinishResult, StreamTextOnFinishCallback, StreamTextOptions, StreamableHTTPServerConfig, SubAgentEvent, TemplateVariables, TextDeltaStreamPart, TextPart, TimelineEventCoreLevel, TimelineEventCoreStatus, TimelineEventCoreType, Tool, ToolCall, ToolCallStreamPart, ToolErrorEvent, ToolErrorInfo, ToolExecuteOptions, ToolExecutionContext, ToolManager, ToolOptions, ToolResultStreamPart, ToolSchema, ToolStartEvent, ToolStatus, ToolStatusInfo, ToolSuccessEvent, Toolkit, ToolsetMap, ToolsetWithTools, TransportError, Usage, UsageInfo, Voice, VoiceEventData, VoiceEventType, VoiceMetadata, VoiceOptions, VoltAgent, VoltAgentError, VoltAgentExporter, VoltAgentExporterOptions, VoltAgentOptions, checkForUpdates, createAsyncIterableStream, createHooks, createNodeId, createPrompt, createReasoningTools, createRetrieverTool, createStreamEventForwarder, createTool, createToolkit, VoltAgent as default, getNodeTypeFromNodeId, registerCustomEndpoint, registerCustomEndpoints, safeJsonParse, serializeValueForDebug, streamEventForwarder, tool, updateAllPackages, updateSinglePackage, zodSchemaToJsonUI };
|
package/dist/index.js
CHANGED
|
@@ -57,11 +57,11 @@ __export(src_exports, {
|
|
|
57
57
|
checkForUpdates: () => checkForUpdates,
|
|
58
58
|
createAsyncIterableStream: () => createAsyncIterableStream,
|
|
59
59
|
createHooks: () => createHooks,
|
|
60
|
-
createMergedStream: () => createMergedStream,
|
|
61
60
|
createNodeId: () => createNodeId,
|
|
62
61
|
createPrompt: () => createPrompt,
|
|
63
62
|
createReasoningTools: () => createReasoningTools,
|
|
64
63
|
createRetrieverTool: () => createRetrieverTool,
|
|
64
|
+
createStreamEventForwarder: () => createStreamEventForwarder,
|
|
65
65
|
createTool: () => createTool,
|
|
66
66
|
createToolkit: () => createToolkit,
|
|
67
67
|
default: () => src_default,
|
|
@@ -70,6 +70,7 @@ __export(src_exports, {
|
|
|
70
70
|
registerCustomEndpoints: () => registerCustomEndpoints,
|
|
71
71
|
safeJsonParse: () => safeJsonParse,
|
|
72
72
|
serializeValueForDebug: () => serializeValueForDebug,
|
|
73
|
+
streamEventForwarder: () => streamEventForwarder,
|
|
73
74
|
tool: () => tool,
|
|
74
75
|
updateAllPackages: () => updateAllPackages,
|
|
75
76
|
updateSinglePackage: () => updateSinglePackage,
|
|
@@ -1656,15 +1657,6 @@ app.openapi(streamRoute, async (c) => {
|
|
|
1656
1657
|
}
|
|
1657
1658
|
}
|
|
1658
1659
|
if (!streamClosed) {
|
|
1659
|
-
const completionData = {
|
|
1660
|
-
done: true,
|
|
1661
|
-
timestamp: (/* @__PURE__ */ new Date()).toISOString(),
|
|
1662
|
-
type: "completion"
|
|
1663
|
-
};
|
|
1664
|
-
const completionMessage = `data: ${JSON.stringify(completionData)}
|
|
1665
|
-
|
|
1666
|
-
`;
|
|
1667
|
-
safeEnqueue(completionMessage);
|
|
1668
1660
|
safeClose();
|
|
1669
1661
|
}
|
|
1670
1662
|
} catch (iterationError) {
|
|
@@ -3074,46 +3066,74 @@ function serializeValueForDebug(value) {
|
|
|
3074
3066
|
}
|
|
3075
3067
|
__name(serializeValueForDebug, "serializeValueForDebug");
|
|
3076
3068
|
|
|
3077
|
-
// src/utils/stream-
|
|
3078
|
-
async function
|
|
3069
|
+
// src/utils/stream-event-forwarder/index.ts
|
|
3070
|
+
async function streamEventForwarder(event, options = {}) {
|
|
3079
3071
|
const {
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3072
|
+
forwarder,
|
|
3073
|
+
filterTypes = ["text", "reasoning", "source"],
|
|
3074
|
+
addSubAgentPrefix = true
|
|
3083
3075
|
} = options;
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3076
|
+
try {
|
|
3077
|
+
if (!event || typeof event !== "object") {
|
|
3078
|
+
dev_logger_default.warn("[StreamEventForwarder] Invalid event structure:", event);
|
|
3079
|
+
return;
|
|
3080
|
+
}
|
|
3081
|
+
if (!event.type || !event.subAgentId || !event.subAgentName) {
|
|
3082
|
+
dev_logger_default.warn("[StreamEventForwarder] Missing required event fields:", {
|
|
3083
|
+
type: event.type,
|
|
3084
|
+
subAgentId: event.subAgentId,
|
|
3085
|
+
subAgentName: event.subAgentName
|
|
3086
|
+
});
|
|
3087
|
+
return;
|
|
3088
|
+
}
|
|
3089
|
+
if (filterTypes.includes(event.type)) {
|
|
3090
|
+
dev_logger_default.info(
|
|
3091
|
+
"[StreamEventForwarder] Filtered out",
|
|
3092
|
+
event.type,
|
|
3093
|
+
"event from",
|
|
3094
|
+
event.subAgentName
|
|
3097
3095
|
);
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3096
|
+
return;
|
|
3097
|
+
}
|
|
3098
|
+
if (!forwarder) {
|
|
3099
|
+
return;
|
|
3100
|
+
}
|
|
3101
|
+
const prefixedData = {
|
|
3102
|
+
...event.data,
|
|
3103
|
+
timestamp: event.timestamp,
|
|
3104
|
+
type: event.type,
|
|
3105
|
+
subAgentId: event.subAgentId,
|
|
3106
|
+
subAgentName: event.subAgentName
|
|
3107
|
+
};
|
|
3108
|
+
if (addSubAgentPrefix) {
|
|
3109
|
+
if (event.type === "tool-call" && prefixedData.toolCall) {
|
|
3110
|
+
prefixedData.toolCall = {
|
|
3111
|
+
...prefixedData.toolCall,
|
|
3112
|
+
toolName: `${event.subAgentName}: ${prefixedData.toolCall.toolName}`
|
|
3113
|
+
};
|
|
3114
|
+
} else if (event.type === "tool-result" && prefixedData.toolResult) {
|
|
3115
|
+
prefixedData.toolResult = {
|
|
3116
|
+
...prefixedData.toolResult,
|
|
3117
|
+
toolName: `${event.subAgentName}: ${prefixedData.toolResult.toolName}`
|
|
3118
|
+
};
|
|
3111
3119
|
}
|
|
3112
|
-
await new Promise((resolve) => setTimeout(resolve, postStreamInterval));
|
|
3113
3120
|
}
|
|
3121
|
+
await forwarder(prefixedData);
|
|
3122
|
+
dev_logger_default.info(
|
|
3123
|
+
"[StreamEventForwarder] Forwarded",
|
|
3124
|
+
event.type,
|
|
3125
|
+
"event from",
|
|
3126
|
+
event.subAgentName
|
|
3127
|
+
);
|
|
3128
|
+
} catch (error) {
|
|
3129
|
+
dev_logger_default.error("[StreamEventForwarder] Error forwarding event:", error);
|
|
3114
3130
|
}
|
|
3115
3131
|
}
|
|
3116
|
-
__name(
|
|
3132
|
+
__name(streamEventForwarder, "streamEventForwarder");
|
|
3133
|
+
function createStreamEventForwarder(options = {}) {
|
|
3134
|
+
return (event) => streamEventForwarder(event, options);
|
|
3135
|
+
}
|
|
3136
|
+
__name(createStreamEventForwarder, "createStreamEventForwarder");
|
|
3117
3137
|
|
|
3118
3138
|
// src/memory/libsql/index.ts
|
|
3119
3139
|
async function debugDelay() {
|
|
@@ -7199,23 +7219,15 @@ ${context}`;
|
|
|
7199
7219
|
});
|
|
7200
7220
|
if (this.subAgentManager.hasSubAgents()) {
|
|
7201
7221
|
const forwardEvent = /* @__PURE__ */ __name(async (event) => {
|
|
7202
|
-
|
|
7203
|
-
|
|
7204
|
-
|
|
7205
|
-
|
|
7206
|
-
|
|
7207
|
-
|
|
7208
|
-
|
|
7209
|
-
|
|
7210
|
-
|
|
7211
|
-
subAgentId: event.subAgentId,
|
|
7212
|
-
subAgentName: event.subAgentName
|
|
7213
|
-
};
|
|
7214
|
-
await internalStreamForwarder(prefixedData);
|
|
7215
|
-
} catch (error) {
|
|
7216
|
-
dev_logger_default.error(`Error forwarding SubAgent event: ${error}`);
|
|
7217
|
-
}
|
|
7218
|
-
}
|
|
7222
|
+
dev_logger_default.info(
|
|
7223
|
+
`[Agent ${this.id}] Received SubAgent event: ${event.type} from ${event.subAgentName}`
|
|
7224
|
+
);
|
|
7225
|
+
await streamEventForwarder(event, {
|
|
7226
|
+
forwarder: internalStreamForwarder,
|
|
7227
|
+
filterTypes: [],
|
|
7228
|
+
// Don't filter any events in this context
|
|
7229
|
+
addSubAgentPrefix: true
|
|
7230
|
+
});
|
|
7219
7231
|
}, "forwardEvent");
|
|
7220
7232
|
const delegateTool = this.subAgentManager.createDelegateTool({
|
|
7221
7233
|
sourceAgent: this,
|
|
@@ -7394,61 +7406,45 @@ ${context}`;
|
|
|
7394
7406
|
}
|
|
7395
7407
|
}
|
|
7396
7408
|
/**
|
|
7397
|
-
* Create an enhanced fullStream
|
|
7409
|
+
* Create an enhanced fullStream with real-time SubAgent event injection
|
|
7398
7410
|
*/
|
|
7399
|
-
createEnhancedFullStream(originalStream,
|
|
7400
|
-
const processedEvents = [];
|
|
7411
|
+
createEnhancedFullStream(originalStream, streamController, subAgentStatus) {
|
|
7401
7412
|
return {
|
|
7402
7413
|
async *[Symbol.asyncIterator]() {
|
|
7403
|
-
|
|
7404
|
-
|
|
7405
|
-
|
|
7406
|
-
|
|
7407
|
-
|
|
7408
|
-
|
|
7409
|
-
|
|
7410
|
-
while (lastProcessedCount < subAgentEventsQueue.length) {
|
|
7411
|
-
const subAgentEvent = subAgentEventsQueue[lastProcessedCount];
|
|
7412
|
-
lastProcessedCount++;
|
|
7413
|
-
let enhancedEvent = {
|
|
7414
|
-
type: subAgentEvent.event.type,
|
|
7415
|
-
subAgentId: subAgentEvent.event.subAgentId,
|
|
7416
|
-
subAgentName: subAgentEvent.event.subAgentName,
|
|
7417
|
-
timestamp: subAgentEvent.timestamp
|
|
7418
|
-
};
|
|
7419
|
-
switch (subAgentEvent.event.type) {
|
|
7420
|
-
case "tool-call":
|
|
7421
|
-
if (subAgentEvent.event.toolCall) {
|
|
7422
|
-
enhancedEvent = {
|
|
7423
|
-
...enhancedEvent,
|
|
7424
|
-
toolCallId: subAgentEvent.event.toolCall.toolCallId,
|
|
7425
|
-
toolName: subAgentEvent.event.toolCall.toolName,
|
|
7426
|
-
args: subAgentEvent.event.toolCall.args
|
|
7427
|
-
};
|
|
7414
|
+
const mergedStream = new ReadableStream({
|
|
7415
|
+
start(controller) {
|
|
7416
|
+
streamController.current = controller;
|
|
7417
|
+
(async () => {
|
|
7418
|
+
try {
|
|
7419
|
+
for await (const chunk of originalStream) {
|
|
7420
|
+
controller.enqueue(chunk);
|
|
7428
7421
|
}
|
|
7429
|
-
|
|
7430
|
-
|
|
7431
|
-
|
|
7432
|
-
|
|
7433
|
-
|
|
7434
|
-
|
|
7435
|
-
toolName: subAgentEvent.event.toolResult.toolName,
|
|
7436
|
-
result: subAgentEvent.event.toolResult.result
|
|
7437
|
-
};
|
|
7422
|
+
await new Promise((resolve) => setTimeout(resolve, 100));
|
|
7423
|
+
for (const [subAgentId, status] of subAgentStatus.entries()) {
|
|
7424
|
+
if (status.isActive && !status.isCompleted) {
|
|
7425
|
+
status.isCompleted = true;
|
|
7426
|
+
dev_logger_default.info(`[Enhanced Stream] SubAgent ${subAgentId} marked as completed`);
|
|
7427
|
+
}
|
|
7438
7428
|
}
|
|
7439
|
-
|
|
7440
|
-
|
|
7441
|
-
|
|
7442
|
-
|
|
7443
|
-
|
|
7444
|
-
...eventData
|
|
7445
|
-
};
|
|
7446
|
-
break;
|
|
7429
|
+
controller.close();
|
|
7430
|
+
} catch (error) {
|
|
7431
|
+
controller.error(error);
|
|
7432
|
+
} finally {
|
|
7433
|
+
streamController.current = null;
|
|
7447
7434
|
}
|
|
7448
|
-
}
|
|
7449
|
-
|
|
7435
|
+
})();
|
|
7436
|
+
}
|
|
7437
|
+
});
|
|
7438
|
+
const reader = mergedStream.getReader();
|
|
7439
|
+
try {
|
|
7440
|
+
while (true) {
|
|
7441
|
+
const { done, value } = await reader.read();
|
|
7442
|
+
if (done)
|
|
7443
|
+
break;
|
|
7444
|
+
yield value;
|
|
7450
7445
|
}
|
|
7451
|
-
|
|
7446
|
+
} finally {
|
|
7447
|
+
reader.releaseLock();
|
|
7452
7448
|
}
|
|
7453
7449
|
}
|
|
7454
7450
|
};
|
|
@@ -7900,20 +7896,101 @@ ${context}`;
|
|
|
7900
7896
|
userId,
|
|
7901
7897
|
finalConversationId
|
|
7902
7898
|
);
|
|
7903
|
-
const
|
|
7904
|
-
const
|
|
7905
|
-
|
|
7906
|
-
|
|
7907
|
-
|
|
7908
|
-
|
|
7899
|
+
const subAgentStatus = /* @__PURE__ */ new Map();
|
|
7900
|
+
const streamController = {
|
|
7901
|
+
current: null
|
|
7902
|
+
};
|
|
7903
|
+
const streamEventForwarder2 = /* @__PURE__ */ __name(async (event) => {
|
|
7904
|
+
dev_logger_default.info("[Real-time Stream] Received SubAgent event:", {
|
|
7905
|
+
eventType: event.type,
|
|
7906
|
+
subAgentId: event.subAgentId,
|
|
7907
|
+
subAgentName: event.subAgentName
|
|
7909
7908
|
});
|
|
7909
|
+
if (!subAgentStatus.has(event.subAgentId)) {
|
|
7910
|
+
subAgentStatus.set(event.subAgentId, { isActive: true, isCompleted: false });
|
|
7911
|
+
}
|
|
7912
|
+
if (event.type === "finish" || event.type === "error" || event.type === "text-delta" && event.data?.textDelta?.includes(".")) {
|
|
7913
|
+
dev_logger_default.info(
|
|
7914
|
+
`[Real-time Stream] Potential completion event from ${event.subAgentId}:`,
|
|
7915
|
+
event.type
|
|
7916
|
+
);
|
|
7917
|
+
}
|
|
7918
|
+
let streamEvent = {
|
|
7919
|
+
type: event.type,
|
|
7920
|
+
subAgentId: event.subAgentId,
|
|
7921
|
+
subAgentName: event.subAgentName,
|
|
7922
|
+
timestamp: event.timestamp
|
|
7923
|
+
};
|
|
7924
|
+
switch (event.type) {
|
|
7925
|
+
case "tool-call":
|
|
7926
|
+
if (event?.toolCall) {
|
|
7927
|
+
streamEvent = {
|
|
7928
|
+
...streamEvent,
|
|
7929
|
+
toolCallId: event.toolCall.toolCallId,
|
|
7930
|
+
toolName: event.toolCall.toolName,
|
|
7931
|
+
args: event.toolCall.args
|
|
7932
|
+
};
|
|
7933
|
+
}
|
|
7934
|
+
break;
|
|
7935
|
+
case "tool-result":
|
|
7936
|
+
if (event?.toolResult) {
|
|
7937
|
+
streamEvent = {
|
|
7938
|
+
...streamEvent,
|
|
7939
|
+
toolCallId: event.toolResult.toolCallId,
|
|
7940
|
+
toolName: event.toolResult.toolName,
|
|
7941
|
+
result: event.toolResult.result
|
|
7942
|
+
};
|
|
7943
|
+
}
|
|
7944
|
+
break;
|
|
7945
|
+
case "text-delta":
|
|
7946
|
+
if (event?.textDelta) {
|
|
7947
|
+
streamEvent = {
|
|
7948
|
+
...streamEvent,
|
|
7949
|
+
textDelta: event.data.textDelta
|
|
7950
|
+
};
|
|
7951
|
+
}
|
|
7952
|
+
break;
|
|
7953
|
+
case "reasoning":
|
|
7954
|
+
if (event?.reasoning) {
|
|
7955
|
+
streamEvent = {
|
|
7956
|
+
...streamEvent,
|
|
7957
|
+
reasoning: event.reasoning
|
|
7958
|
+
};
|
|
7959
|
+
}
|
|
7960
|
+
break;
|
|
7961
|
+
case "source":
|
|
7962
|
+
if (event?.source) {
|
|
7963
|
+
streamEvent = {
|
|
7964
|
+
...streamEvent,
|
|
7965
|
+
source: event.source
|
|
7966
|
+
};
|
|
7967
|
+
}
|
|
7968
|
+
break;
|
|
7969
|
+
default:
|
|
7970
|
+
streamEvent = {
|
|
7971
|
+
...streamEvent,
|
|
7972
|
+
...event || {}
|
|
7973
|
+
};
|
|
7974
|
+
break;
|
|
7975
|
+
}
|
|
7976
|
+
if (streamController.current) {
|
|
7977
|
+
try {
|
|
7978
|
+
streamController.current.enqueue(streamEvent);
|
|
7979
|
+
dev_logger_default.info("[Real-time Stream] Event injected into stream:", {
|
|
7980
|
+
eventType: event.type,
|
|
7981
|
+
subAgentId: event.subAgentId
|
|
7982
|
+
});
|
|
7983
|
+
} catch (error) {
|
|
7984
|
+
dev_logger_default.error("[Real-time Stream] Failed to inject event:", error);
|
|
7985
|
+
}
|
|
7986
|
+
}
|
|
7910
7987
|
}, "streamEventForwarder");
|
|
7911
7988
|
const { tools, maxSteps } = this.prepareTextOptions({
|
|
7912
7989
|
...internalOptions,
|
|
7913
7990
|
conversationId: finalConversationId,
|
|
7914
7991
|
historyEntryId: operationContext.historyEntry.id,
|
|
7915
7992
|
operationContext,
|
|
7916
|
-
internalStreamForwarder:
|
|
7993
|
+
internalStreamForwarder: streamEventForwarder2
|
|
7917
7994
|
// Pass the internal forwarder to tools
|
|
7918
7995
|
});
|
|
7919
7996
|
const response = await this.llm.streamText({
|
|
@@ -8256,7 +8333,7 @@ ${context}`;
|
|
|
8256
8333
|
});
|
|
8257
8334
|
const wrappedResponse = {
|
|
8258
8335
|
...response,
|
|
8259
|
-
fullStream: response.fullStream ? this.createEnhancedFullStream(response.fullStream,
|
|
8336
|
+
fullStream: response.fullStream ? this.createEnhancedFullStream(response.fullStream, streamController, subAgentStatus) : void 0
|
|
8260
8337
|
};
|
|
8261
8338
|
return wrappedResponse;
|
|
8262
8339
|
}
|
|
@@ -10256,11 +10333,11 @@ if (typeof require !== "undefined" && typeof module !== "undefined" && require.m
|
|
|
10256
10333
|
checkForUpdates,
|
|
10257
10334
|
createAsyncIterableStream,
|
|
10258
10335
|
createHooks,
|
|
10259
|
-
createMergedStream,
|
|
10260
10336
|
createNodeId,
|
|
10261
10337
|
createPrompt,
|
|
10262
10338
|
createReasoningTools,
|
|
10263
10339
|
createRetrieverTool,
|
|
10340
|
+
createStreamEventForwarder,
|
|
10264
10341
|
createTool,
|
|
10265
10342
|
createToolkit,
|
|
10266
10343
|
getNodeTypeFromNodeId,
|
|
@@ -10268,6 +10345,7 @@ if (typeof require !== "undefined" && typeof module !== "undefined" && require.m
|
|
|
10268
10345
|
registerCustomEndpoints,
|
|
10269
10346
|
safeJsonParse,
|
|
10270
10347
|
serializeValueForDebug,
|
|
10348
|
+
streamEventForwarder,
|
|
10271
10349
|
tool,
|
|
10272
10350
|
updateAllPackages,
|
|
10273
10351
|
updateSinglePackage,
|