@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,187 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/core/sandbox/codeMode/nats/CodeModeNatsTransport.ts
|
|
21
|
+
var CodeModeNatsTransport_exports = {};
|
|
22
|
+
__export(CodeModeNatsTransport_exports, {
|
|
23
|
+
CodeModeNatsTransport: () => CodeModeNatsTransport
|
|
24
|
+
});
|
|
25
|
+
module.exports = __toCommonJS(CodeModeNatsTransport_exports);
|
|
26
|
+
var import_nats_core = require("@nats-io/nats-core");
|
|
27
|
+
var import_api = require("@opentelemetry/api");
|
|
28
|
+
var import_core = require("@opentelemetry/core");
|
|
29
|
+
var import_node_crypto = require("crypto");
|
|
30
|
+
var import_ws = require("ws");
|
|
31
|
+
var import_errorLogFields = require("../../../util/errorLogFields.js");
|
|
32
|
+
var import_promiseUtils = require("../../../util/promiseUtils.js");
|
|
33
|
+
var import_constants = require("../../constants.js");
|
|
34
|
+
var import_types = require("../types.js");
|
|
35
|
+
Object.assign(global, { WebSocket: import_ws.WebSocket });
|
|
36
|
+
var NATS_CONNECT_TIMEOUT_MS = 1e4;
|
|
37
|
+
var NATS_CONNECT_RETRIES = 3;
|
|
38
|
+
var NATS_CONNECT_BACKOFF_MS = 250;
|
|
39
|
+
var NATS_DRAIN_TIMEOUT_MS = 5e3;
|
|
40
|
+
var SANDBOX_NATS_SUBJECT_ROOT = "sandbox.bridge";
|
|
41
|
+
var SANDBOX_NATS_MCP_LEAF = "mcp";
|
|
42
|
+
var CodeModeNatsTransport = class {
|
|
43
|
+
resolveHostUrl;
|
|
44
|
+
sandboxClientNatsUrl;
|
|
45
|
+
logger;
|
|
46
|
+
sessionPromise;
|
|
47
|
+
nc;
|
|
48
|
+
dispatcher;
|
|
49
|
+
constructor(params) {
|
|
50
|
+
this.resolveHostUrl = params.resolveHostUrl;
|
|
51
|
+
this.sandboxClientNatsUrl = params.sandboxClientNatsUrl ?? `ws://localhost:${String(import_constants.DEFAULT_SANDBOX_NATS_WS_PORT)}`;
|
|
52
|
+
this.logger = params.logger.child({ module: "CodeModeNatsTransport" });
|
|
53
|
+
}
|
|
54
|
+
start(params) {
|
|
55
|
+
this.dispatcher = params.codeModeDispatcher;
|
|
56
|
+
this.sessionPromise ??= this.connectSession(params).catch((e) => {
|
|
57
|
+
this.sessionPromise = void 0;
|
|
58
|
+
throw e;
|
|
59
|
+
});
|
|
60
|
+
return this.sessionPromise;
|
|
61
|
+
}
|
|
62
|
+
async stop() {
|
|
63
|
+
const pending = this.sessionPromise;
|
|
64
|
+
this.sessionPromise = void 0;
|
|
65
|
+
if (pending !== void 0) {
|
|
66
|
+
try {
|
|
67
|
+
await pending;
|
|
68
|
+
} catch {
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
const nc = this.nc;
|
|
72
|
+
this.nc = void 0;
|
|
73
|
+
if (nc === void 0) return;
|
|
74
|
+
try {
|
|
75
|
+
await (0, import_promiseUtils.withTimeout)(nc.drain(), NATS_DRAIN_TIMEOUT_MS);
|
|
76
|
+
} catch (e) {
|
|
77
|
+
this.logger.warn("Code Mode NATS drain failed/timed out; forcing close", (0, import_errorLogFields.extractErrorLogFields)(e));
|
|
78
|
+
await nc.close().catch(() => {
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async connectSession(params) {
|
|
83
|
+
const url = await this.resolveHostUrl(params.sandboxId);
|
|
84
|
+
const subjectPrefix = `${SANDBOX_NATS_SUBJECT_ROOT}.${(0, import_node_crypto.randomUUID)()}`;
|
|
85
|
+
let lastErr;
|
|
86
|
+
let nc;
|
|
87
|
+
for (let attempt = 1; attempt <= NATS_CONNECT_RETRIES; attempt++) {
|
|
88
|
+
try {
|
|
89
|
+
nc = await import_api.context.with(
|
|
90
|
+
(0, import_core.suppressTracing)(import_api.context.active()),
|
|
91
|
+
() => (0, import_nats_core.wsconnect)({ servers: [url], timeout: NATS_CONNECT_TIMEOUT_MS })
|
|
92
|
+
);
|
|
93
|
+
this.logger.info(`Connected to sandbox NATS (attempt ${String(attempt)})`, { subjectPrefix });
|
|
94
|
+
break;
|
|
95
|
+
} catch (e) {
|
|
96
|
+
lastErr = e;
|
|
97
|
+
this.logger.warn(`Code Mode NATS connect attempt ${String(attempt)} failed`, (0, import_errorLogFields.extractErrorLogFields)(e));
|
|
98
|
+
if (attempt < NATS_CONNECT_RETRIES) {
|
|
99
|
+
await new Promise((resolve) => setTimeout(resolve, NATS_CONNECT_BACKOFF_MS));
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
if (nc === void 0) {
|
|
104
|
+
throw lastErr instanceof Error ? lastErr : new Error("Code Mode NATS connect failed");
|
|
105
|
+
}
|
|
106
|
+
this.nc = nc;
|
|
107
|
+
this.subscribe(nc, subjectPrefix);
|
|
108
|
+
const cachedPromise = this.sessionPromise;
|
|
109
|
+
void nc.closed().then(() => {
|
|
110
|
+
if (this.sessionPromise === cachedPromise) {
|
|
111
|
+
this.sessionPromise = void 0;
|
|
112
|
+
this.nc = void 0;
|
|
113
|
+
this.logger.info("Code Mode NATS connection closed; session invalidated", {
|
|
114
|
+
sandboxId: params.sandboxId
|
|
115
|
+
});
|
|
116
|
+
}
|
|
117
|
+
});
|
|
118
|
+
return {
|
|
119
|
+
env: {
|
|
120
|
+
TFY_NATS_URL: this.sandboxClientNatsUrl,
|
|
121
|
+
TFY_NATS_SUBJECT_PREFIX: subjectPrefix,
|
|
122
|
+
TFY_CM_REQUEST_TIMEOUT_SECONDS: String(params.requestTimeoutSeconds)
|
|
123
|
+
}
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
subscribe(nc, subjectPrefix) {
|
|
127
|
+
nc.subscribe(`${subjectPrefix}.${SANDBOX_NATS_MCP_LEAF}`, {
|
|
128
|
+
callback: (err, msg) => {
|
|
129
|
+
void this.handleMessage(err, msg);
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
}
|
|
133
|
+
async handleMessage(err, msg) {
|
|
134
|
+
if (err) {
|
|
135
|
+
this.logger.error("Code Mode NATS subscription error", (0, import_errorLogFields.extractErrorLogFields)(err));
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
if (!msg.reply) {
|
|
139
|
+
this.logger.warn(`Code Mode NATS request on '${msg.subject}' has no reply subject; dropping`);
|
|
140
|
+
return;
|
|
141
|
+
}
|
|
142
|
+
const dispatcher = this.dispatcher;
|
|
143
|
+
if (dispatcher === void 0) {
|
|
144
|
+
try {
|
|
145
|
+
msg.respond(this.encode({ ok: false, error: "Code Mode dispatcher is not configured", source: "internal" }));
|
|
146
|
+
} catch (e) {
|
|
147
|
+
this.logger.warn(`Failed to send dispatcher-missing reply on '${msg.subject}'`, (0, import_errorLogFields.extractErrorLogFields)(e));
|
|
148
|
+
}
|
|
149
|
+
return;
|
|
150
|
+
}
|
|
151
|
+
const carrier = {};
|
|
152
|
+
const traceparent = msg.headers?.get("traceparent");
|
|
153
|
+
const tracestate = msg.headers?.get("tracestate");
|
|
154
|
+
if (traceparent) carrier["traceparent"] = traceparent;
|
|
155
|
+
if (tracestate) carrier["tracestate"] = tracestate;
|
|
156
|
+
let request;
|
|
157
|
+
try {
|
|
158
|
+
request = this.decode(msg);
|
|
159
|
+
} catch (e) {
|
|
160
|
+
this.logger.error(`Failed to decode Code Mode NATS request on '${msg.subject}'`, (0, import_errorLogFields.extractErrorLogFields)(e));
|
|
161
|
+
try {
|
|
162
|
+
msg.respond(this.encode({ ok: false, error: "Malformed Code Mode request", source: "caller" }));
|
|
163
|
+
} catch (respondErr) {
|
|
164
|
+
this.logger.warn(`Failed to send decode-error reply on '${msg.subject}'`, (0, import_errorLogFields.extractErrorLogFields)(respondErr));
|
|
165
|
+
}
|
|
166
|
+
return;
|
|
167
|
+
}
|
|
168
|
+
const reply = await dispatcher.dispatch({ request, traceCarrier: carrier });
|
|
169
|
+
try {
|
|
170
|
+
msg.respond(this.encode(reply));
|
|
171
|
+
} catch (e) {
|
|
172
|
+
this.logger.error("Failed to publish Code Mode NATS reply", (0, import_errorLogFields.extractErrorLogFields)(e));
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
encode(reply) {
|
|
176
|
+
return new TextEncoder().encode(JSON.stringify(reply));
|
|
177
|
+
}
|
|
178
|
+
decode(msg) {
|
|
179
|
+
const raw = JSON.parse(new TextDecoder().decode(msg.data));
|
|
180
|
+
return import_types.CodeModeRequestSchema.parse(raw);
|
|
181
|
+
}
|
|
182
|
+
};
|
|
183
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
184
|
+
0 && (module.exports = {
|
|
185
|
+
CodeModeNatsTransport
|
|
186
|
+
});
|
|
187
|
+
//# sourceMappingURL=CodeModeNatsTransport.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/sandbox/codeMode/nats/CodeModeNatsTransport.ts"],"sourcesContent":["import { wsconnect, type Msg, type NatsConnection } from '@nats-io/nats-core';\nimport { context } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport { randomUUID } from 'node:crypto';\nimport type { Logger } from 'winston';\nimport { WebSocket } from 'ws';\nimport { extractErrorLogFields } from '../../../util/errorLogFields';\nimport { withTimeout } from '../../../util/promiseUtils';\nimport { DEFAULT_SANDBOX_NATS_WS_PORT } from '../../constants';\nimport type { CodeModeDispatcher } from '../CodeModeDispatcher';\nimport type { CodeModeTransport } from '../CodeModeTransport';\nimport { CodeModeRequestSchema, type CodeModeReply, type CodeModeRequest } from '../types';\n\n// `wsconnect` from @nats-io/nats-core relies on a global WebSocket constructor; in Node we\n// provide it from `ws`. Same pattern as `src/services/NatsService.ts`.\nObject.assign(global, { WebSocket });\n\nconst NATS_CONNECT_TIMEOUT_MS = 10_000;\nconst NATS_CONNECT_RETRIES = 3;\nconst NATS_CONNECT_BACKOFF_MS = 250;\nconst NATS_DRAIN_TIMEOUT_MS = 5_000;\n\nconst SANDBOX_NATS_SUBJECT_ROOT = 'sandbox.bridge';\nconst SANDBOX_NATS_MCP_LEAF = 'mcp';\n\n/**\n * NATS Code Mode transport. Session cache + connection-drop invalidate live here\n * (no `whenClosed` on the public interface).\n */\nexport class CodeModeNatsTransport implements CodeModeTransport {\n private readonly resolveHostUrl: (sandboxId: string) => Promise<string>;\n private readonly sandboxClientNatsUrl: string;\n private readonly logger: Logger;\n\n private sessionPromise: Promise<{ env: Record<string, string> }> | undefined;\n private nc: NatsConnection | undefined;\n private dispatcher: CodeModeDispatcher | undefined;\n\n constructor(params: {\n resolveHostUrl: (sandboxId: string) => Promise<string>;\n sandboxClientNatsUrl?: string;\n logger: Logger;\n }) {\n this.resolveHostUrl = params.resolveHostUrl;\n this.sandboxClientNatsUrl = params.sandboxClientNatsUrl ?? `ws://localhost:${String(DEFAULT_SANDBOX_NATS_WS_PORT)}`;\n this.logger = params.logger.child({ module: 'CodeModeNatsTransport' });\n }\n\n start(params: {\n codeModeDispatcher: CodeModeDispatcher;\n sandboxId: string;\n requestTimeoutSeconds: number;\n }): Promise<{ env: Record<string, string> }> {\n this.dispatcher = params.codeModeDispatcher;\n this.sessionPromise ??= this.connectSession(params).catch((e: unknown) => {\n this.sessionPromise = undefined;\n throw e;\n });\n return this.sessionPromise;\n }\n\n async stop(): Promise<void> {\n const pending = this.sessionPromise;\n this.sessionPromise = undefined;\n if (pending !== undefined) {\n try {\n await pending;\n } catch {\n // Connect failed; nothing to drain.\n }\n }\n const nc = this.nc;\n this.nc = undefined;\n if (nc === undefined) return;\n try {\n await withTimeout(nc.drain(), NATS_DRAIN_TIMEOUT_MS);\n } catch (e) {\n this.logger.warn('Code Mode NATS drain failed/timed out; forcing close', extractErrorLogFields(e));\n await nc.close().catch(() => {\n /* no-op */\n });\n }\n }\n\n private async connectSession(params: {\n sandboxId: string;\n requestTimeoutSeconds: number;\n }): Promise<{ env: Record<string, string> }> {\n const url = await this.resolveHostUrl(params.sandboxId);\n const subjectPrefix = `${SANDBOX_NATS_SUBJECT_ROOT}.${randomUUID()}`;\n let lastErr: unknown;\n let nc: NatsConnection | undefined;\n for (let attempt = 1; attempt <= NATS_CONNECT_RETRIES; attempt++) {\n try {\n nc = await context.with(suppressTracing(context.active()), () =>\n wsconnect({ servers: [url], timeout: NATS_CONNECT_TIMEOUT_MS }),\n );\n this.logger.info(`Connected to sandbox NATS (attempt ${String(attempt)})`, { subjectPrefix });\n break;\n } catch (e) {\n lastErr = e;\n this.logger.warn(`Code Mode NATS connect attempt ${String(attempt)} failed`, extractErrorLogFields(e));\n if (attempt < NATS_CONNECT_RETRIES) {\n await new Promise(resolve => setTimeout(resolve, NATS_CONNECT_BACKOFF_MS));\n }\n }\n }\n if (nc === undefined) {\n throw lastErr instanceof Error ? lastErr : new Error('Code Mode NATS connect failed');\n }\n\n this.nc = nc;\n this.subscribe(nc, subjectPrefix);\n\n const cachedPromise = this.sessionPromise;\n void nc.closed().then(() => {\n if (this.sessionPromise === cachedPromise) {\n this.sessionPromise = undefined;\n this.nc = undefined;\n this.logger.info('Code Mode NATS connection closed; session invalidated', {\n sandboxId: params.sandboxId,\n });\n }\n });\n\n return {\n env: {\n TFY_NATS_URL: this.sandboxClientNatsUrl,\n TFY_NATS_SUBJECT_PREFIX: subjectPrefix,\n TFY_CM_REQUEST_TIMEOUT_SECONDS: String(params.requestTimeoutSeconds),\n },\n };\n }\n\n private subscribe(nc: NatsConnection, subjectPrefix: string): void {\n nc.subscribe(`${subjectPrefix}.${SANDBOX_NATS_MCP_LEAF}`, {\n callback: (err, msg) => {\n void this.handleMessage(err, msg);\n },\n });\n }\n\n private async handleMessage(err: Error | null, msg: Msg): Promise<void> {\n if (err) {\n this.logger.error('Code Mode NATS subscription error', extractErrorLogFields(err));\n return;\n }\n if (!msg.reply) {\n this.logger.warn(`Code Mode NATS request on '${msg.subject}' has no reply subject; dropping`);\n return;\n }\n\n const dispatcher = this.dispatcher;\n if (dispatcher === undefined) {\n try {\n msg.respond(this.encode({ ok: false, error: 'Code Mode dispatcher is not configured', source: 'internal' }));\n } catch (e) {\n this.logger.warn(`Failed to send dispatcher-missing reply on '${msg.subject}'`, extractErrorLogFields(e));\n }\n return;\n }\n\n const carrier: Record<string, string> = {};\n const traceparent = msg.headers?.get('traceparent');\n const tracestate = msg.headers?.get('tracestate');\n if (traceparent) carrier['traceparent'] = traceparent;\n if (tracestate) carrier['tracestate'] = tracestate;\n\n let request: CodeModeRequest;\n try {\n request = this.decode(msg);\n } catch (e) {\n this.logger.error(`Failed to decode Code Mode NATS request on '${msg.subject}'`, extractErrorLogFields(e));\n try {\n msg.respond(this.encode({ ok: false, error: 'Malformed Code Mode request', source: 'caller' }));\n } catch (respondErr) {\n this.logger.warn(`Failed to send decode-error reply on '${msg.subject}'`, extractErrorLogFields(respondErr));\n }\n return;\n }\n\n const reply = await dispatcher.dispatch({ request, traceCarrier: carrier });\n try {\n msg.respond(this.encode(reply));\n } catch (e) {\n this.logger.error('Failed to publish Code Mode NATS reply', extractErrorLogFields(e));\n }\n }\n\n private encode(reply: CodeModeReply): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(reply));\n }\n\n private decode(msg: Msg): CodeModeRequest {\n const raw: unknown = JSON.parse(new TextDecoder().decode(msg.data));\n return CodeModeRequestSchema.parse(raw);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
// src/core/sandbox/codeMode/nats/CodeModeNatsTransport.ts
|
|
2
|
+
import { wsconnect } from "@nats-io/nats-core";
|
|
3
|
+
import { context } from "@opentelemetry/api";
|
|
4
|
+
import { suppressTracing } from "@opentelemetry/core";
|
|
5
|
+
import { randomUUID } from "crypto";
|
|
6
|
+
import { WebSocket } from "ws";
|
|
7
|
+
import { extractErrorLogFields } from "../../../util/errorLogFields.mjs";
|
|
8
|
+
import { withTimeout } from "../../../util/promiseUtils.mjs";
|
|
9
|
+
import { DEFAULT_SANDBOX_NATS_WS_PORT } from "../../constants.mjs";
|
|
10
|
+
import { CodeModeRequestSchema } from "../types.mjs";
|
|
11
|
+
Object.assign(global, { WebSocket });
|
|
12
|
+
var NATS_CONNECT_TIMEOUT_MS = 1e4;
|
|
13
|
+
var NATS_CONNECT_RETRIES = 3;
|
|
14
|
+
var NATS_CONNECT_BACKOFF_MS = 250;
|
|
15
|
+
var NATS_DRAIN_TIMEOUT_MS = 5e3;
|
|
16
|
+
var SANDBOX_NATS_SUBJECT_ROOT = "sandbox.bridge";
|
|
17
|
+
var SANDBOX_NATS_MCP_LEAF = "mcp";
|
|
18
|
+
var CodeModeNatsTransport = class {
|
|
19
|
+
resolveHostUrl;
|
|
20
|
+
sandboxClientNatsUrl;
|
|
21
|
+
logger;
|
|
22
|
+
sessionPromise;
|
|
23
|
+
nc;
|
|
24
|
+
dispatcher;
|
|
25
|
+
constructor(params) {
|
|
26
|
+
this.resolveHostUrl = params.resolveHostUrl;
|
|
27
|
+
this.sandboxClientNatsUrl = params.sandboxClientNatsUrl ?? `ws://localhost:${String(DEFAULT_SANDBOX_NATS_WS_PORT)}`;
|
|
28
|
+
this.logger = params.logger.child({ module: "CodeModeNatsTransport" });
|
|
29
|
+
}
|
|
30
|
+
start(params) {
|
|
31
|
+
this.dispatcher = params.codeModeDispatcher;
|
|
32
|
+
this.sessionPromise ??= this.connectSession(params).catch((e) => {
|
|
33
|
+
this.sessionPromise = void 0;
|
|
34
|
+
throw e;
|
|
35
|
+
});
|
|
36
|
+
return this.sessionPromise;
|
|
37
|
+
}
|
|
38
|
+
async stop() {
|
|
39
|
+
const pending = this.sessionPromise;
|
|
40
|
+
this.sessionPromise = void 0;
|
|
41
|
+
if (pending !== void 0) {
|
|
42
|
+
try {
|
|
43
|
+
await pending;
|
|
44
|
+
} catch {
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
const nc = this.nc;
|
|
48
|
+
this.nc = void 0;
|
|
49
|
+
if (nc === void 0) return;
|
|
50
|
+
try {
|
|
51
|
+
await withTimeout(nc.drain(), NATS_DRAIN_TIMEOUT_MS);
|
|
52
|
+
} catch (e) {
|
|
53
|
+
this.logger.warn("Code Mode NATS drain failed/timed out; forcing close", extractErrorLogFields(e));
|
|
54
|
+
await nc.close().catch(() => {
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
async connectSession(params) {
|
|
59
|
+
const url = await this.resolveHostUrl(params.sandboxId);
|
|
60
|
+
const subjectPrefix = `${SANDBOX_NATS_SUBJECT_ROOT}.${randomUUID()}`;
|
|
61
|
+
let lastErr;
|
|
62
|
+
let nc;
|
|
63
|
+
for (let attempt = 1; attempt <= NATS_CONNECT_RETRIES; attempt++) {
|
|
64
|
+
try {
|
|
65
|
+
nc = await context.with(
|
|
66
|
+
suppressTracing(context.active()),
|
|
67
|
+
() => wsconnect({ servers: [url], timeout: NATS_CONNECT_TIMEOUT_MS })
|
|
68
|
+
);
|
|
69
|
+
this.logger.info(`Connected to sandbox NATS (attempt ${String(attempt)})`, { subjectPrefix });
|
|
70
|
+
break;
|
|
71
|
+
} catch (e) {
|
|
72
|
+
lastErr = e;
|
|
73
|
+
this.logger.warn(`Code Mode NATS connect attempt ${String(attempt)} failed`, extractErrorLogFields(e));
|
|
74
|
+
if (attempt < NATS_CONNECT_RETRIES) {
|
|
75
|
+
await new Promise((resolve) => setTimeout(resolve, NATS_CONNECT_BACKOFF_MS));
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
if (nc === void 0) {
|
|
80
|
+
throw lastErr instanceof Error ? lastErr : new Error("Code Mode NATS connect failed");
|
|
81
|
+
}
|
|
82
|
+
this.nc = nc;
|
|
83
|
+
this.subscribe(nc, subjectPrefix);
|
|
84
|
+
const cachedPromise = this.sessionPromise;
|
|
85
|
+
void nc.closed().then(() => {
|
|
86
|
+
if (this.sessionPromise === cachedPromise) {
|
|
87
|
+
this.sessionPromise = void 0;
|
|
88
|
+
this.nc = void 0;
|
|
89
|
+
this.logger.info("Code Mode NATS connection closed; session invalidated", {
|
|
90
|
+
sandboxId: params.sandboxId
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
return {
|
|
95
|
+
env: {
|
|
96
|
+
TFY_NATS_URL: this.sandboxClientNatsUrl,
|
|
97
|
+
TFY_NATS_SUBJECT_PREFIX: subjectPrefix,
|
|
98
|
+
TFY_CM_REQUEST_TIMEOUT_SECONDS: String(params.requestTimeoutSeconds)
|
|
99
|
+
}
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
subscribe(nc, subjectPrefix) {
|
|
103
|
+
nc.subscribe(`${subjectPrefix}.${SANDBOX_NATS_MCP_LEAF}`, {
|
|
104
|
+
callback: (err, msg) => {
|
|
105
|
+
void this.handleMessage(err, msg);
|
|
106
|
+
}
|
|
107
|
+
});
|
|
108
|
+
}
|
|
109
|
+
async handleMessage(err, msg) {
|
|
110
|
+
if (err) {
|
|
111
|
+
this.logger.error("Code Mode NATS subscription error", extractErrorLogFields(err));
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (!msg.reply) {
|
|
115
|
+
this.logger.warn(`Code Mode NATS request on '${msg.subject}' has no reply subject; dropping`);
|
|
116
|
+
return;
|
|
117
|
+
}
|
|
118
|
+
const dispatcher = this.dispatcher;
|
|
119
|
+
if (dispatcher === void 0) {
|
|
120
|
+
try {
|
|
121
|
+
msg.respond(this.encode({ ok: false, error: "Code Mode dispatcher is not configured", source: "internal" }));
|
|
122
|
+
} catch (e) {
|
|
123
|
+
this.logger.warn(`Failed to send dispatcher-missing reply on '${msg.subject}'`, extractErrorLogFields(e));
|
|
124
|
+
}
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
const carrier = {};
|
|
128
|
+
const traceparent = msg.headers?.get("traceparent");
|
|
129
|
+
const tracestate = msg.headers?.get("tracestate");
|
|
130
|
+
if (traceparent) carrier["traceparent"] = traceparent;
|
|
131
|
+
if (tracestate) carrier["tracestate"] = tracestate;
|
|
132
|
+
let request;
|
|
133
|
+
try {
|
|
134
|
+
request = this.decode(msg);
|
|
135
|
+
} catch (e) {
|
|
136
|
+
this.logger.error(`Failed to decode Code Mode NATS request on '${msg.subject}'`, extractErrorLogFields(e));
|
|
137
|
+
try {
|
|
138
|
+
msg.respond(this.encode({ ok: false, error: "Malformed Code Mode request", source: "caller" }));
|
|
139
|
+
} catch (respondErr) {
|
|
140
|
+
this.logger.warn(`Failed to send decode-error reply on '${msg.subject}'`, extractErrorLogFields(respondErr));
|
|
141
|
+
}
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
const reply = await dispatcher.dispatch({ request, traceCarrier: carrier });
|
|
145
|
+
try {
|
|
146
|
+
msg.respond(this.encode(reply));
|
|
147
|
+
} catch (e) {
|
|
148
|
+
this.logger.error("Failed to publish Code Mode NATS reply", extractErrorLogFields(e));
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
encode(reply) {
|
|
152
|
+
return new TextEncoder().encode(JSON.stringify(reply));
|
|
153
|
+
}
|
|
154
|
+
decode(msg) {
|
|
155
|
+
const raw = JSON.parse(new TextDecoder().decode(msg.data));
|
|
156
|
+
return CodeModeRequestSchema.parse(raw);
|
|
157
|
+
}
|
|
158
|
+
};
|
|
159
|
+
export {
|
|
160
|
+
CodeModeNatsTransport
|
|
161
|
+
};
|
|
162
|
+
//# sourceMappingURL=CodeModeNatsTransport.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../../src/core/sandbox/codeMode/nats/CodeModeNatsTransport.ts"],"sourcesContent":["import { wsconnect, type Msg, type NatsConnection } from '@nats-io/nats-core';\nimport { context } from '@opentelemetry/api';\nimport { suppressTracing } from '@opentelemetry/core';\nimport { randomUUID } from 'node:crypto';\nimport type { Logger } from 'winston';\nimport { WebSocket } from 'ws';\nimport { extractErrorLogFields } from '../../../util/errorLogFields';\nimport { withTimeout } from '../../../util/promiseUtils';\nimport { DEFAULT_SANDBOX_NATS_WS_PORT } from '../../constants';\nimport type { CodeModeDispatcher } from '../CodeModeDispatcher';\nimport type { CodeModeTransport } from '../CodeModeTransport';\nimport { CodeModeRequestSchema, type CodeModeReply, type CodeModeRequest } from '../types';\n\n// `wsconnect` from @nats-io/nats-core relies on a global WebSocket constructor; in Node we\n// provide it from `ws`. Same pattern as `src/services/NatsService.ts`.\nObject.assign(global, { WebSocket });\n\nconst NATS_CONNECT_TIMEOUT_MS = 10_000;\nconst NATS_CONNECT_RETRIES = 3;\nconst NATS_CONNECT_BACKOFF_MS = 250;\nconst NATS_DRAIN_TIMEOUT_MS = 5_000;\n\nconst SANDBOX_NATS_SUBJECT_ROOT = 'sandbox.bridge';\nconst SANDBOX_NATS_MCP_LEAF = 'mcp';\n\n/**\n * NATS Code Mode transport. Session cache + connection-drop invalidate live here\n * (no `whenClosed` on the public interface).\n */\nexport class CodeModeNatsTransport implements CodeModeTransport {\n private readonly resolveHostUrl: (sandboxId: string) => Promise<string>;\n private readonly sandboxClientNatsUrl: string;\n private readonly logger: Logger;\n\n private sessionPromise: Promise<{ env: Record<string, string> }> | undefined;\n private nc: NatsConnection | undefined;\n private dispatcher: CodeModeDispatcher | undefined;\n\n constructor(params: {\n resolveHostUrl: (sandboxId: string) => Promise<string>;\n sandboxClientNatsUrl?: string;\n logger: Logger;\n }) {\n this.resolveHostUrl = params.resolveHostUrl;\n this.sandboxClientNatsUrl = params.sandboxClientNatsUrl ?? `ws://localhost:${String(DEFAULT_SANDBOX_NATS_WS_PORT)}`;\n this.logger = params.logger.child({ module: 'CodeModeNatsTransport' });\n }\n\n start(params: {\n codeModeDispatcher: CodeModeDispatcher;\n sandboxId: string;\n requestTimeoutSeconds: number;\n }): Promise<{ env: Record<string, string> }> {\n this.dispatcher = params.codeModeDispatcher;\n this.sessionPromise ??= this.connectSession(params).catch((e: unknown) => {\n this.sessionPromise = undefined;\n throw e;\n });\n return this.sessionPromise;\n }\n\n async stop(): Promise<void> {\n const pending = this.sessionPromise;\n this.sessionPromise = undefined;\n if (pending !== undefined) {\n try {\n await pending;\n } catch {\n // Connect failed; nothing to drain.\n }\n }\n const nc = this.nc;\n this.nc = undefined;\n if (nc === undefined) return;\n try {\n await withTimeout(nc.drain(), NATS_DRAIN_TIMEOUT_MS);\n } catch (e) {\n this.logger.warn('Code Mode NATS drain failed/timed out; forcing close', extractErrorLogFields(e));\n await nc.close().catch(() => {\n /* no-op */\n });\n }\n }\n\n private async connectSession(params: {\n sandboxId: string;\n requestTimeoutSeconds: number;\n }): Promise<{ env: Record<string, string> }> {\n const url = await this.resolveHostUrl(params.sandboxId);\n const subjectPrefix = `${SANDBOX_NATS_SUBJECT_ROOT}.${randomUUID()}`;\n let lastErr: unknown;\n let nc: NatsConnection | undefined;\n for (let attempt = 1; attempt <= NATS_CONNECT_RETRIES; attempt++) {\n try {\n nc = await context.with(suppressTracing(context.active()), () =>\n wsconnect({ servers: [url], timeout: NATS_CONNECT_TIMEOUT_MS }),\n );\n this.logger.info(`Connected to sandbox NATS (attempt ${String(attempt)})`, { subjectPrefix });\n break;\n } catch (e) {\n lastErr = e;\n this.logger.warn(`Code Mode NATS connect attempt ${String(attempt)} failed`, extractErrorLogFields(e));\n if (attempt < NATS_CONNECT_RETRIES) {\n await new Promise(resolve => setTimeout(resolve, NATS_CONNECT_BACKOFF_MS));\n }\n }\n }\n if (nc === undefined) {\n throw lastErr instanceof Error ? lastErr : new Error('Code Mode NATS connect failed');\n }\n\n this.nc = nc;\n this.subscribe(nc, subjectPrefix);\n\n const cachedPromise = this.sessionPromise;\n void nc.closed().then(() => {\n if (this.sessionPromise === cachedPromise) {\n this.sessionPromise = undefined;\n this.nc = undefined;\n this.logger.info('Code Mode NATS connection closed; session invalidated', {\n sandboxId: params.sandboxId,\n });\n }\n });\n\n return {\n env: {\n TFY_NATS_URL: this.sandboxClientNatsUrl,\n TFY_NATS_SUBJECT_PREFIX: subjectPrefix,\n TFY_CM_REQUEST_TIMEOUT_SECONDS: String(params.requestTimeoutSeconds),\n },\n };\n }\n\n private subscribe(nc: NatsConnection, subjectPrefix: string): void {\n nc.subscribe(`${subjectPrefix}.${SANDBOX_NATS_MCP_LEAF}`, {\n callback: (err, msg) => {\n void this.handleMessage(err, msg);\n },\n });\n }\n\n private async handleMessage(err: Error | null, msg: Msg): Promise<void> {\n if (err) {\n this.logger.error('Code Mode NATS subscription error', extractErrorLogFields(err));\n return;\n }\n if (!msg.reply) {\n this.logger.warn(`Code Mode NATS request on '${msg.subject}' has no reply subject; dropping`);\n return;\n }\n\n const dispatcher = this.dispatcher;\n if (dispatcher === undefined) {\n try {\n msg.respond(this.encode({ ok: false, error: 'Code Mode dispatcher is not configured', source: 'internal' }));\n } catch (e) {\n this.logger.warn(`Failed to send dispatcher-missing reply on '${msg.subject}'`, extractErrorLogFields(e));\n }\n return;\n }\n\n const carrier: Record<string, string> = {};\n const traceparent = msg.headers?.get('traceparent');\n const tracestate = msg.headers?.get('tracestate');\n if (traceparent) carrier['traceparent'] = traceparent;\n if (tracestate) carrier['tracestate'] = tracestate;\n\n let request: CodeModeRequest;\n try {\n request = this.decode(msg);\n } catch (e) {\n this.logger.error(`Failed to decode Code Mode NATS request on '${msg.subject}'`, extractErrorLogFields(e));\n try {\n msg.respond(this.encode({ ok: false, error: 'Malformed Code Mode request', source: 'caller' }));\n } catch (respondErr) {\n this.logger.warn(`Failed to send decode-error reply on '${msg.subject}'`, extractErrorLogFields(respondErr));\n }\n return;\n }\n\n const reply = await dispatcher.dispatch({ request, traceCarrier: carrier });\n try {\n msg.respond(this.encode(reply));\n } catch (e) {\n this.logger.error('Failed to publish Code Mode NATS reply', extractErrorLogFields(e));\n }\n }\n\n private encode(reply: CodeModeReply): Uint8Array {\n return new TextEncoder().encode(JSON.stringify(reply));\n }\n\n private decode(msg: Msg): CodeModeRequest {\n const raw: unknown = JSON.parse(new TextDecoder().decode(msg.data));\n return CodeModeRequestSchema.parse(raw);\n }\n}\n"],"mappings":"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","names":[]}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared Code Mode request/reply wire shapes (NATS body and UDS JSON).
|
|
3
|
+
*/
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
export declare const CodeModeRequestSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
6
|
+
op: z.ZodLiteral<"list_tools">;
|
|
7
|
+
server: z.ZodString;
|
|
8
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
9
|
+
op: z.ZodLiteral<"call_tool">;
|
|
10
|
+
server: z.ZodString;
|
|
11
|
+
tool: z.ZodString;
|
|
12
|
+
arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
13
|
+
}, z.core.$strip>], "op">;
|
|
14
|
+
export type CodeModeRequest = z.infer<typeof CodeModeRequestSchema>;
|
|
15
|
+
export declare const CodeModeErrorSourceSchema: z.ZodEnum<{
|
|
16
|
+
caller: "caller";
|
|
17
|
+
internal: "internal";
|
|
18
|
+
transport: "transport";
|
|
19
|
+
}>;
|
|
20
|
+
export type CodeModeErrorSource = z.infer<typeof CodeModeErrorSourceSchema>;
|
|
21
|
+
export declare const CodeModeReplySchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
22
|
+
ok: z.ZodLiteral<true>;
|
|
23
|
+
result: z.ZodUnknown;
|
|
24
|
+
}, z.core.$strip>, z.ZodObject<{
|
|
25
|
+
ok: z.ZodLiteral<false>;
|
|
26
|
+
error: z.ZodString;
|
|
27
|
+
source: z.ZodEnum<{
|
|
28
|
+
caller: "caller";
|
|
29
|
+
internal: "internal";
|
|
30
|
+
transport: "transport";
|
|
31
|
+
}>;
|
|
32
|
+
}, z.core.$strip>], "ok">;
|
|
33
|
+
export type CodeModeReply = z.infer<typeof CodeModeReplySchema>;
|
|
34
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/core/sandbox/codeMode/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,qBAAqB;;;;;;;;yBAWhC,CAAC;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAEpE,eAAO,MAAM,yBAAyB;;;;EAA8C,CAAC;AACrF,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AAE5E,eAAO,MAAM,mBAAmB;;;;;;;;;;;yBAU9B,CAAC;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,mBAAmB,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/core/sandbox/codeMode/types.ts
|
|
21
|
+
var types_exports = {};
|
|
22
|
+
__export(types_exports, {
|
|
23
|
+
CodeModeErrorSourceSchema: () => CodeModeErrorSourceSchema,
|
|
24
|
+
CodeModeReplySchema: () => CodeModeReplySchema,
|
|
25
|
+
CodeModeRequestSchema: () => CodeModeRequestSchema
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(types_exports);
|
|
28
|
+
var import_zod = require("zod");
|
|
29
|
+
var CodeModeRequestSchema = import_zod.z.discriminatedUnion("op", [
|
|
30
|
+
import_zod.z.object({
|
|
31
|
+
op: import_zod.z.literal("list_tools"),
|
|
32
|
+
server: import_zod.z.string().min(1)
|
|
33
|
+
}),
|
|
34
|
+
import_zod.z.object({
|
|
35
|
+
op: import_zod.z.literal("call_tool"),
|
|
36
|
+
server: import_zod.z.string().min(1),
|
|
37
|
+
tool: import_zod.z.string().min(1),
|
|
38
|
+
arguments: import_zod.z.record(import_zod.z.string(), import_zod.z.unknown()).optional()
|
|
39
|
+
})
|
|
40
|
+
]);
|
|
41
|
+
var CodeModeErrorSourceSchema = import_zod.z.enum(["internal", "caller", "transport"]);
|
|
42
|
+
var CodeModeReplySchema = import_zod.z.discriminatedUnion("ok", [
|
|
43
|
+
import_zod.z.object({
|
|
44
|
+
ok: import_zod.z.literal(true),
|
|
45
|
+
result: import_zod.z.unknown()
|
|
46
|
+
}),
|
|
47
|
+
import_zod.z.object({
|
|
48
|
+
ok: import_zod.z.literal(false),
|
|
49
|
+
error: import_zod.z.string(),
|
|
50
|
+
source: CodeModeErrorSourceSchema
|
|
51
|
+
})
|
|
52
|
+
]);
|
|
53
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
54
|
+
0 && (module.exports = {
|
|
55
|
+
CodeModeErrorSourceSchema,
|
|
56
|
+
CodeModeReplySchema,
|
|
57
|
+
CodeModeRequestSchema
|
|
58
|
+
});
|
|
59
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/sandbox/codeMode/types.ts"],"sourcesContent":["/**\n * Shared Code Mode request/reply wire shapes (NATS body and UDS JSON).\n */\nimport { z } from 'zod';\n\nexport const CodeModeRequestSchema = z.discriminatedUnion('op', [\n z.object({\n op: z.literal('list_tools'),\n server: z.string().min(1),\n }),\n z.object({\n op: z.literal('call_tool'),\n server: z.string().min(1),\n tool: z.string().min(1),\n arguments: z.record(z.string(), z.unknown()).optional(),\n }),\n]);\nexport type CodeModeRequest = z.infer<typeof CodeModeRequestSchema>;\n\nexport const CodeModeErrorSourceSchema = z.enum(['internal', 'caller', 'transport']);\nexport type CodeModeErrorSource = z.infer<typeof CodeModeErrorSourceSchema>;\n\nexport const CodeModeReplySchema = z.discriminatedUnion('ok', [\n z.object({\n ok: z.literal(true),\n result: z.unknown(),\n }),\n z.object({\n ok: z.literal(false),\n error: z.string(),\n source: CodeModeErrorSourceSchema,\n }),\n]);\nexport type CodeModeReply = z.infer<typeof CodeModeReplySchema>;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAkB;AAEX,IAAM,wBAAwB,aAAE,mBAAmB,MAAM;AAAA,EAC9D,aAAE,OAAO;AAAA,IACP,IAAI,aAAE,QAAQ,YAAY;AAAA,IAC1B,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,CAAC;AAAA,EACD,aAAE,OAAO;AAAA,IACP,IAAI,aAAE,QAAQ,WAAW;AAAA,IACzB,QAAQ,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,MAAM,aAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,WAAW,aAAE,OAAO,aAAE,OAAO,GAAG,aAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACxD,CAAC;AACH,CAAC;AAGM,IAAM,4BAA4B,aAAE,KAAK,CAAC,YAAY,UAAU,WAAW,CAAC;AAG5E,IAAM,sBAAsB,aAAE,mBAAmB,MAAM;AAAA,EAC5D,aAAE,OAAO;AAAA,IACP,IAAI,aAAE,QAAQ,IAAI;AAAA,IAClB,QAAQ,aAAE,QAAQ;AAAA,EACpB,CAAC;AAAA,EACD,aAAE,OAAO;AAAA,IACP,IAAI,aAAE,QAAQ,KAAK;AAAA,IACnB,OAAO,aAAE,OAAO;AAAA,IAChB,QAAQ;AAAA,EACV,CAAC;AACH,CAAC;","names":[]}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/core/sandbox/codeMode/types.ts
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
var CodeModeRequestSchema = z.discriminatedUnion("op", [
|
|
4
|
+
z.object({
|
|
5
|
+
op: z.literal("list_tools"),
|
|
6
|
+
server: z.string().min(1)
|
|
7
|
+
}),
|
|
8
|
+
z.object({
|
|
9
|
+
op: z.literal("call_tool"),
|
|
10
|
+
server: z.string().min(1),
|
|
11
|
+
tool: z.string().min(1),
|
|
12
|
+
arguments: z.record(z.string(), z.unknown()).optional()
|
|
13
|
+
})
|
|
14
|
+
]);
|
|
15
|
+
var CodeModeErrorSourceSchema = z.enum(["internal", "caller", "transport"]);
|
|
16
|
+
var CodeModeReplySchema = z.discriminatedUnion("ok", [
|
|
17
|
+
z.object({
|
|
18
|
+
ok: z.literal(true),
|
|
19
|
+
result: z.unknown()
|
|
20
|
+
}),
|
|
21
|
+
z.object({
|
|
22
|
+
ok: z.literal(false),
|
|
23
|
+
error: z.string(),
|
|
24
|
+
source: CodeModeErrorSourceSchema
|
|
25
|
+
})
|
|
26
|
+
]);
|
|
27
|
+
export {
|
|
28
|
+
CodeModeErrorSourceSchema,
|
|
29
|
+
CodeModeReplySchema,
|
|
30
|
+
CodeModeRequestSchema
|
|
31
|
+
};
|
|
32
|
+
//# sourceMappingURL=types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/core/sandbox/codeMode/types.ts"],"sourcesContent":["/**\n * Shared Code Mode request/reply wire shapes (NATS body and UDS JSON).\n */\nimport { z } from 'zod';\n\nexport const CodeModeRequestSchema = z.discriminatedUnion('op', [\n z.object({\n op: z.literal('list_tools'),\n server: z.string().min(1),\n }),\n z.object({\n op: z.literal('call_tool'),\n server: z.string().min(1),\n tool: z.string().min(1),\n arguments: z.record(z.string(), z.unknown()).optional(),\n }),\n]);\nexport type CodeModeRequest = z.infer<typeof CodeModeRequestSchema>;\n\nexport const CodeModeErrorSourceSchema = z.enum(['internal', 'caller', 'transport']);\nexport type CodeModeErrorSource = z.infer<typeof CodeModeErrorSourceSchema>;\n\nexport const CodeModeReplySchema = z.discriminatedUnion('ok', [\n z.object({\n ok: z.literal(true),\n result: z.unknown(),\n }),\n z.object({\n ok: z.literal(false),\n error: z.string(),\n source: CodeModeErrorSourceSchema,\n }),\n]);\nexport type CodeModeReply = z.infer<typeof CodeModeReplySchema>;\n"],"mappings":";AAGA,SAAS,SAAS;AAEX,IAAM,wBAAwB,EAAE,mBAAmB,MAAM;AAAA,EAC9D,EAAE,OAAO;AAAA,IACP,IAAI,EAAE,QAAQ,YAAY;AAAA,IAC1B,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,EAC1B,CAAC;AAAA,EACD,EAAE,OAAO;AAAA,IACP,IAAI,EAAE,QAAQ,WAAW;AAAA,IACzB,QAAQ,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACxB,MAAM,EAAE,OAAO,EAAE,IAAI,CAAC;AAAA,IACtB,WAAW,EAAE,OAAO,EAAE,OAAO,GAAG,EAAE,QAAQ,CAAC,EAAE,SAAS;AAAA,EACxD,CAAC;AACH,CAAC;AAGM,IAAM,4BAA4B,EAAE,KAAK,CAAC,YAAY,UAAU,WAAW,CAAC;AAG5E,IAAM,sBAAsB,EAAE,mBAAmB,MAAM;AAAA,EAC5D,EAAE,OAAO;AAAA,IACP,IAAI,EAAE,QAAQ,IAAI;AAAA,IAClB,QAAQ,EAAE,QAAQ;AAAA,EACpB,CAAC;AAAA,EACD,EAAE,OAAO;AAAA,IACP,IAAI,EAAE,QAAQ,KAAK;AAAA,IACnB,OAAO,EAAE,OAAO;AAAA,IAChB,QAAQ;AAAA,EACV,CAAC;AACH,CAAC;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/** Stable directory inside the sandbox for user file uploads (mkdir during sandbox init). */
|
|
2
|
+
export declare const SANDBOX_FILE_UPLOADS_DIR = "/tmp/uploads";
|
|
3
|
+
/** Default port of the pod-local NATS WebSocket broker used by the sandbox→gateway MCP bridge. */
|
|
4
|
+
export declare const DEFAULT_SANDBOX_NATS_WS_PORT = 4444;
|
|
5
|
+
/**
|
|
6
|
+
* Default lifetime of a Daytona signed preview URL for the NATS bridge.
|
|
7
|
+
* Matches the gateway's default AGENT_RESPONSE_MAX_EXECUTION_TIME_MS (1 hour).
|
|
8
|
+
*/
|
|
9
|
+
export declare const DEFAULT_PREVIEW_URL_EXPIRY_SECONDS = 3600;
|
|
10
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../src/core/sandbox/constants.ts"],"names":[],"mappings":"AAAA,6FAA6F;AAC7F,eAAO,MAAM,wBAAwB,iBAAiB,CAAC;AAEvD,kGAAkG;AAClG,eAAO,MAAM,4BAA4B,OAAO,CAAC;AAEjD;;;GAGG;AACH,eAAO,MAAM,kCAAkC,OAAO,CAAC"}
|
|
@@ -0,0 +1,37 @@
|
|
|
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 __export = (target, all) => {
|
|
7
|
+
for (var name in all)
|
|
8
|
+
__defProp(target, name, { get: all[name], enumerable: true });
|
|
9
|
+
};
|
|
10
|
+
var __copyProps = (to, from, except, desc) => {
|
|
11
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
12
|
+
for (let key of __getOwnPropNames(from))
|
|
13
|
+
if (!__hasOwnProp.call(to, key) && key !== except)
|
|
14
|
+
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
|
|
15
|
+
}
|
|
16
|
+
return to;
|
|
17
|
+
};
|
|
18
|
+
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
|
|
19
|
+
|
|
20
|
+
// src/core/sandbox/constants.ts
|
|
21
|
+
var constants_exports = {};
|
|
22
|
+
__export(constants_exports, {
|
|
23
|
+
DEFAULT_PREVIEW_URL_EXPIRY_SECONDS: () => DEFAULT_PREVIEW_URL_EXPIRY_SECONDS,
|
|
24
|
+
DEFAULT_SANDBOX_NATS_WS_PORT: () => DEFAULT_SANDBOX_NATS_WS_PORT,
|
|
25
|
+
SANDBOX_FILE_UPLOADS_DIR: () => SANDBOX_FILE_UPLOADS_DIR
|
|
26
|
+
});
|
|
27
|
+
module.exports = __toCommonJS(constants_exports);
|
|
28
|
+
var SANDBOX_FILE_UPLOADS_DIR = "/tmp/uploads";
|
|
29
|
+
var DEFAULT_SANDBOX_NATS_WS_PORT = 4444;
|
|
30
|
+
var DEFAULT_PREVIEW_URL_EXPIRY_SECONDS = 3600;
|
|
31
|
+
// Annotate the CommonJS export names for ESM import in node:
|
|
32
|
+
0 && (module.exports = {
|
|
33
|
+
DEFAULT_PREVIEW_URL_EXPIRY_SECONDS,
|
|
34
|
+
DEFAULT_SANDBOX_NATS_WS_PORT,
|
|
35
|
+
SANDBOX_FILE_UPLOADS_DIR
|
|
36
|
+
});
|
|
37
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/sandbox/constants.ts"],"sourcesContent":["/** Stable directory inside the sandbox for user file uploads (mkdir during sandbox init). */\nexport const SANDBOX_FILE_UPLOADS_DIR = '/tmp/uploads';\n\n/** Default port of the pod-local NATS WebSocket broker used by the sandbox→gateway MCP bridge. */\nexport const DEFAULT_SANDBOX_NATS_WS_PORT = 4444;\n\n/**\n * Default lifetime of a Daytona signed preview URL for the NATS bridge.\n * Matches the gateway's default AGENT_RESPONSE_MAX_EXECUTION_TIME_MS (1 hour).\n */\nexport const DEFAULT_PREVIEW_URL_EXPIRY_SECONDS = 3600;\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACO,IAAM,2BAA2B;AAGjC,IAAM,+BAA+B;AAMrC,IAAM,qCAAqC;","names":[]}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
// src/core/sandbox/constants.ts
|
|
2
|
+
var SANDBOX_FILE_UPLOADS_DIR = "/tmp/uploads";
|
|
3
|
+
var DEFAULT_SANDBOX_NATS_WS_PORT = 4444;
|
|
4
|
+
var DEFAULT_PREVIEW_URL_EXPIRY_SECONDS = 3600;
|
|
5
|
+
export {
|
|
6
|
+
DEFAULT_PREVIEW_URL_EXPIRY_SECONDS,
|
|
7
|
+
DEFAULT_SANDBOX_NATS_WS_PORT,
|
|
8
|
+
SANDBOX_FILE_UPLOADS_DIR
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=constants.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/sandbox/constants.ts"],"sourcesContent":["/** Stable directory inside the sandbox for user file uploads (mkdir during sandbox init). */\nexport const SANDBOX_FILE_UPLOADS_DIR = '/tmp/uploads';\n\n/** Default port of the pod-local NATS WebSocket broker used by the sandbox→gateway MCP bridge. */\nexport const DEFAULT_SANDBOX_NATS_WS_PORT = 4444;\n\n/**\n * Default lifetime of a Daytona signed preview URL for the NATS bridge.\n * Matches the gateway's default AGENT_RESPONSE_MAX_EXECUTION_TIME_MS (1 hour).\n */\nexport const DEFAULT_PREVIEW_URL_EXPIRY_SECONDS = 3600;\n"],"mappings":";AACO,IAAM,2BAA2B;AAGjC,IAAM,+BAA+B;AAMrC,IAAM,qCAAqC;","names":[]}
|