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 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/openai/backend/client.ts"],"names":["OpenAIClient","BackendClient","create","
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/openai/backend/client.ts"],"names":["OpenAIClient","BackendClient","create","createOpenAI","settings","apiKey","getEnv","baseURL","headers","parseHeadersFromEnv","fetch","vercelFetcher"],"mappings":";;;;;;;;;AAYO,MAAMA,qBAAqBC,wBAAAA,CAAAA;EAZlC;;;EAaYC,MAAAA,GAAyB;AACjC,IAAA,OAAOC,mBAAAA,CAAa;AAClB,MAAA,GAAG,IAAA,CAAKC,QAAAA;AACRC,MAAAA,MAAAA,EAAQ,IAAA,CAAKD,QAAAA,EAAUC,MAAAA,IAAUC,cAAAA,CAAO,gBAAA,CAAA;AACxCC,MAAAA,OAAAA,EAAS,IAAA,CAAKH,QAAAA,EAAUG,OAAAA,IAAWD,cAAAA,CAAO,qBAAA,CAAA;MAC1CE,OAAAA,EAAS;AACP,QAAA,GAAGC,8BAAoB,oBAAA,CAAA;AACvB,QAAA,GAAG,KAAKL,QAAAA,EAAUI;AACpB,OAAA;MACAE,KAAAA,EAAOC,uBAAAA,CAAc,IAAA,CAAKP,QAAAA,EAAUM,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createOpenAI, OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { parseHeadersFromEnv, vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OpenAIClientSettings = OpenAIProviderSettings;\n\nexport class OpenAIClient extends BackendClient<OpenAIClientSettings, OpenAIProvider> {\n protected create(): OpenAIProvider {\n return createOpenAI({\n ...this.settings,\n apiKey: this.settings?.apiKey || getEnv(\"OPENAI_API_KEY\"),\n baseURL: this.settings?.baseURL || getEnv(\"OPENAI_API_ENDPOINT\"),\n headers: {\n ...parseHeadersFromEnv(\"OPENAI_API_HEADERS\"),\n ...this.settings?.headers,\n },\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { createOpenAI } from '@ai-sdk/openai';
|
|
2
2
|
import { getEnv } from '../../../internals/env.js';
|
|
3
3
|
import { BackendClient } from '../../../backend/client.js';
|
|
4
|
-
import {
|
|
4
|
+
import { vercelFetcher, parseHeadersFromEnv } from '../../vercel/backend/utils.js';
|
|
5
5
|
|
|
6
6
|
var __defProp = Object.defineProperty;
|
|
7
7
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -10,21 +10,12 @@ class OpenAIClient extends BackendClient {
|
|
|
10
10
|
__name(this, "OpenAIClient");
|
|
11
11
|
}
|
|
12
12
|
create() {
|
|
13
|
-
const extraHeaders = parseHeadersFromEnv("OPENAI_API_HEADERS");
|
|
14
|
-
const baseURL = this.settings?.baseURL || getEnv("OPENAI_API_ENDPOINT");
|
|
15
|
-
let compatibility = this.settings?.compatibility || getEnv("OPENAI_COMPATIBILITY_MODE");
|
|
16
|
-
if (baseURL && !compatibility) {
|
|
17
|
-
compatibility = "compatible";
|
|
18
|
-
} else if (!baseURL && !compatibility) {
|
|
19
|
-
compatibility = "strict";
|
|
20
|
-
}
|
|
21
13
|
return createOpenAI({
|
|
22
14
|
...this.settings,
|
|
23
|
-
compatibility,
|
|
24
15
|
apiKey: this.settings?.apiKey || getEnv("OPENAI_API_KEY"),
|
|
25
|
-
baseURL,
|
|
16
|
+
baseURL: this.settings?.baseURL || getEnv("OPENAI_API_ENDPOINT"),
|
|
26
17
|
headers: {
|
|
27
|
-
...
|
|
18
|
+
...parseHeadersFromEnv("OPENAI_API_HEADERS"),
|
|
28
19
|
...this.settings?.headers
|
|
29
20
|
},
|
|
30
21
|
fetch: vercelFetcher(this.settings?.fetch)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/openai/backend/client.ts"],"names":["OpenAIClient","BackendClient","create","
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/openai/backend/client.ts"],"names":["OpenAIClient","BackendClient","create","createOpenAI","settings","apiKey","getEnv","baseURL","headers","parseHeadersFromEnv","fetch","vercelFetcher"],"mappings":";;;;;;;AAYO,MAAMA,qBAAqBC,aAAAA,CAAAA;EAZlC;;;EAaYC,MAAAA,GAAyB;AACjC,IAAA,OAAOC,YAAAA,CAAa;AAClB,MAAA,GAAG,IAAA,CAAKC,QAAAA;AACRC,MAAAA,MAAAA,EAAQ,IAAA,CAAKD,QAAAA,EAAUC,MAAAA,IAAUC,MAAAA,CAAO,gBAAA,CAAA;AACxCC,MAAAA,OAAAA,EAAS,IAAA,CAAKH,QAAAA,EAAUG,OAAAA,IAAWD,MAAAA,CAAO,qBAAA,CAAA;MAC1CE,OAAAA,EAAS;AACP,QAAA,GAAGC,oBAAoB,oBAAA,CAAA;AACvB,QAAA,GAAG,KAAKL,QAAAA,EAAUI;AACpB,OAAA;MACAE,KAAAA,EAAOC,aAAAA,CAAc,IAAA,CAAKP,QAAAA,EAAUM,KAAAA;KACtC,CAAA;AACF;AACF","file":"client.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { createOpenAI, OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { getEnv } from \"@/internals/env.js\";\nimport { BackendClient } from \"@/backend/client.js\";\nimport { parseHeadersFromEnv, vercelFetcher } from \"@/adapters/vercel/backend/utils.js\";\n\nexport type OpenAIClientSettings = OpenAIProviderSettings;\n\nexport class OpenAIClient extends BackendClient<OpenAIClientSettings, OpenAIProvider> {\n protected create(): OpenAIProvider {\n return createOpenAI({\n ...this.settings,\n apiKey: this.settings?.apiKey || getEnv(\"OPENAI_API_KEY\"),\n baseURL: this.settings?.baseURL || getEnv(\"OPENAI_API_ENDPOINT\"),\n headers: {\n ...parseHeadersFromEnv(\"OPENAI_API_HEADERS\"),\n ...this.settings?.headers,\n },\n fetch: vercelFetcher(this.settings?.fetch),\n });\n }\n}\n"]}
|
|
@@ -10,8 +10,8 @@ class OpenAIEmbeddingModel extends embedding_cjs.VercelEmbeddingModel {
|
|
|
10
10
|
static {
|
|
11
11
|
__name(this, "OpenAIEmbeddingModel");
|
|
12
12
|
}
|
|
13
|
-
constructor(modelId = env_cjs.getEnv("OPENAI_EMBEDDING_MODEL", "text-embedding-3-small"),
|
|
14
|
-
const model = client_cjs.OpenAIClient.ensure(client).instance.embedding(modelId
|
|
13
|
+
constructor(modelId = env_cjs.getEnv("OPENAI_EMBEDDING_MODEL", "text-embedding-3-small"), _settings = {}, client) {
|
|
14
|
+
const model = client_cjs.OpenAIClient.ensure(client).instance.embedding(modelId);
|
|
15
15
|
super(model);
|
|
16
16
|
}
|
|
17
17
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/openai/backend/embedding.ts"],"names":["OpenAIEmbeddingModel","VercelEmbeddingModel","modelId","getEnv","
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/openai/backend/embedding.ts"],"names":["OpenAIEmbeddingModel","VercelEmbeddingModel","modelId","getEnv","_settings","client","model","OpenAIClient","ensure","instance","embedding"],"mappings":";;;;;;;;AAcO,MAAMA,6BAA6BC,kCAAAA,CAAAA;EAd1C;;;EAeE,WAAA,CACEC,OAAAA,GAAkCC,eAAO,wBAAA,EAA0B,wBAAA,GACnEC,SAAAA,GAA0C,IAC1CC,MAAAA,EACA;AACA,IAAA,MAAMC,QAAQC,uBAAAA,CAAaC,MAAAA,CAAOH,MAAAA,CAAAA,CAAQI,QAAAA,CAASC,UAAUR,OAAAA,CAAAA;AAC7D,IAAA,KAAA,CAAMI,KAAAA,CAAAA;AACR;AACF","file":"embedding.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { OpenAIClient } from \"@/adapters/openai/backend/client.js\";\nimport { OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { VercelEmbeddingModel } from \"@/adapters/vercel/backend/embedding.js\";\nimport { getEnv } from \"@/internals/env.js\";\n\ntype OpenAIParameters = Parameters<OpenAIProvider[\"embedding\"]>;\nexport type OpenAIEmbeddingModelId = NonNullable<OpenAIParameters[0]>;\nexport type OpenAIEmbeddingModelSettings = any;\n\nexport class OpenAIEmbeddingModel extends VercelEmbeddingModel {\n constructor(\n modelId: OpenAIEmbeddingModelId = getEnv(\"OPENAI_EMBEDDING_MODEL\", \"text-embedding-3-small\"),\n _settings: OpenAIEmbeddingModelSettings = {},\n client?: OpenAIProviderSettings | OpenAIClient,\n ) {\n const model = OpenAIClient.ensure(client).instance.embedding(modelId);\n super(model);\n }\n}\n"]}
|
|
@@ -7,10 +7,10 @@ import '../../../internals/types.cjs';
|
|
|
7
7
|
import '../../../internals/helpers/guards.cjs';
|
|
8
8
|
import '../../../backend/embedding.cjs';
|
|
9
9
|
import '../../../context.cjs';
|
|
10
|
-
import '../../../emitter-
|
|
10
|
+
import '../../../emitter-DpqUYjXH.cjs';
|
|
11
11
|
import '../../../internals/helpers/promise.cjs';
|
|
12
12
|
import '../../../errors.cjs';
|
|
13
|
-
import '../../../chat-
|
|
13
|
+
import '../../../chat-CRb3vUVg.cjs';
|
|
14
14
|
import '../../../backend/message.cjs';
|
|
15
15
|
import 'ai';
|
|
16
16
|
import 'promise-based-task';
|
|
@@ -32,9 +32,9 @@ import 'pino';
|
|
|
32
32
|
|
|
33
33
|
type OpenAIParameters = Parameters<OpenAIProvider["embedding"]>;
|
|
34
34
|
type OpenAIEmbeddingModelId = NonNullable<OpenAIParameters[0]>;
|
|
35
|
-
type OpenAIEmbeddingModelSettings =
|
|
35
|
+
type OpenAIEmbeddingModelSettings = any;
|
|
36
36
|
declare class OpenAIEmbeddingModel extends VercelEmbeddingModel {
|
|
37
|
-
constructor(modelId?: OpenAIEmbeddingModelId,
|
|
37
|
+
constructor(modelId?: OpenAIEmbeddingModelId, _settings?: OpenAIEmbeddingModelSettings, client?: OpenAIProviderSettings | OpenAIClient);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export { OpenAIEmbeddingModel, type OpenAIEmbeddingModelId, type OpenAIEmbeddingModelSettings };
|
|
@@ -7,10 +7,10 @@ import '../../../internals/types.js';
|
|
|
7
7
|
import '../../../internals/helpers/guards.js';
|
|
8
8
|
import '../../../backend/embedding.js';
|
|
9
9
|
import '../../../context.js';
|
|
10
|
-
import '../../../emitter-
|
|
10
|
+
import '../../../emitter-CZFbzlUi.js';
|
|
11
11
|
import '../../../internals/helpers/promise.js';
|
|
12
12
|
import '../../../errors.js';
|
|
13
|
-
import '../../../chat-
|
|
13
|
+
import '../../../chat-C0s-o6ll.js';
|
|
14
14
|
import '../../../backend/message.js';
|
|
15
15
|
import 'ai';
|
|
16
16
|
import 'promise-based-task';
|
|
@@ -32,9 +32,9 @@ import 'pino';
|
|
|
32
32
|
|
|
33
33
|
type OpenAIParameters = Parameters<OpenAIProvider["embedding"]>;
|
|
34
34
|
type OpenAIEmbeddingModelId = NonNullable<OpenAIParameters[0]>;
|
|
35
|
-
type OpenAIEmbeddingModelSettings =
|
|
35
|
+
type OpenAIEmbeddingModelSettings = any;
|
|
36
36
|
declare class OpenAIEmbeddingModel extends VercelEmbeddingModel {
|
|
37
|
-
constructor(modelId?: OpenAIEmbeddingModelId,
|
|
37
|
+
constructor(modelId?: OpenAIEmbeddingModelId, _settings?: OpenAIEmbeddingModelSettings, client?: OpenAIProviderSettings | OpenAIClient);
|
|
38
38
|
}
|
|
39
39
|
|
|
40
40
|
export { OpenAIEmbeddingModel, type OpenAIEmbeddingModelId, type OpenAIEmbeddingModelSettings };
|
|
@@ -8,8 +8,8 @@ class OpenAIEmbeddingModel extends VercelEmbeddingModel {
|
|
|
8
8
|
static {
|
|
9
9
|
__name(this, "OpenAIEmbeddingModel");
|
|
10
10
|
}
|
|
11
|
-
constructor(modelId = getEnv("OPENAI_EMBEDDING_MODEL", "text-embedding-3-small"),
|
|
12
|
-
const model = OpenAIClient.ensure(client).instance.embedding(modelId
|
|
11
|
+
constructor(modelId = getEnv("OPENAI_EMBEDDING_MODEL", "text-embedding-3-small"), _settings = {}, client) {
|
|
12
|
+
const model = OpenAIClient.ensure(client).instance.embedding(modelId);
|
|
13
13
|
super(model);
|
|
14
14
|
}
|
|
15
15
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/openai/backend/embedding.ts"],"names":["OpenAIEmbeddingModel","VercelEmbeddingModel","modelId","getEnv","
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/openai/backend/embedding.ts"],"names":["OpenAIEmbeddingModel","VercelEmbeddingModel","modelId","getEnv","_settings","client","model","OpenAIClient","ensure","instance","embedding"],"mappings":";;;;;;AAcO,MAAMA,6BAA6BC,oBAAAA,CAAAA;EAd1C;;;EAeE,WAAA,CACEC,OAAAA,GAAkCC,OAAO,wBAAA,EAA0B,wBAAA,GACnEC,SAAAA,GAA0C,IAC1CC,MAAAA,EACA;AACA,IAAA,MAAMC,QAAQC,YAAAA,CAAaC,MAAAA,CAAOH,MAAAA,CAAAA,CAAQI,QAAAA,CAASC,UAAUR,OAAAA,CAAAA;AAC7D,IAAA,KAAA,CAAMI,KAAAA,CAAAA;AACR;AACF","file":"embedding.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { OpenAIClient } from \"@/adapters/openai/backend/client.js\";\nimport { OpenAIProvider, OpenAIProviderSettings } from \"@ai-sdk/openai\";\nimport { VercelEmbeddingModel } from \"@/adapters/vercel/backend/embedding.js\";\nimport { getEnv } from \"@/internals/env.js\";\n\ntype OpenAIParameters = Parameters<OpenAIProvider[\"embedding\"]>;\nexport type OpenAIEmbeddingModelId = NonNullable<OpenAIParameters[0]>;\nexport type OpenAIEmbeddingModelSettings = any;\n\nexport class OpenAIEmbeddingModel extends VercelEmbeddingModel {\n constructor(\n modelId: OpenAIEmbeddingModelId = getEnv(\"OPENAI_EMBEDDING_MODEL\", \"text-embedding-3-small\"),\n _settings: OpenAIEmbeddingModelSettings = {},\n client?: OpenAIProviderSettings | OpenAIClient,\n ) {\n const model = OpenAIClient.ensure(client).instance.embedding(modelId);\n super(model);\n }\n}\n"]}
|
|
@@ -51,7 +51,7 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
51
51
|
return output;
|
|
52
52
|
}
|
|
53
53
|
const { finishReason, usage, response: { messages } } = await ai.generateText(await this.transformInput(input));
|
|
54
|
-
return new chat_cjs.ChatModelOutput(this.transformMessages(messages), usage, finishReason);
|
|
54
|
+
return new chat_cjs.ChatModelOutput(this.transformMessages(messages), utils_cjs.extractTokenUsage(usage), finishReason);
|
|
55
55
|
}
|
|
56
56
|
async _createStructure({ schema, ...input }, run) {
|
|
57
57
|
const response = await ai.generateObject({
|
|
@@ -72,16 +72,16 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
72
72
|
object: response.object,
|
|
73
73
|
output: new chat_cjs.ChatModelOutput([
|
|
74
74
|
new message_cjs.AssistantMessage(JSON.stringify(response.object, null, 2))
|
|
75
|
-
], response.usage, response.finishReason)
|
|
75
|
+
], utils_cjs.extractTokenUsage(response.usage), response.finishReason)
|
|
76
76
|
};
|
|
77
77
|
}
|
|
78
78
|
async *_createStream(input, run) {
|
|
79
79
|
if (!this.supportsToolStreaming && !remeda.isEmpty(input.tools ?? [])) {
|
|
80
|
-
const
|
|
81
|
-
yield
|
|
80
|
+
const response = await this._create(input, run);
|
|
81
|
+
yield response;
|
|
82
82
|
return;
|
|
83
83
|
}
|
|
84
|
-
const { fullStream, usage, finishReason, response } = ai.streamText({
|
|
84
|
+
const { fullStream, usage: usagePromise, finishReason: finishReasonPromise, response: responsePromise } = ai.streamText({
|
|
85
85
|
...await this.transformInput(input),
|
|
86
86
|
abortSignal: run.signal
|
|
87
87
|
});
|
|
@@ -90,38 +90,33 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
90
90
|
let message;
|
|
91
91
|
switch (event.type) {
|
|
92
92
|
case "text-delta":
|
|
93
|
-
message = new message_cjs.AssistantMessage(event.
|
|
93
|
+
message = new message_cjs.AssistantMessage(event.text);
|
|
94
94
|
break;
|
|
95
95
|
case "tool-call":
|
|
96
96
|
message = new message_cjs.AssistantMessage({
|
|
97
97
|
type: event.type,
|
|
98
98
|
toolCallId: event.toolCallId,
|
|
99
99
|
toolName: event.toolName,
|
|
100
|
-
|
|
100
|
+
input: event.input
|
|
101
101
|
});
|
|
102
102
|
break;
|
|
103
103
|
case "error":
|
|
104
104
|
throw new errors_cjs$1.ChatModelError("Unhandled error", [
|
|
105
105
|
event.error
|
|
106
106
|
]);
|
|
107
|
-
case "step-finish":
|
|
108
|
-
case "step-start":
|
|
109
|
-
continue;
|
|
110
107
|
case "tool-result":
|
|
111
108
|
message = new message_cjs.ToolMessage({
|
|
112
109
|
type: event.type,
|
|
113
110
|
toolCallId: event.toolCallId,
|
|
114
111
|
toolName: event.toolName,
|
|
115
|
-
|
|
112
|
+
output: event.output
|
|
116
113
|
});
|
|
117
114
|
break;
|
|
118
|
-
case "
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
case "finish":
|
|
122
|
-
continue;
|
|
115
|
+
case "abort":
|
|
116
|
+
message = new message_cjs.AssistantMessage([]);
|
|
117
|
+
break;
|
|
123
118
|
default:
|
|
124
|
-
|
|
119
|
+
continue;
|
|
125
120
|
}
|
|
126
121
|
lastChunk = new chat_cjs.ChatModelOutput([
|
|
127
122
|
message
|
|
@@ -131,15 +126,25 @@ class VercelChatModel extends chat_cjs.ChatModel {
|
|
|
131
126
|
if (!lastChunk) {
|
|
132
127
|
throw new errors_cjs$1.ChatModelError("No chunks have been received!");
|
|
133
128
|
}
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
129
|
+
try {
|
|
130
|
+
const [usage, finishReason, _] = await Promise.all([
|
|
131
|
+
usagePromise,
|
|
132
|
+
finishReasonPromise,
|
|
133
|
+
responsePromise
|
|
134
|
+
]);
|
|
135
|
+
lastChunk.usage = utils_cjs.extractTokenUsage(usage);
|
|
136
|
+
lastChunk.finishReason = finishReason;
|
|
137
|
+
} catch (e) {
|
|
138
|
+
if (!run.signal.aborted) {
|
|
139
|
+
throw e;
|
|
140
|
+
}
|
|
141
|
+
}
|
|
137
142
|
}
|
|
138
143
|
async transformInput(input) {
|
|
139
144
|
const tools = await Promise.all((input.tools ?? []).map(async (tool) => ({
|
|
140
145
|
name: tool.name,
|
|
141
146
|
description: tool.description,
|
|
142
|
-
|
|
147
|
+
inputSchema: ai.jsonSchema(await tool.getInputJsonSchema())
|
|
143
148
|
})));
|
|
144
149
|
const messages = input.messages.map((msg) => {
|
|
145
150
|
if (msg instanceof message_cjs.CustomMessage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","parameters","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","text","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","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 {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject<T>({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n response.usage,\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","extractTokenUsage","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","lastChunk","event","message","type","text","toolCallId","toolName","ChatModelError","error","ToolMessage","_","Promise","all","e","aborted","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","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 {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n ModelMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(\n this.transformMessages(messages),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n extractTokenUsage(response.usage),\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.text);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n });\n break;\n case \"abort\":\n message = new AssistantMessage([]);\n break;\n default:\n continue;\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.cjs';
|
|
2
|
-
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-
|
|
3
|
-
import {
|
|
4
|
-
import { E as Emitter } from '../../../emitter-
|
|
2
|
+
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-CRb3vUVg.cjs';
|
|
3
|
+
import { LanguageModel, generateText, CoreAssistantMessage, CoreToolMessage } from 'ai';
|
|
4
|
+
import { E as Emitter } from '../../../emitter-DpqUYjXH.cjs';
|
|
5
5
|
import { Message } from '../../../backend/message.cjs';
|
|
6
6
|
import { GetRunContext } from '../../../context.cjs';
|
|
7
7
|
import 'pino';
|
|
@@ -20,7 +20,9 @@ import 'zod-to-json-schema';
|
|
|
20
20
|
import '../../../internals/helpers/promise.cjs';
|
|
21
21
|
import '../../../template.cjs';
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
type LanguageModelV2 = Exclude<LanguageModel, string>;
|
|
24
|
+
|
|
25
|
+
declare abstract class VercelChatModel<M extends LanguageModelV2 = LanguageModelV2> extends ChatModel {
|
|
24
26
|
private readonly model;
|
|
25
27
|
readonly emitter: Emitter<ChatModelEvents>;
|
|
26
28
|
readonly supportsToolStreaming: boolean;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { Logger } from '../../../logger/logger.js';
|
|
2
|
-
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-
|
|
3
|
-
import {
|
|
4
|
-
import { E as Emitter } from '../../../emitter-
|
|
2
|
+
import { m as ChatModel, g as ChatModelEvents, d as ChatModelInput, n as ChatModelOutput, a as ChatModelObjectInput, b as ChatModelObjectOutput, i as ChatModelCache, C as ChatModelParameters, l as ChatModelToolChoiceSupport } from '../../../chat-C0s-o6ll.js';
|
|
3
|
+
import { LanguageModel, generateText, CoreAssistantMessage, CoreToolMessage } from 'ai';
|
|
4
|
+
import { E as Emitter } from '../../../emitter-CZFbzlUi.js';
|
|
5
5
|
import { Message } from '../../../backend/message.js';
|
|
6
6
|
import { GetRunContext } from '../../../context.js';
|
|
7
7
|
import 'pino';
|
|
@@ -20,7 +20,9 @@ import 'zod-to-json-schema';
|
|
|
20
20
|
import '../../../internals/helpers/promise.js';
|
|
21
21
|
import '../../../template.js';
|
|
22
22
|
|
|
23
|
-
|
|
23
|
+
type LanguageModelV2 = Exclude<LanguageModel, string>;
|
|
24
|
+
|
|
25
|
+
declare abstract class VercelChatModel<M extends LanguageModelV2 = LanguageModelV2> extends ChatModel {
|
|
24
26
|
private readonly model;
|
|
25
27
|
readonly emitter: Emitter<ChatModelEvents>;
|
|
26
28
|
readonly supportsToolStreaming: boolean;
|
|
@@ -7,7 +7,7 @@ import { toCamelCase, isEmpty, mapToObj } from 'remeda';
|
|
|
7
7
|
import { ChatModelError } from '../../../backend/errors.js';
|
|
8
8
|
import { ZodSchema, z, ZodArray, ZodEnum } from 'zod';
|
|
9
9
|
import { Tool } from '../../../tools/base.js';
|
|
10
|
-
import { encodeCustomMessage } from './utils.js';
|
|
10
|
+
import { extractTokenUsage, encodeCustomMessage } from './utils.js';
|
|
11
11
|
|
|
12
12
|
var __defProp = Object.defineProperty;
|
|
13
13
|
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
@@ -49,7 +49,7 @@ class VercelChatModel extends ChatModel {
|
|
|
49
49
|
return output;
|
|
50
50
|
}
|
|
51
51
|
const { finishReason, usage, response: { messages } } = await generateText(await this.transformInput(input));
|
|
52
|
-
return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);
|
|
52
|
+
return new ChatModelOutput(this.transformMessages(messages), extractTokenUsage(usage), finishReason);
|
|
53
53
|
}
|
|
54
54
|
async _createStructure({ schema, ...input }, run) {
|
|
55
55
|
const response = await generateObject({
|
|
@@ -70,16 +70,16 @@ class VercelChatModel extends ChatModel {
|
|
|
70
70
|
object: response.object,
|
|
71
71
|
output: new ChatModelOutput([
|
|
72
72
|
new AssistantMessage(JSON.stringify(response.object, null, 2))
|
|
73
|
-
], response.usage, response.finishReason)
|
|
73
|
+
], extractTokenUsage(response.usage), response.finishReason)
|
|
74
74
|
};
|
|
75
75
|
}
|
|
76
76
|
async *_createStream(input, run) {
|
|
77
77
|
if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {
|
|
78
|
-
const
|
|
79
|
-
yield
|
|
78
|
+
const response = await this._create(input, run);
|
|
79
|
+
yield response;
|
|
80
80
|
return;
|
|
81
81
|
}
|
|
82
|
-
const { fullStream, usage, finishReason, response } = streamText({
|
|
82
|
+
const { fullStream, usage: usagePromise, finishReason: finishReasonPromise, response: responsePromise } = streamText({
|
|
83
83
|
...await this.transformInput(input),
|
|
84
84
|
abortSignal: run.signal
|
|
85
85
|
});
|
|
@@ -88,38 +88,33 @@ class VercelChatModel extends ChatModel {
|
|
|
88
88
|
let message;
|
|
89
89
|
switch (event.type) {
|
|
90
90
|
case "text-delta":
|
|
91
|
-
message = new AssistantMessage(event.
|
|
91
|
+
message = new AssistantMessage(event.text);
|
|
92
92
|
break;
|
|
93
93
|
case "tool-call":
|
|
94
94
|
message = new AssistantMessage({
|
|
95
95
|
type: event.type,
|
|
96
96
|
toolCallId: event.toolCallId,
|
|
97
97
|
toolName: event.toolName,
|
|
98
|
-
|
|
98
|
+
input: event.input
|
|
99
99
|
});
|
|
100
100
|
break;
|
|
101
101
|
case "error":
|
|
102
102
|
throw new ChatModelError("Unhandled error", [
|
|
103
103
|
event.error
|
|
104
104
|
]);
|
|
105
|
-
case "step-finish":
|
|
106
|
-
case "step-start":
|
|
107
|
-
continue;
|
|
108
105
|
case "tool-result":
|
|
109
106
|
message = new ToolMessage({
|
|
110
107
|
type: event.type,
|
|
111
108
|
toolCallId: event.toolCallId,
|
|
112
109
|
toolName: event.toolName,
|
|
113
|
-
|
|
110
|
+
output: event.output
|
|
114
111
|
});
|
|
115
112
|
break;
|
|
116
|
-
case "
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
case "finish":
|
|
120
|
-
continue;
|
|
113
|
+
case "abort":
|
|
114
|
+
message = new AssistantMessage([]);
|
|
115
|
+
break;
|
|
121
116
|
default:
|
|
122
|
-
|
|
117
|
+
continue;
|
|
123
118
|
}
|
|
124
119
|
lastChunk = new ChatModelOutput([
|
|
125
120
|
message
|
|
@@ -129,15 +124,25 @@ class VercelChatModel extends ChatModel {
|
|
|
129
124
|
if (!lastChunk) {
|
|
130
125
|
throw new ChatModelError("No chunks have been received!");
|
|
131
126
|
}
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
127
|
+
try {
|
|
128
|
+
const [usage, finishReason, _] = await Promise.all([
|
|
129
|
+
usagePromise,
|
|
130
|
+
finishReasonPromise,
|
|
131
|
+
responsePromise
|
|
132
|
+
]);
|
|
133
|
+
lastChunk.usage = extractTokenUsage(usage);
|
|
134
|
+
lastChunk.finishReason = finishReason;
|
|
135
|
+
} catch (e) {
|
|
136
|
+
if (!run.signal.aborted) {
|
|
137
|
+
throw e;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
135
140
|
}
|
|
136
141
|
async transformInput(input) {
|
|
137
142
|
const tools = await Promise.all((input.tools ?? []).map(async (tool) => ({
|
|
138
143
|
name: tool.name,
|
|
139
144
|
description: tool.description,
|
|
140
|
-
|
|
145
|
+
inputSchema: jsonSchema(await tool.getInputJsonSchema())
|
|
141
146
|
})));
|
|
142
147
|
const messages = input.messages.map((msg) => {
|
|
143
148
|
if (msg instanceof CustomMessage) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","streamText","lastChunk","event","message","type","textDelta","toolCallId","toolName","args","ChatModelError","error","ToolMessage","result","Error","Promise","all","map","tool","parameters","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","text","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n CoreMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModelV1,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV1 = LanguageModelV1,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(this.transformMessages(messages), usage, finishReason);\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject<T>({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n response.usage,\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const { fullStream, usage, finishReason, response } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.textDelta);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n args: event.args,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"step-finish\":\n case \"step-start\":\n continue;\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n result: event.result,\n });\n break;\n case \"tool-call-streaming-start\":\n case \"tool-call-delta\":\n continue;\n case \"finish\":\n continue;\n default:\n throw new Error(`Unhandled event \"${event.type}\"`);\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n lastChunk.usage = await usage;\n lastChunk.finishReason = await finishReason;\n await response;\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n parameters: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): CoreMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as CoreMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../../src/adapters/vercel/backend/chat.ts"],"names":["VercelChatModel","ChatModel","emitter","supportsToolStreaming","model","modelId","ValueError","Emitter","root","child","namespace","providerId","creator","provider","split","toCamelCase","_create","input","run","responseFormat","ZodSchema","schema","output","_createStructure","finishReason","usage","response","messages","generateText","transformInput","ChatModelOutput","transformMessages","extractTokenUsage","generateObject","temperature","abortSignal","signal","_input","ZodArray","ZodEnum","jsonSchema","z","any","schemaName","name","schemaDescription","description","object","AssistantMessage","JSON","stringify","_createStream","isEmpty","tools","fullStream","usagePromise","finishReasonPromise","responsePromise","streamText","lastChunk","event","message","type","text","toolCallId","toolName","ChatModelError","error","ToolMessage","_","Promise","all","e","aborted","map","tool","inputSchema","getInputJsonSchema","msg","CustomMessage","encodeCustomMessage","role","content","UserMessage","SystemMessage","part","join","toolChoice","Tool","toolChoiceSupport","includes","logger","warn","parameters","mapToObj","flatMap","providerOptions","createSnapshot","loadSnapshot","snapshot","instance","fromName","Error","destroy","Object","assign"],"mappings":"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","file":"chat.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n ChatModelInput,\n ChatModel,\n ChatModelOutput,\n ChatModelEvents,\n ChatModelObjectInput,\n ChatModelObjectOutput,\n} from \"@/backend/chat.js\";\nimport {\n CoreAssistantMessage,\n ModelMessage,\n CoreToolMessage,\n generateObject,\n generateText,\n jsonSchema,\n LanguageModel as _LanguageModel,\n streamText,\n TextPart,\n ToolCallPart,\n ToolChoice,\n} from \"ai\";\ntype LanguageModelV2 = Exclude<_LanguageModel, string>;\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport {\n AssistantMessage,\n CustomMessage,\n Message,\n SystemMessage,\n ToolMessage,\n UserMessage,\n} from \"@/backend/message.js\";\nimport { GetRunContext } from \"@/context.js\";\nimport { ValueError } from \"@/errors.js\";\nimport { isEmpty, mapToObj, toCamelCase } from \"remeda\";\nimport { FullModelName } from \"@/backend/utils.js\";\nimport { ChatModelError } from \"@/backend/errors.js\";\nimport { z, ZodArray, ZodEnum, ZodSchema } from \"zod\";\nimport { Tool } from \"@/tools/base.js\";\nimport { encodeCustomMessage, extractTokenUsage } from \"@/adapters/vercel/backend/utils.js\";\n\nexport abstract class VercelChatModel<\n M extends LanguageModelV2 = LanguageModelV2,\n> extends ChatModel {\n public readonly emitter: Emitter<ChatModelEvents>;\n public readonly supportsToolStreaming: boolean = true;\n\n constructor(private readonly model: M) {\n super();\n if (!this.modelId) {\n throw new ValueError(\"No modelId has been provided!\");\n }\n this.emitter = Emitter.root.child({\n namespace: [\"backend\", this.providerId, \"chat\"],\n creator: this,\n });\n }\n\n get modelId(): string {\n return this.model.modelId;\n }\n\n get providerId(): string {\n const provider = this.model.provider.split(\".\")[0].split(\"-\")[0];\n return toCamelCase(provider);\n }\n\n protected async _create(input: ChatModelInput, run: GetRunContext<this>) {\n const responseFormat = input.responseFormat;\n if (responseFormat && (responseFormat instanceof ZodSchema || responseFormat.schema)) {\n const { output } = await this._createStructure(\n {\n ...input,\n schema: responseFormat,\n },\n run,\n );\n return output;\n }\n\n const {\n finishReason,\n usage,\n response: { messages },\n } = await generateText(await this.transformInput(input));\n\n return new ChatModelOutput(\n this.transformMessages(messages),\n extractTokenUsage(usage),\n finishReason,\n );\n }\n\n protected async _createStructure<T>(\n { schema, ...input }: ChatModelObjectInput<T>,\n run: GetRunContext<this>,\n ): Promise<ChatModelObjectOutput<T>> {\n const response = await generateObject({\n temperature: 0,\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n model: this.model,\n ...(schema instanceof ZodSchema\n ? {\n schema,\n output: ((schema._input || schema) instanceof ZodArray\n ? \"array\"\n : (schema._input || schema) instanceof ZodEnum\n ? \"enum\"\n : \"object\") as any,\n }\n : {\n schema: schema.schema ? jsonSchema<T>(schema.schema) : z.any(),\n schemaName: schema.name,\n schemaDescription: schema.description,\n }),\n });\n\n return {\n object: response.object as T,\n output: new ChatModelOutput(\n [new AssistantMessage(JSON.stringify(response.object, null, 2))],\n extractTokenUsage(response.usage),\n response.finishReason,\n ),\n };\n }\n\n async *_createStream(input: ChatModelInput, run: GetRunContext<this>) {\n if (!this.supportsToolStreaming && !isEmpty(input.tools ?? [])) {\n const response = await this._create(input, run);\n yield response;\n return;\n }\n\n const {\n fullStream,\n usage: usagePromise,\n finishReason: finishReasonPromise,\n response: responsePromise,\n } = streamText({\n ...(await this.transformInput(input)),\n abortSignal: run.signal,\n });\n\n let lastChunk: ChatModelOutput | null = null;\n for await (const event of fullStream) {\n let message: Message;\n switch (event.type) {\n case \"text-delta\":\n message = new AssistantMessage(event.text);\n break;\n case \"tool-call\":\n message = new AssistantMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n input: event.input,\n });\n break;\n case \"error\":\n throw new ChatModelError(\"Unhandled error\", [event.error as Error]);\n case \"tool-result\":\n message = new ToolMessage({\n type: event.type,\n toolCallId: event.toolCallId,\n toolName: event.toolName,\n output: event.output as any,\n });\n break;\n case \"abort\":\n message = new AssistantMessage([]);\n break;\n default:\n continue;\n }\n lastChunk = new ChatModelOutput([message]);\n yield lastChunk;\n }\n\n if (!lastChunk) {\n throw new ChatModelError(\"No chunks have been received!\");\n }\n\n try {\n const [usage, finishReason, _] = await Promise.all([\n usagePromise,\n finishReasonPromise,\n responsePromise,\n ]);\n lastChunk.usage = extractTokenUsage(usage);\n lastChunk.finishReason = finishReason;\n } catch (e) {\n if (!run.signal.aborted) {\n throw e;\n }\n }\n }\n\n protected async transformInput(\n input: ChatModelInput,\n ): Promise<Parameters<typeof generateText<Record<string, any>>>[0]> {\n const tools = await Promise.all(\n (input.tools ?? []).map(async (tool) => ({\n name: tool.name,\n description: tool.description,\n inputSchema: jsonSchema(await tool.getInputJsonSchema()),\n })),\n );\n\n const messages = input.messages.map((msg): ModelMessage => {\n if (msg instanceof CustomMessage) {\n msg = encodeCustomMessage(msg);\n }\n\n if (msg instanceof AssistantMessage) {\n return { role: \"assistant\", content: msg.content };\n } else if (msg instanceof ToolMessage) {\n return { role: \"tool\", content: msg.content };\n } else if (msg instanceof UserMessage) {\n return { role: \"user\", content: msg.content };\n } else if (msg instanceof SystemMessage) {\n return { role: \"system\", content: msg.content.map((part) => part.text).join(\"\\n\") };\n }\n return { role: msg.role, content: msg.content } as ModelMessage;\n });\n\n let toolChoice: ToolChoice<Record<string, any>> | undefined;\n if (input.toolChoice && input.toolChoice instanceof Tool) {\n if (this.toolChoiceSupport.includes(\"single\")) {\n toolChoice = {\n type: \"tool\",\n toolName: input.toolChoice.name,\n };\n } else {\n this.logger.warn(`The single tool choice is not supported.`);\n }\n } else if (input.toolChoice) {\n if (this.toolChoiceSupport.includes(input.toolChoice)) {\n toolChoice = input.toolChoice;\n } else {\n this.logger.warn(`The following tool choice value '${input.toolChoice}' is not supported.`);\n }\n }\n\n return {\n ...this.parameters,\n ...input,\n toolChoice,\n model: this.model,\n tools: mapToObj(tools, ({ name, ...tool }) => [name, tool]),\n messages,\n };\n }\n\n protected transformMessages(messages: (CoreAssistantMessage | CoreToolMessage)[]): Message[] {\n return messages.flatMap((msg) => {\n if (msg.role === \"tool\") {\n return new ToolMessage(msg.content, msg.providerOptions);\n }\n return new AssistantMessage(\n msg.content as TextPart | ToolCallPart | string,\n msg.providerOptions,\n );\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n providerId: this.providerId,\n modelId: this.modelId,\n supportsToolStreaming: this.supportsToolStreaming,\n };\n }\n\n async loadSnapshot({ providerId, modelId, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n const instance = await ChatModel.fromName(`${providerId}:${modelId}` as FullModelName);\n if (!(instance instanceof VercelChatModel)) {\n throw new Error(\"Incorrect deserialization!\");\n }\n instance.destroy();\n Object.assign(this, {\n ...snapshot,\n model: instance.model,\n });\n }\n}\n"]}
|