beeai-framework 0.1.28 → 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 +3 -3
- package/dist/adapters/anthropic/backend/chat.d.ts +3 -3
- 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-BAVf6-xf.d.ts → agent-s3uhvAba.d.ts} +5 -5
- package/dist/{agent-DHO-oJQf.d.cts → agent-zfT__iq9.d.cts} +5 -5
- 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.d.cts +1 -1
- package/dist/agents/react/prompts.d.ts +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.d.cts +1 -1
- package/dist/agents/react/runners/deep-think/prompts.d.ts +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 +5 -5
- package/dist/agents/react/runners/deep-think/runner.d.ts +5 -5
- 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 +5 -5
- package/dist/agents/react/runners/default/runner.d.ts +5 -5
- 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.d.cts +1 -1
- package/dist/agents/react/runners/granite/prompts.d.ts +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 +5 -5
- package/dist/agents/react/runners/granite/runner.d.ts +5 -5
- 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 +2 -2
- package/dist/agents/requirement/prompts.d.ts +2 -2
- 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-BfhNzUYf.d.ts → base-BjzyQ8k6.d.ts} +2 -2
- package/dist/{base-BqzN2QwB.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-DaqV3woF.d.cts → chat-C20nYj46.d.cts} +3 -3
- package/dist/{chat-DTxmaKP0.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-UkIkNrek.d.cts → emitter-D4OcelZ9.d.cts} +2 -2
- package/dist/{emitter-CL56qab4.d.ts → emitter-kHxkUxco.d.ts} +2 -2
- 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 +3 -3
- package/dist/tools/database/milvus.d.ts +3 -3
- 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-YoNQSxQH.d.cts → types-BNsa3W7Z.d.cts} +4 -4
- package/dist/{types-YT-WdK3m.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 +38 -15
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/backend/backend.ts"],"names":["Backend","Serializable","chat","embedding","models","Object","assign","fromName","input","asyncProperties","ChatModel","EmbeddingModel","fromProvider","provider","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;;;AAkBO,MAAMA,gBAAgBC,6BAAAA,CAAAA;EAlB7B;;;AAmBEC,EAAAA,IAAAA;AACAC,EAAAA,SAAAA;AAEA,EAAA,WAAA,CAAYC,MAAAA,EAAuB;AACjC,IAAA,KAAA,EAAK;AACLC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,MAAAA,CAAAA;AACtB;AAEA,EAAA,aAAaG,SACXC,KAAAA,EACkB;AAClB,IAAA,OAAO,IAAIR,OAAAA,CACT,MAAMS,2BAAAA,CAAgB;MACpBP,IAAAA,EAAMQ,kBAAAA,CAAUH,QAAAA,CAASC,KAAAA,CAAMN,IAAI,CAAA;AACnCC,MAAAA,SAAAA,EAAWQ,4BAAAA,CAAeJ,QAAAA,CAASC,KAAAA,CAAML,SAAAA,IAAa,OAAA;AACxD,KAAA,CAAA,CAAA;AAEJ;AAEA,EAAA,aAAaS,aAAaC,QAAAA,EAA0C;AAClE,IAAA,OAAO,MAAM,KAAKN,QAAAA,CAAS;MACzBL,IAAAA,EAAMW,QAAAA;MACNV,SAAAA,EAAWU;KACb,CAAA;AACF;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEZ,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AAAMC,MAAAA,SAAAA,EAAW,IAAA,CAAKA;AAAU,KAAA;AACtD;AAEAY,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DX,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMU,QAAAA,CAAAA;AACtB;AACF","file":"backend.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { EmbeddingModel } from \"@/backend/embedding.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ProviderName } from \"./constants.js\";\nimport { OptionalExcept } from \"@/internals/types.js\";\n\ninterface BackendModels {\n chat: ChatModel;\n embedding: EmbeddingModel;\n}\n\nexport class Backend extends Serializable implements BackendModels {\n chat!: ChatModel;\n embedding!: EmbeddingModel;\n\n constructor(models: BackendModels) {\n super();\n Object.assign(this, models);\n }\n\n static async fromName(\n input: OptionalExcept<Record<keyof BackendModels, FullModelName | ProviderName>, \"chat\">,\n ): Promise<Backend> {\n return new Backend(\n await asyncProperties({\n chat: ChatModel.fromName(input.chat),\n embedding: EmbeddingModel.fromName(input.embedding || \"dummy\"),\n }),\n );\n }\n\n static async fromProvider(provider: ProviderName): Promise<Backend> {\n return await this.fromName({\n chat: provider,\n embedding: provider,\n });\n }\n\n createSnapshot() {\n return { chat: this.chat, embedding: this.embedding };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/backend/backend.ts"],"names":["Backend","Serializable","chat","embedding","models","Object","assign","fromName","input","asyncProperties","ChatModel","EmbeddingModel","fromProvider","provider","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;;;AAkBO,MAAMA,gBAAgBC,6BAAAA,CAAAA;EAlB7B;;;AAmBEC,EAAAA,IAAAA;AACAC,EAAAA,SAAAA;AAEA,EAAA,WAAA,CAAYC,MAAAA,EAAuB;AACjC,IAAA,KAAA,EAAK;AACLC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,MAAAA,CAAAA;AACtB,EAAA;AAEA,EAAA,aAAaG,SACXC,KAAAA,EACkB;AAClB,IAAA,OAAO,IAAIR,OAAAA,CACT,MAAMS,2BAAAA,CAAgB;MACpBP,IAAAA,EAAMQ,kBAAAA,CAAUH,QAAAA,CAASC,KAAAA,CAAMN,IAAI,CAAA;AACnCC,MAAAA,SAAAA,EAAWQ,4BAAAA,CAAeJ,QAAAA,CAASC,KAAAA,CAAML,SAAAA,IAAa,OAAA;AACxD,KAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,EAAA,aAAaS,aAAaC,QAAAA,EAA0C;AAClE,IAAA,OAAO,MAAM,KAAKN,QAAAA,CAAS;MACzBL,IAAAA,EAAMW,QAAAA;MACNV,SAAAA,EAAWU;KACb,CAAA;AACF,EAAA;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEZ,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AAAMC,MAAAA,SAAAA,EAAW,IAAA,CAAKA;AAAU,KAAA;AACtD,EAAA;AAEAY,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DX,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMU,QAAAA,CAAAA;AACtB,EAAA;AACF","file":"backend.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { EmbeddingModel } from \"@/backend/embedding.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ProviderName } from \"./constants.js\";\nimport { OptionalExcept } from \"@/internals/types.js\";\n\ninterface BackendModels {\n chat: ChatModel;\n embedding: EmbeddingModel;\n}\n\nexport class Backend extends Serializable implements BackendModels {\n chat!: ChatModel;\n embedding!: EmbeddingModel;\n\n constructor(models: BackendModels) {\n super();\n Object.assign(this, models);\n }\n\n static async fromName(\n input: OptionalExcept<Record<keyof BackendModels, FullModelName | ProviderName>, \"chat\">,\n ): Promise<Backend> {\n return new Backend(\n await asyncProperties({\n chat: ChatModel.fromName(input.chat),\n embedding: EmbeddingModel.fromName(input.embedding || \"dummy\"),\n }),\n );\n }\n\n static async fromProvider(provider: ProviderName): Promise<Backend> {\n return await this.fromName({\n chat: provider,\n embedding: provider,\n });\n }\n\n createSnapshot() {\n return { chat: this.chat, embedding: this.embedding };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Serializable } from '../internals/serializable.cjs';
|
|
2
|
-
import {
|
|
2
|
+
import { a as ChatModel, F as FullModelName } from '../chat-C20nYj46.cjs';
|
|
3
3
|
import { EmbeddingModel } from './embedding.cjs';
|
|
4
4
|
import { ProviderName } from './constants.cjs';
|
|
5
5
|
import { OptionalExcept } from '../internals/types.cjs';
|
|
6
|
+
import '../internals/helpers/guards.cjs';
|
|
6
7
|
import './message.cjs';
|
|
7
8
|
import 'ai';
|
|
8
9
|
import '../context.cjs';
|
|
9
|
-
import '../emitter-
|
|
10
|
+
import '../emitter-D4OcelZ9.cjs';
|
|
10
11
|
import '../internals/helpers/promise.cjs';
|
|
11
12
|
import '../errors.cjs';
|
|
12
13
|
import 'promise-based-task';
|
|
@@ -19,7 +20,6 @@ import 'zod-to-json-schema';
|
|
|
19
20
|
import '../template.cjs';
|
|
20
21
|
import '../logger/logger.cjs';
|
|
21
22
|
import 'pino';
|
|
22
|
-
import '../internals/helpers/guards.cjs';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import { Serializable } from '../internals/serializable.js';
|
|
2
|
-
import {
|
|
2
|
+
import { a as ChatModel, F as FullModelName } from '../chat-CfTNfR60.js';
|
|
3
3
|
import { EmbeddingModel } from './embedding.js';
|
|
4
4
|
import { ProviderName } from './constants.js';
|
|
5
5
|
import { OptionalExcept } from '../internals/types.js';
|
|
6
|
+
import '../internals/helpers/guards.js';
|
|
6
7
|
import './message.js';
|
|
7
8
|
import 'ai';
|
|
8
9
|
import '../context.js';
|
|
9
|
-
import '../emitter-
|
|
10
|
+
import '../emitter-kHxkUxco.js';
|
|
10
11
|
import '../internals/helpers/promise.js';
|
|
11
12
|
import '../errors.js';
|
|
12
13
|
import 'promise-based-task';
|
|
@@ -19,7 +20,6 @@ import 'zod-to-json-schema';
|
|
|
19
20
|
import '../template.js';
|
|
20
21
|
import '../logger/logger.js';
|
|
21
22
|
import 'pino';
|
|
22
|
-
import '../internals/helpers/guards.js';
|
|
23
23
|
|
|
24
24
|
/**
|
|
25
25
|
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/backend/backend.ts"],"names":["Backend","Serializable","chat","embedding","models","Object","assign","fromName","input","asyncProperties","ChatModel","EmbeddingModel","fromProvider","provider","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;AAkBO,MAAMA,gBAAgBC,YAAAA,CAAAA;EAlB7B;;;AAmBEC,EAAAA,IAAAA;AACAC,EAAAA,SAAAA;AAEA,EAAA,WAAA,CAAYC,MAAAA,EAAuB;AACjC,IAAA,KAAA,EAAK;AACLC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,MAAAA,CAAAA;AACtB;AAEA,EAAA,aAAaG,SACXC,KAAAA,EACkB;AAClB,IAAA,OAAO,IAAIR,OAAAA,CACT,MAAMS,eAAAA,CAAgB;MACpBP,IAAAA,EAAMQ,SAAAA,CAAUH,QAAAA,CAASC,KAAAA,CAAMN,IAAI,CAAA;AACnCC,MAAAA,SAAAA,EAAWQ,cAAAA,CAAeJ,QAAAA,CAASC,KAAAA,CAAML,SAAAA,IAAa,OAAA;AACxD,KAAA,CAAA,CAAA;AAEJ;AAEA,EAAA,aAAaS,aAAaC,QAAAA,EAA0C;AAClE,IAAA,OAAO,MAAM,KAAKN,QAAAA,CAAS;MACzBL,IAAAA,EAAMW,QAAAA;MACNV,SAAAA,EAAWU;KACb,CAAA;AACF;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEZ,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AAAMC,MAAAA,SAAAA,EAAW,IAAA,CAAKA;AAAU,KAAA;AACtD;AAEAY,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DX,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMU,QAAAA,CAAAA;AACtB;AACF","file":"backend.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { EmbeddingModel } from \"@/backend/embedding.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ProviderName } from \"./constants.js\";\nimport { OptionalExcept } from \"@/internals/types.js\";\n\ninterface BackendModels {\n chat: ChatModel;\n embedding: EmbeddingModel;\n}\n\nexport class Backend extends Serializable implements BackendModels {\n chat!: ChatModel;\n embedding!: EmbeddingModel;\n\n constructor(models: BackendModels) {\n super();\n Object.assign(this, models);\n }\n\n static async fromName(\n input: OptionalExcept<Record<keyof BackendModels, FullModelName | ProviderName>, \"chat\">,\n ): Promise<Backend> {\n return new Backend(\n await asyncProperties({\n chat: ChatModel.fromName(input.chat),\n embedding: EmbeddingModel.fromName(input.embedding || \"dummy\"),\n }),\n );\n }\n\n static async fromProvider(provider: ProviderName): Promise<Backend> {\n return await this.fromName({\n chat: provider,\n embedding: provider,\n });\n }\n\n createSnapshot() {\n return { chat: this.chat, embedding: this.embedding };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/backend/backend.ts"],"names":["Backend","Serializable","chat","embedding","models","Object","assign","fromName","input","asyncProperties","ChatModel","EmbeddingModel","fromProvider","provider","createSnapshot","loadSnapshot","snapshot"],"mappings":";;;;;;;AAkBO,MAAMA,gBAAgBC,YAAAA,CAAAA;EAlB7B;;;AAmBEC,EAAAA,IAAAA;AACAC,EAAAA,SAAAA;AAEA,EAAA,WAAA,CAAYC,MAAAA,EAAuB;AACjC,IAAA,KAAA,EAAK;AACLC,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMF,MAAAA,CAAAA;AACtB,EAAA;AAEA,EAAA,aAAaG,SACXC,KAAAA,EACkB;AAClB,IAAA,OAAO,IAAIR,OAAAA,CACT,MAAMS,eAAAA,CAAgB;MACpBP,IAAAA,EAAMQ,SAAAA,CAAUH,QAAAA,CAASC,KAAAA,CAAMN,IAAI,CAAA;AACnCC,MAAAA,SAAAA,EAAWQ,cAAAA,CAAeJ,QAAAA,CAASC,KAAAA,CAAML,SAAAA,IAAa,OAAA;AACxD,KAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,EAAA,aAAaS,aAAaC,QAAAA,EAA0C;AAClE,IAAA,OAAO,MAAM,KAAKN,QAAAA,CAAS;MACzBL,IAAAA,EAAMW,QAAAA;MACNV,SAAAA,EAAWU;KACb,CAAA;AACF,EAAA;EAEAC,cAAAA,GAAiB;AACf,IAAA,OAAO;AAAEZ,MAAAA,IAAAA,EAAM,IAAA,CAAKA,IAAAA;AAAMC,MAAAA,SAAAA,EAAW,IAAA,CAAKA;AAAU,KAAA;AACtD,EAAA;AAEAY,EAAAA,YAAAA,CAAaC,QAAAA,EAAkD;AAC7DX,IAAAA,MAAAA,CAAOC,MAAAA,CAAO,MAAMU,QAAAA,CAAAA;AACtB,EAAA;AACF","file":"backend.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { EmbeddingModel } from \"@/backend/embedding.js\";\nimport { asyncProperties } from \"@/internals/helpers/promise.js\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ProviderName } from \"./constants.js\";\nimport { OptionalExcept } from \"@/internals/types.js\";\n\ninterface BackendModels {\n chat: ChatModel;\n embedding: EmbeddingModel;\n}\n\nexport class Backend extends Serializable implements BackendModels {\n chat!: ChatModel;\n embedding!: EmbeddingModel;\n\n constructor(models: BackendModels) {\n super();\n Object.assign(this, models);\n }\n\n static async fromName(\n input: OptionalExcept<Record<keyof BackendModels, FullModelName | ProviderName>, \"chat\">,\n ): Promise<Backend> {\n return new Backend(\n await asyncProperties({\n chat: ChatModel.fromName(input.chat),\n embedding: EmbeddingModel.fromName(input.embedding || \"dummy\"),\n }),\n );\n }\n\n static async fromProvider(provider: ProviderName): Promise<Backend> {\n return await this.fromName({\n chat: provider,\n embedding: provider,\n });\n }\n\n createSnapshot() {\n return { chat: this.chat, embedding: this.embedding };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","fixInvalidToolCalls","retryOnEmptyResponse","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","modelInputMessagesBackup","messages","slice","cacheEntry","createCacheAccessor","emitter","emit","result","Retryable","executor","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","ChatModelOutput","fromChunks","EmptyChatModelResponseError","getToolCalls","Tool","lastMsg","at","toolCall","parseBrokenJson","text","pair","ChatModelToolCallError","generatedContent","generatedError","response","content","length","type","toolCallId","randomString","toLowerCase","toolName","tool","find","t","availableTools","map","join","JSON","stringify","isString","isToolCallValid","parse","resolve","finishReason","config","maxRetries","onRetry","_","lastError","data","AssistantMessage","tempMessage","toolNames","UserMessage","lastMessage","meta","get","error","reject","ChatModelError","middleware","createStructure","_createStructure","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","errorTemplate","errors","expected","received","textResponse","getTextContent","validator","createSchemaValidator","success","context","output","createSnapshot","destroy","key","ObjectHashKeyFn","Serializer","serialize","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","includes","usage","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","cachedPromptTokens","reasoningTokens","messagesById","Map","messagesByToolCallId","msgId","id","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport {\n ChatModelError,\n ChatModelToolCallError,\n EmptyChatModelResponseError,\n} from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n maxRetries?: number;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n public readonly fixInvalidToolCalls: boolean = true;\n public readonly retryOnEmptyResponse: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run): Promise<ChatModelOutput> => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const modelInputMessagesBackup = input.messages.slice();\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n\n const result = await new Retryable({\n executor: async () => {\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n const result = ChatModelOutput.fromChunks(chunks);\n if (result.isEmpty()) {\n throw new EmptyChatModelResponseError();\n }\n\n if (\n isEmpty(result.getToolCalls()) &&\n (forceToolCallViaResponseFormat ||\n input.toolChoice === \"required\" ||\n input.toolChoice instanceof Tool)\n ) {\n const lastMsg = result.messages.at(-1)!;\n let toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (\n toolCall &&\n !toolCall.name &&\n !toolCall.parameters &&\n input.toolChoice instanceof Tool\n ) {\n toolCall = { name: input.toolChoice.name, parameters: toolCall };\n }\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelToolCallError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n generatedContent: lastMsg.text,\n generatedError: \"Tool call was not produced.\",\n response: result,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n for (const toolCall of result.getToolCalls()) {\n const tool = input.tools?.find((t) => t.name === toolCall.toolName);\n if (!tool) {\n const availableTools = input.tools?.map((t) => t.name).join(\",\") || \"None\";\n throw new ChatModelToolCallError(\"Non existing tool call.\", [], {\n generatedError: `Error: Unknown tool '${toolCall.toolName}'.\\nUse on of the available tools: ${availableTools}`,\n generatedContent: JSON.stringify({\n name: toolCall.toolName,\n input: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n }),\n response: result,\n });\n }\n\n if (!isToolCallValid(toolCall)) {\n throw new ChatModelToolCallError(\"Malformed tool call.\", [], {\n generatedContent: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n generatedError: `The tool call for the '${toolCall.toolName}' tool has malformed parameters. It must be a valid JSON.`,\n response: result,\n });\n }\n\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n cacheEntry.resolve(chunks);\n\n if (!result.finishReason) {\n if (result.getToolCalls().length > 0) {\n result.finishReason = \"tool-calls\";\n }\n }\n\n return result;\n },\n config: { maxRetries: input.maxRetries ?? 0 },\n onRetry: async (_, lastError) => {\n if (this.fixInvalidToolCalls && lastError instanceof ChatModelToolCallError) {\n input.messages = input.messages.slice();\n if (lastError.data.generatedContent) {\n input.messages.push(\n new AssistantMessage(lastError.data.generatedContent, {\n tempMessage: true,\n }),\n );\n }\n\n const toolNames = input.tools?.map((t) => t.name).join(\", \") || \"None\";\n input.messages.push(\n new UserMessage(\n `${lastError.data.generatedError}\\n\\nAvailable Tools: ${toolNames}`,\n {\n tempMessage: true,\n },\n ),\n );\n } else if (\n this.retryOnEmptyResponse &&\n lastError instanceof EmptyChatModelResponseError\n ) {\n input.messages = input.messages.slice();\n const lastMessage = input.messages.at(-1);\n if (\n lastMessage &&\n lastMessage instanceof AssistantMessage &&\n lastMessage.meta[\"tempMessage\"] &&\n lastMessage.text === \"\"\n ) {\n input.messages.push(\n new UserMessage(\n \"No output received. Please regenerate your previous response.\",\n { tempMessage: true },\n ),\n );\n } else {\n // Python compatibility\n input.messages.push(new AssistantMessage(\"\", { tempMessage: true }));\n }\n }\n },\n }).get();\n\n input.messages = modelInputMessagesBackup;\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n retryOnEmptyResponse: this.retryOnEmptyResponse,\n fixInvalidToolCalls: this.fixInvalidToolCalls,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n isEmpty() {\n if (this.messages.length === 0) {\n return true;\n }\n return this.getTextContent() === \"\" && this.getToolCalls().length === 0;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n cachedPromptTokens: takeBigger,\n reasoningTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","fixInvalidToolCalls","retryOnEmptyResponse","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","modelInputMessagesBackup","messages","slice","cacheEntry","createCacheAccessor","emitter","emit","result","Retryable","executor","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","ChatModelOutput","fromChunks","EmptyChatModelResponseError","getToolCalls","Tool","lastMsg","at","toolCall","parseBrokenJson","text","pair","ChatModelToolCallError","generatedContent","generatedError","response","content","length","type","toolCallId","randomString","toLowerCase","toolName","tool","find","t","availableTools","map","join","JSON","stringify","isString","isToolCallValid","parse","resolve","finishReason","config","maxRetries","onRetry","_","lastError","data","AssistantMessage","tempMessage","toolNames","UserMessage","lastMessage","meta","get","error","reject","ChatModelError","middleware","createStructure","_createStructure","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","errorTemplate","errors","expected","received","textResponse","getTextContent","validator","createSchemaValidator","success","context","output","createSnapshot","destroy","key","ObjectHashKeyFn","Serializer","serialize","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","includes","usage","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","cachedPromptTokens","reasoningTokens","messagesById","Map","messagesByToolCallId","msgId","id","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport {\n ChatModelError,\n ChatModelToolCallError,\n EmptyChatModelResponseError,\n} from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n maxRetries?: number;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n public readonly fixInvalidToolCalls: boolean = true;\n public readonly retryOnEmptyResponse: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run): Promise<ChatModelOutput> => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const modelInputMessagesBackup = input.messages.slice();\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n\n const result = await new Retryable({\n executor: async () => {\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n const result = ChatModelOutput.fromChunks(chunks);\n if (result.isEmpty()) {\n throw new EmptyChatModelResponseError();\n }\n\n if (\n isEmpty(result.getToolCalls()) &&\n (forceToolCallViaResponseFormat ||\n input.toolChoice === \"required\" ||\n input.toolChoice instanceof Tool)\n ) {\n const lastMsg = result.messages.at(-1)!;\n let toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (\n toolCall &&\n !toolCall.name &&\n !toolCall.parameters &&\n input.toolChoice instanceof Tool\n ) {\n toolCall = { name: input.toolChoice.name, parameters: toolCall };\n }\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelToolCallError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n generatedContent: lastMsg.text,\n generatedError: \"Tool call was not produced.\",\n response: result,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n for (const toolCall of result.getToolCalls()) {\n const tool = input.tools?.find((t) => t.name === toolCall.toolName);\n if (!tool) {\n const availableTools = input.tools?.map((t) => t.name).join(\",\") || \"None\";\n throw new ChatModelToolCallError(\"Non existing tool call.\", [], {\n generatedError: `Error: Unknown tool '${toolCall.toolName}'.\\nUse on of the available tools: ${availableTools}`,\n generatedContent: JSON.stringify({\n name: toolCall.toolName,\n input: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n }),\n response: result,\n });\n }\n\n if (!isToolCallValid(toolCall)) {\n throw new ChatModelToolCallError(\"Malformed tool call.\", [], {\n generatedContent: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n generatedError: `The tool call for the '${toolCall.toolName}' tool has malformed parameters. It must be a valid JSON.`,\n response: result,\n });\n }\n\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n cacheEntry.resolve(chunks);\n\n if (!result.finishReason) {\n if (result.getToolCalls().length > 0) {\n result.finishReason = \"tool-calls\";\n }\n }\n\n return result;\n },\n config: { maxRetries: input.maxRetries ?? 0 },\n onRetry: async (_, lastError) => {\n if (this.fixInvalidToolCalls && lastError instanceof ChatModelToolCallError) {\n input.messages = input.messages.slice();\n if (lastError.data.generatedContent) {\n input.messages.push(\n new AssistantMessage(lastError.data.generatedContent, {\n tempMessage: true,\n }),\n );\n }\n\n const toolNames = input.tools?.map((t) => t.name).join(\", \") || \"None\";\n input.messages.push(\n new UserMessage(\n `${lastError.data.generatedError}\\n\\nAvailable Tools: ${toolNames}`,\n {\n tempMessage: true,\n },\n ),\n );\n } else if (\n this.retryOnEmptyResponse &&\n lastError instanceof EmptyChatModelResponseError\n ) {\n input.messages = input.messages.slice();\n const lastMessage = input.messages.at(-1);\n if (\n lastMessage &&\n lastMessage instanceof AssistantMessage &&\n lastMessage.meta[\"tempMessage\"] &&\n lastMessage.text === \"\"\n ) {\n input.messages.push(\n new UserMessage(\n \"No output received. Please regenerate your previous response.\",\n { tempMessage: true },\n ),\n );\n } else {\n // Python compatibility\n input.messages.push(new AssistantMessage(\"\", { tempMessage: true }));\n }\n }\n },\n }).get();\n\n input.messages = modelInputMessagesBackup;\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n retryOnEmptyResponse: this.retryOnEmptyResponse,\n fixInvalidToolCalls: this.fixInvalidToolCalls,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n isEmpty() {\n if (this.messages.length === 0) {\n return true;\n }\n return this.getTextContent() === \"\" && this.getToolCalls().length === 0;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n cachedPromptTokens: takeBigger,\n reasoningTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
|
package/dist/backend/chat.d.cts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './message.cjs';
|
|
2
2
|
import '../context.cjs';
|
|
3
3
|
import '../internals/serializable.cjs';
|
|
4
|
-
import '../emitter-
|
|
4
|
+
import '../emitter-D4OcelZ9.cjs';
|
|
5
5
|
import '../errors.cjs';
|
|
6
6
|
import 'promise-based-task';
|
|
7
7
|
import '../cache/base.cjs';
|
|
8
|
-
export {
|
|
8
|
+
export { C as ChatConfig, a as ChatModel, b as ChatModelCache, c as ChatModelEmitter, d as ChatModelEvents, e as ChatModelFinishReason, f as ChatModelInput, g as ChatModelObjectInput, h as ChatModelObjectOutput, i as ChatModelOutput, j as ChatModelParameters, k as ChatModelToolChoice, l as ChatModelToolChoiceSupport, m as ChatModelUsage, n as ConfigFn } from '../chat-C20nYj46.cjs';
|
|
9
9
|
import './constants.cjs';
|
|
10
10
|
import '../tools/base.cjs';
|
|
11
11
|
import 'zod';
|
package/dist/backend/chat.d.ts
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import './message.js';
|
|
2
2
|
import '../context.js';
|
|
3
3
|
import '../internals/serializable.js';
|
|
4
|
-
import '../emitter-
|
|
4
|
+
import '../emitter-kHxkUxco.js';
|
|
5
5
|
import '../errors.js';
|
|
6
6
|
import 'promise-based-task';
|
|
7
7
|
import '../cache/base.js';
|
|
8
|
-
export {
|
|
8
|
+
export { C as ChatConfig, a as ChatModel, b as ChatModelCache, c as ChatModelEmitter, d as ChatModelEvents, e as ChatModelFinishReason, f as ChatModelInput, g as ChatModelObjectInput, h as ChatModelObjectOutput, i as ChatModelOutput, j as ChatModelParameters, k as ChatModelToolChoice, l as ChatModelToolChoiceSupport, m as ChatModelUsage, n as ConfigFn } from '../chat-CfTNfR60.js';
|
|
9
9
|
import './constants.js';
|
|
10
10
|
import '../tools/base.js';
|
|
11
11
|
import 'zod';
|
package/dist/backend/chat.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","fixInvalidToolCalls","retryOnEmptyResponse","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","modelInputMessagesBackup","messages","slice","cacheEntry","createCacheAccessor","emitter","emit","result","Retryable","executor","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","ChatModelOutput","fromChunks","EmptyChatModelResponseError","getToolCalls","Tool","lastMsg","at","toolCall","parseBrokenJson","text","pair","ChatModelToolCallError","generatedContent","generatedError","response","content","length","type","toolCallId","randomString","toLowerCase","toolName","tool","find","t","availableTools","map","join","JSON","stringify","isString","isToolCallValid","parse","resolve","finishReason","config","maxRetries","onRetry","_","lastError","data","AssistantMessage","tempMessage","toolNames","UserMessage","lastMessage","meta","get","error","reject","ChatModelError","middleware","createStructure","_createStructure","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","errorTemplate","errors","expected","received","textResponse","getTextContent","validator","createSchemaValidator","success","context","output","createSnapshot","destroy","key","ObjectHashKeyFn","Serializer","serialize","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","includes","usage","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","cachedPromptTokens","reasoningTokens","messagesById","Map","messagesByToolCallId","msgId","id","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport {\n ChatModelError,\n ChatModelToolCallError,\n EmptyChatModelResponseError,\n} from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n maxRetries?: number;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n public readonly fixInvalidToolCalls: boolean = true;\n public readonly retryOnEmptyResponse: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run): Promise<ChatModelOutput> => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const modelInputMessagesBackup = input.messages.slice();\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n\n const result = await new Retryable({\n executor: async () => {\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n const result = ChatModelOutput.fromChunks(chunks);\n if (result.isEmpty()) {\n throw new EmptyChatModelResponseError();\n }\n\n if (\n isEmpty(result.getToolCalls()) &&\n (forceToolCallViaResponseFormat ||\n input.toolChoice === \"required\" ||\n input.toolChoice instanceof Tool)\n ) {\n const lastMsg = result.messages.at(-1)!;\n let toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (\n toolCall &&\n !toolCall.name &&\n !toolCall.parameters &&\n input.toolChoice instanceof Tool\n ) {\n toolCall = { name: input.toolChoice.name, parameters: toolCall };\n }\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelToolCallError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n generatedContent: lastMsg.text,\n generatedError: \"Tool call was not produced.\",\n response: result,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n for (const toolCall of result.getToolCalls()) {\n const tool = input.tools?.find((t) => t.name === toolCall.toolName);\n if (!tool) {\n const availableTools = input.tools?.map((t) => t.name).join(\",\") || \"None\";\n throw new ChatModelToolCallError(\"Non existing tool call.\", [], {\n generatedError: `Error: Unknown tool '${toolCall.toolName}'.\\nUse on of the available tools: ${availableTools}`,\n generatedContent: JSON.stringify({\n name: toolCall.toolName,\n input: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n }),\n response: result,\n });\n }\n\n if (!isToolCallValid(toolCall)) {\n throw new ChatModelToolCallError(\"Malformed tool call.\", [], {\n generatedContent: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n generatedError: `The tool call for the '${toolCall.toolName}' tool has malformed parameters. It must be a valid JSON.`,\n response: result,\n });\n }\n\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n cacheEntry.resolve(chunks);\n\n if (!result.finishReason) {\n if (result.getToolCalls().length > 0) {\n result.finishReason = \"tool-calls\";\n }\n }\n\n return result;\n },\n config: { maxRetries: input.maxRetries ?? 0 },\n onRetry: async (_, lastError) => {\n if (this.fixInvalidToolCalls && lastError instanceof ChatModelToolCallError) {\n input.messages = input.messages.slice();\n if (lastError.data.generatedContent) {\n input.messages.push(\n new AssistantMessage(lastError.data.generatedContent, {\n tempMessage: true,\n }),\n );\n }\n\n const toolNames = input.tools?.map((t) => t.name).join(\", \") || \"None\";\n input.messages.push(\n new UserMessage(\n `${lastError.data.generatedError}\\n\\nAvailable Tools: ${toolNames}`,\n {\n tempMessage: true,\n },\n ),\n );\n } else if (\n this.retryOnEmptyResponse &&\n lastError instanceof EmptyChatModelResponseError\n ) {\n input.messages = input.messages.slice();\n const lastMessage = input.messages.at(-1);\n if (\n lastMessage &&\n lastMessage instanceof AssistantMessage &&\n lastMessage.meta[\"tempMessage\"] &&\n lastMessage.text === \"\"\n ) {\n input.messages.push(\n new UserMessage(\n \"No output received. Please regenerate your previous response.\",\n { tempMessage: true },\n ),\n );\n } else {\n // Python compatibility\n input.messages.push(new AssistantMessage(\"\", { tempMessage: true }));\n }\n }\n },\n }).get();\n\n input.messages = modelInputMessagesBackup;\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n retryOnEmptyResponse: this.retryOnEmptyResponse,\n fixInvalidToolCalls: this.fixInvalidToolCalls,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n isEmpty() {\n if (this.messages.length === 0) {\n return true;\n }\n return this.getTextContent() === \"\" && this.getToolCalls().length === 0;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n cachedPromptTokens: takeBigger,\n reasoningTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","middlewares","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","fixInvalidToolCalls","retryOnEmptyResponse","create","input","shallowCopy","stream","undefined","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","isToolChoiceSupported","warn","modelInputMessagesBackup","messages","slice","cacheEntry","createCacheAccessor","emitter","emit","result","Retryable","executor","chunks","generator","value","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","ChatModelOutput","fromChunks","EmptyChatModelResponseError","getToolCalls","Tool","lastMsg","at","toolCall","parseBrokenJson","text","pair","ChatModelToolCallError","generatedContent","generatedError","response","content","length","type","toolCallId","randomString","toLowerCase","toolName","tool","find","t","availableTools","map","join","JSON","stringify","isString","isToolCallValid","parse","resolve","finishReason","config","maxRetries","onRetry","_","lastError","data","AssistantMessage","tempMessage","toolNames","UserMessage","lastMessage","meta","get","error","reject","ChatModelError","middleware","createStructure","_createStructure","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","instance","Object","assign","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","errorTemplate","errors","expected","received","textResponse","getTextContent","validator","createSchemaValidator","success","context","output","createSnapshot","destroy","key","ObjectHashKeyFn","Serializer","serialize","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","includes","usage","dedupe","final","forEach","cur","merge","other","clones","cloneSync","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","cachedPromptTokens","reasoningTokens","messagesById","Map","messagesByToolCallId","msgId","id","filteredChunks","chunk","size","lastToolCallId","getLast","keys","has","values","main","shift","finalToolCalls","lastId","excludedIndexes","index","lastToolCall","Error","reverse","splice","filter","r","flatMap","getTextMessages","toString","loadSnapshot","snapshot","serializable","isPromise","target","prototype","load"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { customMerge, getLast } from \"@/internals/helpers/object.js\";\nimport { takeBigger } from \"@/internals/helpers/number.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { FrameworkError } from \"@/errors.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { GetRunContext, MiddlewareType, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, isPromise, isString, randomString } from \"remeda\";\nimport { ObjectHashKeyFn } from \"@/cache/decoratorCache.js\";\nimport { Task } from \"promise-based-task\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport {\n filterToolsByToolChoice,\n FullModelName,\n generateToolUnionSchema,\n loadModel,\n parseModel,\n} from \"@/backend/utils.js\";\nimport { ProviderName } from \"@/backend/constants.js\";\nimport { AnyTool, Tool } from \"@/tools/base.js\";\nimport { AssistantMessage, Message, SystemMessage, UserMessage } from \"@/backend/message.js\";\n\nimport {\n ChatModelError,\n ChatModelToolCallError,\n EmptyChatModelResponseError,\n} from \"@/backend/errors.js\";\nimport { z, ZodSchema, ZodType } from \"zod\";\nimport {\n createSchemaValidator,\n parseBrokenJson,\n toJsonSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { Retryable } from \"@/internals/helpers/retryable.js\";\nimport { SchemaObject, ValidateFunction } from \"ajv\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { toAsyncGenerator } from \"@/internals/helpers/promise.js\";\nimport { Serializer } from \"@/serializer/serializer.js\";\nimport { Logger } from \"@/logger/logger.js\";\nimport { ToolCallPart } from \"ai\";\nimport { isToolCallValid } from \"@/adapters/vercel/backend/utils.js\";\n\nexport interface ChatModelParameters {\n maxTokens?: number;\n topP?: number;\n frequencyPenalty?: number;\n temperature?: number;\n topK?: number;\n n?: number;\n presencePenalty?: number;\n seed?: number;\n stopSequences?: string[];\n stream?: boolean;\n}\n\ninterface ResponseObjectJson {\n type: \"object-json\";\n schema?: SchemaObject;\n name?: string;\n description?: string;\n}\n\nexport interface ChatModelObjectInput<T> extends ChatModelParameters {\n schema: z.ZodSchema<T, any, any> | ResponseObjectJson;\n systemPromptTemplate?: PromptTemplate<ZodType<{ schema: string }>>;\n messages: Message[];\n abortSignal?: AbortSignal;\n maxRetries?: number;\n}\n\nexport interface ChatModelObjectOutput<T> {\n object: T;\n output: ChatModelOutput;\n}\n\nexport type ChatModelToolChoice = \"auto\" | \"none\" | \"required\" | AnyTool;\n\nexport interface ChatModelInput extends ChatModelParameters {\n tools?: AnyTool[];\n abortSignal?: AbortSignal;\n stopSequences?: string[];\n responseFormat?: ZodSchema | ResponseObjectJson;\n toolChoice?: ChatModelToolChoice;\n messages: Message[];\n streamPartialToolCalls?: boolean;\n maxRetries?: number;\n}\n\nexport type ChatModelFinishReason =\n | \"stop\"\n | \"length\"\n | \"content-filter\"\n | \"tool-calls\"\n | \"error\"\n | \"other\"\n | \"unknown\";\n\nexport interface ChatModelUsage {\n promptTokens: number;\n completionTokens: number;\n totalTokens: number;\n reasoningTokens?: number;\n cachedPromptTokens?: number;\n}\n\nexport interface ChatModelEvents {\n newToken?: Callback<{ value: ChatModelOutput; callbacks: { abort: () => void } }>;\n success?: Callback<{ value: ChatModelOutput }>;\n start?: Callback<{ input: ChatModelInput }>;\n error?: Callback<{ input: ChatModelInput; error: FrameworkError }>;\n finish?: Callback<null>;\n}\n\nexport type ChatModelEmitter<A = Record<never, never>> = Emitter<\n ChatModelEvents & Omit<A, keyof ChatModelEvents>\n>;\n\nexport type ChatModelCache = BaseCache<Task<ChatModelOutput[]>>;\nexport type ConfigFn<T> = (value: T) => T;\nexport interface ChatConfig {\n cache?: ChatModelCache | ConfigFn<ChatModelCache>;\n parameters?: ChatModelParameters | ConfigFn<ChatModelParameters>;\n}\n\nexport type ChatModelToolChoiceSupport = \"required\" | \"none\" | \"single\" | \"auto\";\n\nexport abstract class ChatModel extends Serializable {\n public abstract readonly emitter: Emitter<ChatModelEvents>;\n public cache: ChatModelCache = new NullCache();\n public parameters: ChatModelParameters = {};\n public readonly middlewares: MiddlewareType<typeof this>[] = [];\n protected readonly logger = Logger.root.child({\n name: this.constructor.name,\n });\n\n public readonly toolChoiceSupport: ChatModelToolChoiceSupport[] = [\n \"required\",\n \"none\",\n \"single\",\n \"auto\",\n ];\n public toolCallFallbackViaResponseFormat = true;\n public readonly modelSupportsToolCalling: boolean = true;\n public readonly fixInvalidToolCalls: boolean = true;\n public readonly retryOnEmptyResponse: boolean = true;\n\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput) {\n input = shallowCopy(input);\n if (input.stream === undefined) {\n input.stream = this.parameters.stream;\n }\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run): Promise<ChatModelOutput> => {\n if (!this.modelSupportsToolCalling) {\n input.tools = [];\n }\n\n const forceToolCallViaResponseFormat = this.shouldForceToolCallViaResponseFormat(input);\n if (forceToolCallViaResponseFormat && input.tools && !isEmpty(input.tools)) {\n input.responseFormat = await generateToolUnionSchema(\n filterToolsByToolChoice(input.tools, input.toolChoice),\n );\n input.toolChoice = undefined;\n }\n\n if (!this.isToolChoiceSupported(input.toolChoice)) {\n this.logger.warn(\n `The following tool choice value '${input.toolChoice}' is not supported. Ignoring.`,\n );\n input.toolChoice = undefined;\n }\n\n const modelInputMessagesBackup = input.messages.slice();\n const cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\n\n const result = await new Retryable({\n executor: async () => {\n const chunks: ChatModelOutput[] = [];\n\n const generator =\n cacheEntry.value ??\n (input.stream\n ? this._createStream(input, run)\n : toAsyncGenerator(this._create(input, run)));\n\n const controller = new AbortController();\n for await (const value of generator) {\n chunks.push(value);\n await run.emitter.emit(\"newToken\", {\n value,\n callbacks: { abort: () => controller.abort() },\n });\n if (controller.signal.aborted) {\n break;\n }\n }\n\n const result = ChatModelOutput.fromChunks(chunks);\n if (result.isEmpty()) {\n throw new EmptyChatModelResponseError();\n }\n\n if (\n isEmpty(result.getToolCalls()) &&\n (forceToolCallViaResponseFormat ||\n input.toolChoice === \"required\" ||\n input.toolChoice instanceof Tool)\n ) {\n const lastMsg = result.messages.at(-1)!;\n let toolCall = parseBrokenJson(lastMsg.text, { pair: [\"{\", \"}\"] });\n if (\n toolCall &&\n !toolCall.name &&\n !toolCall.parameters &&\n input.toolChoice instanceof Tool\n ) {\n toolCall = { name: input.toolChoice.name, parameters: toolCall };\n }\n if (!toolCall || !toolCall.name || !toolCall.parameters) {\n throw new ChatModelToolCallError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n generatedContent: lastMsg.text,\n generatedError: \"Tool call was not produced.\",\n response: result,\n },\n );\n }\n lastMsg.content.length = 0;\n lastMsg.content.push({\n type: \"tool-call\",\n toolCallId: `call_${randomString(8).toLowerCase()}`,\n toolName: toolCall.name, // todo: add types\n input: toolCall.parameters,\n });\n }\n\n for (const toolCall of result.getToolCalls()) {\n const tool = input.tools?.find((t) => t.name === toolCall.toolName);\n if (!tool) {\n const availableTools = input.tools?.map((t) => t.name).join(\",\") || \"None\";\n throw new ChatModelToolCallError(\"Non existing tool call.\", [], {\n generatedError: `Error: Unknown tool '${toolCall.toolName}'.\\nUse on of the available tools: ${availableTools}`,\n generatedContent: JSON.stringify({\n name: toolCall.toolName,\n input: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n }),\n response: result,\n });\n }\n\n if (!isToolCallValid(toolCall)) {\n throw new ChatModelToolCallError(\"Malformed tool call.\", [], {\n generatedContent: isString(toolCall.input)\n ? toolCall.input\n : JSON.stringify(toolCall.input),\n generatedError: `The tool call for the '${toolCall.toolName}' tool has malformed parameters. It must be a valid JSON.`,\n response: result,\n });\n }\n\n if (isString(toolCall.input)) {\n toolCall.input = JSON.parse(toolCall.input);\n }\n }\n\n cacheEntry.resolve(chunks);\n\n if (!result.finishReason) {\n if (result.getToolCalls().length > 0) {\n result.finishReason = \"tool-calls\";\n }\n }\n\n return result;\n },\n config: { maxRetries: input.maxRetries ?? 0 },\n onRetry: async (_, lastError) => {\n if (this.fixInvalidToolCalls && lastError instanceof ChatModelToolCallError) {\n input.messages = input.messages.slice();\n if (lastError.data.generatedContent) {\n input.messages.push(\n new AssistantMessage(lastError.data.generatedContent, {\n tempMessage: true,\n }),\n );\n }\n\n const toolNames = input.tools?.map((t) => t.name).join(\", \") || \"None\";\n input.messages.push(\n new UserMessage(\n `${lastError.data.generatedError}\\n\\nAvailable Tools: ${toolNames}`,\n {\n tempMessage: true,\n },\n ),\n );\n } else if (\n this.retryOnEmptyResponse &&\n lastError instanceof EmptyChatModelResponseError\n ) {\n input.messages = input.messages.slice();\n const lastMessage = input.messages.at(-1);\n if (\n lastMessage &&\n lastMessage instanceof AssistantMessage &&\n lastMessage.meta[\"tempMessage\"] &&\n lastMessage.text === \"\"\n ) {\n input.messages.push(\n new UserMessage(\n \"No output received. Please regenerate your previous response.\",\n { tempMessage: true },\n ),\n );\n } else {\n // Python compatibility\n input.messages.push(new AssistantMessage(\"\", { tempMessage: true }));\n }\n }\n },\n }).get();\n\n input.messages = modelInputMessagesBackup;\n await run.emitter.emit(\"success\", { value: result });\n return result;\n } catch (error) {\n await run.emitter.emit(\"error\", { input, error });\n await cacheEntry.reject(error);\n if (error instanceof ChatModelError) {\n throw error;\n } else {\n throw new ChatModelError(`The Chat Model has encountered an error.`, [error]);\n }\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n ).middleware(...this.middlewares);\n }\n\n createStructure<T>(input: ChatModelObjectInput<T>) {\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\n return await this._createStructure<T>(input, run);\n },\n );\n }\n\n config({ cache, parameters }: ChatConfig): void {\n if (cache) {\n this.cache = isFunction(cache) ? cache(this.cache) : cache;\n }\n if (parameters) {\n this.parameters = isFunction(parameters) ? parameters(this.parameters) : parameters;\n }\n }\n\n static async fromName(name: FullModelName | ProviderName, options?: ChatModelParameters) {\n const { providerId, modelId } = parseModel(name);\n const Target = await loadModel<ChatModel>(providerId, \"chat\");\n const instance = new Target(modelId || undefined);\n if (options) {\n Object.assign(instance.parameters, options);\n }\n return instance;\n }\n\n protected abstract _create(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelOutput>;\n protected abstract _createStream(\n input: ChatModelInput,\n run: GetRunContext<typeof this>,\n ): AsyncGenerator<ChatModelOutput, void>;\n\n protected async _createStructure<T>(\n input: ChatModelObjectInput<T>,\n run: GetRunContext<typeof this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const { schema, ...options } = input;\n const jsonSchema = toJsonSchema(schema);\n\n const systemTemplate =\n input.systemPromptTemplate ??\n new PromptTemplate({\n schema: z.object({\n schema: z.string().min(1),\n }),\n template: `You are a helpful assistant that generates only valid JSON adhering to the following JSON Schema.\n\n\\`\\`\\`\n{{schema}}\n\\`\\`\\`\n\nIMPORTANT: You MUST answer with a JSON object that matches the JSON schema above.`,\n });\n\n const messages: Message[] = [\n new SystemMessage(systemTemplate.render({ schema: JSON.stringify(jsonSchema, null, 2) })),\n ...input.messages,\n ];\n\n const errorTemplate = new PromptTemplate({\n schema: z.object({\n errors: z.string(),\n expected: z.string(),\n received: z.string(),\n }),\n template: `Generated object does not match the expected JSON schema!\n\nValidation Errors: {{errors}}`,\n });\n\n return new Retryable<ChatModelObjectOutput<T>>({\n executor: async () => {\n const response = await this._create(\n {\n ...options,\n messages,\n responseFormat: { type: \"object-json\" },\n },\n run,\n );\n\n const textResponse = response.getTextContent();\n const object: T = parseBrokenJson(textResponse, { pair: [\"{\", \"}\"] });\n const validator = createSchemaValidator(schema) as ValidateFunction<T>;\n\n const success = validator(object);\n if (!success) {\n const context = {\n expected: JSON.stringify(jsonSchema),\n received: textResponse,\n errors: JSON.stringify(validator.errors ?? []),\n };\n\n messages.push(new UserMessage(errorTemplate.render(context)));\n throw new ChatModelError(`LLM did not produce a valid output.`, [], {\n context,\n });\n }\n\n return {\n object,\n output: response,\n };\n },\n config: {\n signal: run.signal,\n maxRetries: input?.maxRetries || 1,\n },\n }).get();\n }\n\n createSnapshot() {\n return {\n cache: this.cache,\n emitter: this.emitter,\n middlewares: shallowCopy(this.middlewares) as MiddlewareType<any>[],\n parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\n retryOnEmptyResponse: this.retryOnEmptyResponse,\n fixInvalidToolCalls: this.fixInvalidToolCalls,\n };\n }\n\n destroy() {\n this.emitter.destroy();\n }\n\n protected async createCacheAccessor({\n abortSignal: _,\n messages,\n tools = [],\n ...input\n }: ChatModelInput) {\n const key = ObjectHashKeyFn({\n ...input,\n messages: await Serializer.serialize(messages.map((msg) => msg.toPlain())),\n tools: await Serializer.serialize(tools),\n });\n const value = await this.cache.get(key);\n const isNew = value === undefined;\n\n let task: Task<ChatModelOutput[]> | null = null;\n if (isNew) {\n task = new Task();\n await this.cache.set(key, task);\n }\n\n return {\n key,\n value,\n resolve: <T2 extends ChatModelOutput>(value: T2[]) => {\n task?.resolve?.(value);\n },\n reject: async (error: Error) => {\n task?.reject?.(error);\n if (isNew) {\n await this.cache.delete(key);\n }\n },\n };\n }\n\n protected shouldForceToolCallViaResponseFormat({\n tools = [],\n toolChoice,\n responseFormat,\n }: ChatModelInput) {\n if (\n isEmpty(tools) ||\n !toolChoice ||\n toolChoice === \"none\" ||\n toolChoice === \"auto\" ||\n !this.toolCallFallbackViaResponseFormat ||\n Boolean(responseFormat)\n ) {\n return false;\n }\n\n const toolChoiceSupported = this.isToolChoiceSupported(toolChoice);\n return !this.modelSupportsToolCalling || !toolChoiceSupported;\n }\n\n protected isToolChoiceSupported(choice?: ChatModelToolChoice): boolean {\n return (\n !choice ||\n (choice instanceof Tool\n ? this.toolChoiceSupport.includes(\"single\")\n : this.toolChoiceSupport.includes(choice))\n );\n }\n}\n\nexport class ChatModelOutput extends Serializable {\n constructor(\n public readonly messages: Message[],\n public usage?: ChatModelUsage,\n public finishReason?: ChatModelFinishReason,\n ) {\n super();\n this.dedupe();\n }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n isEmpty() {\n if (this.messages.length === 0) {\n return true;\n }\n return this.getTextContent() === \"\" && this.getToolCalls().length === 0;\n }\n\n merge(other: ChatModelOutput) {\n if (other.messages.length > 0) {\n const clones = other.messages.map(cloneSync);\n this.messages.push(...clones);\n this.dedupe();\n }\n\n this.finishReason = other.finishReason;\n if (this.usage && other.usage) {\n this.usage = customMerge([this.usage, other.usage], {\n totalTokens: takeBigger,\n promptTokens: takeBigger,\n completionTokens: takeBigger,\n cachedPromptTokens: takeBigger,\n reasoningTokens: takeBigger,\n });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\n }\n }\n\n dedupe(): void {\n // Dedupe messages\n if (this.messages.length > 1) {\n const messagesById = new Map<string, Message[]>();\n const messagesByToolCallId = new Map<string, AssistantMessage>();\n\n for (const msg of this.messages) {\n const msgId = msg.id || \"\";\n\n if (msg instanceof AssistantMessage && msg.getToolCalls().length > 0) {\n const filteredChunks: AssistantMessage[\"content\"] = [];\n for (const chunk of msg.content) {\n if (chunk.type !== \"tool-call\") {\n filteredChunks.push(chunk);\n continue;\n }\n\n // Assume tool calls with no id refer to the most recent tool call\n if (!chunk.toolCallId && messagesByToolCallId.size > 0) {\n const lastToolCallId = getLast(messagesByToolCallId.keys(), \"\");\n if (lastToolCallId) {\n chunk.toolCallId = lastToolCallId;\n }\n }\n\n if (chunk.toolCallId && messagesByToolCallId.has(chunk.toolCallId)) {\n messagesByToolCallId.get(chunk.toolCallId)!.content.push(chunk);\n } else if (chunk.toolCallId) {\n messagesByToolCallId.set(chunk.toolCallId, msg);\n filteredChunks.push(chunk);\n }\n }\n\n msg.content.length = 0;\n msg.content.push(...filteredChunks);\n\n if (filteredChunks.length === 0) {\n continue; // nothing to process\n }\n }\n\n if (!messagesById.has(msgId)) {\n messagesById.set(msgId, [msg]);\n } else {\n messagesById.get(msgId)!.push(msg);\n }\n }\n\n this.messages.length = 0;\n\n for (const messages of messagesById.values()) {\n const main = messages.shift()!;\n for (const other of messages) {\n main.merge(other);\n }\n this.messages.push(main);\n }\n }\n\n // Dedupe tool calls\n for (const msg of this.messages) {\n if (!(msg instanceof AssistantMessage)) {\n continue;\n }\n\n const finalToolCalls: Record<string, ToolCallPart> = {};\n let lastId = \"\";\n\n const excludedIndexes: number[] = [];\n msg.content.forEach((chunk, index) => {\n if (chunk.type !== \"tool-call\") {\n return;\n }\n const id = chunk.toolCallId || lastId;\n if (!(id in finalToolCalls)) {\n finalToolCalls[id] = shallowCopy(chunk);\n msg.content[index] = finalToolCalls[id];\n } else {\n excludedIndexes.push(index);\n const lastToolCall = finalToolCalls[id];\n if (isString(lastToolCall.input) && isString(chunk.input)) {\n lastToolCall.input += chunk.input;\n } else {\n throw new Error(\"Chunks cannot be merged.\");\n }\n if (!lastToolCall.toolName) {\n lastToolCall.toolName = chunk.toolName;\n }\n }\n lastId = id;\n });\n excludedIndexes.reverse().forEach((index) => {\n msg.content.splice(index, 1);\n });\n }\n }\n\n getToolCalls() {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.getToolCalls())\n .filter(Boolean);\n }\n\n getTextMessages(): AssistantMessage[] {\n return this.messages.filter((r) => r instanceof AssistantMessage).filter((r) => r.text);\n }\n\n getTextContent(): string {\n return this.messages\n .filter((r) => r instanceof AssistantMessage)\n .flatMap((r) => r.text)\n .filter(Boolean)\n .join(\"\");\n }\n\n toString() {\n return this.getTextContent();\n }\n\n createSnapshot() {\n return {\n messages: shallowCopy(this.messages),\n usage: shallowCopy(this.usage),\n finishReason: this.finishReason,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nfunction cloneSync<T extends Serializable>(serializable: T): T {\n const snapshot = serializable.createSnapshot();\n if (isPromise(snapshot)) {\n throw new Error(`createSnapshot cannot be async`);\n }\n\n const target = Object.create(serializable.constructor.prototype) as T;\n const load = target.loadSnapshot(snapshot);\n if (isPromise(load)) {\n throw new Error(`loadSnapshot cannot be async`);\n }\n\n return target;\n}\n"]}
|