@truefoundry/trueforge-core 0.0.0 → 0.1.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/LICENSE +21 -0
- package/dist/agent-session/ITurnResourceResolver.d.ts +69 -0
- package/dist/agent-session/ITurnResourceResolver.d.ts.map +1 -0
- package/dist/agent-session/ITurnResourceResolver.js +19 -0
- package/dist/agent-session/ITurnResourceResolver.js.map +1 -0
- package/dist/agent-session/ITurnResourceResolver.mjs +1 -0
- package/dist/agent-session/ITurnResourceResolver.mjs.map +1 -0
- package/dist/agent-session/SessionHandle.d.ts +81 -0
- package/dist/agent-session/SessionHandle.d.ts.map +1 -0
- package/dist/agent-session/SessionHandle.js +392 -0
- package/dist/agent-session/SessionHandle.js.map +1 -0
- package/dist/agent-session/SessionHandle.mjs +371 -0
- package/dist/agent-session/SessionHandle.mjs.map +1 -0
- package/dist/agent-session/Sessions.d.ts +25 -0
- package/dist/agent-session/Sessions.d.ts.map +1 -0
- package/dist/agent-session/Sessions.js +71 -0
- package/dist/agent-session/Sessions.js.map +1 -0
- package/dist/agent-session/Sessions.mjs +46 -0
- package/dist/agent-session/Sessions.mjs.map +1 -0
- package/dist/agent-session/TurnHandle.d.ts +88 -0
- package/dist/agent-session/TurnHandle.d.ts.map +1 -0
- package/dist/agent-session/TurnHandle.js +490 -0
- package/dist/agent-session/TurnHandle.js.map +1 -0
- package/dist/agent-session/TurnHandle.mjs +469 -0
- package/dist/agent-session/TurnHandle.mjs.map +1 -0
- package/dist/agent-session/TurnResourceResolver.d.ts +154 -0
- package/dist/agent-session/TurnResourceResolver.d.ts.map +1 -0
- package/dist/agent-session/TurnResourceResolver.js +178 -0
- package/dist/agent-session/TurnResourceResolver.js.map +1 -0
- package/dist/agent-session/TurnResourceResolver.mjs +153 -0
- package/dist/agent-session/TurnResourceResolver.mjs.map +1 -0
- package/dist/agent-session/builtinsFromSpec.d.ts +19 -0
- package/dist/agent-session/builtinsFromSpec.d.ts.map +1 -0
- package/dist/agent-session/builtinsFromSpec.js +73 -0
- package/dist/agent-session/builtinsFromSpec.js.map +1 -0
- package/dist/agent-session/builtinsFromSpec.mjs +48 -0
- package/dist/agent-session/builtinsFromSpec.mjs.map +1 -0
- package/dist/agent-session/index.d.ts +29 -0
- package/dist/agent-session/index.d.ts.map +1 -0
- package/dist/agent-session/index.js +117 -0
- package/dist/agent-session/index.js.map +1 -0
- package/dist/agent-session/index.mjs +84 -0
- package/dist/agent-session/index.mjs.map +1 -0
- package/dist/agent-session/models/SessionRecord.d.ts +34 -0
- package/dist/agent-session/models/SessionRecord.d.ts.map +1 -0
- package/dist/agent-session/models/SessionRecord.js +19 -0
- package/dist/agent-session/models/SessionRecord.js.map +1 -0
- package/dist/agent-session/models/SessionRecord.mjs +1 -0
- package/dist/agent-session/models/SessionRecord.mjs.map +1 -0
- package/dist/agent-session/models/TurnRecord.d.ts +37 -0
- package/dist/agent-session/models/TurnRecord.d.ts.map +1 -0
- package/dist/agent-session/models/TurnRecord.js +31 -0
- package/dist/agent-session/models/TurnRecord.js.map +1 -0
- package/dist/agent-session/models/TurnRecord.mjs +6 -0
- package/dist/agent-session/models/TurnRecord.mjs.map +1 -0
- package/dist/agent-session/schemas/agentSpec.d.ts +142 -0
- package/dist/agent-session/schemas/agentSpec.d.ts.map +1 -0
- package/dist/agent-session/schemas/agentSpec.js +170 -0
- package/dist/agent-session/schemas/agentSpec.js.map +1 -0
- package/dist/agent-session/schemas/agentSpec.mjs +154 -0
- package/dist/agent-session/schemas/agentSpec.mjs.map +1 -0
- package/dist/agent-session/schemas/events.d.ts +1037 -0
- package/dist/agent-session/schemas/events.d.ts.map +1 -0
- package/dist/agent-session/schemas/events.js +80 -0
- package/dist/agent-session/schemas/events.js.map +1 -0
- package/dist/agent-session/schemas/events.mjs +69 -0
- package/dist/agent-session/schemas/events.mjs.map +1 -0
- package/dist/agent-session/schemas/pagination.d.ts +9 -0
- package/dist/agent-session/schemas/pagination.d.ts.map +1 -0
- package/dist/agent-session/schemas/pagination.js +36 -0
- package/dist/agent-session/schemas/pagination.js.map +1 -0
- package/dist/agent-session/schemas/pagination.mjs +11 -0
- package/dist/agent-session/schemas/pagination.mjs.map +1 -0
- package/dist/agent-session/schemas/session.d.ts +319 -0
- package/dist/agent-session/schemas/session.d.ts.map +1 -0
- package/dist/agent-session/schemas/session.js +58 -0
- package/dist/agent-session/schemas/session.js.map +1 -0
- package/dist/agent-session/schemas/session.mjs +30 -0
- package/dist/agent-session/schemas/session.mjs.map +1 -0
- package/dist/agent-session/schemas/turn.d.ts +494 -0
- package/dist/agent-session/schemas/turn.d.ts.map +1 -0
- package/dist/agent-session/schemas/turn.js +131 -0
- package/dist/agent-session/schemas/turn.js.map +1 -0
- package/dist/agent-session/schemas/turn.mjs +102 -0
- package/dist/agent-session/schemas/turn.mjs.map +1 -0
- package/dist/agent-session/store/ISessionStore.d.ts +310 -0
- package/dist/agent-session/store/ISessionStore.d.ts.map +1 -0
- package/dist/agent-session/store/ISessionStore.js +19 -0
- package/dist/agent-session/store/ISessionStore.js.map +1 -0
- package/dist/agent-session/store/ISessionStore.mjs +1 -0
- package/dist/agent-session/store/ISessionStore.mjs.map +1 -0
- package/dist/agent-session/store/InMemorySessionStore.d.ts +55 -0
- package/dist/agent-session/store/InMemorySessionStore.d.ts.map +1 -0
- package/dist/agent-session/store/InMemorySessionStore.js +475 -0
- package/dist/agent-session/store/InMemorySessionStore.js.map +1 -0
- package/dist/agent-session/store/InMemorySessionStore.mjs +461 -0
- package/dist/agent-session/store/InMemorySessionStore.mjs.map +1 -0
- package/dist/agent-session/store/OffsetPageToken.d.ts +13 -0
- package/dist/agent-session/store/OffsetPageToken.d.ts.map +1 -0
- package/dist/agent-session/store/OffsetPageToken.js +60 -0
- package/dist/agent-session/store/OffsetPageToken.js.map +1 -0
- package/dist/agent-session/store/OffsetPageToken.mjs +32 -0
- package/dist/agent-session/store/OffsetPageToken.mjs.map +1 -0
- package/dist/agent-session/store/PageToken.d.ts +4 -0
- package/dist/agent-session/store/PageToken.d.ts.map +1 -0
- package/dist/agent-session/store/PageToken.js +45 -0
- package/dist/agent-session/store/PageToken.js.map +1 -0
- package/dist/agent-session/store/PageToken.mjs +19 -0
- package/dist/agent-session/store/PageToken.mjs.map +1 -0
- package/dist/agent-session/store/SessionEventPageToken.d.ts +14 -0
- package/dist/agent-session/store/SessionEventPageToken.d.ts.map +1 -0
- package/dist/agent-session/store/SessionEventPageToken.js +70 -0
- package/dist/agent-session/store/SessionEventPageToken.js.map +1 -0
- package/dist/agent-session/store/SessionEventPageToken.mjs +42 -0
- package/dist/agent-session/store/SessionEventPageToken.mjs.map +1 -0
- package/dist/agent-session/store/SessionListPageToken.d.ts +24 -0
- package/dist/agent-session/store/SessionListPageToken.d.ts.map +1 -0
- package/dist/agent-session/store/SessionListPageToken.js +66 -0
- package/dist/agent-session/store/SessionListPageToken.js.map +1 -0
- package/dist/agent-session/store/SessionListPageToken.mjs +38 -0
- package/dist/agent-session/store/SessionListPageToken.mjs.map +1 -0
- package/dist/agent-session/store/SessionStoreErrors.d.ts +43 -0
- package/dist/agent-session/store/SessionStoreErrors.d.ts.map +1 -0
- package/dist/agent-session/store/SessionStoreErrors.js +126 -0
- package/dist/agent-session/store/SessionStoreErrors.js.map +1 -0
- package/dist/agent-session/store/SessionStoreErrors.mjs +92 -0
- package/dist/agent-session/store/SessionStoreErrors.mjs.map +1 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts +18 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.d.ts.map +1 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.js +67 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.js.map +1 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs +42 -0
- package/dist/agent-session/store/assertCreateTurnThreadDelta.mjs.map +1 -0
- package/dist/core/InstructionBuilder.d.ts +71 -0
- package/dist/core/InstructionBuilder.d.ts.map +1 -0
- package/dist/core/InstructionBuilder.js +95 -0
- package/dist/core/InstructionBuilder.js.map +1 -0
- package/dist/core/InstructionBuilder.mjs +69 -0
- package/dist/core/InstructionBuilder.mjs.map +1 -0
- package/dist/core/capabilities/AgentCapability.d.ts +32 -0
- package/dist/core/capabilities/AgentCapability.d.ts.map +1 -0
- package/dist/core/capabilities/AgentCapability.js +19 -0
- package/dist/core/capabilities/AgentCapability.js.map +1 -0
- package/dist/core/capabilities/AgentCapability.mjs +1 -0
- package/dist/core/capabilities/AgentCapability.mjs.map +1 -0
- package/dist/core/capabilities/AgentContextProcessor.d.ts +30 -0
- package/dist/core/capabilities/AgentContextProcessor.d.ts.map +1 -0
- package/dist/core/capabilities/AgentContextProcessor.js +19 -0
- package/dist/core/capabilities/AgentContextProcessor.js.map +1 -0
- package/dist/core/capabilities/AgentContextProcessor.mjs +1 -0
- package/dist/core/capabilities/AgentContextProcessor.mjs.map +1 -0
- package/dist/core/capabilities/ToolResponseProcessor.d.ts +12 -0
- package/dist/core/capabilities/ToolResponseProcessor.d.ts.map +1 -0
- package/dist/core/capabilities/ToolResponseProcessor.js +19 -0
- package/dist/core/capabilities/ToolResponseProcessor.js.map +1 -0
- package/dist/core/capabilities/ToolResponseProcessor.mjs +1 -0
- package/dist/core/capabilities/ToolResponseProcessor.mjs.map +1 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.d.ts +11 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.js +90 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.js.map +1 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.mjs +64 -0
- package/dist/core/capabilities/builtins/AskUserQuestion.mjs.map +1 -0
- package/dist/core/capabilities/builtins/ContextCompaction.d.ts +23 -0
- package/dist/core/capabilities/builtins/ContextCompaction.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/ContextCompaction.js +235 -0
- package/dist/core/capabilities/builtins/ContextCompaction.js.map +1 -0
- package/dist/core/capabilities/builtins/ContextCompaction.mjs +208 -0
- package/dist/core/capabilities/builtins/ContextCompaction.mjs.map +1 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.d.ts +17 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.js +75 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.js.map +1 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.mjs +47 -0
- package/dist/core/capabilities/builtins/CurrentDateTime.mjs.map +1 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts +39 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.js +176 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.js.map +1 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.mjs +134 -0
- package/dist/core/capabilities/builtins/DynamicSubAgents.mjs.map +1 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.d.ts +40 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.js +225 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.js.map +1 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.mjs +186 -0
- package/dist/core/capabilities/builtins/LargeToolResponse.mjs.map +1 -0
- package/dist/core/capabilities/builtins/OpenUI.d.ts +31 -0
- package/dist/core/capabilities/builtins/OpenUI.d.ts.map +1 -0
- package/dist/core/capabilities/builtins/OpenUI.js +376 -0
- package/dist/core/capabilities/builtins/OpenUI.js.map +1 -0
- package/dist/core/capabilities/builtins/OpenUI.mjs +326 -0
- package/dist/core/capabilities/builtins/OpenUI.mjs.map +1 -0
- package/dist/core/errors.d.ts +33 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +88 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/errors.mjs +57 -0
- package/dist/core/errors.mjs.map +1 -0
- package/dist/core/events/PassthroughEvents.d.ts +30 -0
- package/dist/core/events/PassthroughEvents.d.ts.map +1 -0
- package/dist/core/events/PassthroughEvents.js +19 -0
- package/dist/core/events/PassthroughEvents.js.map +1 -0
- package/dist/core/events/PassthroughEvents.mjs +1 -0
- package/dist/core/events/PassthroughEvents.mjs.map +1 -0
- package/dist/core/events/schema.d.ts +1103 -0
- package/dist/core/events/schema.d.ts.map +1 -0
- package/dist/core/events/schema.js +337 -0
- package/dist/core/events/schema.js.map +1 -0
- package/dist/core/events/schema.mjs +283 -0
- package/dist/core/events/schema.mjs.map +1 -0
- package/dist/core/index.d.ts +66 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +234 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/index.mjs +166 -0
- package/dist/core/index.mjs.map +1 -0
- package/dist/core/llm/ILLM.d.ts +15 -0
- package/dist/core/llm/ILLM.d.ts.map +1 -0
- package/dist/core/llm/ILLM.js +19 -0
- package/dist/core/llm/ILLM.js.map +1 -0
- package/dist/core/llm/ILLM.mjs +1 -0
- package/dist/core/llm/ILLM.mjs.map +1 -0
- package/dist/core/llm/LLMTypes.d.ts +369 -0
- package/dist/core/llm/LLMTypes.d.ts.map +1 -0
- package/dist/core/llm/LLMTypes.js +170 -0
- package/dist/core/llm/LLMTypes.js.map +1 -0
- package/dist/core/llm/LLMTypes.mjs +133 -0
- package/dist/core/llm/LLMTypes.mjs.map +1 -0
- package/dist/core/llm/VercelAILLM.d.ts +229 -0
- package/dist/core/llm/VercelAILLM.d.ts.map +1 -0
- package/dist/core/llm/VercelAILLM.js +1037 -0
- package/dist/core/llm/VercelAILLM.js.map +1 -0
- package/dist/core/llm/VercelAILLM.mjs +993 -0
- package/dist/core/llm/VercelAILLM.mjs.map +1 -0
- package/dist/core/llm/openaiSchemas.d.ts +190 -0
- package/dist/core/llm/openaiSchemas.d.ts.map +1 -0
- package/dist/core/llm/openaiSchemas.js +144 -0
- package/dist/core/llm/openaiSchemas.js.map +1 -0
- package/dist/core/llm/openaiSchemas.mjs +107 -0
- package/dist/core/llm/openaiSchemas.mjs.map +1 -0
- package/dist/core/llm/responseFormat.d.ts +25 -0
- package/dist/core/llm/responseFormat.d.ts.map +1 -0
- package/dist/core/llm/responseFormat.js +58 -0
- package/dist/core/llm/responseFormat.js.map +1 -0
- package/dist/core/llm/responseFormat.mjs +32 -0
- package/dist/core/llm/responseFormat.mjs.map +1 -0
- package/dist/core/llm/toOpenAIChatMessage.d.ts +11 -0
- package/dist/core/llm/toOpenAIChatMessage.d.ts.map +1 -0
- package/dist/core/llm/toOpenAIChatMessage.js +95 -0
- package/dist/core/llm/toOpenAIChatMessage.js.map +1 -0
- package/dist/core/llm/toOpenAIChatMessage.mjs +70 -0
- package/dist/core/llm/toOpenAIChatMessage.mjs.map +1 -0
- package/dist/core/llm/usage.d.ts +4 -0
- package/dist/core/llm/usage.d.ts.map +1 -0
- package/dist/core/llm/usage.js +52 -0
- package/dist/core/llm/usage.js.map +1 -0
- package/dist/core/llm/usage.mjs +26 -0
- package/dist/core/llm/usage.mjs.map +1 -0
- package/dist/core/mcp/ClientSideTool.d.ts +10 -0
- package/dist/core/mcp/ClientSideTool.d.ts.map +1 -0
- package/dist/core/mcp/ClientSideTool.js +56 -0
- package/dist/core/mcp/ClientSideTool.js.map +1 -0
- package/dist/core/mcp/ClientSideTool.mjs +31 -0
- package/dist/core/mcp/ClientSideTool.mjs.map +1 -0
- package/dist/core/mcp/IMCPServer.d.ts +78 -0
- package/dist/core/mcp/IMCPServer.d.ts.map +1 -0
- package/dist/core/mcp/IMCPServer.js +63 -0
- package/dist/core/mcp/IMCPServer.js.map +1 -0
- package/dist/core/mcp/IMCPServer.mjs +33 -0
- package/dist/core/mcp/IMCPServer.mjs.map +1 -0
- package/dist/core/mcp/LocalToolMCP.d.ts +39 -0
- package/dist/core/mcp/LocalToolMCP.d.ts.map +1 -0
- package/dist/core/mcp/LocalToolMCP.js +121 -0
- package/dist/core/mcp/LocalToolMCP.js.map +1 -0
- package/dist/core/mcp/LocalToolMCP.mjs +98 -0
- package/dist/core/mcp/LocalToolMCP.mjs.map +1 -0
- package/dist/core/mcp/RemoteMCP.d.ts +67 -0
- package/dist/core/mcp/RemoteMCP.d.ts.map +1 -0
- package/dist/core/mcp/RemoteMCP.js +244 -0
- package/dist/core/mcp/RemoteMCP.js.map +1 -0
- package/dist/core/mcp/RemoteMCP.mjs +222 -0
- package/dist/core/mcp/RemoteMCP.mjs.map +1 -0
- package/dist/core/mcp/ToolSelectorPolicy.d.ts +52 -0
- package/dist/core/mcp/ToolSelectorPolicy.d.ts.map +1 -0
- package/dist/core/mcp/ToolSelectorPolicy.js +108 -0
- package/dist/core/mcp/ToolSelectorPolicy.js.map +1 -0
- package/dist/core/mcp/ToolSelectorPolicy.mjs +90 -0
- package/dist/core/mcp/ToolSelectorPolicy.mjs.map +1 -0
- package/dist/core/mcp/ToolSet.d.ts +31 -0
- package/dist/core/mcp/ToolSet.d.ts.map +1 -0
- package/dist/core/mcp/ToolSet.js +119 -0
- package/dist/core/mcp/ToolSet.js.map +1 -0
- package/dist/core/mcp/ToolSet.mjs +98 -0
- package/dist/core/mcp/ToolSet.mjs.map +1 -0
- package/dist/core/mcp/convertMCPServers.d.ts +22 -0
- package/dist/core/mcp/convertMCPServers.d.ts.map +1 -0
- package/dist/core/mcp/convertMCPServers.js +89 -0
- package/dist/core/mcp/convertMCPServers.js.map +1 -0
- package/dist/core/mcp/convertMCPServers.mjs +64 -0
- package/dist/core/mcp/convertMCPServers.mjs.map +1 -0
- package/dist/core/mcp/executeToolCalls.d.ts +31 -0
- package/dist/core/mcp/executeToolCalls.d.ts.map +1 -0
- package/dist/core/mcp/executeToolCalls.js +168 -0
- package/dist/core/mcp/executeToolCalls.js.map +1 -0
- package/dist/core/mcp/executeToolCalls.mjs +149 -0
- package/dist/core/mcp/executeToolCalls.mjs.map +1 -0
- package/dist/core/mcp/pagination.d.ts +11 -0
- package/dist/core/mcp/pagination.d.ts.map +1 -0
- package/dist/core/mcp/pagination.js +49 -0
- package/dist/core/mcp/pagination.js.map +1 -0
- package/dist/core/mcp/pagination.mjs +24 -0
- package/dist/core/mcp/pagination.mjs.map +1 -0
- package/dist/core/mcp/remoteMcpClient.d.ts +36 -0
- package/dist/core/mcp/remoteMcpClient.d.ts.map +1 -0
- package/dist/core/mcp/remoteMcpClient.js +138 -0
- package/dist/core/mcp/remoteMcpClient.js.map +1 -0
- package/dist/core/mcp/remoteMcpClient.mjs +112 -0
- package/dist/core/mcp/remoteMcpClient.mjs.map +1 -0
- package/dist/core/mcp/toolNames.d.ts +6 -0
- package/dist/core/mcp/toolNames.d.ts.map +1 -0
- package/dist/core/mcp/toolNames.js +59 -0
- package/dist/core/mcp/toolNames.js.map +1 -0
- package/dist/core/mcp/toolNames.mjs +33 -0
- package/dist/core/mcp/toolNames.mjs.map +1 -0
- package/dist/core/mcp/toolSelectors.d.ts +28 -0
- package/dist/core/mcp/toolSelectors.d.ts.map +1 -0
- package/dist/core/mcp/toolSelectors.js +113 -0
- package/dist/core/mcp/toolSelectors.js.map +1 -0
- package/dist/core/mcp/toolSelectors.mjs +78 -0
- package/dist/core/mcp/toolSelectors.mjs.map +1 -0
- package/dist/core/runtime/AgentDefinition.d.ts +23 -0
- package/dist/core/runtime/AgentDefinition.d.ts.map +1 -0
- package/dist/core/runtime/AgentDefinition.js +19 -0
- package/dist/core/runtime/AgentDefinition.js.map +1 -0
- package/dist/core/runtime/AgentDefinition.mjs +1 -0
- package/dist/core/runtime/AgentDefinition.mjs.map +1 -0
- package/dist/core/runtime/AgentThread.d.ts +64 -0
- package/dist/core/runtime/AgentThread.d.ts.map +1 -0
- package/dist/core/runtime/AgentThread.js +1067 -0
- package/dist/core/runtime/AgentThread.js.map +1 -0
- package/dist/core/runtime/AgentThread.mjs +1064 -0
- package/dist/core/runtime/AgentThread.mjs.map +1 -0
- package/dist/core/runtime/AgentThread.types.d.ts +123 -0
- package/dist/core/runtime/AgentThread.types.d.ts.map +1 -0
- package/dist/core/runtime/AgentThread.types.js +46 -0
- package/dist/core/runtime/AgentThread.types.js.map +1 -0
- package/dist/core/runtime/AgentThread.types.mjs +20 -0
- package/dist/core/runtime/AgentThread.types.mjs.map +1 -0
- package/dist/core/runtime/AgentThreadOrchestrator.d.ts +35 -0
- package/dist/core/runtime/AgentThreadOrchestrator.d.ts.map +1 -0
- package/dist/core/runtime/AgentThreadOrchestrator.js +433 -0
- package/dist/core/runtime/AgentThreadOrchestrator.js.map +1 -0
- package/dist/core/runtime/AgentThreadOrchestrator.mjs +418 -0
- package/dist/core/runtime/AgentThreadOrchestrator.mjs.map +1 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts +11 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.d.ts.map +1 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.js +19 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.js.map +1 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.mjs +1 -0
- package/dist/core/runtime/CreateDynamicSubAgentThread.mjs.map +1 -0
- package/dist/core/runtime/DeferredTool.d.ts +34 -0
- package/dist/core/runtime/DeferredTool.d.ts.map +1 -0
- package/dist/core/runtime/DeferredTool.js +321 -0
- package/dist/core/runtime/DeferredTool.js.map +1 -0
- package/dist/core/runtime/DeferredTool.mjs +287 -0
- package/dist/core/runtime/DeferredTool.mjs.map +1 -0
- package/dist/core/runtime/OpenToolCallCloser.d.ts +21 -0
- package/dist/core/runtime/OpenToolCallCloser.d.ts.map +1 -0
- package/dist/core/runtime/OpenToolCallCloser.js +92 -0
- package/dist/core/runtime/OpenToolCallCloser.js.map +1 -0
- package/dist/core/runtime/OpenToolCallCloser.mjs +66 -0
- package/dist/core/runtime/OpenToolCallCloser.mjs.map +1 -0
- package/dist/core/runtime/UserInputMessage.d.ts +16 -0
- package/dist/core/runtime/UserInputMessage.d.ts.map +1 -0
- package/dist/core/runtime/UserInputMessage.js +183 -0
- package/dist/core/runtime/UserInputMessage.js.map +1 -0
- package/dist/core/runtime/UserInputMessage.mjs +157 -0
- package/dist/core/runtime/UserInputMessage.mjs.map +1 -0
- package/dist/core/runtime/contextUsage.d.ts +17 -0
- package/dist/core/runtime/contextUsage.d.ts.map +1 -0
- package/dist/core/runtime/contextUsage.js +56 -0
- package/dist/core/runtime/contextUsage.js.map +1 -0
- package/dist/core/runtime/contextUsage.mjs +28 -0
- package/dist/core/runtime/contextUsage.mjs.map +1 -0
- package/dist/core/runtime/contextUtils.d.ts +30 -0
- package/dist/core/runtime/contextUtils.d.ts.map +1 -0
- package/dist/core/runtime/contextUtils.js +198 -0
- package/dist/core/runtime/contextUtils.js.map +1 -0
- package/dist/core/runtime/contextUtils.mjs +148 -0
- package/dist/core/runtime/contextUtils.mjs.map +1 -0
- package/dist/core/runtime/metrics.d.ts +22 -0
- package/dist/core/runtime/metrics.d.ts.map +1 -0
- package/dist/core/runtime/metrics.js +89 -0
- package/dist/core/runtime/metrics.js.map +1 -0
- package/dist/core/runtime/metrics.mjs +61 -0
- package/dist/core/runtime/metrics.mjs.map +1 -0
- package/dist/core/sandbox/Sandbox.d.ts +119 -0
- package/dist/core/sandbox/Sandbox.d.ts.map +1 -0
- package/dist/core/sandbox/Sandbox.js +556 -0
- package/dist/core/sandbox/Sandbox.js.map +1 -0
- package/dist/core/sandbox/Sandbox.mjs +520 -0
- package/dist/core/sandbox/Sandbox.mjs.map +1 -0
- package/dist/core/sandbox/SandboxErrors.d.ts +30 -0
- package/dist/core/sandbox/SandboxErrors.d.ts.map +1 -0
- package/dist/core/sandbox/SandboxErrors.js +102 -0
- package/dist/core/sandbox/SandboxErrors.js.map +1 -0
- package/dist/core/sandbox/SandboxErrors.mjs +71 -0
- package/dist/core/sandbox/SandboxErrors.mjs.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.d.ts +29 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.d.ts.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.js +128 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.js.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs +107 -0
- package/dist/core/sandbox/codeMode/CodeModeDispatcher.mjs.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts +21 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.d.ts.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.js +19 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.js.map +1 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.mjs +1 -0
- package/dist/core/sandbox/codeMode/CodeModeTransport.mjs.map +1 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts +34 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.d.ts.map +1 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js +187 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.js.map +1 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs +162 -0
- package/dist/core/sandbox/codeMode/nats/CodeModeNatsTransport.mjs.map +1 -0
- package/dist/core/sandbox/codeMode/types.d.ts +34 -0
- package/dist/core/sandbox/codeMode/types.d.ts.map +1 -0
- package/dist/core/sandbox/codeMode/types.js +59 -0
- package/dist/core/sandbox/codeMode/types.js.map +1 -0
- package/dist/core/sandbox/codeMode/types.mjs +32 -0
- package/dist/core/sandbox/codeMode/types.mjs.map +1 -0
- package/dist/core/sandbox/constants.d.ts +10 -0
- package/dist/core/sandbox/constants.d.ts.map +1 -0
- package/dist/core/sandbox/constants.js +37 -0
- package/dist/core/sandbox/constants.js.map +1 -0
- package/dist/core/sandbox/constants.mjs +10 -0
- package/dist/core/sandbox/constants.mjs.map +1 -0
- package/dist/core/sandbox/provider/DaytonaProvider.d.ts +81 -0
- package/dist/core/sandbox/provider/DaytonaProvider.d.ts.map +1 -0
- package/dist/core/sandbox/provider/DaytonaProvider.js +353 -0
- package/dist/core/sandbox/provider/DaytonaProvider.js.map +1 -0
- package/dist/core/sandbox/provider/DaytonaProvider.mjs +333 -0
- package/dist/core/sandbox/provider/DaytonaProvider.mjs.map +1 -0
- package/dist/core/sandbox/provider/Provider.d.ts +84 -0
- package/dist/core/sandbox/provider/Provider.d.ts.map +1 -0
- package/dist/core/sandbox/provider/Provider.js +43 -0
- package/dist/core/sandbox/provider/Provider.js.map +1 -0
- package/dist/core/sandbox/provider/Provider.mjs +17 -0
- package/dist/core/sandbox/provider/Provider.mjs.map +1 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts +42 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.d.ts.map +1 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.js +186 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.js.map +1 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.mjs +153 -0
- package/dist/core/sandbox/provider/TFYSandboxProvider.mjs.map +1 -0
- package/dist/core/sandbox/sandboxImage.d.ts +6 -0
- package/dist/core/sandbox/sandboxImage.d.ts.map +1 -0
- package/dist/core/sandbox/sandboxImage.js +31 -0
- package/dist/core/sandbox/sandboxImage.js.map +1 -0
- package/dist/core/sandbox/sandboxImage.mjs +6 -0
- package/dist/core/sandbox/sandboxImage.mjs.map +1 -0
- package/dist/core/sandbox/sandboxScripts.gen.d.ts +5 -0
- package/dist/core/sandbox/sandboxScripts.gen.d.ts.map +1 -0
- package/dist/core/sandbox/sandboxScripts.gen.js +343 -0
- package/dist/core/sandbox/sandboxScripts.gen.js.map +1 -0
- package/dist/core/sandbox/sandboxScripts.gen.mjs +318 -0
- package/dist/core/sandbox/sandboxScripts.gen.mjs.map +1 -0
- package/dist/core/sandbox/skills/ISkillMounter.d.ts +7 -0
- package/dist/core/sandbox/skills/ISkillMounter.d.ts.map +1 -0
- package/dist/core/sandbox/skills/ISkillMounter.js +19 -0
- package/dist/core/sandbox/skills/ISkillMounter.js.map +1 -0
- package/dist/core/sandbox/skills/ISkillMounter.mjs +1 -0
- package/dist/core/sandbox/skills/ISkillMounter.mjs.map +1 -0
- package/dist/core/sandbox/skills/SkillMounter.d.ts +17 -0
- package/dist/core/sandbox/skills/SkillMounter.d.ts.map +1 -0
- package/dist/core/sandbox/skills/SkillMounter.js +73 -0
- package/dist/core/sandbox/skills/SkillMounter.js.map +1 -0
- package/dist/core/sandbox/skills/SkillMounter.mjs +48 -0
- package/dist/core/sandbox/skills/SkillMounter.mjs.map +1 -0
- package/dist/core/sandbox/skills/constants.d.ts +10 -0
- package/dist/core/sandbox/skills/constants.d.ts.map +1 -0
- package/dist/core/sandbox/skills/constants.js +56 -0
- package/dist/core/sandbox/skills/constants.js.map +1 -0
- package/dist/core/sandbox/skills/constants.mjs +28 -0
- package/dist/core/sandbox/skills/constants.mjs.map +1 -0
- package/dist/core/sandbox/skills/index.d.ts +5 -0
- package/dist/core/sandbox/skills/index.d.ts.map +1 -0
- package/dist/core/sandbox/skills/index.js +40 -0
- package/dist/core/sandbox/skills/index.js.map +1 -0
- package/dist/core/sandbox/skills/index.mjs +11 -0
- package/dist/core/sandbox/skills/index.mjs.map +1 -0
- package/dist/core/tracing/AgentTracing.d.ts +38 -0
- package/dist/core/tracing/AgentTracing.d.ts.map +1 -0
- package/dist/core/tracing/AgentTracing.js +19 -0
- package/dist/core/tracing/AgentTracing.js.map +1 -0
- package/dist/core/tracing/AgentTracing.mjs +1 -0
- package/dist/core/tracing/AgentTracing.mjs.map +1 -0
- package/dist/core/tracing/NoopAgentTracing.d.ts +3 -0
- package/dist/core/tracing/NoopAgentTracing.d.ts.map +1 -0
- package/dist/core/tracing/NoopAgentTracing.js +79 -0
- package/dist/core/tracing/NoopAgentTracing.js.map +1 -0
- package/dist/core/tracing/NoopAgentTracing.mjs +54 -0
- package/dist/core/tracing/NoopAgentTracing.mjs.map +1 -0
- package/dist/core/util/abort.d.ts +2 -0
- package/dist/core/util/abort.d.ts.map +1 -0
- package/dist/core/util/abort.js +38 -0
- package/dist/core/util/abort.js.map +1 -0
- package/dist/core/util/abort.mjs +13 -0
- package/dist/core/util/abort.mjs.map +1 -0
- package/dist/core/util/errorLogFields.d.ts +11 -0
- package/dist/core/util/errorLogFields.d.ts.map +1 -0
- package/dist/core/util/errorLogFields.js +72 -0
- package/dist/core/util/errorLogFields.js.map +1 -0
- package/dist/core/util/errorLogFields.mjs +46 -0
- package/dist/core/util/errorLogFields.mjs.map +1 -0
- package/dist/core/util/promiseUtils.d.ts +7 -0
- package/dist/core/util/promiseUtils.d.ts.map +1 -0
- package/dist/core/util/promiseUtils.js +82 -0
- package/dist/core/util/promiseUtils.js.map +1 -0
- package/dist/core/util/promiseUtils.mjs +55 -0
- package/dist/core/util/promiseUtils.mjs.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +8 -0
- package/dist/index.mjs.map +1 -0
- package/dist/package.json +3 -0
- package/dist/request-reply/client.d.ts +21 -0
- package/dist/request-reply/client.d.ts.map +1 -0
- package/dist/request-reply/client.js +92 -0
- package/dist/request-reply/client.js.map +1 -0
- package/dist/request-reply/client.mjs +67 -0
- package/dist/request-reply/client.mjs.map +1 -0
- package/dist/request-reply/errors.d.ts +23 -0
- package/dist/request-reply/errors.d.ts.map +1 -0
- package/dist/request-reply/errors.js +66 -0
- package/dist/request-reply/errors.js.map +1 -0
- package/dist/request-reply/errors.mjs +39 -0
- package/dist/request-reply/errors.mjs.map +1 -0
- package/dist/request-reply/executor.d.ts +70 -0
- package/dist/request-reply/executor.d.ts.map +1 -0
- package/dist/request-reply/executor.js +267 -0
- package/dist/request-reply/executor.js.map +1 -0
- package/dist/request-reply/executor.mjs +232 -0
- package/dist/request-reply/executor.mjs.map +1 -0
- package/dist/request-reply/index.d.ts +16 -0
- package/dist/request-reply/index.d.ts.map +1 -0
- package/dist/request-reply/index.js +47 -0
- package/dist/request-reply/index.js.map +1 -0
- package/dist/request-reply/index.mjs +16 -0
- package/dist/request-reply/index.mjs.map +1 -0
- package/dist/request-reply/router.d.ts +20 -0
- package/dist/request-reply/router.d.ts.map +1 -0
- package/dist/request-reply/router.js +55 -0
- package/dist/request-reply/router.js.map +1 -0
- package/dist/request-reply/router.mjs +30 -0
- package/dist/request-reply/router.mjs.map +1 -0
- package/dist/request-reply/types.d.ts +25 -0
- package/dist/request-reply/types.d.ts.map +1 -0
- package/dist/request-reply/types.js +54 -0
- package/dist/request-reply/types.js.map +1 -0
- package/dist/request-reply/types.mjs +28 -0
- package/dist/request-reply/types.mjs.map +1 -0
- package/dist/request-reply/utils.d.ts +9 -0
- package/dist/request-reply/utils.d.ts.map +1 -0
- package/dist/request-reply/utils.js +51 -0
- package/dist/request-reply/utils.js.map +1 -0
- package/dist/request-reply/utils.mjs +22 -0
- package/dist/request-reply/utils.mjs.map +1 -0
- package/package.json +127 -6
- package/README.md +0 -4
- package/index.js +0 -1
|
@@ -0,0 +1,418 @@
|
|
|
1
|
+
// src/core/runtime/AgentThreadOrchestrator.ts
|
|
2
|
+
import { AgentHarnessError, InvalidAgentSendInputError } from "../errors.mjs";
|
|
3
|
+
import {
|
|
4
|
+
EventType,
|
|
5
|
+
newEventId
|
|
6
|
+
} from "../events/schema.mjs";
|
|
7
|
+
import { onSignalAbort } from "../util/abort.mjs";
|
|
8
|
+
import { mergeAsyncGenerators } from "../util/promiseUtils.mjs";
|
|
9
|
+
import "./AgentThread.mjs";
|
|
10
|
+
import {
|
|
11
|
+
InternalEventType
|
|
12
|
+
} from "./AgentThread.types.mjs";
|
|
13
|
+
import {
|
|
14
|
+
assistantMessageContentToStringForSubAgent,
|
|
15
|
+
getThreadId,
|
|
16
|
+
isApprovalDecisionMessage,
|
|
17
|
+
isClientSideToolResponseMessage,
|
|
18
|
+
isInternalThreadDoneError
|
|
19
|
+
} from "./contextUtils.mjs";
|
|
20
|
+
import { addAgentThreadMetrics, createEmptyAgentThreadMetrics } from "./metrics.mjs";
|
|
21
|
+
var MAX_PARALLEL_SUB_AGENTS = 5;
|
|
22
|
+
function agentThreadEventToTerminalFields(event) {
|
|
23
|
+
switch (event.type) {
|
|
24
|
+
case InternalEventType.AGENT_DONE: {
|
|
25
|
+
if ("parent" in event && event.parent) return {};
|
|
26
|
+
if (event.status === "error") return {};
|
|
27
|
+
return { output: event.output };
|
|
28
|
+
}
|
|
29
|
+
case EventType.TOOL_APPROVAL_REQUIRED:
|
|
30
|
+
case EventType.TOOL_RESPONSE_REQUIRED:
|
|
31
|
+
return { requiredAction: event };
|
|
32
|
+
default:
|
|
33
|
+
return {};
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
function isUserToolApprovalOrResponseBatch(messages) {
|
|
37
|
+
const first = messages[0];
|
|
38
|
+
return first !== void 0 && (isApprovalDecisionMessage(first) || isClientSideToolResponseMessage(first));
|
|
39
|
+
}
|
|
40
|
+
function getMainThreadId(agentThreads) {
|
|
41
|
+
for (const thread of agentThreads.values()) {
|
|
42
|
+
if (!thread.parent) return thread.threadId;
|
|
43
|
+
}
|
|
44
|
+
throw new Error("Unreachable: no root thread found");
|
|
45
|
+
}
|
|
46
|
+
function getActiveAgentThreads(agentThreads) {
|
|
47
|
+
const nodes = new Set(agentThreads.keys());
|
|
48
|
+
const parentNodes = new Set(
|
|
49
|
+
[...agentThreads.values()].map((a) => a.parent?.thread_id).filter((a) => Boolean(a))
|
|
50
|
+
);
|
|
51
|
+
const leaves = [...nodes].filter((id) => !parentNodes.has(id));
|
|
52
|
+
if (leaves.length === 0) {
|
|
53
|
+
throw new Error("We cannot have zero leave agents");
|
|
54
|
+
}
|
|
55
|
+
return leaves.map((id) => {
|
|
56
|
+
const agentThread = agentThreads.get(id);
|
|
57
|
+
if (!agentThread) throw new Error("unreachable");
|
|
58
|
+
return agentThread;
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
function mergeAuthEvents(events) {
|
|
62
|
+
const serverMap = /* @__PURE__ */ new Map();
|
|
63
|
+
for (const event of events) {
|
|
64
|
+
for (const entry of event.mcp_servers) {
|
|
65
|
+
const existing = serverMap.get(entry.id);
|
|
66
|
+
if (existing) {
|
|
67
|
+
existing.thread_ids.push(...entry.thread_ids);
|
|
68
|
+
} else {
|
|
69
|
+
serverMap.set(entry.id, { ...entry, thread_ids: [...entry.thread_ids] });
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
return {
|
|
74
|
+
type: InternalEventType.MCP_AUTH_REQUIRED,
|
|
75
|
+
id: newEventId(),
|
|
76
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
77
|
+
thread_id: null,
|
|
78
|
+
mcp_servers: [...serverMap.values()]
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
function wrapGeneratorWithTrace(trace, generator) {
|
|
82
|
+
const wrapped = {
|
|
83
|
+
[Symbol.asyncIterator]() {
|
|
84
|
+
return this;
|
|
85
|
+
},
|
|
86
|
+
next(...[value]) {
|
|
87
|
+
return trace.runInContext(() => value === void 0 ? generator.next() : generator.next(value));
|
|
88
|
+
},
|
|
89
|
+
return(value) {
|
|
90
|
+
return trace.runInContext(() => generator.return(value));
|
|
91
|
+
},
|
|
92
|
+
throw(e) {
|
|
93
|
+
return trace.runInContext(() => generator.throw(e));
|
|
94
|
+
},
|
|
95
|
+
[Symbol.asyncDispose]() {
|
|
96
|
+
return generator[Symbol.asyncDispose]();
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
return wrapped;
|
|
100
|
+
}
|
|
101
|
+
function createRootAgentSpan(mainThread, tracing) {
|
|
102
|
+
const trace = tracing.startRootSpan(
|
|
103
|
+
JSON.stringify({ instructions: mainThread.definition.instruction, messages: mainThread.definition.messages })
|
|
104
|
+
);
|
|
105
|
+
let rootAgentErrorMessage;
|
|
106
|
+
let rootAgentCompleted = false;
|
|
107
|
+
return {
|
|
108
|
+
trace,
|
|
109
|
+
wrapThreadWithContext(thread, signal) {
|
|
110
|
+
return wrapGeneratorWithTrace(trace, thread.execute({ signal }));
|
|
111
|
+
},
|
|
112
|
+
setOutputFromEvent(chunk) {
|
|
113
|
+
rootAgentCompleted = true;
|
|
114
|
+
if (chunk.type === InternalEventType.AGENT_DONE) {
|
|
115
|
+
if (isInternalThreadDoneError(chunk)) {
|
|
116
|
+
rootAgentErrorMessage = chunk.error;
|
|
117
|
+
trace.setOutput(JSON.stringify({ error: chunk.error }));
|
|
118
|
+
} else {
|
|
119
|
+
const content = assistantMessageContentToStringForSubAgent(chunk.output.content);
|
|
120
|
+
trace.setOutput(JSON.stringify({ result: content }));
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
},
|
|
124
|
+
finalize(thread, error) {
|
|
125
|
+
trace.setMetrics(thread.getAgentThreadMetrics());
|
|
126
|
+
if (error) {
|
|
127
|
+
trace.setError(error);
|
|
128
|
+
} else if (rootAgentErrorMessage || !rootAgentCompleted) {
|
|
129
|
+
trace.setError(rootAgentErrorMessage ?? "Agent execution interrupted");
|
|
130
|
+
} else {
|
|
131
|
+
trace.setSuccess();
|
|
132
|
+
}
|
|
133
|
+
},
|
|
134
|
+
end() {
|
|
135
|
+
trace.end();
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
async function* wrapWithSubAgentSpan(parentTrace, currentThread, signal) {
|
|
140
|
+
const agentInfo = currentThread.agentInfo;
|
|
141
|
+
if (!agentInfo) {
|
|
142
|
+
throw new Error("Sub-agent thread is missing agentInfo");
|
|
143
|
+
}
|
|
144
|
+
const subTrace = parentTrace.startSubAgent(agentInfo.name, JSON.stringify({ instructions: agentInfo.input }));
|
|
145
|
+
const generator = wrapGeneratorWithTrace(subTrace, currentThread.execute({ signal }));
|
|
146
|
+
try {
|
|
147
|
+
for await (const event of generator) {
|
|
148
|
+
if (event.type === InternalEventType.AGENT_DONE) {
|
|
149
|
+
if (isInternalThreadDoneError(event)) {
|
|
150
|
+
subTrace.setOutput(JSON.stringify({ error: event.error }));
|
|
151
|
+
subTrace.setMetrics(currentThread.getAgentThreadMetrics());
|
|
152
|
+
subTrace.setError(event.error);
|
|
153
|
+
} else {
|
|
154
|
+
const content = assistantMessageContentToStringForSubAgent(event.output.content);
|
|
155
|
+
subTrace.setOutput(JSON.stringify({ result: content }));
|
|
156
|
+
subTrace.setMetrics(currentThread.getAgentThreadMetrics());
|
|
157
|
+
subTrace.setSuccess();
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
yield event;
|
|
161
|
+
}
|
|
162
|
+
} catch (error) {
|
|
163
|
+
subTrace.setError(error);
|
|
164
|
+
throw error;
|
|
165
|
+
} finally {
|
|
166
|
+
subTrace.end();
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
var AgentThreadOrchestrator = class {
|
|
170
|
+
agentThreads;
|
|
171
|
+
createDynamicSubAgentThread;
|
|
172
|
+
tracing;
|
|
173
|
+
logger;
|
|
174
|
+
// Finished sub-agents removed from `agentThreads`; kept so totals still include them.
|
|
175
|
+
finishedSubAgentMetrics = createEmptyAgentThreadMetrics();
|
|
176
|
+
constructor(params) {
|
|
177
|
+
this.agentThreads = params.agentThreads;
|
|
178
|
+
this.createDynamicSubAgentThread = params.createDynamicSubAgentThread;
|
|
179
|
+
this.tracing = params.tracing;
|
|
180
|
+
this.logger = params.logger.child({ module: "AgentThreadOrchestrator" });
|
|
181
|
+
}
|
|
182
|
+
/**
|
|
183
|
+
* Turn-wide metrics so far: live threads plus finished sub-agents.
|
|
184
|
+
* Safe mid-flight and after cancel/error (`execute()` may not return).
|
|
185
|
+
* Each thread is counted once — a sub-agent moves from live → finished atomically.
|
|
186
|
+
*/
|
|
187
|
+
getMetrics() {
|
|
188
|
+
const total = createEmptyAgentThreadMetrics();
|
|
189
|
+
addAgentThreadMetrics(total, this.finishedSubAgentMetrics);
|
|
190
|
+
for (const thread of this.agentThreads.values()) {
|
|
191
|
+
addAgentThreadMetrics(total, thread.getAgentThreadMetrics());
|
|
192
|
+
}
|
|
193
|
+
return total;
|
|
194
|
+
}
|
|
195
|
+
async *send(messages) {
|
|
196
|
+
const byThread = /* @__PURE__ */ new Map();
|
|
197
|
+
for (const thread of this.agentThreads.values()) {
|
|
198
|
+
byThread.set(thread.threadId, []);
|
|
199
|
+
}
|
|
200
|
+
if (isUserToolApprovalOrResponseBatch(messages)) {
|
|
201
|
+
const grouped = /* @__PURE__ */ new Map();
|
|
202
|
+
for (const msg of messages) {
|
|
203
|
+
const threadId = msg.thread_id;
|
|
204
|
+
if (!byThread.has(threadId)) {
|
|
205
|
+
throw new InvalidAgentSendInputError(`unknown thread_id: ${threadId}`);
|
|
206
|
+
}
|
|
207
|
+
const batch = grouped.get(threadId) ?? [];
|
|
208
|
+
batch.push(msg);
|
|
209
|
+
grouped.set(threadId, batch);
|
|
210
|
+
}
|
|
211
|
+
for (const [threadId, batch] of grouped) {
|
|
212
|
+
byThread.set(threadId, batch);
|
|
213
|
+
}
|
|
214
|
+
} else if (messages.length > 0) {
|
|
215
|
+
if (this.agentThreads.size > 1) {
|
|
216
|
+
throw new InvalidAgentSendInputError(
|
|
217
|
+
"Cannot process user messages while sub agents are running, please send empty input for previous conversation to complete"
|
|
218
|
+
);
|
|
219
|
+
}
|
|
220
|
+
byThread.set(getMainThreadId(this.agentThreads), messages);
|
|
221
|
+
}
|
|
222
|
+
const validationErrors = [];
|
|
223
|
+
for (const [threadId, batch] of byThread) {
|
|
224
|
+
const thread = this.agentThreads.get(threadId);
|
|
225
|
+
if (!thread) {
|
|
226
|
+
throw new Error(`AgentThreadOrchestrator.send: unknown threadId ${threadId}`);
|
|
227
|
+
}
|
|
228
|
+
try {
|
|
229
|
+
thread.validateSendInput(batch);
|
|
230
|
+
} catch (e) {
|
|
231
|
+
if (e instanceof AgentHarnessError && e.code === "invalid_send_input") {
|
|
232
|
+
validationErrors.push(`thread ${threadId}: ${e.message}`);
|
|
233
|
+
} else {
|
|
234
|
+
throw e;
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
}
|
|
238
|
+
if (validationErrors.length > 0) {
|
|
239
|
+
throw new InvalidAgentSendInputError(validationErrors.join("; "));
|
|
240
|
+
}
|
|
241
|
+
for (const [threadId, batch] of byThread) {
|
|
242
|
+
yield* this.sendToThread(threadId, batch);
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
async *sendToThread(threadId, messages) {
|
|
246
|
+
const thread = this.agentThreads.get(threadId);
|
|
247
|
+
if (!thread) {
|
|
248
|
+
throw new Error(`AgentThreadOrchestrator.sendToThread: unknown threadId ${threadId}`);
|
|
249
|
+
}
|
|
250
|
+
yield* thread.send(messages);
|
|
251
|
+
}
|
|
252
|
+
async *processAgentStreamChunk(chunk, signal) {
|
|
253
|
+
if (chunk.type === InternalEventType.PASSTHROUGH) {
|
|
254
|
+
yield chunk.event;
|
|
255
|
+
return { shouldStopExecution: false };
|
|
256
|
+
}
|
|
257
|
+
if (!("thread_id" in chunk) || chunk.thread_id == null) {
|
|
258
|
+
yield chunk;
|
|
259
|
+
return { shouldStopExecution: false };
|
|
260
|
+
}
|
|
261
|
+
const currentThread = this.agentThreads.get(chunk.thread_id);
|
|
262
|
+
if (!currentThread) {
|
|
263
|
+
throw new Error("unreachable");
|
|
264
|
+
}
|
|
265
|
+
switch (chunk.type) {
|
|
266
|
+
case EventType.TOOL_APPROVAL_REQUIRED:
|
|
267
|
+
case EventType.TOOL_RESPONSE_REQUIRED:
|
|
268
|
+
yield chunk;
|
|
269
|
+
return { shouldStopExecution: true };
|
|
270
|
+
case InternalEventType.AGENT_DONE: {
|
|
271
|
+
if (chunk.parent) {
|
|
272
|
+
if (!chunk.send_to_parent) throw new Error("unreachable");
|
|
273
|
+
const parentThread = this.agentThreads.get(chunk.parent.thread_id);
|
|
274
|
+
if (!parentThread) throw new Error("unreachable: parent thread missing");
|
|
275
|
+
const subAgentToolIsOpen = parentThread.hasOpenToolCallId(chunk.parent.tool_call_id);
|
|
276
|
+
if (subAgentToolIsOpen) {
|
|
277
|
+
const parentToolResponse = {
|
|
278
|
+
type: EventType.TOOL_RESPONSE,
|
|
279
|
+
id: newEventId(),
|
|
280
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
281
|
+
thread_id: chunk.parent.thread_id,
|
|
282
|
+
tool_call_id: chunk.send_to_parent.tool_call_id,
|
|
283
|
+
content: ""
|
|
284
|
+
};
|
|
285
|
+
yield parentToolResponse;
|
|
286
|
+
yield* this.sendToThread(chunk.parent.thread_id, [chunk.send_to_parent]);
|
|
287
|
+
}
|
|
288
|
+
yield chunk;
|
|
289
|
+
addAgentThreadMetrics(this.finishedSubAgentMetrics, currentThread.getAgentThreadMetrics());
|
|
290
|
+
this.agentThreads.delete(chunk.thread_id);
|
|
291
|
+
return { shouldStopExecution: false };
|
|
292
|
+
}
|
|
293
|
+
yield chunk;
|
|
294
|
+
return { shouldStopExecution: true };
|
|
295
|
+
}
|
|
296
|
+
case InternalEventType.AGENT_CREATE_SUBAGENT: {
|
|
297
|
+
const parent = {
|
|
298
|
+
tool_call_id: chunk.tool_call_id,
|
|
299
|
+
thread_id: chunk.thread_id
|
|
300
|
+
};
|
|
301
|
+
const subAgentThreadId = getThreadId();
|
|
302
|
+
const subAgentThread = await this.createDynamicSubAgentThread({
|
|
303
|
+
parentDefinition: currentThread.definition,
|
|
304
|
+
request: chunk.agent_info,
|
|
305
|
+
threadId: subAgentThreadId,
|
|
306
|
+
parent,
|
|
307
|
+
signal
|
|
308
|
+
});
|
|
309
|
+
yield {
|
|
310
|
+
type: EventType.THREAD_CREATED,
|
|
311
|
+
id: newEventId(),
|
|
312
|
+
agent_info: {
|
|
313
|
+
type: "dynamic",
|
|
314
|
+
name: chunk.agent_info.name,
|
|
315
|
+
input: chunk.agent_info.input,
|
|
316
|
+
model: chunk.agent_info.model
|
|
317
|
+
},
|
|
318
|
+
created_at: (/* @__PURE__ */ new Date()).toISOString(),
|
|
319
|
+
parent,
|
|
320
|
+
title: chunk.agent_info.name,
|
|
321
|
+
thread_id: subAgentThreadId
|
|
322
|
+
};
|
|
323
|
+
this.agentThreads.set(subAgentThreadId, subAgentThread);
|
|
324
|
+
return { shouldStopExecution: false };
|
|
325
|
+
}
|
|
326
|
+
default:
|
|
327
|
+
yield chunk;
|
|
328
|
+
return { shouldStopExecution: false };
|
|
329
|
+
}
|
|
330
|
+
}
|
|
331
|
+
async *execute({
|
|
332
|
+
signal
|
|
333
|
+
}) {
|
|
334
|
+
const { agentThreads } = this;
|
|
335
|
+
let shouldStopExecution = false;
|
|
336
|
+
let caughtError;
|
|
337
|
+
let output = null;
|
|
338
|
+
const requiredActions = [];
|
|
339
|
+
let rootAgentError;
|
|
340
|
+
const pendingAuthEvents = [];
|
|
341
|
+
const mainThread = [...agentThreads.values()].find((e) => !e.parent);
|
|
342
|
+
if (!mainThread) {
|
|
343
|
+
throw new Error("Unreachable: no root thread found");
|
|
344
|
+
}
|
|
345
|
+
const rootSpan = createRootAgentSpan(mainThread, this.tracing);
|
|
346
|
+
onSignalAbort(signal, () => {
|
|
347
|
+
shouldStopExecution = true;
|
|
348
|
+
});
|
|
349
|
+
try {
|
|
350
|
+
while (agentThreads.size > 0) {
|
|
351
|
+
if (shouldStopExecution) break;
|
|
352
|
+
const activeThreads = getActiveAgentThreads(agentThreads);
|
|
353
|
+
for (let i = 0; i < activeThreads.length && !shouldStopExecution; i += MAX_PARALLEL_SUB_AGENTS) {
|
|
354
|
+
const batch = activeThreads.slice(i, i + MAX_PARALLEL_SUB_AGENTS);
|
|
355
|
+
const generators = batch.map((thread) => {
|
|
356
|
+
if (!thread.parent) {
|
|
357
|
+
return rootSpan.wrapThreadWithContext(thread, signal);
|
|
358
|
+
}
|
|
359
|
+
return wrapWithSubAgentSpan(rootSpan.trace, thread, signal);
|
|
360
|
+
});
|
|
361
|
+
for await (const chunk of mergeAsyncGenerators(generators, this.logger)) {
|
|
362
|
+
if (chunk.type === InternalEventType.MCP_AUTH_REQUIRED) {
|
|
363
|
+
pendingAuthEvents.push(chunk);
|
|
364
|
+
shouldStopExecution = true;
|
|
365
|
+
continue;
|
|
366
|
+
}
|
|
367
|
+
if (chunk.type === InternalEventType.AGENT_DONE && !chunk.parent) {
|
|
368
|
+
rootSpan.setOutputFromEvent(chunk);
|
|
369
|
+
}
|
|
370
|
+
const result = yield* this.processAgentStreamChunk(chunk, signal);
|
|
371
|
+
if (result.shouldStopExecution) {
|
|
372
|
+
shouldStopExecution = true;
|
|
373
|
+
if (!rootAgentError && chunk.type === InternalEventType.AGENT_DONE && isInternalThreadDoneError(chunk) && !chunk.parent) {
|
|
374
|
+
rootAgentError = { error: chunk.error, output: chunk.output };
|
|
375
|
+
}
|
|
376
|
+
if (chunk.type !== InternalEventType.PASSTHROUGH) {
|
|
377
|
+
const { output: outputContribution, requiredAction } = agentThreadEventToTerminalFields(chunk);
|
|
378
|
+
if (outputContribution) output = outputContribution;
|
|
379
|
+
if (requiredAction) requiredActions.push(requiredAction);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
}
|
|
384
|
+
}
|
|
385
|
+
} catch (error) {
|
|
386
|
+
caughtError = error;
|
|
387
|
+
throw error;
|
|
388
|
+
} finally {
|
|
389
|
+
rootSpan.finalize(mainThread, caughtError);
|
|
390
|
+
rootSpan.end();
|
|
391
|
+
}
|
|
392
|
+
if (pendingAuthEvents.length > 0) {
|
|
393
|
+
const authEvent = mergeAuthEvents(pendingAuthEvents);
|
|
394
|
+
yield authEvent;
|
|
395
|
+
const authRequiredAction = {
|
|
396
|
+
type: EventType.MCP_AUTH_REQUIRED,
|
|
397
|
+
id: authEvent.id,
|
|
398
|
+
created_at: authEvent.created_at,
|
|
399
|
+
thread_id: authEvent.thread_id,
|
|
400
|
+
mcp_servers: authEvent.mcp_servers.map(({ thread_ids, ...s }) => {
|
|
401
|
+
void thread_ids;
|
|
402
|
+
return s;
|
|
403
|
+
})
|
|
404
|
+
};
|
|
405
|
+
requiredActions.push(authRequiredAction);
|
|
406
|
+
}
|
|
407
|
+
return {
|
|
408
|
+
output,
|
|
409
|
+
required_actions: requiredActions,
|
|
410
|
+
root_agent_error: rootAgentError
|
|
411
|
+
};
|
|
412
|
+
}
|
|
413
|
+
};
|
|
414
|
+
export {
|
|
415
|
+
AgentThreadOrchestrator,
|
|
416
|
+
wrapWithSubAgentSpan
|
|
417
|
+
};
|
|
418
|
+
//# sourceMappingURL=AgentThreadOrchestrator.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/runtime/AgentThreadOrchestrator.ts"],"sourcesContent":["import type { Logger } from 'winston';\nimport { AgentHarnessError, InvalidAgentSendInputError } from '../errors';\nimport {\n EventType,\n newEventId,\n type ActionRequiredEvent,\n type ModelMessageEvent,\n type ToolResponseEvent,\n type UserToolApprovalMessage,\n type UserToolResponseMessage,\n} from '../events/schema';\nimport type { AgentExecutionTrace, AgentTracing } from '../tracing/AgentTracing';\nimport { onSignalAbort } from '../util/abort';\nimport { mergeAsyncGenerators } from '../util/promiseUtils';\nimport { AgentThread } from './AgentThread';\nimport type { AgentThreadRuntimeSendBatch } from './AgentThread.types';\nimport {\n InternalEventType,\n type AgentThreadAppendContext,\n type AgentThreadEvent,\n type AgentThreadExecutionEvent,\n type AgentThreadExecutionResult,\n type AgentThreadSendBatch,\n type InternalMCPAuthRequiredEvent,\n type InternalMCPServerAuthInfo,\n} from './AgentThread.types';\nimport {\n assistantMessageContentToStringForSubAgent,\n getThreadId,\n isApprovalDecisionMessage,\n isClientSideToolResponseMessage,\n isInternalThreadDoneError,\n} from './contextUtils';\nimport type { CreateDynamicSubAgentThread } from './CreateDynamicSubAgentThread';\nimport { addAgentThreadMetrics, createEmptyAgentThreadMetrics, type AgentThreadMetrics } from './metrics';\n\nconst MAX_PARALLEL_SUB_AGENTS = 5;\n\nfunction agentThreadEventToTerminalFields(event: AgentThreadExecutionEvent): {\n output?: ModelMessageEvent | undefined;\n requiredAction?: ActionRequiredEvent | undefined;\n} {\n switch (event.type) {\n case InternalEventType.AGENT_DONE: {\n if ('parent' in event && event.parent) return {};\n if (event.status === 'error') return {};\n return { output: event.output };\n }\n case EventType.TOOL_APPROVAL_REQUIRED:\n case EventType.TOOL_RESPONSE_REQUIRED:\n return { requiredAction: event };\n default:\n return {};\n }\n}\n\ntype UserToolApprovalOrResponseBatch = (UserToolApprovalMessage | UserToolResponseMessage)[];\n\nfunction isUserToolApprovalOrResponseBatch(\n messages: AgentThreadSendBatch,\n): messages is UserToolApprovalOrResponseBatch {\n const first = messages[0];\n return first !== undefined && (isApprovalDecisionMessage(first) || isClientSideToolResponseMessage(first));\n}\n\nfunction getMainThreadId(agentThreads: Map<string, AgentThread>): string {\n for (const thread of agentThreads.values()) {\n if (!thread.parent) return thread.threadId;\n }\n throw new Error('Unreachable: no root thread found');\n}\n\nfunction getActiveAgentThreads(agentThreads: Map<string, AgentThread>): AgentThread[] {\n const nodes = new Set(agentThreads.keys());\n const parentNodes = new Set(\n [...agentThreads.values()].map(a => a.parent?.thread_id).filter((a): a is string => Boolean(a)),\n );\n const leaves = [...nodes].filter(id => !parentNodes.has(id));\n if (leaves.length === 0) {\n throw new Error('We cannot have zero leave agents');\n }\n return leaves.map(id => {\n const agentThread = agentThreads.get(id);\n if (!agentThread) throw new Error('unreachable');\n return agentThread;\n });\n}\n\nfunction mergeAuthEvents(events: InternalMCPAuthRequiredEvent[]): InternalMCPAuthRequiredEvent {\n const serverMap = new Map<string, InternalMCPServerAuthInfo>();\n for (const event of events) {\n for (const entry of event.mcp_servers) {\n const existing = serverMap.get(entry.id);\n if (existing) {\n existing.thread_ids.push(...entry.thread_ids);\n } else {\n serverMap.set(entry.id, { ...entry, thread_ids: [...entry.thread_ids] });\n }\n }\n }\n return {\n type: InternalEventType.MCP_AUTH_REQUIRED,\n id: newEventId(),\n created_at: new Date().toISOString(),\n thread_id: null,\n mcp_servers: [...serverMap.values()],\n };\n}\n\nfunction wrapGeneratorWithTrace<T, TReturn = void, TNext = unknown>(\n trace: AgentExecutionTrace,\n generator: AsyncGenerator<T, TReturn, TNext>,\n): AsyncGenerator<T, TReturn, TNext> {\n const wrapped: AsyncGenerator<T, TReturn, TNext> = {\n [Symbol.asyncIterator]() {\n return this;\n },\n next(...[value]: [] | [TNext]) {\n return trace.runInContext(() => (value === undefined ? generator.next() : generator.next(value)));\n },\n return(value: TReturn | PromiseLike<TReturn>) {\n return trace.runInContext(() => generator.return(value));\n },\n throw(e: unknown) {\n return trace.runInContext(() => generator.throw(e));\n },\n [Symbol.asyncDispose]() {\n return generator[Symbol.asyncDispose]();\n },\n };\n return wrapped;\n}\n\ninterface RootAgentSpanHandle {\n trace: AgentExecutionTrace;\n wrapThreadWithContext(thread: AgentThread, signal?: AbortSignal): AsyncGenerator<AgentThreadEvent>;\n setOutputFromEvent(chunk: AgentThreadEvent): void;\n finalize(thread: AgentThread, error?: unknown): void;\n end(): void;\n}\n\nfunction createRootAgentSpan(mainThread: AgentThread, tracing: AgentTracing): RootAgentSpanHandle {\n const trace = tracing.startRootSpan(\n JSON.stringify({ instructions: mainThread.definition.instruction, messages: mainThread.definition.messages }),\n );\n let rootAgentErrorMessage: string | undefined;\n let rootAgentCompleted = false;\n\n return {\n trace,\n wrapThreadWithContext(thread: AgentThread, signal?: AbortSignal) {\n return wrapGeneratorWithTrace(trace, thread.execute({ signal }));\n },\n setOutputFromEvent(chunk: AgentThreadEvent) {\n rootAgentCompleted = true;\n if (chunk.type === InternalEventType.AGENT_DONE) {\n if (isInternalThreadDoneError(chunk)) {\n rootAgentErrorMessage = chunk.error;\n trace.setOutput(JSON.stringify({ error: chunk.error }));\n } else {\n const content = assistantMessageContentToStringForSubAgent(chunk.output.content);\n trace.setOutput(JSON.stringify({ result: content }));\n }\n }\n },\n finalize(thread: AgentThread, error?: unknown) {\n trace.setMetrics(thread.getAgentThreadMetrics());\n if (error) {\n trace.setError(error);\n } else if (rootAgentErrorMessage || !rootAgentCompleted) {\n trace.setError(rootAgentErrorMessage ?? 'Agent execution interrupted');\n } else {\n trace.setSuccess();\n }\n },\n end() {\n trace.end();\n },\n };\n}\n\n/** @internal Exported for sub-agent span finalization tests. */\nexport async function* wrapWithSubAgentSpan(\n parentTrace: AgentExecutionTrace,\n currentThread: AgentThread,\n signal?: AbortSignal,\n): AsyncGenerator<AgentThreadEvent> {\n const agentInfo = currentThread.agentInfo;\n if (!agentInfo) {\n throw new Error('Sub-agent thread is missing agentInfo');\n }\n const subTrace = parentTrace.startSubAgent(agentInfo.name, JSON.stringify({ instructions: agentInfo.input }));\n const generator = wrapGeneratorWithTrace(subTrace, currentThread.execute({ signal }));\n\n try {\n for await (const event of generator) {\n if (event.type === InternalEventType.AGENT_DONE) {\n if (isInternalThreadDoneError(event)) {\n subTrace.setOutput(JSON.stringify({ error: event.error }));\n subTrace.setMetrics(currentThread.getAgentThreadMetrics());\n subTrace.setError(event.error);\n } else {\n const content = assistantMessageContentToStringForSubAgent(event.output.content);\n subTrace.setOutput(JSON.stringify({ result: content }));\n subTrace.setMetrics(currentThread.getAgentThreadMetrics());\n subTrace.setSuccess();\n }\n // end() only in finally so every path finalizes exactly once\n }\n yield event;\n }\n } catch (error) {\n subTrace.setError(error);\n throw error;\n } finally {\n subTrace.end();\n }\n}\n\nexport interface AgentThreadOrchestratorInput {\n agentThreads: Map<string, AgentThread>;\n createDynamicSubAgentThread: CreateDynamicSubAgentThread;\n tracing: AgentTracing;\n logger: Logger;\n}\n\nexport class AgentThreadOrchestrator {\n private readonly agentThreads: Map<string, AgentThread>;\n private readonly createDynamicSubAgentThread: CreateDynamicSubAgentThread;\n private readonly tracing: AgentTracing;\n private readonly logger: Logger;\n // Finished sub-agents removed from `agentThreads`; kept so totals still include them.\n private finishedSubAgentMetrics: AgentThreadMetrics = createEmptyAgentThreadMetrics();\n\n constructor(params: AgentThreadOrchestratorInput) {\n this.agentThreads = params.agentThreads;\n this.createDynamicSubAgentThread = params.createDynamicSubAgentThread;\n this.tracing = params.tracing;\n this.logger = params.logger.child({ module: 'AgentThreadOrchestrator' });\n }\n\n /**\n * Turn-wide metrics so far: live threads plus finished sub-agents.\n * Safe mid-flight and after cancel/error (`execute()` may not return).\n * Each thread is counted once — a sub-agent moves from live → finished atomically.\n */\n public getMetrics(): AgentThreadMetrics {\n const total = createEmptyAgentThreadMetrics();\n addAgentThreadMetrics(total, this.finishedSubAgentMetrics);\n for (const thread of this.agentThreads.values()) {\n addAgentThreadMetrics(total, thread.getAgentThreadMetrics());\n }\n return total;\n }\n\n public async *send(messages: AgentThreadSendBatch): AsyncGenerator<AgentThreadAppendContext, void, unknown> {\n const byThread = new Map<string, AgentThreadRuntimeSendBatch>();\n for (const thread of this.agentThreads.values()) {\n byThread.set(thread.threadId, []);\n }\n\n if (isUserToolApprovalOrResponseBatch(messages)) {\n const grouped = new Map<string, UserToolApprovalOrResponseBatch[number][]>();\n for (const msg of messages) {\n const threadId = msg.thread_id;\n if (!byThread.has(threadId)) {\n throw new InvalidAgentSendInputError(`unknown thread_id: ${threadId}`);\n }\n const batch = grouped.get(threadId) ?? [];\n batch.push(msg);\n grouped.set(threadId, batch);\n }\n for (const [threadId, batch] of grouped) {\n byThread.set(threadId, batch);\n }\n } else if (messages.length > 0) {\n if (this.agentThreads.size > 1) {\n throw new InvalidAgentSendInputError(\n 'Cannot process user messages while sub agents are running, please send empty input for previous conversation to complete',\n );\n }\n byThread.set(getMainThreadId(this.agentThreads), messages);\n }\n\n const validationErrors: string[] = [];\n for (const [threadId, batch] of byThread) {\n const thread = this.agentThreads.get(threadId);\n if (!thread) {\n throw new Error(`AgentThreadOrchestrator.send: unknown threadId ${threadId}`);\n }\n try {\n thread.validateSendInput(batch);\n } catch (e) {\n if (e instanceof AgentHarnessError && e.code === 'invalid_send_input') {\n validationErrors.push(`thread ${threadId}: ${e.message}`);\n } else {\n throw e;\n }\n }\n }\n if (validationErrors.length > 0) {\n throw new InvalidAgentSendInputError(validationErrors.join('; '));\n }\n\n for (const [threadId, batch] of byThread) {\n yield* this.sendToThread(threadId, batch);\n }\n }\n\n private async *sendToThread(\n threadId: string,\n messages: AgentThreadRuntimeSendBatch,\n ): AsyncGenerator<AgentThreadAppendContext, void, unknown> {\n const thread = this.agentThreads.get(threadId);\n if (!thread) {\n throw new Error(`AgentThreadOrchestrator.sendToThread: unknown threadId ${threadId}`);\n }\n yield* thread.send(messages);\n }\n\n private async *processAgentStreamChunk(\n chunk: Exclude<AgentThreadEvent, InternalMCPAuthRequiredEvent>,\n signal: AbortSignal,\n ): AsyncGenerator<AgentThreadExecutionEvent, { shouldStopExecution: boolean }, unknown> {\n if (chunk.type === InternalEventType.PASSTHROUGH) {\n yield chunk.event;\n return { shouldStopExecution: false };\n }\n\n if (!('thread_id' in chunk) || chunk.thread_id == null) {\n yield chunk;\n return { shouldStopExecution: false };\n }\n\n const currentThread = this.agentThreads.get(chunk.thread_id);\n if (!currentThread) {\n throw new Error('unreachable');\n }\n\n switch (chunk.type) {\n case EventType.TOOL_APPROVAL_REQUIRED:\n case EventType.TOOL_RESPONSE_REQUIRED:\n yield chunk;\n return { shouldStopExecution: true };\n case InternalEventType.AGENT_DONE: {\n if (chunk.parent) {\n if (!chunk.send_to_parent) throw new Error('unreachable');\n const parentThread = this.agentThreads.get(chunk.parent.thread_id);\n if (!parentThread) throw new Error('unreachable: parent thread missing');\n const subAgentToolIsOpen = parentThread.hasOpenToolCallId(chunk.parent.tool_call_id);\n if (subAgentToolIsOpen) {\n const parentToolResponse: ToolResponseEvent = {\n type: EventType.TOOL_RESPONSE,\n id: newEventId(),\n created_at: new Date().toISOString(),\n thread_id: chunk.parent.thread_id,\n tool_call_id: chunk.send_to_parent.tool_call_id,\n content: '',\n };\n yield parentToolResponse;\n yield* this.sendToThread(chunk.parent.thread_id, [chunk.send_to_parent]);\n }\n yield chunk;\n // Move metrics to the finished bucket and drop the live entry with no `yield` between,\n // so getMetrics() counts this sub-agent once. After `yield chunk` per durable-state.\n addAgentThreadMetrics(this.finishedSubAgentMetrics, currentThread.getAgentThreadMetrics());\n this.agentThreads.delete(chunk.thread_id);\n return { shouldStopExecution: false };\n }\n yield chunk;\n return { shouldStopExecution: true };\n }\n case InternalEventType.AGENT_CREATE_SUBAGENT: {\n const parent = {\n tool_call_id: chunk.tool_call_id,\n thread_id: chunk.thread_id,\n };\n const subAgentThreadId = getThreadId();\n const subAgentThread = await this.createDynamicSubAgentThread({\n parentDefinition: currentThread.definition,\n request: chunk.agent_info,\n threadId: subAgentThreadId,\n parent,\n signal,\n });\n\n yield {\n type: EventType.THREAD_CREATED,\n id: newEventId(),\n agent_info: {\n type: 'dynamic',\n name: chunk.agent_info.name,\n input: chunk.agent_info.input,\n model: chunk.agent_info.model,\n },\n created_at: new Date().toISOString(),\n parent,\n title: chunk.agent_info.name,\n thread_id: subAgentThreadId,\n };\n this.agentThreads.set(subAgentThreadId, subAgentThread);\n return { shouldStopExecution: false };\n }\n default:\n yield chunk;\n return { shouldStopExecution: false };\n }\n }\n\n public async *execute({\n signal,\n }: {\n signal: AbortSignal;\n }): AsyncGenerator<AgentThreadExecutionEvent, AgentThreadExecutionResult, unknown> {\n const { agentThreads } = this;\n\n let shouldStopExecution = false;\n let caughtError: unknown;\n let output: ModelMessageEvent | null = null;\n const requiredActions: ActionRequiredEvent[] = [];\n let rootAgentError: AgentThreadExecutionResult['root_agent_error'];\n const pendingAuthEvents: InternalMCPAuthRequiredEvent[] = [];\n const mainThread = [...agentThreads.values()].find(e => !e.parent);\n if (!mainThread) {\n throw new Error('Unreachable: no root thread found');\n }\n const rootSpan = createRootAgentSpan(mainThread, this.tracing);\n\n onSignalAbort(signal, () => {\n shouldStopExecution = true;\n });\n\n try {\n while (agentThreads.size > 0) {\n if (shouldStopExecution) break;\n\n const activeThreads = getActiveAgentThreads(agentThreads);\n\n for (let i = 0; i < activeThreads.length && !shouldStopExecution; i += MAX_PARALLEL_SUB_AGENTS) {\n const batch = activeThreads.slice(i, i + MAX_PARALLEL_SUB_AGENTS);\n const generators = batch.map(thread => {\n if (!thread.parent) {\n return rootSpan.wrapThreadWithContext(thread, signal);\n }\n return wrapWithSubAgentSpan(rootSpan.trace, thread, signal);\n });\n\n for await (const chunk of mergeAsyncGenerators(generators, this.logger)) {\n if (chunk.type === InternalEventType.MCP_AUTH_REQUIRED) {\n pendingAuthEvents.push(chunk);\n shouldStopExecution = true;\n continue;\n }\n if (chunk.type === InternalEventType.AGENT_DONE && !chunk.parent) {\n // Root-thread only — sub-agent AGENT_DONE would overwrite root trace output /\n // leave a stale error; sub-agent spans finalize in wrapWithSubAgentSpan.\n rootSpan.setOutputFromEvent(chunk);\n }\n\n const result = yield* this.processAgentStreamChunk(chunk, signal);\n if (result.shouldStopExecution) {\n shouldStopExecution = true;\n if (\n !rootAgentError &&\n chunk.type === InternalEventType.AGENT_DONE &&\n isInternalThreadDoneError(chunk) &&\n !chunk.parent\n ) {\n rootAgentError = { error: chunk.error, output: chunk.output };\n }\n if (chunk.type !== InternalEventType.PASSTHROUGH) {\n const { output: outputContribution, requiredAction } = agentThreadEventToTerminalFields(chunk);\n if (outputContribution) output = outputContribution;\n if (requiredAction) requiredActions.push(requiredAction);\n }\n }\n }\n }\n }\n } catch (error) {\n caughtError = error;\n throw error;\n } finally {\n rootSpan.finalize(mainThread, caughtError);\n rootSpan.end();\n }\n\n if (pendingAuthEvents.length > 0) {\n const authEvent = mergeAuthEvents(pendingAuthEvents);\n yield authEvent;\n const authRequiredAction: ActionRequiredEvent = {\n type: EventType.MCP_AUTH_REQUIRED,\n id: authEvent.id,\n created_at: authEvent.created_at,\n thread_id: authEvent.thread_id,\n mcp_servers: authEvent.mcp_servers.map(({ thread_ids, ...s }) => {\n void thread_ids;\n return s;\n }),\n };\n requiredActions.push(authRequiredAction);\n }\n\n return {\n output,\n required_actions: requiredActions,\n root_agent_error: rootAgentError,\n };\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { AgentInfo, AgentParent } from '../events/schema';
|
|
2
|
+
import type { AgentDefinition } from './AgentDefinition';
|
|
3
|
+
import type { AgentThread } from './AgentThread';
|
|
4
|
+
export type CreateDynamicSubAgentThread = (input: {
|
|
5
|
+
parentDefinition: AgentDefinition;
|
|
6
|
+
request: AgentInfo;
|
|
7
|
+
threadId: string;
|
|
8
|
+
parent: AgentParent;
|
|
9
|
+
signal: AbortSignal;
|
|
10
|
+
}) => Promise<AgentThread>;
|
|
11
|
+
//# sourceMappingURL=CreateDynamicSubAgentThread.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CreateDynamicSubAgentThread.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/CreateDynamicSubAgentThread.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,MAAM,2BAA2B,GAAG,CAAC,KAAK,EAAE;IAChD,gBAAgB,EAAE,eAAe,CAAC;IAClC,OAAO,EAAE,SAAS,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,WAAW,CAAC;IACpB,MAAM,EAAE,WAAW,CAAC;CACrB,KAAK,OAAO,CAAC,WAAW,CAAC,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __defProp = Object.defineProperty;
|
|
3
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
4
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
5
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
6
|
+
var __copyProps = (to, from, except, desc) => {
|
|
7
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
8
|
+
for (let key of __getOwnPropNames(from))
|
|
9
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
10
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
11
|
+
}
|
|
12
|
+
return to;
|
|
13
|
+
};
|
|
14
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
15
|
+
|
|
16
|
+
// src/core/runtime/CreateDynamicSubAgentThread.ts
|
|
17
|
+
var CreateDynamicSubAgentThread_exports = {};
|
|
18
|
+
module.exports = __toCommonJS(CreateDynamicSubAgentThread_exports);
|
|
19
|
+
//# sourceMappingURL=CreateDynamicSubAgentThread.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/runtime/CreateDynamicSubAgentThread.ts"],"sourcesContent":["import type { AgentInfo, AgentParent } from '../events/schema';\nimport type { AgentDefinition } from './AgentDefinition';\nimport type { AgentThread } from './AgentThread';\n\nexport type CreateDynamicSubAgentThread = (input: {\n parentDefinition: AgentDefinition;\n request: AgentInfo;\n threadId: string;\n parent: AgentParent;\n signal: AbortSignal;\n}) => Promise<AgentThread>;\n"],"mappings":";;;;;;;;;;;;;;;;AAAA;AAAA;","names":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
//# sourceMappingURL=CreateDynamicSubAgentThread.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import type { CallToolRequest } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import type { Logger } from 'winston';
|
|
3
|
+
import { InstructionBuilder } from '../InstructionBuilder';
|
|
4
|
+
import type { InternalToolCallInfo } from '../llm/LLMTypes';
|
|
5
|
+
import { type IToolSet } from '../mcp/IMCPServer';
|
|
6
|
+
import { LocalToolMCP, type ToolDefinition } from '../mcp/LocalToolMCP';
|
|
7
|
+
import type { AgentTracing } from '../tracing/AgentTracing';
|
|
8
|
+
export declare const DEFERRED_TOOLS_SERVER_ID = "deferred-tools";
|
|
9
|
+
export declare const LIST_TOOLS_NAME = "list_tools";
|
|
10
|
+
export declare const GET_TOOL_INFO_NAME = "get_tool_info";
|
|
11
|
+
export declare const GET_TOOL_OUTPUT_SCHEMA_NAME = "get_tool_output_schema";
|
|
12
|
+
export declare class DeferredTool extends LocalToolMCP {
|
|
13
|
+
readonly name = "deferred-tools";
|
|
14
|
+
readonly displayName = "DeferredTools";
|
|
15
|
+
readonly description = "Deferred tool loading for user MCP servers";
|
|
16
|
+
private readonly serverMap;
|
|
17
|
+
private readonly tools;
|
|
18
|
+
private readonly logger;
|
|
19
|
+
constructor(servers: readonly IToolSet[], options: {
|
|
20
|
+
tracing: AgentTracing;
|
|
21
|
+
logger: Logger;
|
|
22
|
+
});
|
|
23
|
+
buildInstruction(builder: InstructionBuilder): void;
|
|
24
|
+
protected getTools(): ToolDefinition[];
|
|
25
|
+
toolCallInfo(params: CallToolRequest['params'], resolveUnderlyingTool?: boolean): Promise<InternalToolCallInfo>;
|
|
26
|
+
private resolveServer;
|
|
27
|
+
private resolveServerTools;
|
|
28
|
+
private buildTools;
|
|
29
|
+
private buildListTools;
|
|
30
|
+
private buildGetToolInfo;
|
|
31
|
+
private buildGetToolOutputSchema;
|
|
32
|
+
private buildCallTool;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=DeferredTool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DeferredTool.d.ts","sourceRoot":"","sources":["../../../src/core/runtime/DeferredTool.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oCAAoC,CAAC;AAE1E,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAGtC,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAML,KAAK,QAAQ,EAGd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAc,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACpF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAG5D,eAAO,MAAM,wBAAwB,mBAAmB,CAAC;AAEzD,eAAO,MAAM,eAAe,eAAe,CAAC;AAC5C,eAAO,MAAM,kBAAkB,kBAAkB,CAAC;AAClD,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AAkCpE,qBAAa,YAAa,SAAQ,YAAY;IAC5C,QAAQ,CAAC,IAAI,oBAA4B;IACzC,QAAQ,CAAC,WAAW,mBAAmB;IACvC,SAAkB,WAAW,gDAAgD;IAE7E,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwB;IAClD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAmB;IACzC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC,YACE,OAAO,EAAE,SAAS,QAAQ,EAAE,EAC5B,OAAO,EAAE;QACP,OAAO,EAAE,YAAY,CAAC;QACtB,MAAM,EAAE,MAAM,CAAC;KAChB,EAMF;IAED,gBAAgB,CAAC,OAAO,EAAE,kBAAkB,GAAG,IAAI,CAqBlD;IAED,SAAS,CAAC,QAAQ,IAAI,cAAc,EAAE,CAErC;IAEc,YAAY,CACzB,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,qBAAqB,CAAC,EAAE,OAAO,GAC9B,OAAO,CAAC,oBAAoB,CAAC,CA8B/B;IAED,OAAO,CAAC,aAAa;YAIP,kBAAkB;IAiBhC,OAAO,CAAC,UAAU;IAIlB,OAAO,CAAC,cAAc;IA8BtB,OAAO,CAAC,gBAAgB;IA+CxB,OAAO,CAAC,wBAAwB;IA8ChC,OAAO,CAAC,aAAa;CA+CtB"}
|