beeai-framework 0.1.29 → 0.1.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/adapters/a2a/agents/agent.cjs.map +1 -1
- package/dist/adapters/a2a/agents/agent.d.cts +2 -2
- package/dist/adapters/a2a/agents/agent.d.ts +2 -2
- package/dist/adapters/a2a/agents/agent.js.map +1 -1
- package/dist/adapters/a2a/agents/events.d.cts +1 -1
- package/dist/adapters/a2a/agents/events.d.ts +1 -1
- package/dist/adapters/a2a/agents/types.d.cts +2 -2
- package/dist/adapters/a2a/agents/types.d.ts +2 -2
- package/dist/adapters/a2a/agents/utils.cjs +52 -11
- package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
- package/dist/adapters/a2a/agents/utils.js +52 -11
- package/dist/adapters/a2a/agents/utils.js.map +1 -1
- package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
- package/dist/adapters/a2a/serve/agent_executor.d.cts +3 -3
- package/dist/adapters/a2a/serve/agent_executor.d.ts +3 -3
- package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
- package/dist/adapters/a2a/serve/server.cjs.map +1 -1
- package/dist/adapters/a2a/serve/server.d.cts +2 -2
- package/dist/adapters/a2a/serve/server.d.ts +2 -2
- package/dist/adapters/a2a/serve/server.js.map +1 -1
- package/dist/adapters/acp/agents/agent.cjs.map +1 -1
- package/dist/adapters/acp/agents/agent.d.cts +2 -2
- package/dist/adapters/acp/agents/agent.d.ts +2 -2
- package/dist/adapters/acp/agents/agent.js.map +1 -1
- package/dist/adapters/acp/agents/events.d.cts +1 -1
- package/dist/adapters/acp/agents/events.d.ts +1 -1
- package/dist/adapters/agentstack/agents/agent.cjs.map +1 -1
- package/dist/adapters/agentstack/agents/agent.d.cts +2 -2
- package/dist/adapters/agentstack/agents/agent.d.ts +2 -2
- package/dist/adapters/agentstack/agents/agent.js.map +1 -1
- package/dist/adapters/agentstack/agents/events.d.cts +1 -1
- package/dist/adapters/agentstack/agents/events.d.ts +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +2 -2
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +2 -2
- package/dist/adapters/anthropic/backend/chat.d.ts +2 -2
- package/dist/adapters/anthropic/backend/chat.js.map +1 -1
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/client.js.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/embedding.d.cts +2 -2
- package/dist/adapters/anthropic/backend/embedding.d.ts +2 -2
- package/dist/adapters/anthropic/backend/embedding.js.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +3 -3
- package/dist/adapters/azure-openai/backend/chat.d.ts +3 -3
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/client.js.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/azure-openai/backend/embedding.js.map +1 -1
- package/dist/adapters/dummy/backend/chat.cjs.map +1 -1
- package/dist/adapters/dummy/backend/chat.d.cts +2 -2
- package/dist/adapters/dummy/backend/chat.d.ts +2 -2
- package/dist/adapters/dummy/backend/chat.js.map +1 -1
- package/dist/adapters/dummy/backend/embedding.cjs.map +1 -1
- package/dist/adapters/dummy/backend/embedding.d.cts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
- package/dist/adapters/dummy/backend/embedding.js.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +3 -3
- package/dist/adapters/google-vertex/backend/chat.d.ts +3 -3
- package/dist/adapters/google-vertex/backend/chat.js.map +1 -1
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/client.js.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/embedding.d.cts +2 -2
- package/dist/adapters/google-vertex/backend/embedding.d.ts +2 -2
- package/dist/adapters/google-vertex/backend/embedding.js.map +1 -1
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +3 -3
- package/dist/adapters/groq/backend/chat.d.ts +3 -3
- package/dist/adapters/groq/backend/chat.js.map +1 -1
- package/dist/adapters/groq/backend/client.cjs.map +1 -1
- package/dist/adapters/groq/backend/client.js.map +1 -1
- package/dist/adapters/groq/backend/embedding.cjs.map +1 -1
- package/dist/adapters/groq/backend/embedding.d.cts +2 -2
- package/dist/adapters/groq/backend/embedding.d.ts +2 -2
- package/dist/adapters/groq/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/backend/chat.cjs +6 -28
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +6 -5
- package/dist/adapters/langchain/backend/chat.d.ts +6 -5
- package/dist/adapters/langchain/backend/chat.js +6 -28
- package/dist/adapters/langchain/backend/chat.js.map +1 -1
- package/dist/adapters/langchain/backend/embedding.cjs +3 -2
- package/dist/adapters/langchain/backend/embedding.cjs.map +1 -1
- package/dist/adapters/langchain/backend/embedding.d.cts +3 -3
- package/dist/adapters/langchain/backend/embedding.d.ts +3 -3
- package/dist/adapters/langchain/backend/embedding.js +3 -2
- package/dist/adapters/langchain/backend/embedding.js.map +1 -1
- package/dist/adapters/langchain/backend/utils.cjs +328 -0
- package/dist/adapters/langchain/backend/utils.cjs.map +1 -0
- package/dist/adapters/langchain/backend/utils.d.cts +39 -0
- package/dist/adapters/langchain/backend/utils.d.ts +39 -0
- package/dist/adapters/langchain/backend/utils.js +324 -0
- package/dist/adapters/langchain/backend/utils.js.map +1 -0
- package/dist/adapters/langchain/tools.cjs.map +1 -1
- package/dist/adapters/langchain/tools.d.cts +2 -2
- package/dist/adapters/langchain/tools.d.ts +2 -2
- package/dist/adapters/langchain/tools.js.map +1 -1
- package/dist/adapters/mcp/serve/http_server.cjs.map +1 -1
- package/dist/adapters/mcp/serve/http_server.js.map +1 -1
- package/dist/adapters/mcp/serve/in_memory_store.cjs.map +1 -1
- package/dist/adapters/mcp/serve/in_memory_store.js.map +1 -1
- package/dist/adapters/mcp/serve/server.cjs.map +1 -1
- package/dist/adapters/mcp/serve/server.js.map +1 -1
- package/dist/adapters/minimax/backend/chat.cjs +25 -0
- package/dist/adapters/minimax/backend/chat.cjs.map +1 -0
- package/dist/adapters/minimax/backend/chat.d.cts +38 -0
- package/dist/adapters/minimax/backend/chat.d.ts +38 -0
- package/dist/adapters/minimax/backend/chat.js +23 -0
- package/dist/adapters/minimax/backend/chat.js.map +1 -0
- package/dist/adapters/minimax/backend/client.cjs +31 -0
- package/dist/adapters/minimax/backend/client.cjs.map +1 -0
- package/dist/adapters/minimax/backend/client.d.cts +17 -0
- package/dist/adapters/minimax/backend/client.d.ts +17 -0
- package/dist/adapters/minimax/backend/client.js +29 -0
- package/dist/adapters/minimax/backend/client.js.map +1 -0
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +2 -2
- package/dist/adapters/ollama/backend/chat.d.ts +2 -2
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.js.map +1 -1
- package/dist/adapters/ollama/backend/embedding.cjs.map +1 -1
- package/dist/adapters/ollama/backend/embedding.d.cts +2 -2
- package/dist/adapters/ollama/backend/embedding.d.ts +2 -2
- package/dist/adapters/ollama/backend/embedding.js.map +1 -1
- package/dist/adapters/openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +2 -2
- package/dist/adapters/openai/backend/chat.d.ts +2 -2
- package/dist/adapters/openai/backend/chat.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +2 -2
- package/dist/adapters/openai/backend/embedding.d.ts +2 -2
- package/dist/adapters/openai/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +2 -2
- package/dist/adapters/vercel/backend/chat.d.ts +2 -2
- package/dist/adapters/vercel/backend/chat.js.map +1 -1
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -1
- package/dist/adapters/vercel/backend/embedding.d.cts +2 -2
- package/dist/adapters/vercel/backend/embedding.d.ts +2 -2
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +2 -2
- package/dist/adapters/vercel/backend/utils.d.ts +2 -2
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/chat.d.cts +2 -2
- package/dist/adapters/watsonx/backend/chat.d.ts +2 -2
- package/dist/adapters/watsonx/backend/chat.js +1 -1
- package/dist/adapters/watsonx/backend/chat.js.map +1 -1
- package/dist/adapters/watsonx/backend/client.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/client.js.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -1
- package/dist/adapters/watsonx/backend/embedding.d.cts +2 -2
- package/dist/adapters/watsonx/backend/embedding.d.ts +2 -2
- package/dist/adapters/watsonx/backend/embedding.js.map +1 -1
- package/dist/adapters/xai/backend/chat.cjs.map +1 -1
- package/dist/adapters/xai/backend/chat.d.cts +2 -2
- package/dist/adapters/xai/backend/chat.d.ts +2 -2
- package/dist/adapters/xai/backend/chat.js.map +1 -1
- package/dist/adapters/xai/backend/client.cjs.map +1 -1
- package/dist/adapters/xai/backend/client.js.map +1 -1
- package/dist/{agent-CZGWXO-X.d.ts → agent-s3uhvAba.d.ts} +4 -4
- package/dist/{agent-PRlGoawI.d.cts → agent-zfT__iq9.d.cts} +4 -4
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/experimental/replan/agent.cjs.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +3 -3
- package/dist/agents/experimental/replan/agent.d.ts +3 -3
- package/dist/agents/experimental/replan/agent.js.map +1 -1
- package/dist/agents/experimental/replan/prompts.cjs.map +1 -1
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/replan/prompts.js.map +1 -1
- package/dist/agents/experimental/streamlit/agent.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +3 -3
- package/dist/agents/experimental/streamlit/agent.d.ts +3 -3
- package/dist/agents/experimental/streamlit/agent.js.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.cjs +2 -2
- package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -1
- package/dist/agents/experimental/streamlit/prompts.js +2 -2
- package/dist/agents/experimental/streamlit/prompts.js.map +1 -1
- package/dist/agents/react/agent.cjs +6 -6
- package/dist/agents/react/agent.cjs.map +1 -1
- package/dist/agents/react/agent.d.cts +4 -4
- package/dist/agents/react/agent.d.ts +4 -4
- package/dist/agents/react/agent.js.map +1 -1
- package/dist/agents/react/prompts.cjs.map +1 -1
- package/dist/agents/react/prompts.js.map +1 -1
- package/dist/agents/react/runners/base.cjs.map +1 -1
- package/dist/agents/react/runners/base.d.cts +4 -4
- package/dist/agents/react/runners/base.d.ts +4 -4
- package/dist/agents/react/runners/base.js.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/prompts.js.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.cjs.map +1 -1
- package/dist/agents/react/runners/deep-think/runner.d.cts +4 -4
- package/dist/agents/react/runners/deep-think/runner.d.ts +4 -4
- package/dist/agents/react/runners/deep-think/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.d.cts +4 -4
- package/dist/agents/react/runners/default/runner.d.ts +4 -4
- package/dist/agents/react/runners/default/runner.js.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.spec.js.map +1 -1
- package/dist/agents/react/runners/granite/prompts.cjs.map +1 -1
- package/dist/agents/react/runners/granite/prompts.js.map +1 -1
- package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +4 -4
- package/dist/agents/react/runners/granite/runner.d.ts +4 -4
- package/dist/agents/react/runners/granite/runner.js.map +1 -1
- package/dist/agents/react/types.d.cts +2 -2
- package/dist/agents/react/types.d.ts +2 -2
- package/dist/agents/requirement/agent.cjs.map +1 -1
- package/dist/agents/requirement/agent.d.cts +5 -5
- package/dist/agents/requirement/agent.d.ts +5 -5
- package/dist/agents/requirement/agent.js.map +1 -1
- package/dist/agents/requirement/prompts.d.cts +8 -8
- package/dist/agents/requirement/prompts.d.ts +8 -8
- package/dist/agents/requirement/requirements/conditional.cjs.map +1 -1
- package/dist/agents/requirement/requirements/conditional.d.cts +5 -5
- package/dist/agents/requirement/requirements/conditional.d.ts +5 -5
- package/dist/agents/requirement/requirements/conditional.js.map +1 -1
- package/dist/agents/requirement/requirements/requirement.cjs.map +1 -1
- package/dist/agents/requirement/requirements/requirement.d.cts +4 -4
- package/dist/agents/requirement/requirements/requirement.d.ts +4 -4
- package/dist/agents/requirement/requirements/requirement.js.map +1 -1
- package/dist/agents/requirement/requirements/utils.cjs.map +1 -1
- package/dist/agents/requirement/requirements/utils.d.cts +1 -1
- package/dist/agents/requirement/requirements/utils.d.ts +1 -1
- package/dist/agents/requirement/requirements/utils.js.map +1 -1
- package/dist/agents/requirement/runner.cjs.map +1 -1
- package/dist/agents/requirement/runner.d.cts +5 -5
- package/dist/agents/requirement/runner.d.ts +5 -5
- package/dist/agents/requirement/runner.js.map +1 -1
- package/dist/agents/requirement/types.d.cts +4 -4
- package/dist/agents/requirement/types.d.ts +4 -4
- package/dist/agents/requirement/utils/llm.cjs.map +1 -1
- package/dist/agents/requirement/utils/llm.d.cts +4 -4
- package/dist/agents/requirement/utils/llm.d.ts +4 -4
- package/dist/agents/requirement/utils/llm.js.map +1 -1
- package/dist/agents/requirement/utils/tool.cjs.map +1 -1
- package/dist/agents/requirement/utils/tool.d.cts +4 -4
- package/dist/agents/requirement/utils/tool.d.ts +4 -4
- package/dist/agents/requirement/utils/tool.js.map +1 -1
- package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -1
- package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -1
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +4 -4
- package/dist/agents/toolCalling/agent.d.ts +4 -4
- package/dist/agents/toolCalling/agent.js.map +1 -1
- package/dist/agents/toolCalling/prompts.cjs.map +1 -1
- package/dist/agents/toolCalling/prompts.js.map +1 -1
- package/dist/agents/toolCalling/types.d.cts +1 -1
- package/dist/agents/toolCalling/types.d.ts +1 -1
- package/dist/agents/types.d.cts +2 -2
- package/dist/agents/types.d.ts +2 -2
- package/dist/backend/backend.cjs.map +1 -1
- package/dist/backend/backend.d.cts +3 -3
- package/dist/backend/backend.d.ts +3 -3
- package/dist/backend/backend.js.map +1 -1
- package/dist/backend/chat.cjs.map +1 -1
- package/dist/backend/chat.d.cts +2 -2
- package/dist/backend/chat.d.ts +2 -2
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/client.cjs.map +1 -1
- package/dist/backend/client.js.map +1 -1
- package/dist/backend/constants.cjs +7 -0
- package/dist/backend/constants.cjs.map +1 -1
- package/dist/backend/constants.d.cts +5 -0
- package/dist/backend/constants.d.ts +5 -0
- package/dist/backend/constants.js +7 -0
- package/dist/backend/constants.js.map +1 -1
- package/dist/backend/core.d.cts +2 -2
- package/dist/backend/core.d.ts +2 -2
- package/dist/backend/embedding.cjs.map +1 -1
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/embedding.js.map +1 -1
- package/dist/backend/errors.cjs.map +1 -1
- package/dist/backend/errors.d.cts +2 -2
- package/dist/backend/errors.d.ts +2 -2
- package/dist/backend/errors.js.map +1 -1
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.cjs.map +1 -1
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/backend/utils.js.map +1 -1
- package/dist/{base-CyFx7BRL.d.ts → base-BjzyQ8k6.d.ts} +2 -2
- package/dist/{base-XfWeXQ-S.d.cts → base-s3ioVIE9.d.cts} +2 -2
- package/dist/cache/decoratorCache.cjs.map +1 -1
- package/dist/cache/decoratorCache.js.map +1 -1
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/cache/nullCache.cjs.map +1 -1
- package/dist/cache/nullCache.js.map +1 -1
- package/dist/cache/slidingCache.cjs.map +1 -1
- package/dist/cache/slidingCache.js.map +1 -1
- package/dist/cache/unconstrainedCache.cjs.map +1 -1
- package/dist/cache/unconstrainedCache.js.map +1 -1
- package/dist/{chat-BFl85cqt.d.cts → chat-C20nYj46.d.cts} +3 -3
- package/dist/{chat-BRuyDeKR.d.ts → chat-CfTNfR60.d.ts} +3 -3
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/emitter/utils.cjs.map +1 -1
- package/dist/emitter/utils.js.map +1 -1
- package/dist/{emitter-jN55XZZq.d.cts → emitter-D4OcelZ9.d.cts} +1 -1
- package/dist/{emitter-36-9MnvA.d.ts → emitter-kHxkUxco.d.ts} +1 -1
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.cts +4 -4
- package/dist/index.d.ts +4 -4
- package/dist/internals/env.cjs.map +1 -1
- package/dist/internals/env.js.map +1 -1
- package/dist/internals/fetcher.cjs.map +1 -1
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/internals/fetcher.js.map +1 -1
- package/dist/internals/helpers/array.cjs.map +1 -1
- package/dist/internals/helpers/array.js.map +1 -1
- package/dist/internals/helpers/cancellation.cjs.map +1 -1
- package/dist/internals/helpers/cancellation.js.map +1 -1
- package/dist/internals/helpers/counter.cjs.map +1 -1
- package/dist/internals/helpers/counter.js.map +1 -1
- package/dist/internals/helpers/general.cjs.map +1 -1
- package/dist/internals/helpers/general.js.map +1 -1
- package/dist/internals/helpers/hash.cjs.map +1 -1
- package/dist/internals/helpers/hash.js.map +1 -1
- package/dist/internals/helpers/map.cjs.map +1 -1
- package/dist/internals/helpers/map.js.map +1 -1
- package/dist/internals/helpers/math.cjs.map +1 -1
- package/dist/internals/helpers/math.js.map +1 -1
- package/dist/internals/helpers/object.cjs +7 -1
- package/dist/internals/helpers/object.cjs.map +1 -1
- package/dist/internals/helpers/object.js +7 -1
- package/dist/internals/helpers/object.js.map +1 -1
- package/dist/internals/helpers/paginate.cjs.map +1 -1
- package/dist/internals/helpers/paginate.js.map +1 -1
- package/dist/internals/helpers/promise.cjs.map +1 -1
- package/dist/internals/helpers/promise.js.map +1 -1
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/helpers/retry.cjs.map +1 -1
- package/dist/internals/helpers/retry.js.map +1 -1
- package/dist/internals/helpers/retryable.cjs.map +1 -1
- package/dist/internals/helpers/retryable.js.map +1 -1
- package/dist/internals/helpers/schema.cjs.map +1 -1
- package/dist/internals/helpers/schema.d.cts +4 -4
- package/dist/internals/helpers/schema.d.ts +4 -4
- package/dist/internals/helpers/schema.js.map +1 -1
- package/dist/internals/helpers/stream.cjs.map +1 -1
- package/dist/internals/helpers/stream.js.map +1 -1
- package/dist/internals/helpers/string.cjs.map +1 -1
- package/dist/internals/helpers/string.js.map +1 -1
- package/dist/internals/helpers/weakRef.cjs.map +1 -1
- package/dist/internals/helpers/weakRef.js.map +1 -1
- package/dist/internals/serializable.cjs +3 -1
- package/dist/internals/serializable.cjs.map +1 -1
- package/dist/internals/serializable.d.cts +6 -0
- package/dist/internals/serializable.d.ts +6 -0
- package/dist/internals/serializable.js +3 -1
- package/dist/internals/serializable.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.js.map +1 -1
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.d.cts +2 -2
- package/dist/logger/logger.d.ts +2 -2
- package/dist/logger/logger.js +2 -2
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/pretty.cjs.map +1 -1
- package/dist/logger/pretty.js.map +1 -1
- package/dist/memory/base.cjs.map +1 -1
- package/dist/memory/base.js.map +1 -1
- package/dist/memory/slidingMemory.cjs.map +1 -1
- package/dist/memory/slidingMemory.js.map +1 -1
- package/dist/memory/summarizeMemory.cjs.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/memory/summarizeMemory.js.map +1 -1
- package/dist/memory/tokenMemory.cjs.map +1 -1
- package/dist/memory/tokenMemory.js.map +1 -1
- package/dist/memory/unconstrainedMemory.cjs.map +1 -1
- package/dist/memory/unconstrainedMemory.js.map +1 -1
- package/dist/middleware/streamToolCall.cjs.map +1 -1
- package/dist/middleware/streamToolCall.d.cts +2 -2
- package/dist/middleware/streamToolCall.d.ts +2 -2
- package/dist/middleware/streamToolCall.js.map +1 -1
- package/dist/middleware/trajectory.cjs.map +1 -1
- package/dist/middleware/trajectory.d.cts +2 -2
- package/dist/middleware/trajectory.d.ts +2 -2
- package/dist/middleware/trajectory.js.map +1 -1
- package/dist/parsers/errors.cjs.map +1 -1
- package/dist/parsers/errors.js.map +1 -1
- package/dist/parsers/field.cjs.map +1 -1
- package/dist/parsers/field.js.map +1 -1
- package/dist/parsers/linePrefix.cjs.map +1 -1
- package/dist/parsers/linePrefix.d.cts +1 -1
- package/dist/parsers/linePrefix.d.ts +1 -1
- package/dist/parsers/linePrefix.js.map +1 -1
- package/dist/serializer/error.cjs.map +1 -1
- package/dist/serializer/error.js.map +1 -1
- package/dist/serializer/serializer.cjs +16 -3
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js +16 -4
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-53t8gGQa.d.ts → serializer-BafOT48s.d.ts} +10 -4
- package/dist/{serializer-c51B2z6d.d.cts → serializer-CFDWYUco.d.cts} +10 -4
- package/dist/serve/server.cjs.map +1 -1
- package/dist/serve/server.js.map +1 -1
- package/dist/template.cjs.map +1 -1
- package/dist/template.js.map +1 -1
- package/dist/tools/arxiv.cjs.map +1 -1
- package/dist/tools/arxiv.d.cts +2 -2
- package/dist/tools/arxiv.d.ts +2 -2
- package/dist/tools/arxiv.js.map +1 -1
- package/dist/tools/base.cjs.map +1 -1
- package/dist/tools/base.d.cts +1 -1
- package/dist/tools/base.d.ts +1 -1
- package/dist/tools/base.js.map +1 -1
- package/dist/tools/calculator.cjs.map +1 -1
- package/dist/tools/calculator.d.cts +3 -3
- package/dist/tools/calculator.d.ts +3 -3
- package/dist/tools/calculator.js.map +1 -1
- package/dist/tools/custom.cjs.map +1 -1
- package/dist/tools/custom.d.cts +3 -3
- package/dist/tools/custom.d.ts +3 -3
- package/dist/tools/custom.js.map +1 -1
- package/dist/tools/database/elasticsearch.cjs.map +1 -1
- package/dist/tools/database/elasticsearch.d.cts +3 -3
- package/dist/tools/database/elasticsearch.d.ts +3 -3
- package/dist/tools/database/elasticsearch.js.map +1 -1
- package/dist/tools/database/metadata.cjs.map +1 -1
- package/dist/tools/database/metadata.js.map +1 -1
- package/dist/tools/database/milvus.cjs.map +1 -1
- package/dist/tools/database/milvus.d.cts +5 -5
- package/dist/tools/database/milvus.d.ts +5 -5
- package/dist/tools/database/milvus.js.map +1 -1
- package/dist/tools/database/qdrant.cjs.map +1 -1
- package/dist/tools/database/qdrant.d.cts +2 -2
- package/dist/tools/database/qdrant.d.ts +2 -2
- package/dist/tools/database/qdrant.js.map +1 -1
- package/dist/tools/database/sql.cjs.map +1 -1
- package/dist/tools/database/sql.d.cts +2 -2
- package/dist/tools/database/sql.d.ts +2 -2
- package/dist/tools/database/sql.js.map +1 -1
- package/dist/tools/handoff.cjs.map +1 -1
- package/dist/tools/handoff.d.cts +2 -2
- package/dist/tools/handoff.d.ts +2 -2
- package/dist/tools/handoff.js.map +1 -1
- package/dist/tools/llm.cjs +1 -1
- package/dist/tools/llm.cjs.map +1 -1
- package/dist/tools/llm.d.cts +3 -3
- package/dist/tools/llm.d.ts +3 -3
- package/dist/tools/llm.js +1 -1
- package/dist/tools/llm.js.map +1 -1
- package/dist/tools/mcp.cjs.map +1 -1
- package/dist/tools/mcp.d.cts +2 -2
- package/dist/tools/mcp.d.ts +2 -2
- package/dist/tools/mcp.js.map +1 -1
- package/dist/tools/openapi.cjs.map +1 -1
- package/dist/tools/openapi.d.cts +2 -2
- package/dist/tools/openapi.d.ts +2 -2
- package/dist/tools/openapi.js.map +1 -1
- package/dist/tools/python/output.cjs.map +1 -1
- package/dist/tools/python/output.d.cts +1 -1
- package/dist/tools/python/output.d.ts +1 -1
- package/dist/tools/python/output.js.map +1 -1
- package/dist/tools/python/python.cjs +5 -2
- package/dist/tools/python/python.cjs.map +1 -1
- package/dist/tools/python/python.d.cts +3 -3
- package/dist/tools/python/python.d.ts +3 -3
- package/dist/tools/python/python.js +5 -2
- package/dist/tools/python/python.js.map +1 -1
- package/dist/tools/python/storage.cjs.map +1 -1
- package/dist/tools/python/storage.js.map +1 -1
- package/dist/tools/search/base.cjs.map +1 -1
- package/dist/tools/search/base.d.cts +2 -2
- package/dist/tools/search/base.d.ts +2 -2
- package/dist/tools/search/base.js.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.cts +2 -2
- package/dist/tools/search/duckDuckGoSearch.d.ts +2 -2
- package/dist/tools/search/duckDuckGoSearch.js.map +1 -1
- package/dist/tools/search/googleSearch.cjs.map +1 -1
- package/dist/tools/search/googleSearch.d.cts +2 -2
- package/dist/tools/search/googleSearch.d.ts +2 -2
- package/dist/tools/search/googleSearch.js.map +1 -1
- package/dist/tools/search/searXNGSearch.cjs.map +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +2 -2
- package/dist/tools/search/searXNGSearch.d.ts +2 -2
- package/dist/tools/search/searXNGSearch.js.map +1 -1
- package/dist/tools/search/wikipedia.cjs.map +1 -1
- package/dist/tools/search/wikipedia.d.cts +3 -3
- package/dist/tools/search/wikipedia.d.ts +3 -3
- package/dist/tools/search/wikipedia.js.map +1 -1
- package/dist/tools/similarity.cjs.map +1 -1
- package/dist/tools/similarity.d.cts +2 -2
- package/dist/tools/similarity.d.ts +2 -2
- package/dist/tools/similarity.js.map +1 -1
- package/dist/tools/think.cjs.map +1 -1
- package/dist/tools/think.d.cts +2 -2
- package/dist/tools/think.d.ts +2 -2
- package/dist/tools/think.js.map +1 -1
- package/dist/tools/weather/openMeteo.cjs.map +1 -1
- package/dist/tools/weather/openMeteo.d.cts +2 -2
- package/dist/tools/weather/openMeteo.d.ts +2 -2
- package/dist/tools/weather/openMeteo.js.map +1 -1
- package/dist/tools/web/webCrawler.cjs.map +1 -1
- package/dist/tools/web/webCrawler.d.cts +2 -2
- package/dist/tools/web/webCrawler.d.ts +2 -2
- package/dist/tools/web/webCrawler.js.map +1 -1
- package/dist/{types-CkEtV8R9.d.cts → types-BNsa3W7Z.d.cts} +4 -4
- package/dist/{types-BQ-3LdkE.d.ts → types-DYtzF6ya.d.ts} +4 -4
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/workflows/agent.cjs.map +1 -1
- package/dist/workflows/agent.d.cts +40 -40
- package/dist/workflows/agent.d.ts +40 -40
- package/dist/workflows/agent.js.map +1 -1
- package/dist/workflows/workflow.cjs.map +1 -1
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/dist/workflows/workflow.js.map +1 -1
- package/package.json +33 -10
|
@@ -0,0 +1,324 @@
|
|
|
1
|
+
import { HumanMessage, AIMessage, ToolMessage as ToolMessage$1, SystemMessage as SystemMessage$1, AIMessageChunk } from '@langchain/core/messages';
|
|
2
|
+
import { DynamicStructuredTool } from '@langchain/core/tools';
|
|
3
|
+
import { UserMessage, AssistantMessage, ToolMessage, SystemMessage } from '../../../backend/message.js';
|
|
4
|
+
import { isString, isPlainObject } from 'remeda';
|
|
5
|
+
import { parseBrokenJson } from '../../../internals/helpers/schema.js';
|
|
6
|
+
import { ValueError } from '../../../errors.js';
|
|
7
|
+
import { Logger } from '../../../logger/logger.js';
|
|
8
|
+
|
|
9
|
+
var __defProp = Object.defineProperty;
|
|
10
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
11
|
+
function removeFalsy(arr) {
|
|
12
|
+
return arr.filter((item) => Boolean(item));
|
|
13
|
+
}
|
|
14
|
+
__name(removeFalsy, "removeFalsy");
|
|
15
|
+
function toLCContent(message) {
|
|
16
|
+
if (message instanceof ToolMessage) {
|
|
17
|
+
const toolResult = message.getToolResults()[0];
|
|
18
|
+
if (!toolResult) {
|
|
19
|
+
Logger.root.warn("ToolMessage has no tool results, returning empty string");
|
|
20
|
+
return "";
|
|
21
|
+
}
|
|
22
|
+
if ("value" in toolResult.output && isString(toolResult.output.value)) {
|
|
23
|
+
return toolResult.output.value;
|
|
24
|
+
}
|
|
25
|
+
return JSON.stringify(toolResult.output);
|
|
26
|
+
}
|
|
27
|
+
const lcContent = [];
|
|
28
|
+
for (const part of message.content) {
|
|
29
|
+
if (part.type === "text") {
|
|
30
|
+
lcContent.push({
|
|
31
|
+
type: "text",
|
|
32
|
+
text: part.text
|
|
33
|
+
});
|
|
34
|
+
} else if (part.type === "image") {
|
|
35
|
+
const imageUrl = part.image instanceof URL ? part.image.toString() : String(part.image);
|
|
36
|
+
lcContent.push({
|
|
37
|
+
type: "image",
|
|
38
|
+
url: imageUrl
|
|
39
|
+
});
|
|
40
|
+
} else if (part.type === "file") {
|
|
41
|
+
lcContent.push({
|
|
42
|
+
type: "file",
|
|
43
|
+
file_data: part.data,
|
|
44
|
+
format: part.mediaType,
|
|
45
|
+
...part.filename && {
|
|
46
|
+
filename: part.filename
|
|
47
|
+
}
|
|
48
|
+
});
|
|
49
|
+
} else {
|
|
50
|
+
lcContent.push(null);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return removeFalsy(lcContent);
|
|
54
|
+
}
|
|
55
|
+
__name(toLCContent, "toLCContent");
|
|
56
|
+
function toLCToolArgs(input) {
|
|
57
|
+
if (isPlainObject(input)) {
|
|
58
|
+
return input;
|
|
59
|
+
}
|
|
60
|
+
if (isString(input)) {
|
|
61
|
+
try {
|
|
62
|
+
const parsed = parseBrokenJson(input, {
|
|
63
|
+
pair: [
|
|
64
|
+
"{",
|
|
65
|
+
"}"
|
|
66
|
+
]
|
|
67
|
+
});
|
|
68
|
+
if (isPlainObject(parsed)) {
|
|
69
|
+
return parsed;
|
|
70
|
+
}
|
|
71
|
+
} catch (error) {
|
|
72
|
+
Logger.root.warn("Failed to parse tool arguments: " + (error instanceof Error ? error.message : String(error)));
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
return {};
|
|
76
|
+
}
|
|
77
|
+
__name(toLCToolArgs, "toLCToolArgs");
|
|
78
|
+
function toLCToolCalls(message) {
|
|
79
|
+
return message.getToolCalls().map((toolCall) => ({
|
|
80
|
+
id: toolCall.toolCallId,
|
|
81
|
+
name: toolCall.toolName,
|
|
82
|
+
args: toLCToolArgs(toolCall.input),
|
|
83
|
+
type: "tool_call"
|
|
84
|
+
}));
|
|
85
|
+
}
|
|
86
|
+
__name(toLCToolCalls, "toLCToolCalls");
|
|
87
|
+
function toBeeAITextParts(content) {
|
|
88
|
+
if (typeof content === "string") {
|
|
89
|
+
return content ? [
|
|
90
|
+
{
|
|
91
|
+
type: "text",
|
|
92
|
+
text: content
|
|
93
|
+
}
|
|
94
|
+
] : [];
|
|
95
|
+
}
|
|
96
|
+
if (!Array.isArray(content)) {
|
|
97
|
+
if (content !== null && content !== void 0) {
|
|
98
|
+
Logger.root.warn(`Unexpected content type in toBeeAITextParts: ${typeof content}`);
|
|
99
|
+
}
|
|
100
|
+
return [];
|
|
101
|
+
}
|
|
102
|
+
return content.flatMap((part) => {
|
|
103
|
+
if (typeof part === "string") {
|
|
104
|
+
return part ? [
|
|
105
|
+
{
|
|
106
|
+
type: "text",
|
|
107
|
+
text: part
|
|
108
|
+
}
|
|
109
|
+
] : [];
|
|
110
|
+
}
|
|
111
|
+
if (part && typeof part === "object" && "type" in part && part.type === "text" && "text" in part) {
|
|
112
|
+
return [
|
|
113
|
+
{
|
|
114
|
+
type: "text",
|
|
115
|
+
text: String(part.text ?? "")
|
|
116
|
+
}
|
|
117
|
+
];
|
|
118
|
+
}
|
|
119
|
+
return [];
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
__name(toBeeAITextParts, "toBeeAITextParts");
|
|
123
|
+
function toBeeAIUserContentParts(content) {
|
|
124
|
+
if (typeof content === "string") {
|
|
125
|
+
return content ? [
|
|
126
|
+
{
|
|
127
|
+
type: "text",
|
|
128
|
+
text: content
|
|
129
|
+
}
|
|
130
|
+
] : [];
|
|
131
|
+
}
|
|
132
|
+
if (!Array.isArray(content)) {
|
|
133
|
+
if (content !== null && content !== void 0) {
|
|
134
|
+
Logger.root.warn(`Unexpected content type in toBeeAIContentParts: ${typeof content}`);
|
|
135
|
+
}
|
|
136
|
+
return [];
|
|
137
|
+
}
|
|
138
|
+
const results = [];
|
|
139
|
+
for (const part of content) {
|
|
140
|
+
if (typeof part === "string") {
|
|
141
|
+
if (part) {
|
|
142
|
+
results.push({
|
|
143
|
+
type: "text",
|
|
144
|
+
text: part
|
|
145
|
+
});
|
|
146
|
+
}
|
|
147
|
+
continue;
|
|
148
|
+
}
|
|
149
|
+
if (!part || typeof part !== "object" || !("type" in part)) {
|
|
150
|
+
continue;
|
|
151
|
+
}
|
|
152
|
+
if (part.type === "text" && "text" in part) {
|
|
153
|
+
results.push({
|
|
154
|
+
type: "text",
|
|
155
|
+
text: String(part.text ?? "")
|
|
156
|
+
});
|
|
157
|
+
continue;
|
|
158
|
+
}
|
|
159
|
+
if (part.type === "image") {
|
|
160
|
+
let imageUrl = "";
|
|
161
|
+
if ("url" in part && part.url) {
|
|
162
|
+
imageUrl = String(part.url);
|
|
163
|
+
} else if ("data" in part && "mime_type" in part) {
|
|
164
|
+
imageUrl = `data:${part.mime_type};base64,${part.data}`;
|
|
165
|
+
}
|
|
166
|
+
if (imageUrl) {
|
|
167
|
+
results.push({
|
|
168
|
+
type: "image",
|
|
169
|
+
image: imageUrl
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
continue;
|
|
173
|
+
}
|
|
174
|
+
if (part.type === "file") {
|
|
175
|
+
let fileData = "";
|
|
176
|
+
let mediaType = "application/octet-stream";
|
|
177
|
+
let filename;
|
|
178
|
+
if ("file_id" in part && part.file_id) {
|
|
179
|
+
fileData = String(part.file_id);
|
|
180
|
+
} else if ("file_data" in part && part.file_data) {
|
|
181
|
+
fileData = String(part.file_data);
|
|
182
|
+
}
|
|
183
|
+
if ("format" in part && part.format) {
|
|
184
|
+
mediaType = String(part.format);
|
|
185
|
+
} else if ("mime_type" in part && part.mime_type) {
|
|
186
|
+
mediaType = String(part.mime_type);
|
|
187
|
+
}
|
|
188
|
+
if ("filename" in part && part.filename) {
|
|
189
|
+
filename = String(part.filename);
|
|
190
|
+
}
|
|
191
|
+
if (fileData) {
|
|
192
|
+
results.push({
|
|
193
|
+
type: "file",
|
|
194
|
+
data: fileData,
|
|
195
|
+
mediaType,
|
|
196
|
+
...filename && {
|
|
197
|
+
filename
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
return removeFalsy(results);
|
|
204
|
+
}
|
|
205
|
+
__name(toBeeAIUserContentParts, "toBeeAIUserContentParts");
|
|
206
|
+
function toBeeAIToolCall(toolCall) {
|
|
207
|
+
return {
|
|
208
|
+
type: "tool-call",
|
|
209
|
+
toolCallId: toolCall.id ?? "",
|
|
210
|
+
toolName: toolCall.name ?? "",
|
|
211
|
+
input: toolCall.args ?? {}
|
|
212
|
+
};
|
|
213
|
+
}
|
|
214
|
+
__name(toBeeAIToolCall, "toBeeAIToolCall");
|
|
215
|
+
function toBeeAIToolResult(message) {
|
|
216
|
+
let content;
|
|
217
|
+
if (typeof message.content === "string" && message.content !== "") {
|
|
218
|
+
content = message.content;
|
|
219
|
+
} else if (message.content !== void 0 && message.content !== null && message.content !== "") {
|
|
220
|
+
content = JSON.stringify(message.content);
|
|
221
|
+
} else if ("artifact" in message && message.artifact !== void 0 && message.artifact !== null) {
|
|
222
|
+
content = typeof message.artifact === "string" ? message.artifact : JSON.stringify(message.artifact);
|
|
223
|
+
} else {
|
|
224
|
+
content = typeof message.content === "string" ? message.content : "";
|
|
225
|
+
}
|
|
226
|
+
return {
|
|
227
|
+
type: "tool-result",
|
|
228
|
+
toolCallId: message.tool_call_id,
|
|
229
|
+
toolName: String(message.response_metadata?.tool_name ?? "unknown"),
|
|
230
|
+
output: {
|
|
231
|
+
type: "text",
|
|
232
|
+
value: content
|
|
233
|
+
}
|
|
234
|
+
};
|
|
235
|
+
}
|
|
236
|
+
__name(toBeeAIToolResult, "toBeeAIToolResult");
|
|
237
|
+
function toLCMessages(messages) {
|
|
238
|
+
const output = [];
|
|
239
|
+
for (const msg of messages) {
|
|
240
|
+
if (msg instanceof UserMessage) {
|
|
241
|
+
output.push(new HumanMessage({
|
|
242
|
+
content: toLCContent(msg),
|
|
243
|
+
id: msg.id
|
|
244
|
+
}));
|
|
245
|
+
continue;
|
|
246
|
+
}
|
|
247
|
+
if (msg instanceof AssistantMessage) {
|
|
248
|
+
output.push(new AIMessage({
|
|
249
|
+
content: toLCContent(msg),
|
|
250
|
+
id: msg.id,
|
|
251
|
+
tool_calls: toLCToolCalls(msg)
|
|
252
|
+
}));
|
|
253
|
+
continue;
|
|
254
|
+
}
|
|
255
|
+
if (msg instanceof ToolMessage) {
|
|
256
|
+
const toolResults = msg.getToolResults();
|
|
257
|
+
for (let i = 0; i < toolResults.length; i++) {
|
|
258
|
+
const toolResult = toolResults[i];
|
|
259
|
+
const messageId = toolResults.length > 1 ? msg.id + "-" + i : msg.id;
|
|
260
|
+
output.push(new ToolMessage$1({
|
|
261
|
+
id: messageId,
|
|
262
|
+
content: "value" in toolResult.output && isString(toolResult.output.value) ? toolResult.output.value : JSON.stringify(toolResult.output),
|
|
263
|
+
tool_call_id: toolResult.toolCallId,
|
|
264
|
+
response_metadata: {
|
|
265
|
+
tool_name: toolResult.toolName
|
|
266
|
+
}
|
|
267
|
+
}));
|
|
268
|
+
}
|
|
269
|
+
continue;
|
|
270
|
+
}
|
|
271
|
+
if (msg instanceof SystemMessage) {
|
|
272
|
+
output.push(new SystemMessage$1({
|
|
273
|
+
content: toLCContent(msg),
|
|
274
|
+
id: msg.id
|
|
275
|
+
}));
|
|
276
|
+
continue;
|
|
277
|
+
}
|
|
278
|
+
output.push(new HumanMessage({
|
|
279
|
+
content: toLCContent(msg),
|
|
280
|
+
id: msg.id
|
|
281
|
+
}));
|
|
282
|
+
}
|
|
283
|
+
return output;
|
|
284
|
+
}
|
|
285
|
+
__name(toLCMessages, "toLCMessages");
|
|
286
|
+
function toBeeAIMessages(messages) {
|
|
287
|
+
return messages.map((msg) => {
|
|
288
|
+
if (msg instanceof HumanMessage) {
|
|
289
|
+
return new UserMessage(toBeeAIUserContentParts(msg.content), msg.response_metadata, msg.id);
|
|
290
|
+
}
|
|
291
|
+
if (msg instanceof AIMessage || msg instanceof AIMessageChunk) {
|
|
292
|
+
return new AssistantMessage([
|
|
293
|
+
...toBeeAITextParts(msg.content),
|
|
294
|
+
...(msg.tool_calls ?? []).map(toBeeAIToolCall)
|
|
295
|
+
], msg.response_metadata, msg.id);
|
|
296
|
+
}
|
|
297
|
+
if (msg instanceof SystemMessage$1) {
|
|
298
|
+
return new SystemMessage(toBeeAITextParts(msg.content), msg.response_metadata, msg.id);
|
|
299
|
+
}
|
|
300
|
+
if (msg instanceof ToolMessage$1) {
|
|
301
|
+
return new ToolMessage(toBeeAIToolResult(msg), msg.response_metadata, msg.id);
|
|
302
|
+
}
|
|
303
|
+
const typeName = "type" in msg && msg.type ? String(msg.type) : msg.constructor.name;
|
|
304
|
+
throw new ValueError("Unsupported message type: " + typeName);
|
|
305
|
+
});
|
|
306
|
+
}
|
|
307
|
+
__name(toBeeAIMessages, "toBeeAIMessages");
|
|
308
|
+
async function beeaiToolToLCTool(tool) {
|
|
309
|
+
const schema = await tool.inputSchema();
|
|
310
|
+
return new DynamicStructuredTool({
|
|
311
|
+
name: tool.name,
|
|
312
|
+
description: tool.description,
|
|
313
|
+
schema,
|
|
314
|
+
func: /* @__PURE__ */ __name(async (input) => {
|
|
315
|
+
const result = await tool.run(input);
|
|
316
|
+
return result.getTextContent();
|
|
317
|
+
}, "func")
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
__name(beeaiToolToLCTool, "beeaiToolToLCTool");
|
|
321
|
+
|
|
322
|
+
export { beeaiToolToLCTool, toBeeAIMessages, toLCMessages };
|
|
323
|
+
//# sourceMappingURL=utils.js.map
|
|
324
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/langchain/backend/utils.ts"],"names":["removeFalsy","arr","filter","item","Boolean","toLCContent","message","ToolMessage","toolResult","getToolResults","Logger","root","warn","output","isString","value","JSON","stringify","lcContent","part","content","type","push","text","imageUrl","image","URL","toString","String","url","file_data","data","format","mediaType","filename","toLCToolArgs","input","isPlainObject","parsed","parseBrokenJson","pair","error","Error","toLCToolCalls","getToolCalls","map","toolCall","id","toolCallId","name","toolName","args","toBeeAITextParts","Array","isArray","undefined","flatMap","toBeeAIUserContentParts","results","mime_type","fileData","file_id","toBeeAIToolCall","toBeeAIToolResult","artifact","tool_call_id","response_metadata","tool_name","toLCMessages","messages","msg","UserMessage","LCUserMessage","AssistantMessage","LCAIMessage","tool_calls","toolResults","i","length","messageId","LCToolMessage","SystemMessage","LCSystemMessage","toBeeAIMessages","AIMessageChunk","typeName","ValueError","beeaiToolToLCTool","tool","schema","inputSchema","DynamicStructuredTool","description","func","result","run","getTextContent"],"mappings":"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","file":"utils.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n AIMessage as LCAIMessage,\n AIMessageChunk,\n BaseMessage as LCBaseMessage,\n HumanMessage as LCUserMessage,\n SystemMessage as LCSystemMessage,\n ToolMessage as LCToolMessage,\n} from \"@langchain/core/messages\";\nimport { DynamicStructuredTool } from \"@langchain/core/tools\";\nimport {\n AssistantMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { FilePart, ImagePart, TextPart, ToolCallPart, ToolResultPart } from \"ai\";\nimport { isPlainObject, isString } from \"remeda\";\nimport { parseBrokenJson } from \"@/internals/helpers/schema.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\n/**\n * Removes falsy values from an array.\n * @param arr - Array to filter\n * @returns Array with falsy values removed\n */\nfunction removeFalsy<T>(arr: (T | null | undefined | false | 0 | \"\")[]): T[] {\n return arr.filter((item): item is T => Boolean(item));\n}\n\n/**\n * Converts a BeeAI Message to LangChain content format.\n * Supports text, image, and file content types.\n * @param message - The BeeAI message to convert\n * @returns String content or array of content parts\n */\nfunction toLCContent(\n message: Message,\n): string | { type: string; text?: string; url?: string; [key: string]: any }[] {\n if (message instanceof ToolMessage) {\n const toolResult = message.getToolResults()[0];\n if (!toolResult) {\n Logger.root.warn(\"ToolMessage has no tool results, returning empty string\");\n return \"\";\n }\n\n if (\"value\" in toolResult.output && isString(toolResult.output.value)) {\n return toolResult.output.value;\n }\n\n return JSON.stringify(toolResult.output);\n }\n\n const lcContent: ({ type: string; text?: string; url?: string; [key: string]: any } | null)[] =\n [];\n\n for (const part of message.content) {\n if (part.type === \"text\") {\n lcContent.push({ type: \"text\", text: part.text });\n } else if (part.type === \"image\") {\n const imageUrl = part.image instanceof URL ? part.image.toString() : String(part.image);\n lcContent.push({ type: \"image\", url: imageUrl });\n } else if (part.type === \"file\") {\n lcContent.push({\n type: \"file\",\n file_data: part.data,\n format: part.mediaType,\n ...(part.filename && { filename: part.filename }),\n });\n } else {\n lcContent.push(null);\n }\n }\n\n return removeFalsy(lcContent);\n}\n\n/**\n * Converts tool call input to LangChain arguments format.\n * Parses JSON strings and handles broken JSON gracefully.\n * @param input - The tool call input (object or JSON string)\n * @returns Tool arguments as a record object\n */\nfunction toLCToolArgs(input: unknown): Record<string, any> {\n if (isPlainObject(input)) {\n return input;\n }\n\n if (isString(input)) {\n try {\n const parsed = parseBrokenJson(input, { pair: [\"{\", \"}\"] });\n if (isPlainObject(parsed)) {\n return parsed;\n }\n } catch (error) {\n Logger.root.warn(\n \"Failed to parse tool arguments: \" +\n (error instanceof Error ? error.message : String(error)),\n );\n }\n }\n\n return {};\n}\n\n/**\n * Converts AssistantMessage tool calls to LangChain format.\n * @param message - The assistant message with tool calls\n * @returns Array of LangChain tool call objects\n */\nfunction toLCToolCalls(message: AssistantMessage) {\n return message.getToolCalls().map((toolCall) => ({\n id: toolCall.toolCallId,\n name: toolCall.toolName,\n args: toLCToolArgs(toolCall.input),\n type: \"tool_call\" as const,\n }));\n}\n\n/**\n * Converts LangChain message content to BeeAI TextPart array.\n * Handles strings, arrays, and text objects. Filters out empty values.\n * @param content - The LangChain message content\n * @returns Array of BeeAI TextPart objects\n */\nfunction toBeeAITextParts(content: unknown): TextPart[] {\n if (typeof content === \"string\") {\n return content ? [{ type: \"text\", text: content }] : [];\n }\n\n if (!Array.isArray(content)) {\n if (content !== null && content !== undefined) {\n Logger.root.warn(`Unexpected content type in toBeeAITextParts: ${typeof content}`);\n }\n return [];\n }\n\n return content.flatMap((part) => {\n if (typeof part === \"string\") {\n return part ? [{ type: \"text\", text: part }] : [];\n }\n\n if (\n part &&\n typeof part === \"object\" &&\n \"type\" in part &&\n part.type === \"text\" &&\n \"text\" in part\n ) {\n return [{ type: \"text\", text: String(part.text ?? \"\") }];\n }\n\n return [];\n });\n}\n\n/**\n * Converts LangChain message content to BeeAI content parts for UserMessage.\n * Supports text, image (URL or base64), and file content types.\n * @param content - The LangChain message content\n * @returns Array of TextPart, ImagePart, or FilePart objects\n */\nfunction toBeeAIUserContentParts(content: unknown): (TextPart | ImagePart | FilePart)[] {\n if (typeof content === \"string\") {\n return content ? [{ type: \"text\", text: content }] : [];\n }\n\n if (!Array.isArray(content)) {\n if (content !== null && content !== undefined) {\n Logger.root.warn(`Unexpected content type in toBeeAIContentParts: ${typeof content}`);\n }\n return [];\n }\n\n const results: (TextPart | ImagePart | FilePart | null)[] = [];\n\n for (const part of content) {\n if (typeof part === \"string\") {\n if (part) {\n results.push({ type: \"text\", text: part });\n }\n continue;\n }\n\n if (!part || typeof part !== \"object\" || !(\"type\" in part)) {\n continue;\n }\n\n if (part.type === \"text\" && \"text\" in part) {\n results.push({ type: \"text\", text: String(part.text ?? \"\") });\n continue;\n }\n\n if (part.type === \"image\") {\n let imageUrl = \"\";\n\n if (\"url\" in part && part.url) {\n imageUrl = String(part.url);\n } else if (\"data\" in part && \"mime_type\" in part) {\n imageUrl = `data:${part.mime_type};base64,${part.data}`;\n }\n\n if (imageUrl) {\n results.push({\n type: \"image\",\n image: imageUrl,\n });\n }\n continue;\n }\n\n if (part.type === \"file\") {\n let fileData = \"\";\n let mediaType = \"application/octet-stream\";\n let filename: string | undefined;\n\n if (\"file_id\" in part && part.file_id) {\n fileData = String(part.file_id);\n } else if (\"file_data\" in part && part.file_data) {\n fileData = String(part.file_data);\n }\n\n if (\"format\" in part && part.format) {\n mediaType = String(part.format);\n } else if (\"mime_type\" in part && part.mime_type) {\n mediaType = String(part.mime_type);\n }\n\n if (\"filename\" in part && part.filename) {\n filename = String(part.filename);\n }\n\n if (fileData) {\n results.push({\n type: \"file\",\n data: fileData,\n mediaType,\n ...(filename && { filename }),\n });\n }\n }\n }\n\n return removeFalsy(results);\n}\n\n/**\n * Converts a LangChain tool call to BeeAI ToolCallPart format.\n * @param toolCall - The LangChain tool call object\n * @returns BeeAI ToolCallPart\n */\nfunction toBeeAIToolCall(toolCall: { id?: string; name?: string; args?: unknown }): ToolCallPart {\n return {\n type: \"tool-call\",\n toolCallId: toolCall.id ?? \"\",\n toolName: toolCall.name ?? \"\",\n input: toolCall.args ?? {},\n };\n}\n\n/**\n * Converts a LangChain ToolMessage to BeeAI ToolResultPart.\n * Falls back to artifact field if content is empty.\n * @param message - The LangChain tool message\n * @returns BeeAI ToolResultPart object\n */\nfunction toBeeAIToolResult(message: LCToolMessage): ToolResultPart {\n let content: string;\n if (typeof message.content === \"string\" && message.content !== \"\") {\n content = message.content;\n } else if (message.content !== undefined && message.content !== null && message.content !== \"\") {\n content = JSON.stringify(message.content);\n } else if (\"artifact\" in message && message.artifact !== undefined && message.artifact !== null) {\n content =\n typeof message.artifact === \"string\" ? message.artifact : JSON.stringify(message.artifact);\n } else {\n content = typeof message.content === \"string\" ? message.content : \"\";\n }\n\n return {\n type: \"tool-result\",\n toolCallId: message.tool_call_id,\n toolName: String(message.response_metadata?.tool_name ?? \"unknown\"),\n output: {\n type: \"text\",\n value: content,\n },\n };\n}\n\n/**\n * Converts BeeAI Messages to LangChain BaseMessage format.\n * Handles UserMessage, AssistantMessage, ToolMessage, and SystemMessage.\n * ToolMessages with multiple results are split into separate messages with ID suffixes.\n * Unknown types fallback to LCUserMessage.\n * @param messages - Array of BeeAI messages\n * @returns Array of LangChain BaseMessage objects\n */\nexport function toLCMessages(messages: Message[]): LCBaseMessage[] {\n const output: LCBaseMessage[] = [];\n\n for (const msg of messages) {\n if (msg instanceof UserMessage) {\n output.push(new LCUserMessage({ content: toLCContent(msg), id: msg.id }));\n continue;\n }\n\n if (msg instanceof AssistantMessage) {\n output.push(\n new LCAIMessage({\n content: toLCContent(msg),\n id: msg.id,\n tool_calls: toLCToolCalls(msg),\n }),\n );\n continue;\n }\n\n if (msg instanceof ToolMessage) {\n const toolResults = msg.getToolResults();\n for (let i = 0; i < toolResults.length; i++) {\n const toolResult = toolResults[i];\n const messageId = toolResults.length > 1 ? msg.id + \"-\" + i : msg.id;\n output.push(\n new LCToolMessage({\n id: messageId,\n content:\n \"value\" in toolResult.output && isString(toolResult.output.value)\n ? toolResult.output.value\n : JSON.stringify(toolResult.output),\n tool_call_id: toolResult.toolCallId,\n response_metadata: { tool_name: toolResult.toolName },\n }),\n );\n }\n continue;\n }\n\n if (msg instanceof SystemMessage) {\n output.push(new LCSystemMessage({ content: toLCContent(msg), id: msg.id }));\n continue;\n }\n\n output.push(new LCUserMessage({ content: toLCContent(msg), id: msg.id }));\n }\n\n return output;\n}\n\n/**\n * Converts LangChain BaseMessages to BeeAI Message format.\n * Handles LCUserMessage, LCAIMessage, AIMessageChunk, LCSystemMessage, and LCToolMessage.\n * Throws ValueError for unknown message types.\n * @param messages - Array of LangChain messages\n * @returns Array of BeeAI Message objects\n */\nexport function toBeeAIMessages(messages: LCBaseMessage[]): Message[] {\n return messages.map((msg) => {\n if (msg instanceof LCUserMessage) {\n return new UserMessage(toBeeAIUserContentParts(msg.content), msg.response_metadata, msg.id);\n }\n\n if (msg instanceof LCAIMessage || msg instanceof AIMessageChunk) {\n return new AssistantMessage(\n [...toBeeAITextParts(msg.content), ...(msg.tool_calls ?? []).map(toBeeAIToolCall)],\n msg.response_metadata,\n msg.id,\n );\n }\n\n if (msg instanceof LCSystemMessage) {\n return new SystemMessage(toBeeAITextParts(msg.content), msg.response_metadata, msg.id);\n }\n\n if (msg instanceof LCToolMessage) {\n return new ToolMessage(toBeeAIToolResult(msg), msg.response_metadata, msg.id);\n }\n\n // Use .type property (LangChain 1.x) with fallback to constructor.name\n const typeName = \"type\" in msg && msg.type ? String(msg.type) : msg.constructor.name;\n throw new ValueError(\"Unsupported message type: \" + typeName);\n });\n}\n\n/**\n * Converts a BeeAI Tool to LangChain DynamicStructuredTool.\n * Wraps the tool's run method and extracts text content from results.\n * @param tool - The BeeAI tool to convert\n * @returns Promise resolving to LangChain DynamicStructuredTool\n */\nexport async function beeaiToolToLCTool(tool: any): Promise<DynamicStructuredTool> {\n const schema = await tool.inputSchema();\n\n return new DynamicStructuredTool({\n name: tool.name,\n description: tool.description,\n schema,\n func: async (input: any) => {\n const result = await tool.run(input);\n return result.getTextContent();\n },\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/langchain/tools.ts"],"names":["LangChainTool","Tool","tool","serializedSchemaKey","emitter","options","name","description","Emitter","root","child","namespace","toCamelCase","creator","register","Class","LCTools","DynamicTool","DynamicStructuredTool","Serializer","toPlain","instance","pickBy","pick","schema","ZodEffects","toJsonSchema","sourceType","isTruthy","fromPlain","metadata","inputSchema","getProp","_run","arg","run","outputClass","JSONToolOutput","raw","invoke","signal","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8BO,MAAMA,sBAAuEC,aAAAA,CAAAA;EA9BpF;;;AAsCqBC,EAAAA,IAAAA;AACnB,EAAA,OAAcC,mBAAAA,GAAsB,qBAAA;AAEpBC,EAAAA,OAAAA;AAEhB,EAAA,WAAA,CAAY,EACVF,IAAAA,EACA,GAAGG,OAAAA,EAAAA,EAGF;AACD,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AAEN,IAAA,IAAA,CAAKH,IAAAA,GAAOA,IAAAA;AACZ,IAAA,IAAA,CAAKI,OAAOJ,IAAAA,CAAKI,IAAAA;AACjB,IAAA,IAAA,CAAKC,cAAcL,IAAAA,CAAKK,WAAAA;AACxB,IAAA,IAAA,CAAKH,OAAAA,GAAUI,mBAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,WAAA;AAAaC,QAAAA,kBAAAA,CAAY,KAAKN,IAAI;;MACtDO,OAAAA,EAAS;KACX,CAAA;AACF;EAEA;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AAEb,IAAA,KAAA,MAAWC,KAAAA,IAAS;MAACC,kBAAAA,CAAQC,WAAAA;MAAaD,kBAAAA,CAAQE;AAE7C,KAAA,EAAA;AACHC,MAAAA,yBAAAA,CAAWL,SAASC,KAAAA,EAAO;AACzBK,QAAAA,OAAAA,0BAAUC,QAAAA,MAAc;AACtBhB,UAAAA,OAAAA,EAASiB,aAAAA,CACP;AACE,YAAA,GAAGC,YAAKF,QAAAA,EAAU;AAChB,cAAA,MAAA;AACA,cAAA,aAAA;AACA,cAAA,UAAA;AACA,cAAA,gBAAA;AACA,cAAA,cAAA;AACA,cAAA;AACD,aAAA,CAAA;YACDG,MAAAA,EACEH,QAAAA,CAASG,MAAAA,YAAkBC,cAAAA,GACvBC,uBAAAA,CAAaL,QAAAA,CAASG,MAAAA,CAAOG,UAAAA,EAAU,CAAA,GACvCD,uBAAAA,CAAaL,QAAAA,CAASG,MAAM;AACpC,WAAA,EACAI,eAAAA;SAEJ,CAAA,EAlBS,SAAA,CAAA;QAmBTC,SAAAA,kBAAW,MAAA,CAAA,CAAC,EAAExB,OAAAA,EAAO,KAAE;AACrB,UAAA,OAAO,IAAIU,KAAAA,CAAM;YACf,GAAGV,OAAAA;YACHyB,QAAAA,EAAU;AAAE,cAAA,GAAGzB,OAAAA,EAASyB,QAAAA;cAAU,CAAC9B,aAAAA,CAAcG,mBAAmB,GAAGE,OAAAA,CAAQmB;AAAO;WACxF,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/langchain/tools.ts"],"names":["LangChainTool","Tool","tool","serializedSchemaKey","emitter","options","name","description","Emitter","root","child","namespace","toCamelCase","creator","register","Class","LCTools","DynamicTool","DynamicStructuredTool","Serializer","toPlain","instance","pickBy","pick","schema","ZodEffects","toJsonSchema","sourceType","isTruthy","fromPlain","metadata","inputSchema","getProp","_run","arg","run","outputClass","JSONToolOutput","raw","invoke","signal","createSnapshot","loadSnapshot","snapshot"],"mappings":"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","file":"tools.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolEvents,\n ToolInput,\n} from \"@/tools/base.js\";\nimport type { GetRunContext } from \"@/context.js\";\nimport type { RunnableConfig } from \"@langchain/core/runnables\";\nimport { ZodEffects } from \"zod\";\nimport * as LCTools from \"@langchain/core/tools\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { isTruthy, pick, pickBy, toCamelCase } from \"remeda\";\nimport { toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport type LangChainToolRunOptions = RunnableConfig & BaseToolRunOptions;\nexport type LangChainToolOptions<TOutput = any> = BaseToolOptions & {\n outputClass?: typeof JSONToolOutput<TOutput>;\n};\n\nexport class LangChainTool<T extends LCTools.StructuredTool, TOutput = any> extends Tool<\n JSONToolOutput<TOutput>,\n LangChainToolOptions<TOutput>,\n LangChainToolRunOptions\n> {\n declare name: string;\n declare description: string;\n\n protected readonly tool: T;\n public static serializedSchemaKey = \"_internalJsonSchema\" as const;\n\n public readonly emitter: ToolEmitter<ToolEvents<T>, JSONToolOutput<TOutput>>;\n\n constructor({\n tool,\n ...options\n }: LangChainToolOptions<TOutput> & {\n tool: T;\n }) {\n super(options);\n\n this.tool = tool;\n this.name = tool.name;\n this.description = tool.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"langchain\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n static {\n this.register();\n\n for (const Class of [LCTools.DynamicTool, LCTools.DynamicStructuredTool] as ClassConstructor<\n LCTools.DynamicStructuredTool | LCTools.DynamicTool\n >[]) {\n Serializer.register(Class, {\n toPlain: (instance) => ({\n options: pickBy(\n {\n ...pick(instance, [\n \"name\",\n \"description\",\n \"metadata\",\n \"responseFormat\",\n \"returnDirect\",\n \"func\",\n ]),\n schema:\n instance.schema instanceof ZodEffects\n ? toJsonSchema(instance.schema.sourceType())\n : toJsonSchema(instance.schema),\n },\n isTruthy,\n ),\n }),\n fromPlain: ({ options }) => {\n return new Class({\n ...options,\n metadata: { ...options?.metadata, [LangChainTool.serializedSchemaKey]: options.schema },\n });\n },\n });\n }\n }\n\n inputSchema(): T[\"schema\"] {\n const { schema, metadata = {} } = this.tool;\n\n return getProp(\n metadata,\n [LangChainTool.serializedSchemaKey],\n schema instanceof ZodEffects ? schema.sourceType() : schema,\n );\n }\n\n protected async _run(\n arg: ToolInput<this>,\n options: Partial<LangChainToolRunOptions>,\n run: GetRunContext<this>,\n ): Promise<JSONToolOutput<TOutput>> {\n const { outputClass = JSONToolOutput } = this.options;\n const raw = await this.tool.invoke(arg as Record<string, any>, {\n ...options,\n signal: run.signal,\n });\n return new outputClass(raw);\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n tool: this.tool,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseCache } from '../../cache/base.cjs';
|
|
2
2
|
import * as promise_based_task from 'promise-based-task';
|
|
3
|
-
import {
|
|
3
|
+
import { Tool, JSONToolOutput, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolEvents, ToolInput } from '../../tools/base.cjs';
|
|
4
4
|
import { GetRunContext } from '../../context.cjs';
|
|
5
5
|
import { RunnableConfig } from '@langchain/core/runnables';
|
|
6
6
|
import * as LCTools from '@langchain/core/tools';
|
|
7
|
-
import { E as Emitter } from '../../emitter-
|
|
7
|
+
import { E as Emitter } from '../../emitter-D4OcelZ9.cjs';
|
|
8
8
|
import '../../internals/serializable.cjs';
|
|
9
9
|
import '../../internals/types.cjs';
|
|
10
10
|
import '../../internals/helpers/guards.cjs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { BaseCache } from '../../cache/base.js';
|
|
2
2
|
import * as promise_based_task from 'promise-based-task';
|
|
3
|
-
import {
|
|
3
|
+
import { Tool, JSONToolOutput, BaseToolOptions, BaseToolRunOptions, ToolEmitter, ToolEvents, ToolInput } from '../../tools/base.js';
|
|
4
4
|
import { GetRunContext } from '../../context.js';
|
|
5
5
|
import { RunnableConfig } from '@langchain/core/runnables';
|
|
6
6
|
import * as LCTools from '@langchain/core/tools';
|
|
7
|
-
import { E as Emitter } from '../../emitter-
|
|
7
|
+
import { E as Emitter } from '../../emitter-kHxkUxco.js';
|
|
8
8
|
import '../../internals/serializable.js';
|
|
9
9
|
import '../../internals/types.js';
|
|
10
10
|
import '../../internals/helpers/guards.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/adapters/langchain/tools.ts"],"names":["LangChainTool","Tool","tool","serializedSchemaKey","emitter","options","name","description","Emitter","root","child","namespace","toCamelCase","creator","register","Class","LCTools","DynamicTool","DynamicStructuredTool","Serializer","toPlain","instance","pickBy","pick","schema","ZodEffects","toJsonSchema","sourceType","isTruthy","fromPlain","metadata","inputSchema","getProp","_run","arg","run","outputClass","JSONToolOutput","raw","invoke","signal","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;;;;;AA8BO,MAAMA,sBAAuEC,IAAAA,CAAAA;EA9BpF;;;AAsCqBC,EAAAA,IAAAA;AACnB,EAAA,OAAcC,mBAAAA,GAAsB,qBAAA;AAEpBC,EAAAA,OAAAA;AAEhB,EAAA,WAAA,CAAY,EACVF,IAAAA,EACA,GAAGG,OAAAA,EAAAA,EAGF;AACD,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AAEN,IAAA,IAAA,CAAKH,IAAAA,GAAOA,IAAAA;AACZ,IAAA,IAAA,CAAKI,OAAOJ,IAAAA,CAAKI,IAAAA;AACjB,IAAA,IAAA,CAAKC,cAAcL,IAAAA,CAAKK,WAAAA;AACxB,IAAA,IAAA,CAAKH,OAAAA,GAAUI,OAAAA,CAAQC,IAAAA,CAAKC,KAAAA,CAAM;MAChCC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA,WAAA;AAAaC,QAAAA,WAAAA,CAAY,KAAKN,IAAI;;MACtDO,OAAAA,EAAS;KACX,CAAA;AACF;EAEA;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AAEb,IAAA,KAAA,MAAWC,KAAAA,IAAS;MAACC,OAAAA,CAAQC,WAAAA;MAAaD,OAAAA,CAAQE;AAE7C,KAAA,EAAA;AACHC,MAAAA,UAAAA,CAAWL,SAASC,KAAAA,EAAO;AACzBK,QAAAA,OAAAA,0BAAUC,QAAAA,MAAc;AACtBhB,UAAAA,OAAAA,EAASiB,MAAAA,CACP;AACE,YAAA,GAAGC,KAAKF,QAAAA,EAAU;AAChB,cAAA,MAAA;AACA,cAAA,aAAA;AACA,cAAA,UAAA;AACA,cAAA,gBAAA;AACA,cAAA,cAAA;AACA,cAAA;AACD,aAAA,CAAA;YACDG,MAAAA,EACEH,QAAAA,CAASG,MAAAA,YAAkBC,UAAAA,GACvBC,YAAAA,CAAaL,QAAAA,CAASG,MAAAA,CAAOG,UAAAA,EAAU,CAAA,GACvCD,YAAAA,CAAaL,QAAAA,CAASG,MAAM;AACpC,WAAA,EACAI,QAAAA;SAEJ,CAAA,EAlBS,SAAA,CAAA;QAmBTC,SAAAA,kBAAW,MAAA,CAAA,CAAC,EAAExB,OAAAA,EAAO,KAAE;AACrB,UAAA,OAAO,IAAIU,KAAAA,CAAM;YACf,GAAGV,OAAAA;YACHyB,QAAAA,EAAU;AAAE,cAAA,GAAGzB,OAAAA,EAASyB,QAAAA;cAAU,CAAC9B,aAAAA,CAAcG,mBAAmB,GAAGE,OAAAA,CAAQmB;AAAO;WACxF,CAAA;
|
|
1
|
+
{"version":3,"sources":["../../../src/adapters/langchain/tools.ts"],"names":["LangChainTool","Tool","tool","serializedSchemaKey","emitter","options","name","description","Emitter","root","child","namespace","toCamelCase","creator","register","Class","LCTools","DynamicTool","DynamicStructuredTool","Serializer","toPlain","instance","pickBy","pick","schema","ZodEffects","toJsonSchema","sourceType","isTruthy","fromPlain","metadata","inputSchema","getProp","_run","arg","run","outputClass","JSONToolOutput","raw","invoke","signal","createSnapshot","loadSnapshot","snapshot"],"mappings":"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","file":"tools.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolEvents,\n ToolInput,\n} from \"@/tools/base.js\";\nimport type { GetRunContext } from \"@/context.js\";\nimport type { RunnableConfig } from \"@langchain/core/runnables\";\nimport { ZodEffects } from \"zod\";\nimport * as LCTools from \"@langchain/core/tools\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { isTruthy, pick, pickBy, toCamelCase } from \"remeda\";\nimport { toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { ClassConstructor } from \"@/internals/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport type LangChainToolRunOptions = RunnableConfig & BaseToolRunOptions;\nexport type LangChainToolOptions<TOutput = any> = BaseToolOptions & {\n outputClass?: typeof JSONToolOutput<TOutput>;\n};\n\nexport class LangChainTool<T extends LCTools.StructuredTool, TOutput = any> extends Tool<\n JSONToolOutput<TOutput>,\n LangChainToolOptions<TOutput>,\n LangChainToolRunOptions\n> {\n declare name: string;\n declare description: string;\n\n protected readonly tool: T;\n public static serializedSchemaKey = \"_internalJsonSchema\" as const;\n\n public readonly emitter: ToolEmitter<ToolEvents<T>, JSONToolOutput<TOutput>>;\n\n constructor({\n tool,\n ...options\n }: LangChainToolOptions<TOutput> & {\n tool: T;\n }) {\n super(options);\n\n this.tool = tool;\n this.name = tool.name;\n this.description = tool.description;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"langchain\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n static {\n this.register();\n\n for (const Class of [LCTools.DynamicTool, LCTools.DynamicStructuredTool] as ClassConstructor<\n LCTools.DynamicStructuredTool | LCTools.DynamicTool\n >[]) {\n Serializer.register(Class, {\n toPlain: (instance) => ({\n options: pickBy(\n {\n ...pick(instance, [\n \"name\",\n \"description\",\n \"metadata\",\n \"responseFormat\",\n \"returnDirect\",\n \"func\",\n ]),\n schema:\n instance.schema instanceof ZodEffects\n ? toJsonSchema(instance.schema.sourceType())\n : toJsonSchema(instance.schema),\n },\n isTruthy,\n ),\n }),\n fromPlain: ({ options }) => {\n return new Class({\n ...options,\n metadata: { ...options?.metadata, [LangChainTool.serializedSchemaKey]: options.schema },\n });\n },\n });\n }\n }\n\n inputSchema(): T[\"schema\"] {\n const { schema, metadata = {} } = this.tool;\n\n return getProp(\n metadata,\n [LangChainTool.serializedSchemaKey],\n schema instanceof ZodEffects ? schema.sourceType() : schema,\n );\n }\n\n protected async _run(\n arg: ToolInput<this>,\n options: Partial<LangChainToolRunOptions>,\n run: GetRunContext<this>,\n ): Promise<JSONToolOutput<TOutput>> {\n const { outputClass = JSONToolOutput } = this.options;\n const raw = await this.tool.invoke(arg as Record<string, any>, {\n ...options,\n signal: run.signal,\n });\n return new outputClass(raw);\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n tool: this.tool,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/mcp/serve/http_server.ts"],"names":["logger","Logger","root","child","name","runServer","server","hostname","port","app","express","use","json","transports","all","req","res","debug","method","sessionId","headers","transport","existingTransport","StreamableHTTPServerTransport","status","jsonrpc","error","code","message","id","isInitializeRequest","body","eventStore","InMemoryEventStore","sessionIdGenerator","randomUUID","onsessioninitialized","onclose","sid","connect","handleRequest","headersSent","get","info","SSEServerTransport","on","post","query","handlePostMessage","send","listen","process","exit","close"],"mappings":"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","file":"http_server.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Taken from: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/examples/server/sseAndStreamableHttpCompatibleServer.ts\n\nimport express, { Request, Response } from \"express\";\nimport { SSEServerTransport } from \"@modelcontextprotocol/sdk/server/sse.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { InMemoryEventStore } from \"./in_memory_store.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\nconst logger = Logger.root.child({\n name: \"MCP HTTP server\",\n});\n\nexport function runServer(server: McpServer, hostname = \"127.0.0.1\", port = 3000) {\n // Create Express application\n const app = express();\n app.use(express.json());\n\n // Store transports by session ID\n const transports: Record<string, StreamableHTTPServerTransport | SSEServerTransport> = {};\n\n //=============================================================================\n // STREAMABLE HTTP TRANSPORT (PROTOCOL VERSION 2025-03-26)\n //=============================================================================\n\n // Handle all MCP Streamable HTTP requests (GET, POST, DELETE) on a single endpoint\n app.all(\"/mcp\", async (req: Request, res: Response) => {\n logger.debug(`Received ${req.method} request to /mcp`);\n\n try {\n // Check for existing session ID\n const sessionId = req.headers[\"mcp-session-id\"] as string | undefined;\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n // Check if the transport is of the correct type\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof StreamableHTTPServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a StreamableHTTPServerTransport (could be SSEServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n } else if (!sessionId && req.method === \"POST\" && isInitializeRequest(req.body)) {\n const eventStore = new InMemoryEventStore();\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n eventStore, // Enable resumability\n onsessioninitialized: (sessionId) => {\n // Store the transport by session ID when session is initialized\n logger.debug(`StreamableHTTP session initialized with ID: ${sessionId}`);\n transports[sessionId] = transport;\n },\n });\n\n // Set up onclose handler to clean up transport when closed\n transport.onclose = () => {\n const sid = transport.sessionId;\n if (sid && transports[sid]) {\n logger.debug(`Transport closed for session ${sid}, removing from transports map`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sid];\n }\n };\n\n // Connect the transport to the MCP server\n await server.connect(transport);\n } else {\n // Invalid request - no session ID or not initialization request\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: No valid session ID provided\",\n },\n id: null,\n });\n return;\n }\n\n // Handle the request with the transport\n await transport.handleRequest(req, res, req.body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32603,\n message: \"Internal server error\",\n },\n id: null,\n });\n }\n }\n });\n\n //=============================================================================\n // DEPRECATED HTTP+SSE TRANSPORT (PROTOCOL VERSION 2024-11-05)\n //=============================================================================\n\n app.get(\"/sse\", async (req: Request, res: Response) => {\n logger.info(\"Received GET request to /sse (deprecated SSE transport)\");\n const transport = new SSEServerTransport(\"/messages\", res);\n transports[transport.sessionId] = transport;\n res.on(\"close\", () => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[transport.sessionId];\n });\n await server.connect(transport);\n });\n\n app.post(\"/messages\", async (req: Request, res: Response) => {\n const sessionId = req.query.sessionId as string;\n let transport: SSEServerTransport;\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof SSEServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a SSEServerTransport (could be StreamableHTTPServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n if (transport) {\n await transport.handlePostMessage(req, res, req.body);\n } else {\n res.status(400).send(\"No transport found for sessionId\");\n }\n });\n\n // Start the server\n app.listen(port, hostname, (error) => {\n if (error) {\n logger.error(error, \"Error starting server\");\n process.exit(1);\n }\n logger.info(`Backwards compatible MCP server listening on port ${hostname}:${port}`);\n logger.debug(`\n ==============================================\n SUPPORTED TRANSPORT OPTIONS:\n\n 1. Streamable Http(Protocol version: 2025-03-26)\n Endpoint: /mcp\n Methods: GET, POST, DELETE\n Usage: \n - Initialize with POST to /mcp\n - Establish SSE stream with GET to /mcp\n - Send requests with POST to /mcp\n - Terminate session with DELETE to /mcp\n\n 2. Http + SSE (Protocol version: 2024-11-05)\n Endpoints: /sse (GET) and /messages (POST)\n Usage:\n - Establish SSE stream with GET to /sse\n - Send requests with POST to /messages?sessionId=<id>\n ==============================================\n `);\n });\n\n // Handle server shutdown\n process.on(\"SIGINT\", async () => {\n logger.info(\"Shutting down server...\");\n\n // Close all active transports to properly clean up resources\n for (const sessionId in transports) {\n try {\n logger.debug(`Closing transport for session ${sessionId}`);\n await transports[sessionId].close();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sessionId];\n } catch (error) {\n logger.error(`Error closing transport for session ${sessionId}:`, error);\n }\n }\n logger.debug(\"Server shutdown complete\");\n process.exit(0);\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/mcp/serve/http_server.ts"],"names":["logger","Logger","root","child","name","runServer","server","hostname","port","app","express","use","json","transports","all","req","res","debug","method","sessionId","headers","transport","existingTransport","StreamableHTTPServerTransport","status","jsonrpc","error","code","message","id","isInitializeRequest","body","eventStore","InMemoryEventStore","sessionIdGenerator","randomUUID","onsessioninitialized","onclose","sid","connect","handleRequest","headersSent","get","info","SSEServerTransport","on","post","query","handlePostMessage","send","listen","process","exit","close"],"mappings":"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","file":"http_server.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Taken from: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/examples/server/sseAndStreamableHttpCompatibleServer.ts\n\nimport express, { Request, Response } from \"express\";\nimport { SSEServerTransport } from \"@modelcontextprotocol/sdk/server/sse.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { InMemoryEventStore } from \"./in_memory_store.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\nconst logger = Logger.root.child({\n name: \"MCP HTTP server\",\n});\n\nexport function runServer(server: McpServer, hostname = \"127.0.0.1\", port = 3000) {\n // Create Express application\n const app = express();\n app.use(express.json());\n\n // Store transports by session ID\n const transports: Record<string, StreamableHTTPServerTransport | SSEServerTransport> = {};\n\n //=============================================================================\n // STREAMABLE HTTP TRANSPORT (PROTOCOL VERSION 2025-03-26)\n //=============================================================================\n\n // Handle all MCP Streamable HTTP requests (GET, POST, DELETE) on a single endpoint\n app.all(\"/mcp\", async (req: Request, res: Response) => {\n logger.debug(`Received ${req.method} request to /mcp`);\n\n try {\n // Check for existing session ID\n const sessionId = req.headers[\"mcp-session-id\"] as string | undefined;\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n // Check if the transport is of the correct type\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof StreamableHTTPServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a StreamableHTTPServerTransport (could be SSEServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n } else if (!sessionId && req.method === \"POST\" && isInitializeRequest(req.body)) {\n const eventStore = new InMemoryEventStore();\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n eventStore, // Enable resumability\n onsessioninitialized: (sessionId) => {\n // Store the transport by session ID when session is initialized\n logger.debug(`StreamableHTTP session initialized with ID: ${sessionId}`);\n transports[sessionId] = transport;\n },\n });\n\n // Set up onclose handler to clean up transport when closed\n transport.onclose = () => {\n const sid = transport.sessionId;\n if (sid && transports[sid]) {\n logger.debug(`Transport closed for session ${sid}, removing from transports map`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sid];\n }\n };\n\n // Connect the transport to the MCP server\n await server.connect(transport);\n } else {\n // Invalid request - no session ID or not initialization request\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: No valid session ID provided\",\n },\n id: null,\n });\n return;\n }\n\n // Handle the request with the transport\n await transport.handleRequest(req, res, req.body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32603,\n message: \"Internal server error\",\n },\n id: null,\n });\n }\n }\n });\n\n //=============================================================================\n // DEPRECATED HTTP+SSE TRANSPORT (PROTOCOL VERSION 2024-11-05)\n //=============================================================================\n\n app.get(\"/sse\", async (req: Request, res: Response) => {\n logger.info(\"Received GET request to /sse (deprecated SSE transport)\");\n const transport = new SSEServerTransport(\"/messages\", res);\n transports[transport.sessionId] = transport;\n res.on(\"close\", () => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[transport.sessionId];\n });\n await server.connect(transport);\n });\n\n app.post(\"/messages\", async (req: Request, res: Response) => {\n const sessionId = req.query.sessionId as string;\n let transport: SSEServerTransport;\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof SSEServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a SSEServerTransport (could be StreamableHTTPServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n if (transport) {\n await transport.handlePostMessage(req, res, req.body);\n } else {\n res.status(400).send(\"No transport found for sessionId\");\n }\n });\n\n // Start the server\n app.listen(port, hostname, (error) => {\n if (error) {\n logger.error(error, \"Error starting server\");\n process.exit(1);\n }\n logger.info(`Backwards compatible MCP server listening on port ${hostname}:${port}`);\n logger.debug(`\n ==============================================\n SUPPORTED TRANSPORT OPTIONS:\n\n 1. Streamable Http(Protocol version: 2025-03-26)\n Endpoint: /mcp\n Methods: GET, POST, DELETE\n Usage: \n - Initialize with POST to /mcp\n - Establish SSE stream with GET to /mcp\n - Send requests with POST to /mcp\n - Terminate session with DELETE to /mcp\n\n 2. Http + SSE (Protocol version: 2024-11-05)\n Endpoints: /sse (GET) and /messages (POST)\n Usage:\n - Establish SSE stream with GET to /sse\n - Send requests with POST to /messages?sessionId=<id>\n ==============================================\n `);\n });\n\n // Handle server shutdown\n process.on(\"SIGINT\", async () => {\n logger.info(\"Shutting down server...\");\n\n // Close all active transports to properly clean up resources\n for (const sessionId in transports) {\n try {\n logger.debug(`Closing transport for session ${sessionId}`);\n await transports[sessionId].close();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sessionId];\n } catch (error) {\n logger.error(`Error closing transport for session ${sessionId}:`, error);\n }\n }\n logger.debug(\"Server shutdown complete\");\n process.exit(0);\n });\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/mcp/serve/http_server.ts"],"names":["logger","Logger","root","child","name","runServer","server","hostname","port","app","express","use","json","transports","all","req","res","debug","method","sessionId","headers","transport","existingTransport","StreamableHTTPServerTransport","status","jsonrpc","error","code","message","id","isInitializeRequest","body","eventStore","InMemoryEventStore","sessionIdGenerator","randomUUID","onsessioninitialized","onclose","sid","connect","handleRequest","headersSent","get","info","SSEServerTransport","on","post","query","handlePostMessage","send","listen","process","exit","close"],"mappings":"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","file":"http_server.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Taken from: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/examples/server/sseAndStreamableHttpCompatibleServer.ts\n\nimport express, { Request, Response } from \"express\";\nimport { SSEServerTransport } from \"@modelcontextprotocol/sdk/server/sse.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { InMemoryEventStore } from \"./in_memory_store.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\nconst logger = Logger.root.child({\n name: \"MCP HTTP server\",\n});\n\nexport function runServer(server: McpServer, hostname = \"127.0.0.1\", port = 3000) {\n // Create Express application\n const app = express();\n app.use(express.json());\n\n // Store transports by session ID\n const transports: Record<string, StreamableHTTPServerTransport | SSEServerTransport> = {};\n\n //=============================================================================\n // STREAMABLE HTTP TRANSPORT (PROTOCOL VERSION 2025-03-26)\n //=============================================================================\n\n // Handle all MCP Streamable HTTP requests (GET, POST, DELETE) on a single endpoint\n app.all(\"/mcp\", async (req: Request, res: Response) => {\n logger.debug(`Received ${req.method} request to /mcp`);\n\n try {\n // Check for existing session ID\n const sessionId = req.headers[\"mcp-session-id\"] as string | undefined;\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n // Check if the transport is of the correct type\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof StreamableHTTPServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a StreamableHTTPServerTransport (could be SSEServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n } else if (!sessionId && req.method === \"POST\" && isInitializeRequest(req.body)) {\n const eventStore = new InMemoryEventStore();\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n eventStore, // Enable resumability\n onsessioninitialized: (sessionId) => {\n // Store the transport by session ID when session is initialized\n logger.debug(`StreamableHTTP session initialized with ID: ${sessionId}`);\n transports[sessionId] = transport;\n },\n });\n\n // Set up onclose handler to clean up transport when closed\n transport.onclose = () => {\n const sid = transport.sessionId;\n if (sid && transports[sid]) {\n logger.debug(`Transport closed for session ${sid}, removing from transports map`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sid];\n }\n };\n\n // Connect the transport to the MCP server\n await server.connect(transport);\n } else {\n // Invalid request - no session ID or not initialization request\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: No valid session ID provided\",\n },\n id: null,\n });\n return;\n }\n\n // Handle the request with the transport\n await transport.handleRequest(req, res, req.body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32603,\n message: \"Internal server error\",\n },\n id: null,\n });\n }\n }\n });\n\n //=============================================================================\n // DEPRECATED HTTP+SSE TRANSPORT (PROTOCOL VERSION 2024-11-05)\n //=============================================================================\n\n app.get(\"/sse\", async (req: Request, res: Response) => {\n logger.info(\"Received GET request to /sse (deprecated SSE transport)\");\n const transport = new SSEServerTransport(\"/messages\", res);\n transports[transport.sessionId] = transport;\n res.on(\"close\", () => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[transport.sessionId];\n });\n await server.connect(transport);\n });\n\n app.post(\"/messages\", async (req: Request, res: Response) => {\n const sessionId = req.query.sessionId as string;\n let transport: SSEServerTransport;\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof SSEServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a SSEServerTransport (could be StreamableHTTPServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n if (transport) {\n await transport.handlePostMessage(req, res, req.body);\n } else {\n res.status(400).send(\"No transport found for sessionId\");\n }\n });\n\n // Start the server\n app.listen(port, hostname, (error) => {\n if (error) {\n logger.error(error, \"Error starting server\");\n process.exit(1);\n }\n logger.info(`Backwards compatible MCP server listening on port ${hostname}:${port}`);\n logger.debug(`\n ==============================================\n SUPPORTED TRANSPORT OPTIONS:\n\n 1. Streamable Http(Protocol version: 2025-03-26)\n Endpoint: /mcp\n Methods: GET, POST, DELETE\n Usage: \n - Initialize with POST to /mcp\n - Establish SSE stream with GET to /mcp\n - Send requests with POST to /mcp\n - Terminate session with DELETE to /mcp\n\n 2. Http + SSE (Protocol version: 2024-11-05)\n Endpoints: /sse (GET) and /messages (POST)\n Usage:\n - Establish SSE stream with GET to /sse\n - Send requests with POST to /messages?sessionId=<id>\n ==============================================\n `);\n });\n\n // Handle server shutdown\n process.on(\"SIGINT\", async () => {\n logger.info(\"Shutting down server...\");\n\n // Close all active transports to properly clean up resources\n for (const sessionId in transports) {\n try {\n logger.debug(`Closing transport for session ${sessionId}`);\n await transports[sessionId].close();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sessionId];\n } catch (error) {\n logger.error(`Error closing transport for session ${sessionId}:`, error);\n }\n }\n logger.debug(\"Server shutdown complete\");\n process.exit(0);\n });\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/mcp/serve/http_server.ts"],"names":["logger","Logger","root","child","name","runServer","server","hostname","port","app","express","use","json","transports","all","req","res","debug","method","sessionId","headers","transport","existingTransport","StreamableHTTPServerTransport","status","jsonrpc","error","code","message","id","isInitializeRequest","body","eventStore","InMemoryEventStore","sessionIdGenerator","randomUUID","onsessioninitialized","onclose","sid","connect","handleRequest","headersSent","get","info","SSEServerTransport","on","post","query","handlePostMessage","send","listen","process","exit","close"],"mappings":"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","file":"http_server.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\n// Taken from: https://github.com/modelcontextprotocol/typescript-sdk/blob/main/src/examples/server/sseAndStreamableHttpCompatibleServer.ts\n\nimport express, { Request, Response } from \"express\";\nimport { SSEServerTransport } from \"@modelcontextprotocol/sdk/server/sse.js\";\nimport { StreamableHTTPServerTransport } from \"@modelcontextprotocol/sdk/server/streamableHttp.js\";\nimport { isInitializeRequest } from \"@modelcontextprotocol/sdk/types.js\";\nimport { InMemoryEventStore } from \"./in_memory_store.js\";\nimport { randomUUID } from \"node:crypto\";\nimport { McpServer } from \"@modelcontextprotocol/sdk/server/mcp.js\";\nimport { Logger } from \"@/logger/logger.js\";\n\nconst logger = Logger.root.child({\n name: \"MCP HTTP server\",\n});\n\nexport function runServer(server: McpServer, hostname = \"127.0.0.1\", port = 3000) {\n // Create Express application\n const app = express();\n app.use(express.json());\n\n // Store transports by session ID\n const transports: Record<string, StreamableHTTPServerTransport | SSEServerTransport> = {};\n\n //=============================================================================\n // STREAMABLE HTTP TRANSPORT (PROTOCOL VERSION 2025-03-26)\n //=============================================================================\n\n // Handle all MCP Streamable HTTP requests (GET, POST, DELETE) on a single endpoint\n app.all(\"/mcp\", async (req: Request, res: Response) => {\n logger.debug(`Received ${req.method} request to /mcp`);\n\n try {\n // Check for existing session ID\n const sessionId = req.headers[\"mcp-session-id\"] as string | undefined;\n let transport: StreamableHTTPServerTransport;\n\n if (sessionId && transports[sessionId]) {\n // Check if the transport is of the correct type\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof StreamableHTTPServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a StreamableHTTPServerTransport (could be SSEServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n } else if (!sessionId && req.method === \"POST\" && isInitializeRequest(req.body)) {\n const eventStore = new InMemoryEventStore();\n transport = new StreamableHTTPServerTransport({\n sessionIdGenerator: () => randomUUID(),\n eventStore, // Enable resumability\n onsessioninitialized: (sessionId) => {\n // Store the transport by session ID when session is initialized\n logger.debug(`StreamableHTTP session initialized with ID: ${sessionId}`);\n transports[sessionId] = transport;\n },\n });\n\n // Set up onclose handler to clean up transport when closed\n transport.onclose = () => {\n const sid = transport.sessionId;\n if (sid && transports[sid]) {\n logger.debug(`Transport closed for session ${sid}, removing from transports map`);\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sid];\n }\n };\n\n // Connect the transport to the MCP server\n await server.connect(transport);\n } else {\n // Invalid request - no session ID or not initialization request\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: No valid session ID provided\",\n },\n id: null,\n });\n return;\n }\n\n // Handle the request with the transport\n await transport.handleRequest(req, res, req.body);\n } catch (error) {\n logger.error(\"Error handling MCP request:\", error);\n if (!res.headersSent) {\n res.status(500).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32603,\n message: \"Internal server error\",\n },\n id: null,\n });\n }\n }\n });\n\n //=============================================================================\n // DEPRECATED HTTP+SSE TRANSPORT (PROTOCOL VERSION 2024-11-05)\n //=============================================================================\n\n app.get(\"/sse\", async (req: Request, res: Response) => {\n logger.info(\"Received GET request to /sse (deprecated SSE transport)\");\n const transport = new SSEServerTransport(\"/messages\", res);\n transports[transport.sessionId] = transport;\n res.on(\"close\", () => {\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[transport.sessionId];\n });\n await server.connect(transport);\n });\n\n app.post(\"/messages\", async (req: Request, res: Response) => {\n const sessionId = req.query.sessionId as string;\n let transport: SSEServerTransport;\n const existingTransport = transports[sessionId];\n if (existingTransport instanceof SSEServerTransport) {\n // Reuse existing transport\n transport = existingTransport;\n } else {\n // Transport exists but is not a SSEServerTransport (could be StreamableHTTPServerTransport)\n res.status(400).json({\n jsonrpc: \"2.0\",\n error: {\n code: -32000,\n message: \"Bad Request: Session exists but uses a different transport protocol\",\n },\n id: null,\n });\n return;\n }\n if (transport) {\n await transport.handlePostMessage(req, res, req.body);\n } else {\n res.status(400).send(\"No transport found for sessionId\");\n }\n });\n\n // Start the server\n app.listen(port, hostname, (error) => {\n if (error) {\n logger.error(error, \"Error starting server\");\n process.exit(1);\n }\n logger.info(`Backwards compatible MCP server listening on port ${hostname}:${port}`);\n logger.debug(`\n ==============================================\n SUPPORTED TRANSPORT OPTIONS:\n\n 1. Streamable Http(Protocol version: 2025-03-26)\n Endpoint: /mcp\n Methods: GET, POST, DELETE\n Usage: \n - Initialize with POST to /mcp\n - Establish SSE stream with GET to /mcp\n - Send requests with POST to /mcp\n - Terminate session with DELETE to /mcp\n\n 2. Http + SSE (Protocol version: 2024-11-05)\n Endpoints: /sse (GET) and /messages (POST)\n Usage:\n - Establish SSE stream with GET to /sse\n - Send requests with POST to /messages?sessionId=<id>\n ==============================================\n `);\n });\n\n // Handle server shutdown\n process.on(\"SIGINT\", async () => {\n logger.info(\"Shutting down server...\");\n\n // Close all active transports to properly clean up resources\n for (const sessionId in transports) {\n try {\n logger.debug(`Closing transport for session ${sessionId}`);\n await transports[sessionId].close();\n // eslint-disable-next-line @typescript-eslint/no-dynamic-delete\n delete transports[sessionId];\n } catch (error) {\n logger.error(`Error closing transport for session ${sessionId}:`, error);\n }\n }\n logger.debug(\"Server shutdown complete\");\n process.exit(0);\n });\n}\n"]}
|