beeai-framework 0.1.19 → 0.1.21
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 +4 -4
- 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 +4 -4
- 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 +2 -2
- package/dist/adapters/a2a/agents/utils.cjs.map +1 -1
- package/dist/adapters/a2a/agents/utils.js +2 -2
- package/dist/adapters/a2a/agents/utils.js.map +1 -1
- package/dist/adapters/a2a/serve/agent_executor.cjs +1 -3
- package/dist/adapters/a2a/serve/agent_executor.cjs.map +1 -1
- package/dist/adapters/a2a/serve/agent_executor.d.cts +4 -3
- package/dist/adapters/a2a/serve/agent_executor.d.ts +4 -3
- package/dist/adapters/a2a/serve/agent_executor.js +1 -3
- package/dist/adapters/a2a/serve/agent_executor.js.map +1 -1
- package/dist/adapters/a2a/serve/server.cjs +15 -0
- package/dist/adapters/a2a/serve/server.cjs.map +1 -1
- package/dist/adapters/a2a/serve/server.d.cts +4 -2
- package/dist/adapters/a2a/serve/server.d.ts +4 -2
- package/dist/adapters/a2a/serve/server.js +15 -0
- package/dist/adapters/a2a/serve/server.js.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/events.d.cts +1 -1
- package/dist/adapters/acp/agents/events.d.ts +1 -1
- package/dist/adapters/{beeai_platform → agentstack}/agents/agent.cjs +4 -4
- package/dist/adapters/agentstack/agents/agent.cjs.map +1 -0
- package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.cts +12 -12
- package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.ts +12 -12
- package/dist/adapters/{beeai_platform → agentstack}/agents/agent.js +4 -4
- package/dist/adapters/agentstack/agents/agent.js.map +1 -0
- package/dist/adapters/agentstack/agents/events.d.cts +23 -0
- package/dist/adapters/agentstack/agents/events.d.ts +23 -0
- package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.cts +4 -4
- package/dist/adapters/{beeai_platform → agentstack}/agents/types.d.ts +4 -4
- package/dist/adapters/amazon-bedrock/backend/chat.cjs +3 -2
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +5 -6
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +5 -6
- package/dist/adapters/amazon-bedrock/backend/chat.js +3 -2
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -1
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +4 -4
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +4 -4
- package/dist/adapters/amazon-bedrock/backend/embedding.js +2 -2
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -1
- package/dist/adapters/anthropic/backend/chat.cjs +3 -2
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -1
- package/dist/adapters/anthropic/backend/chat.d.cts +5 -6
- package/dist/adapters/anthropic/backend/chat.d.ts +5 -6
- package/dist/adapters/anthropic/backend/chat.js +3 -2
- package/dist/adapters/anthropic/backend/chat.js.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/azure-openai/backend/chat.cjs +3 -2
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/chat.d.cts +5 -6
- package/dist/adapters/azure-openai/backend/chat.d.ts +5 -6
- package/dist/adapters/azure-openai/backend/chat.js +3 -2
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.cjs +2 -2
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/azure-openai/backend/embedding.d.cts +3 -3
- package/dist/adapters/azure-openai/backend/embedding.d.ts +3 -3
- package/dist/adapters/azure-openai/backend/embedding.js +2 -2
- package/dist/adapters/azure-openai/backend/embedding.js.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/embedding.d.cts +2 -2
- package/dist/adapters/dummy/backend/embedding.d.ts +2 -2
- package/dist/adapters/google-vertex/backend/chat.cjs +3 -2
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -1
- package/dist/adapters/google-vertex/backend/chat.d.cts +5 -6
- package/dist/adapters/google-vertex/backend/chat.d.ts +5 -6
- package/dist/adapters/google-vertex/backend/chat.js +3 -2
- package/dist/adapters/google-vertex/backend/chat.js.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/groq/backend/chat.cjs +3 -2
- package/dist/adapters/groq/backend/chat.cjs.map +1 -1
- package/dist/adapters/groq/backend/chat.d.cts +5 -6
- package/dist/adapters/groq/backend/chat.d.ts +5 -6
- package/dist/adapters/groq/backend/chat.js +3 -2
- package/dist/adapters/groq/backend/chat.js.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/langchain/backend/chat.cjs +6 -5
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -1
- package/dist/adapters/langchain/backend/chat.d.cts +2 -2
- package/dist/adapters/langchain/backend/chat.d.ts +2 -2
- package/dist/adapters/langchain/backend/chat.js +6 -5
- package/dist/adapters/langchain/backend/chat.js.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/tools.d.cts +1 -1
- package/dist/adapters/langchain/tools.d.ts +1 -1
- package/dist/adapters/mcp/serve/server.cjs +12 -4
- package/dist/adapters/mcp/serve/server.cjs.map +1 -1
- package/dist/adapters/mcp/serve/server.d.cts +1 -1
- package/dist/adapters/mcp/serve/server.d.ts +1 -1
- package/dist/adapters/mcp/serve/server.js +12 -4
- package/dist/adapters/mcp/serve/server.js.map +1 -1
- package/dist/adapters/ollama/backend/chat.cjs +1 -4
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -1
- package/dist/adapters/ollama/backend/chat.d.cts +4 -4
- package/dist/adapters/ollama/backend/chat.d.ts +4 -4
- package/dist/adapters/ollama/backend/chat.js +1 -4
- package/dist/adapters/ollama/backend/chat.js.map +1 -1
- package/dist/adapters/ollama/backend/client.cjs +2 -2
- package/dist/adapters/ollama/backend/client.cjs.map +1 -1
- package/dist/adapters/ollama/backend/client.d.cts +1 -1
- package/dist/adapters/ollama/backend/client.d.ts +1 -1
- package/dist/adapters/ollama/backend/client.js +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 +3 -3
- package/dist/adapters/ollama/backend/embedding.d.ts +3 -3
- package/dist/adapters/ollama/backend/embedding.js.map +1 -1
- package/dist/adapters/openai/backend/chat.cjs +3 -2
- package/dist/adapters/openai/backend/chat.cjs.map +1 -1
- package/dist/adapters/openai/backend/chat.d.cts +5 -6
- package/dist/adapters/openai/backend/chat.d.ts +5 -6
- package/dist/adapters/openai/backend/chat.js +3 -2
- package/dist/adapters/openai/backend/chat.js.map +1 -1
- package/dist/adapters/openai/backend/client.cjs +2 -11
- package/dist/adapters/openai/backend/client.cjs.map +1 -1
- package/dist/adapters/openai/backend/client.js +3 -12
- package/dist/adapters/openai/backend/client.js.map +1 -1
- package/dist/adapters/openai/backend/embedding.cjs +2 -2
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -1
- package/dist/adapters/openai/backend/embedding.d.cts +4 -4
- package/dist/adapters/openai/backend/embedding.d.ts +4 -4
- package/dist/adapters/openai/backend/embedding.js +2 -2
- package/dist/adapters/openai/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/chat.cjs +26 -21
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -1
- package/dist/adapters/vercel/backend/chat.d.cts +6 -4
- package/dist/adapters/vercel/backend/chat.d.ts +6 -4
- package/dist/adapters/vercel/backend/chat.js +27 -22
- 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 +3 -3
- package/dist/adapters/vercel/backend/embedding.d.ts +3 -3
- package/dist/adapters/vercel/backend/embedding.js.map +1 -1
- package/dist/adapters/vercel/backend/utils.cjs +11 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +19 -2
- package/dist/adapters/vercel/backend/utils.d.ts +19 -2
- package/dist/adapters/vercel/backend/utils.js +11 -1
- package/dist/adapters/vercel/backend/utils.js.map +1 -1
- package/dist/adapters/watsonx/backend/chat.cjs +10 -4
- 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 +10 -4
- package/dist/adapters/watsonx/backend/chat.js.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/xai/backend/chat.cjs +3 -2
- package/dist/adapters/xai/backend/chat.cjs.map +1 -1
- package/dist/adapters/xai/backend/chat.d.cts +5 -6
- package/dist/adapters/xai/backend/chat.d.ts +5 -6
- package/dist/adapters/xai/backend/chat.js +3 -2
- package/dist/adapters/xai/backend/chat.js.map +1 -1
- package/dist/{agent-7NzfPC6d.d.ts → agent-CHebzsQB.d.ts} +4 -4
- package/dist/{agent-B6pOfx0K.d.cts → agent-DvvVGvLr.d.cts} +4 -4
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- 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/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +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/react/agent.d.cts +5 -4
- package/dist/agents/react/agent.d.ts +5 -4
- package/dist/agents/react/prompts.d.cts +1 -1
- package/dist/agents/react/prompts.d.ts +1 -1
- package/dist/agents/react/runners/base.cjs.map +1 -1
- package/dist/agents/react/runners/base.d.cts +5 -4
- package/dist/agents/react/runners/base.d.ts +5 -4
- package/dist/agents/react/runners/base.js.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/runner.d.cts +6 -5
- package/dist/agents/react/runners/deep-think/runner.d.ts +6 -5
- package/dist/agents/react/runners/default/runner.cjs.map +1 -1
- package/dist/agents/react/runners/default/runner.d.cts +6 -5
- package/dist/agents/react/runners/default/runner.d.ts +6 -5
- package/dist/agents/react/runners/default/runner.js.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/runner.cjs +4 -2
- package/dist/agents/react/runners/granite/runner.cjs.map +1 -1
- package/dist/agents/react/runners/granite/runner.d.cts +6 -5
- package/dist/agents/react/runners/granite/runner.d.ts +6 -5
- package/dist/agents/react/runners/granite/runner.js +4 -2
- package/dist/agents/react/runners/granite/runner.js.map +1 -1
- package/dist/agents/react/types.d.cts +3 -2
- package/dist/agents/react/types.d.ts +3 -2
- package/dist/agents/toolCalling/agent.cjs +9 -5
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +3 -3
- package/dist/agents/toolCalling/agent.d.ts +3 -3
- package/dist/agents/toolCalling/agent.js +9 -5
- package/dist/agents/toolCalling/agent.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.d.cts +2 -2
- package/dist/backend/backend.d.ts +2 -2
- package/dist/backend/chat.cjs +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 +1 -1
- package/dist/backend/chat.js.map +1 -1
- package/dist/backend/core.d.cts +2 -2
- package/dist/backend/core.d.ts +2 -2
- package/dist/backend/embedding.d.cts +2 -2
- package/dist/backend/embedding.d.ts +2 -2
- package/dist/backend/message.cjs +59 -3
- package/dist/backend/message.cjs.map +1 -1
- package/dist/backend/message.d.cts +3 -0
- package/dist/backend/message.d.ts +3 -0
- package/dist/backend/message.js +59 -3
- package/dist/backend/message.js.map +1 -1
- package/dist/backend/utils.d.cts +2 -2
- package/dist/backend/utils.d.ts +2 -2
- package/dist/{base-Bguef5Dg.d.ts → base-BQgDlcGa.d.ts} +1 -1
- package/dist/{base-C1hO5EJe.d.cts → base-CwcxwybB.d.cts} +1 -1
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/{chat-BBoOSvzm.d.ts → chat-C0s-o6ll.d.ts} +4 -2
- package/dist/{chat-BZ55YQab.d.cts → chat-CRb3vUVg.d.cts} +4 -2
- package/dist/context.d.cts +1 -1
- package/dist/context.d.ts +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/{emitter-BqpLJQVb.d.ts → emitter-CZFbzlUi.d.ts} +3 -3
- package/dist/{emitter-pJzHC_AM.d.cts → emitter-DpqUYjXH.d.cts} +3 -3
- package/dist/index.d.cts +3 -3
- package/dist/index.d.ts +3 -3
- package/dist/internals/fetcher.d.cts +1 -1
- package/dist/internals/fetcher.d.ts +1 -1
- package/dist/internals/helpers/array.cjs +35 -0
- package/dist/internals/helpers/array.cjs.map +1 -1
- package/dist/internals/helpers/array.d.cts +6 -1
- package/dist/internals/helpers/array.d.ts +6 -1
- package/dist/internals/helpers/array.js +35 -1
- package/dist/internals/helpers/array.js.map +1 -1
- package/dist/internals/helpers/object.cjs +30 -5
- package/dist/internals/helpers/object.cjs.map +1 -1
- package/dist/internals/helpers/object.d.cts +3 -2
- package/dist/internals/helpers/object.d.ts +3 -2
- package/dist/internals/helpers/object.js +29 -5
- package/dist/internals/helpers/object.js.map +1 -1
- package/dist/logger/logger.cjs +8 -4
- package/dist/logger/logger.cjs.map +1 -1
- package/dist/logger/logger.d.cts +21 -15
- package/dist/logger/logger.d.ts +21 -15
- package/dist/logger/logger.js +6 -3
- package/dist/logger/logger.js.map +1 -1
- package/dist/logger/pretty.cjs +2 -2
- package/dist/logger/pretty.cjs.map +1 -1
- package/dist/logger/pretty.js +2 -2
- package/dist/logger/pretty.js.map +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/parsers/linePrefix.cjs.map +1 -1
- package/dist/parsers/linePrefix.d.cts +4 -8
- package/dist/parsers/linePrefix.d.ts +4 -8
- package/dist/parsers/linePrefix.js.map +1 -1
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.js.map +1 -1
- package/dist/tools/arxiv.cjs.map +1 -1
- package/dist/tools/arxiv.d.cts +1 -1
- package/dist/tools/arxiv.d.ts +1 -1
- 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.d.cts +1 -1
- package/dist/tools/calculator.d.ts +1 -1
- package/dist/tools/custom.d.cts +2 -2
- package/dist/tools/custom.d.ts +2 -2
- package/dist/tools/database/elasticsearch.cjs.map +1 -1
- package/dist/tools/database/elasticsearch.d.cts +1 -1
- package/dist/tools/database/elasticsearch.d.ts +1 -1
- package/dist/tools/database/elasticsearch.js.map +1 -1
- package/dist/tools/database/milvus.cjs +3 -3
- package/dist/tools/database/milvus.cjs.map +1 -1
- package/dist/tools/database/milvus.d.cts +1 -1
- package/dist/tools/database/milvus.d.ts +1 -1
- package/dist/tools/database/milvus.js +3 -3
- package/dist/tools/database/milvus.js.map +1 -1
- package/dist/tools/database/qdrant.cjs +2 -2
- package/dist/tools/database/qdrant.cjs.map +1 -1
- package/dist/tools/database/qdrant.d.cts +1 -1
- package/dist/tools/database/qdrant.d.ts +1 -1
- package/dist/tools/database/qdrant.js +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 +1 -1
- package/dist/tools/database/sql.d.ts +1 -1
- package/dist/tools/database/sql.js.map +1 -1
- package/dist/tools/llm.d.cts +2 -2
- package/dist/tools/llm.d.ts +2 -2
- package/dist/tools/mcp.d.cts +1 -1
- package/dist/tools/mcp.d.ts +1 -1
- package/dist/tools/openapi.d.cts +1 -1
- package/dist/tools/openapi.d.ts +1 -1
- package/dist/tools/python/output.d.cts +1 -1
- package/dist/tools/python/output.d.ts +1 -1
- package/dist/tools/python/python.d.cts +2 -2
- package/dist/tools/python/python.d.ts +2 -2
- package/dist/tools/search/base.cjs.map +1 -1
- package/dist/tools/search/base.d.cts +1 -1
- package/dist/tools/search/base.d.ts +1 -1
- 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 +1 -1
- package/dist/tools/search/duckDuckGoSearch.d.ts +1 -1
- 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 +1 -1
- package/dist/tools/search/googleSearch.d.ts +1 -1
- package/dist/tools/search/googleSearch.js.map +1 -1
- package/dist/tools/search/searXNGSearch.d.cts +1 -1
- package/dist/tools/search/searXNGSearch.d.ts +1 -1
- package/dist/tools/search/wikipedia.cjs +25 -0
- package/dist/tools/search/wikipedia.cjs.map +1 -1
- package/dist/tools/search/wikipedia.d.cts +2 -3
- package/dist/tools/search/wikipedia.d.ts +2 -3
- package/dist/tools/search/wikipedia.js +23 -0
- package/dist/tools/search/wikipedia.js.map +1 -1
- package/dist/tools/similarity.d.cts +1 -1
- package/dist/tools/similarity.d.ts +1 -1
- package/dist/tools/weather/openMeteo.cjs.map +1 -1
- package/dist/tools/weather/openMeteo.d.cts +1 -1
- package/dist/tools/weather/openMeteo.d.ts +1 -1
- 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 +1 -1
- package/dist/tools/web/webCrawler.d.ts +1 -1
- package/dist/tools/web/webCrawler.js.map +1 -1
- package/dist/version.cjs +1 -1
- package/dist/version.js +1 -1
- package/dist/workflows/agent.d.cts +3 -3
- package/dist/workflows/agent.d.ts +3 -3
- package/dist/workflows/workflow.d.cts +1 -1
- package/dist/workflows/workflow.d.ts +1 -1
- package/package.json +68 -67
- package/dist/adapters/beeai_platform/agents/agent.cjs.map +0 -1
- package/dist/adapters/beeai_platform/agents/agent.js.map +0 -1
- package/dist/adapters/beeai_platform/agents/events.d.cts +0 -23
- package/dist/adapters/beeai_platform/agents/events.d.ts +0 -23
- /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/events.cjs.map +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/events.js.map +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/types.cjs.map +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js +0 -0
- /package/dist/adapters/{beeai_platform → agentstack}/agents/types.js.map +0 -0
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { BaseMemory } from '../../memory/base.js';
|
|
2
2
|
import { Message } from '../../backend/message.js';
|
|
3
|
-
import { C as Callback } from '../../emitter-
|
|
3
|
+
import { C as Callback } from '../../emitter-CZFbzlUi.js';
|
|
4
4
|
import { AnyTool, BaseToolRunOptions, ToolOutput, ToolError } from '../../tools/base.js';
|
|
5
5
|
import { ReActAgentSystemPrompt, ReActAgentAssistantPrompt, ReActAgentUserPrompt, ReActAgentUserEmptyPrompt, ReActAgentToolErrorPrompt, ReActAgentToolInputErrorPrompt, ReActAgentToolNoResultsPrompt, ReActAgentToolNotFoundPrompt, ReActAgentSchemaErrorPrompt } from './prompts.js';
|
|
6
6
|
import { LinePrefixParser } from '../../parsers/linePrefix.js';
|
|
7
7
|
import { ZodParserField, JSONParserField } from '../../parsers/field.js';
|
|
8
8
|
import { NonUndefined } from '../../internals/types.js';
|
|
9
|
-
import { n as ChatModelOutput } from '../../chat-
|
|
9
|
+
import { n as ChatModelOutput } from '../../chat-C0s-o6ll.js';
|
|
10
10
|
import '../../errors.js';
|
|
11
11
|
import '../../internals/helpers/guards.js';
|
|
12
12
|
import '../../internals/serializable.js';
|
|
@@ -20,6 +20,7 @@ import '../../internals/helpers/schema.js';
|
|
|
20
20
|
import 'zod';
|
|
21
21
|
import 'zod-to-json-schema';
|
|
22
22
|
import '../../template.js';
|
|
23
|
+
import 'node_modules/remeda/dist/ToString-DKW-jYvM.js';
|
|
23
24
|
import '../../parsers/errors.js';
|
|
24
25
|
import '@streamparser/json';
|
|
25
26
|
import 'jsonrepair/stream';
|
|
@@ -113,7 +113,7 @@ class ToolCallingAgent extends base_cjs.BaseAgent {
|
|
|
113
113
|
if (!tool) {
|
|
114
114
|
throw new base_cjs.AgentError(`Tool ${toolCall.toolName} does not exist!`);
|
|
115
115
|
}
|
|
116
|
-
const toolInput = toolCall.
|
|
116
|
+
const toolInput = toolCall.input;
|
|
117
117
|
const toolResponse = await tool.run(toolInput).context({
|
|
118
118
|
state,
|
|
119
119
|
toolCallMsg: toolCall
|
|
@@ -122,8 +122,10 @@ class ToolCallingAgent extends base_cjs.BaseAgent {
|
|
|
122
122
|
type: "tool-result",
|
|
123
123
|
toolCallId: toolCall.toolCallId,
|
|
124
124
|
toolName: toolCall.toolName,
|
|
125
|
-
|
|
126
|
-
|
|
125
|
+
output: {
|
|
126
|
+
type: "text",
|
|
127
|
+
value: toolResponse.getTextContent()
|
|
128
|
+
}
|
|
127
129
|
}));
|
|
128
130
|
} catch (e) {
|
|
129
131
|
if (e instanceof base_cjs$1.ToolError) {
|
|
@@ -132,8 +134,10 @@ class ToolCallingAgent extends base_cjs.BaseAgent {
|
|
|
132
134
|
type: "tool-result",
|
|
133
135
|
toolCallId: toolCall.toolCallId,
|
|
134
136
|
toolName: toolCall.toolName,
|
|
135
|
-
|
|
136
|
-
|
|
137
|
+
output: {
|
|
138
|
+
type: "error-text",
|
|
139
|
+
value: e.explain()
|
|
140
|
+
}
|
|
137
141
|
}));
|
|
138
142
|
} else {
|
|
139
143
|
throw e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","args","toolResponse","toolCallMsg","ToolMessage","type","toolCallId","getTextContent","isError","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"mappings":"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","file":"agent.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool, DynamicTool, StringToolOutput, ToolError, ToolOutput } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.args;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n result: toolResponse.getTextContent(),\n isError: false,\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n result: e.explain(),\n isError: true,\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","toolResponse","toolCallMsg","ToolMessage","type","toolCallId","output","value","getTextContent","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"mappings":"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","file":"agent.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool, DynamicTool, StringToolOutput, ToolError, ToolOutput } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.input;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"text\", value: toolResponse.getTextContent() },\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"error-text\", value: e.explain() },\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as AgentMeta, a as BaseAgent } from '../../base-
|
|
1
|
+
import { b as AgentMeta, a as BaseAgent } from '../../base-CwcxwybB.cjs';
|
|
2
2
|
import { AnyTool } from '../../tools/base.cjs';
|
|
3
3
|
import { BaseMemory } from '../../memory/base.cjs';
|
|
4
|
-
import { E as Emitter } from '../../emitter-
|
|
4
|
+
import { E as Emitter } from '../../emitter-DpqUYjXH.cjs';
|
|
5
5
|
import { ToolCallingAgentTemplates, ToolCallingAgentExecutionConfig, ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentCallbacks } from './types.cjs';
|
|
6
6
|
import { GetRunContext } from '../../context.cjs';
|
|
7
|
-
import { m as ChatModel } from '../../chat-
|
|
7
|
+
import { m as ChatModel } from '../../chat-CRb3vUVg.cjs';
|
|
8
8
|
import '../../errors.cjs';
|
|
9
9
|
import '../../internals/types.cjs';
|
|
10
10
|
import '../../internals/helpers/guards.cjs';
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import { b as AgentMeta, a as BaseAgent } from '../../base-
|
|
1
|
+
import { b as AgentMeta, a as BaseAgent } from '../../base-BQgDlcGa.js';
|
|
2
2
|
import { AnyTool } from '../../tools/base.js';
|
|
3
3
|
import { BaseMemory } from '../../memory/base.js';
|
|
4
|
-
import { E as Emitter } from '../../emitter-
|
|
4
|
+
import { E as Emitter } from '../../emitter-CZFbzlUi.js';
|
|
5
5
|
import { ToolCallingAgentTemplates, ToolCallingAgentExecutionConfig, ToolCallingAgentRunInput, ToolCallingAgentRunOutput, ToolCallingAgentRunOptions, ToolCallingAgentCallbacks } from './types.js';
|
|
6
6
|
import { GetRunContext } from '../../context.js';
|
|
7
|
-
import { m as ChatModel } from '../../chat-
|
|
7
|
+
import { m as ChatModel } from '../../chat-C0s-o6ll.js';
|
|
8
8
|
import '../../errors.js';
|
|
9
9
|
import '../../internals/types.js';
|
|
10
10
|
import '../../internals/helpers/guards.js';
|
|
@@ -111,7 +111,7 @@ class ToolCallingAgent extends BaseAgent {
|
|
|
111
111
|
if (!tool) {
|
|
112
112
|
throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);
|
|
113
113
|
}
|
|
114
|
-
const toolInput = toolCall.
|
|
114
|
+
const toolInput = toolCall.input;
|
|
115
115
|
const toolResponse = await tool.run(toolInput).context({
|
|
116
116
|
state,
|
|
117
117
|
toolCallMsg: toolCall
|
|
@@ -120,8 +120,10 @@ class ToolCallingAgent extends BaseAgent {
|
|
|
120
120
|
type: "tool-result",
|
|
121
121
|
toolCallId: toolCall.toolCallId,
|
|
122
122
|
toolName: toolCall.toolName,
|
|
123
|
-
|
|
124
|
-
|
|
123
|
+
output: {
|
|
124
|
+
type: "text",
|
|
125
|
+
value: toolResponse.getTextContent()
|
|
126
|
+
}
|
|
125
127
|
}));
|
|
126
128
|
} catch (e) {
|
|
127
129
|
if (e instanceof ToolError) {
|
|
@@ -130,8 +132,10 @@ class ToolCallingAgent extends BaseAgent {
|
|
|
130
132
|
type: "tool-result",
|
|
131
133
|
toolCallId: toolCall.toolCallId,
|
|
132
134
|
toolName: toolCall.toolName,
|
|
133
|
-
|
|
134
|
-
|
|
135
|
+
output: {
|
|
136
|
+
type: "error-text",
|
|
137
|
+
value: e.explain()
|
|
138
|
+
}
|
|
135
139
|
}));
|
|
136
140
|
} else {
|
|
137
141
|
throw e;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","args","toolResponse","toolCallMsg","ToolMessage","type","toolCallId","getTextContent","isError","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"mappings":"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","file":"agent.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool, DynamicTool, StringToolOutput, ToolError, ToolOutput } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.args;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n result: toolResponse.getTextContent(),\n isError: false,\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n result: e.explain(),\n isError: true,\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/agents/toolCalling/agent.ts"],"names":["ToolCallingAgent","BaseAgent","emitter","Emitter","root","child","namespace","creator","input","saveIntermediateSteps","register","_run","options","run","tempMessageKey","execution","totalMaxRetries","omitUndefined","state","memory","UnconstrainedMemory","result","undefined","iteration","add","SystemMessage","templates","system","render","role","instructions","addMany","messages","prompt","userMessage","UserMessage","task","context","expectedOutput","isString","globalRetriesCounter","RetryCounter","AgentError","usePlainResponse","ZodSchema","finalAnswerToolSchema","z","object","response","string","describe","String","finalAnswerTool","DynamicTool","name","description","inputSchema","handler","JSON","stringify","AssistantMessage","StringToolOutput","tools","forceFinalAnswer","Infinity","emit","llm","create","slice","toolChoice","length","stream","toolCallMessages","getToolCalls","toolCall","tool","find","toolName","toolInput","toolResponse","toolCallMsg","ToolMessage","type","toolCallId","output","value","getTextContent","e","ToolError","use","explain","textMessages","getTextMessages","isEmpty","deleteMany","filter","msg","meta","push","reset","extraDescription","map","join","overrides","defaultTemplates","ToolCallingAgentSystemPrompt","ToolCallingAgentTaskPrompt","mapObj","key","defaultTemplate","override","PromptTemplate","createSnapshot","shallowCopy","enumerable"],"mappings":"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","file":"agent.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { AgentError, BaseAgent } from \"@/agents/base.js\";\nimport { AnyTool, DynamicTool, StringToolOutput, ToolError, ToolOutput } from \"@/tools/base.js\";\nimport { BaseMemory } from \"@/memory/base.js\";\nimport { AgentMeta } from \"@/agents/types.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport type {\n ToolCallingAgentExecutionConfig,\n ToolCallingAgentTemplates,\n ToolCallingAgentCallbacks,\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOptions,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunState,\n} from \"@/agents/toolCalling/types.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { UnconstrainedMemory } from \"@/memory/unconstrainedMemory.js\";\nimport { AssistantMessage, SystemMessage, ToolMessage, UserMessage } from \"@/backend/message.js\";\nimport { isEmpty, isString } from \"remeda\";\nimport { RetryCounter } from \"@/internals/helpers/counter.js\";\nimport { mapObj, omitUndefined } from \"@/internals/helpers/object.js\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { PromptTemplate } from \"@/template.js\";\nimport {\n ToolCallingAgentSystemPrompt,\n ToolCallingAgentTaskPrompt,\n} from \"@/agents/toolCalling/prompts.js\";\nimport { z, ZodSchema } from \"zod\";\n\nexport type ToolCallingAgentTemplateFactory<K extends keyof ToolCallingAgentTemplates> = (\n template: ToolCallingAgentTemplates[K],\n) => ToolCallingAgentTemplates[K];\n\nexport interface ToolCallingAgentInput {\n llm: ChatModel;\n memory: BaseMemory;\n tools: AnyTool[];\n meta?: Omit<AgentMeta, \"tools\">;\n templates?: Partial<{\n [K in keyof ToolCallingAgentTemplates]:\n | ToolCallingAgentTemplates[K]\n | ToolCallingAgentTemplateFactory<K>;\n }>;\n execution?: ToolCallingAgentExecutionConfig;\n saveIntermediateSteps?: boolean;\n}\n\nexport class ToolCallingAgent extends BaseAgent<\n ToolCallingAgentRunInput,\n ToolCallingAgentRunOutput,\n ToolCallingAgentRunOptions\n> {\n public readonly emitter = Emitter.root.child<ToolCallingAgentCallbacks>({\n namespace: [\"agent\", \"toolCalling\"],\n creator: this,\n });\n\n constructor(public readonly input: ToolCallingAgentInput) {\n super();\n this.input.saveIntermediateSteps = this.input.saveIntermediateSteps ?? true;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolCallingAgentRunInput,\n options: ToolCallingAgentRunOptions = {},\n run: GetRunContext<typeof this>,\n ): Promise<ToolCallingAgentRunOutput> {\n const tempMessageKey = \"tempMessage\" as const;\n const execution = {\n maxRetriesPerStep: 3,\n totalMaxRetries: 20,\n maxIterations: 10,\n ...omitUndefined(this.input.execution ?? {}),\n ...omitUndefined(options.execution ?? {}),\n };\n\n const state: ToolCallingAgentRunState = {\n memory: new UnconstrainedMemory(),\n result: undefined,\n iteration: 0,\n };\n await state.memory.add(\n new SystemMessage(\n this.templates.system.render({\n role: undefined,\n instructions: undefined,\n }),\n ),\n );\n await state.memory.addMany(this.memory.messages);\n\n if (input.prompt) {\n const userMessage = new UserMessage(\n this.templates.task.render({\n prompt: input.prompt,\n context: input.context,\n expectedOutput: isString(input.expectedOutput) ? input.expectedOutput : undefined,\n }),\n );\n await state.memory.add(userMessage);\n }\n\n const globalRetriesCounter = new RetryCounter(execution.totalMaxRetries || 1, AgentError);\n\n const usePlainResponse = !input.expectedOutput || !(input.expectedOutput instanceof ZodSchema);\n const finalAnswerToolSchema = usePlainResponse\n ? z.object({\n response: z.string().describe(String(input.expectedOutput ?? \"\")),\n })\n : (input.expectedOutput as ZodSchema);\n\n const finalAnswerTool = new DynamicTool({\n name: \"final_answer\",\n description: \"Sends the final answer to the user\",\n inputSchema: finalAnswerToolSchema,\n handler: async (input) => {\n const result = usePlainResponse ? input.response : JSON.stringify(input);\n state.result = new AssistantMessage(result);\n return new StringToolOutput(\"Message has been sent\");\n },\n });\n\n const tools = [...this.input.tools, finalAnswerTool];\n let forceFinalAnswer = false;\n\n while (!state.result) {\n state.iteration++;\n if (state.iteration > (execution.totalMaxRetries ?? Infinity)) {\n throw new AgentError(\n `Agent was not able to resolve the task in ${state.iteration} iterations.`,\n );\n }\n\n await run.emitter.emit(\"start\", { state });\n const response = await this.input.llm.create({\n messages: state.memory.messages.slice(),\n tools,\n toolChoice: forceFinalAnswer ? finalAnswerTool : tools.length > 1 ? \"required\" : tools[0],\n stream: false,\n });\n await state.memory.addMany(response.messages);\n\n const toolCallMessages = response.getToolCalls();\n for (const toolCall of toolCallMessages) {\n try {\n const tool = tools.find((tool) => tool.name === toolCall.toolName);\n if (!tool) {\n throw new AgentError(`Tool ${toolCall.toolName} does not exist!`);\n }\n\n const toolInput: any = toolCall.input;\n const toolResponse: ToolOutput = await tool.run(toolInput).context({\n state,\n toolCallMsg: toolCall,\n });\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"text\", value: toolResponse.getTextContent() },\n }),\n );\n } catch (e) {\n if (e instanceof ToolError) {\n globalRetriesCounter.use(e);\n await state.memory.add(\n new ToolMessage({\n type: \"tool-result\",\n toolCallId: toolCall.toolCallId,\n toolName: toolCall.toolName,\n output: { type: \"error-text\", value: e.explain() },\n }),\n );\n } else {\n throw e;\n }\n }\n }\n\n // handle empty messages for some models\n const textMessages = response.getTextMessages();\n if (isEmpty(toolCallMessages) && isEmpty(textMessages)) {\n await state.memory.add(new AssistantMessage(\"\\n\", { [tempMessageKey]: true }));\n } else {\n await state.memory.deleteMany(\n state.memory.messages.filter((msg) => msg.meta[tempMessageKey]),\n );\n }\n\n // Fallback for providers that do not support structured outputs\n if (!isEmpty(textMessages) && isEmpty(toolCallMessages)) {\n forceFinalAnswer = true;\n tools.length = 0;\n tools.push(finalAnswerTool);\n }\n\n await run.emitter.emit(\"success\", { state });\n }\n\n if (this.input.saveIntermediateSteps) {\n this.memory.reset();\n await this.memory.addMany(state.memory.messages.slice(1));\n } else {\n await this.memory.addMany(state.memory.messages.slice(-2));\n }\n return { memory: state.memory, result: state.result };\n }\n\n get meta(): AgentMeta {\n const tools = this.input.tools.slice();\n\n if (this.input.meta) {\n return { ...this.input.meta, tools };\n }\n\n return {\n name: \"ToolCalling\",\n tools,\n description: \"ToolCallingAgent that uses tools to accomplish the task.\",\n ...(tools.length > 0 && {\n extraDescription: [\n `Tools that I can use to accomplish given task.`,\n ...tools.map((tool) => `Tool '${tool.name}': ${tool.description}.`),\n ].join(\"\\n\"),\n }),\n };\n }\n\n @Cache({ enumerable: false })\n protected get templates(): ToolCallingAgentTemplates {\n const overrides = this.input.templates ?? {};\n const defaultTemplates: ToolCallingAgentTemplates = {\n system: ToolCallingAgentSystemPrompt,\n task: ToolCallingAgentTaskPrompt,\n } as const;\n\n return mapObj(defaultTemplates)(\n (key, defaultTemplate: ToolCallingAgentTemplates[typeof key]) => {\n const override = overrides[key] ?? defaultTemplate;\n if (override instanceof PromptTemplate) {\n return override;\n }\n return override(defaultTemplate) ?? defaultTemplate;\n },\n );\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n input: shallowCopy(this.input),\n emitter: this.emitter,\n };\n }\n\n set memory(memory: BaseMemory) {\n this.input.memory = memory;\n }\n\n get memory() {\n return this.input.memory;\n }\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseMemory } from '../../memory/base.cjs';
|
|
2
2
|
import { AssistantMessage } from '../../backend/message.cjs';
|
|
3
|
-
import { C as Callback } from '../../emitter-
|
|
3
|
+
import { C as Callback } from '../../emitter-DpqUYjXH.cjs';
|
|
4
4
|
import { ToolCallingAgentSystemPrompt, ToolCallingAgentTaskPrompt } from './prompts.cjs';
|
|
5
5
|
import { ZodSchema } from 'zod';
|
|
6
6
|
import '../../errors.cjs';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BaseMemory } from '../../memory/base.js';
|
|
2
2
|
import { AssistantMessage } from '../../backend/message.js';
|
|
3
|
-
import { C as Callback } from '../../emitter-
|
|
3
|
+
import { C as Callback } from '../../emitter-CZFbzlUi.js';
|
|
4
4
|
import { ToolCallingAgentSystemPrompt, ToolCallingAgentTaskPrompt } from './prompts.js';
|
|
5
5
|
import { ZodSchema } from 'zod';
|
|
6
6
|
import '../../errors.js';
|
package/dist/agents/types.d.cts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { e as AgentCallback, d as AgentCallbackValue, b as AgentMeta, c as AnyAgent, G as GetAgentInput, f as GetAgentOutput, I as InternalAgentCallbackValue, P as PublicAgentCallbackValue } from '../base-
|
|
1
|
+
export { e as AgentCallback, d as AgentCallbackValue, b as AgentMeta, c as AnyAgent, G as GetAgentInput, f as GetAgentOutput, I as InternalAgentCallbackValue, P as PublicAgentCallbackValue } from '../base-CwcxwybB.cjs';
|
|
2
2
|
import '../internals/types.cjs';
|
|
3
3
|
import '../tools/base.cjs';
|
|
4
4
|
import '../context.cjs';
|
|
5
|
-
import '../emitter-
|
|
5
|
+
import '../emitter-DpqUYjXH.cjs';
|
|
6
6
|
import '../internals/serializable.cjs';
|
|
7
7
|
import '../internals/helpers/guards.cjs';
|
|
8
8
|
import '../internals/helpers/promise.cjs';
|
package/dist/agents/types.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
export { e as AgentCallback, d as AgentCallbackValue, b as AgentMeta, c as AnyAgent, G as GetAgentInput, f as GetAgentOutput, I as InternalAgentCallbackValue, P as PublicAgentCallbackValue } from '../base-
|
|
1
|
+
export { e as AgentCallback, d as AgentCallbackValue, b as AgentMeta, c as AnyAgent, G as GetAgentInput, f as GetAgentOutput, I as InternalAgentCallbackValue, P as PublicAgentCallbackValue } from '../base-BQgDlcGa.js';
|
|
2
2
|
import '../internals/types.js';
|
|
3
3
|
import '../tools/base.js';
|
|
4
4
|
import '../context.js';
|
|
5
|
-
import '../emitter-
|
|
5
|
+
import '../emitter-CZFbzlUi.js';
|
|
6
6
|
import '../internals/serializable.js';
|
|
7
7
|
import '../internals/helpers/guards.js';
|
|
8
8
|
import '../internals/helpers/promise.js';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Serializable } from '../internals/serializable.cjs';
|
|
2
|
-
import { m as ChatModel, F as FullModelName } from '../chat-
|
|
2
|
+
import { m as ChatModel, F as FullModelName } from '../chat-CRb3vUVg.cjs';
|
|
3
3
|
import { EmbeddingModel } from './embedding.cjs';
|
|
4
4
|
import { ProviderName } from './constants.cjs';
|
|
5
5
|
import { OptionalExcept } from '../internals/types.cjs';
|
|
6
6
|
import './message.cjs';
|
|
7
7
|
import 'ai';
|
|
8
8
|
import '../context.cjs';
|
|
9
|
-
import '../emitter-
|
|
9
|
+
import '../emitter-DpqUYjXH.cjs';
|
|
10
10
|
import '../internals/helpers/promise.cjs';
|
|
11
11
|
import '../errors.cjs';
|
|
12
12
|
import 'promise-based-task';
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { Serializable } from '../internals/serializable.js';
|
|
2
|
-
import { m as ChatModel, F as FullModelName } from '../chat-
|
|
2
|
+
import { m as ChatModel, F as FullModelName } from '../chat-C0s-o6ll.js';
|
|
3
3
|
import { EmbeddingModel } from './embedding.js';
|
|
4
4
|
import { ProviderName } from './constants.js';
|
|
5
5
|
import { OptionalExcept } from '../internals/types.js';
|
|
6
6
|
import './message.js';
|
|
7
7
|
import 'ai';
|
|
8
8
|
import '../context.js';
|
|
9
|
-
import '../emitter-
|
|
9
|
+
import '../emitter-CZFbzlUi.js';
|
|
10
10
|
import '../internals/helpers/promise.js';
|
|
11
11
|
import '../errors.js';
|
|
12
12
|
import 'promise-based-task';
|
package/dist/backend/chat.cjs
CHANGED
|
@@ -97,7 +97,7 @@ class ChatModel extends serializable_cjs.Serializable {
|
|
|
97
97
|
toolCallId: `call_${remeda.randomString(8).toLowerCase()}`,
|
|
98
98
|
toolName: toolCall.name,
|
|
99
99
|
// todo: add types
|
|
100
|
-
|
|
100
|
+
input: toolCall.parameters
|
|
101
101
|
});
|
|
102
102
|
}
|
|
103
103
|
await run.emitter.emit("success", {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","undefined","isToolChoiceSupported","warn","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","getToolCalls","lastMsg","messages","at","toolCall","parseBrokenJson","text","ChatModelError","isFatal","isRetryable","content","length","type","toolCallId","randomString","toLowerCase","toolName","args","error","reject","createStructure","_createStructure","config","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","textResponse","getTextContent","pair","validator","createSchemaValidator","success","context","UserMessage","output","maxRetries","get","createSnapshot","slice","destroy","_","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","Tool","includes","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","filter","r","AssistantMessage","flatMap","getTextMessages","join","toString","loadSnapshot","snapshot","Object","assign"],"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 } 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, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, 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 { ChatModelError } 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\";\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}\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> | 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}\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}\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 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\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\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 cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\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 cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n\n if (forceToolCallViaResponseFormat && isEmpty(result.getToolCalls())) {\n const lastMsg = result.messages.at(-1)!;\n const toolCall = parseBrokenJson(lastMsg.text);\n if (!toolCall) {\n throw new ChatModelError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n isFatal: true,\n isRetryable: false,\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 args: toolCall.parameters,\n });\n }\n\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 );\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 return new Target(modelId || undefined, options);\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 parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\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 }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\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 });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\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"]}
|
|
1
|
+
{"version":3,"sources":["../../src/backend/chat.ts"],"names":["ChatModel","Serializable","cache","NullCache","parameters","logger","Logger","root","child","name","toolChoiceSupport","toolCallFallbackViaResponseFormat","modelSupportsToolCalling","create","input","shallowCopy","RunContext","enter","params","signal","abortSignal","run","tools","forceToolCallViaResponseFormat","shouldForceToolCallViaResponseFormat","isEmpty","responseFormat","generateToolUnionSchema","filterToolsByToolChoice","toolChoice","undefined","isToolChoiceSupported","warn","cacheEntry","createCacheAccessor","emitter","emit","chunks","generator","value","stream","_createStream","toAsyncGenerator","_create","controller","AbortController","push","callbacks","abort","aborted","resolve","result","ChatModelOutput","fromChunks","getToolCalls","lastMsg","messages","at","toolCall","parseBrokenJson","text","ChatModelError","isFatal","isRetryable","content","length","type","toolCallId","randomString","toLowerCase","toolName","error","reject","createStructure","_createStructure","config","isFunction","fromName","options","providerId","modelId","parseModel","Target","loadModel","schema","jsonSchema","toJsonSchema","systemTemplate","systemPromptTemplate","PromptTemplate","z","object","string","min","template","SystemMessage","render","JSON","stringify","errorTemplate","errors","expected","received","Retryable","executor","response","textResponse","getTextContent","pair","validator","createSchemaValidator","success","context","UserMessage","output","maxRetries","get","createSnapshot","slice","destroy","_","key","ObjectHashKeyFn","Serializer","serialize","map","msg","toPlain","isNew","task","Task","set","delete","Boolean","toolChoiceSupported","choice","Tool","includes","usage","finishReason","final","forEach","cur","merge","other","customMerge","totalTokens","takeBigger","promptTokens","completionTokens","filter","r","AssistantMessage","flatMap","getTextMessages","join","toString","loadSnapshot","snapshot","Object","assign"],"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 } 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, RunContext } from \"@/context.js\";\nimport { isEmpty, isFunction, 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 { ChatModelError } 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\";\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}\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}\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 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\n abstract get modelId(): string;\n abstract get providerId(): string;\n\n create(input: ChatModelInput & { stream?: boolean }) {\n input = shallowCopy(input);\n\n return RunContext.enter(\n this,\n { params: [input] as const, signal: input?.abortSignal },\n async (run) => {\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 cacheEntry = await this.createCacheAccessor(input);\n\n try {\n await run.emitter.emit(\"start\", { input });\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 cacheEntry.resolve(chunks);\n const result = ChatModelOutput.fromChunks(chunks);\n\n if (forceToolCallViaResponseFormat && isEmpty(result.getToolCalls())) {\n const lastMsg = result.messages.at(-1)!;\n const toolCall = parseBrokenJson(lastMsg.text);\n if (!toolCall) {\n throw new ChatModelError(\n `Failed to produce a valid tool call. Generate output: ${lastMsg.text}`,\n [],\n {\n isFatal: true,\n isRetryable: false,\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 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 );\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 return new Target(modelId || undefined, options);\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 parameters: shallowCopy(this.parameters),\n logger: this.logger,\n toolChoiceSupport: this.toolChoiceSupport.slice(),\n toolCallFallbackViaResponseFormat: this.toolCallFallbackViaResponseFormat,\n modelSupportsToolCalling: this.modelSupportsToolCalling,\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 }\n\n static fromChunks(chunks: ChatModelOutput[]) {\n const final = new ChatModelOutput([]);\n chunks.forEach((cur) => final.merge(cur));\n return final;\n }\n\n merge(other: ChatModelOutput) {\n this.messages.push(...other.messages);\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 });\n } else if (other.usage) {\n this.usage = shallowCopy(other.usage);\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"]}
|
package/dist/backend/chat.d.cts
CHANGED
|
@@ -2,11 +2,11 @@ import './message.cjs';
|
|
|
2
2
|
import 'ai';
|
|
3
3
|
import '../context.cjs';
|
|
4
4
|
import '../internals/serializable.cjs';
|
|
5
|
-
import '../emitter-
|
|
5
|
+
import '../emitter-DpqUYjXH.cjs';
|
|
6
6
|
import '../errors.cjs';
|
|
7
7
|
import 'promise-based-task';
|
|
8
8
|
import '../cache/base.cjs';
|
|
9
|
-
export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-
|
|
9
|
+
export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-CRb3vUVg.cjs';
|
|
10
10
|
import './constants.cjs';
|
|
11
11
|
import '../tools/base.cjs';
|
|
12
12
|
import 'zod';
|
package/dist/backend/chat.d.ts
CHANGED
|
@@ -2,11 +2,11 @@ import './message.js';
|
|
|
2
2
|
import 'ai';
|
|
3
3
|
import '../context.js';
|
|
4
4
|
import '../internals/serializable.js';
|
|
5
|
-
import '../emitter-
|
|
5
|
+
import '../emitter-CZFbzlUi.js';
|
|
6
6
|
import '../errors.js';
|
|
7
7
|
import 'promise-based-task';
|
|
8
8
|
import '../cache/base.js';
|
|
9
|
-
export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-
|
|
9
|
+
export { k as ChatConfig, m as ChatModel, i as ChatModelCache, h as ChatModelEmitter, g as ChatModelEvents, e as ChatModelFinishReason, d as ChatModelInput, a as ChatModelObjectInput, b as ChatModelObjectOutput, n as ChatModelOutput, C as ChatModelParameters, c as ChatModelToolChoice, l as ChatModelToolChoiceSupport, f as ChatModelUsage, j as ConfigFn } from '../chat-C0s-o6ll.js';
|
|
10
10
|
import './constants.js';
|
|
11
11
|
import '../tools/base.js';
|
|
12
12
|
import 'zod';
|
package/dist/backend/chat.js
CHANGED