beeai-framework 0.1.20 → 0.1.22
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 +6 -10
- package/dist/adapters/a2a/agents/agent.d.ts +6 -10
- 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 +6 -10
- package/dist/adapters/acp/agents/agent.d.ts +6 -10
- 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 +18 -16
- package/dist/adapters/{beeai_platform → agentstack}/agents/agent.d.ts +18 -16
- 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/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 +26 -0
- package/dist/adapters/vercel/backend/utils.cjs.map +1 -1
- package/dist/adapters/vercel/backend/utils.d.cts +20 -2
- package/dist/adapters/vercel/backend/utils.d.ts +20 -2
- package/dist/adapters/vercel/backend/utils.js +25 -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-I0Saf4A1.d.cts → agent-BMfyig7X.d.cts} +5 -4
- package/dist/{agent-CtrCeN7o.d.ts → agent-Dxw8AGWb.d.ts} +5 -4
- package/dist/agents/base.cjs +5 -2
- package/dist/agents/base.cjs.map +1 -1
- package/dist/agents/base.d.cts +2 -2
- package/dist/agents/base.d.ts +2 -2
- package/dist/agents/base.js +5 -2
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/experimental/replan/agent.d.cts +3 -3
- package/dist/agents/experimental/replan/agent.d.ts +3 -3
- package/dist/agents/experimental/replan/prompts.d.cts +1 -1
- package/dist/agents/experimental/replan/prompts.d.ts +1 -1
- package/dist/agents/experimental/streamlit/agent.d.cts +8 -12
- package/dist/agents/experimental/streamlit/agent.d.ts +8 -12
- 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/requirement/agent.cjs +162 -0
- package/dist/agents/requirement/agent.cjs.map +1 -0
- package/dist/agents/requirement/agent.d.cts +29 -0
- package/dist/agents/requirement/agent.d.ts +29 -0
- package/dist/agents/requirement/agent.js +160 -0
- package/dist/agents/requirement/agent.js.map +1 -0
- package/dist/agents/requirement/prompts.cjs +95 -0
- package/dist/agents/requirement/prompts.cjs.map +1 -0
- package/dist/agents/requirement/prompts.d.cts +107 -0
- package/dist/agents/requirement/prompts.d.ts +107 -0
- package/dist/agents/requirement/prompts.js +90 -0
- package/dist/agents/requirement/prompts.js.map +1 -0
- package/dist/agents/requirement/requirements/conditional.cjs +190 -0
- package/dist/agents/requirement/requirements/conditional.cjs.map +1 -0
- package/dist/agents/requirement/requirements/conditional.d.cts +71 -0
- package/dist/agents/requirement/requirements/conditional.d.ts +71 -0
- package/dist/agents/requirement/requirements/conditional.js +188 -0
- package/dist/agents/requirement/requirements/conditional.js.map +1 -0
- package/dist/agents/requirement/requirements/requirement.cjs +107 -0
- package/dist/agents/requirement/requirements/requirement.cjs.map +1 -0
- package/dist/agents/requirement/requirements/requirement.d.cts +59 -0
- package/dist/agents/requirement/requirements/requirement.d.ts +59 -0
- package/dist/agents/requirement/requirements/requirement.js +104 -0
- package/dist/agents/requirement/requirements/requirement.js.map +1 -0
- package/dist/agents/requirement/requirements/utils.cjs +74 -0
- package/dist/agents/requirement/requirements/utils.cjs.map +1 -0
- package/dist/agents/requirement/requirements/utils.d.cts +40 -0
- package/dist/agents/requirement/requirements/utils.d.ts +40 -0
- package/dist/agents/requirement/requirements/utils.js +69 -0
- package/dist/agents/requirement/requirements/utils.js.map +1 -0
- package/dist/agents/requirement/runner.cjs +252 -0
- package/dist/agents/requirement/runner.cjs.map +1 -0
- package/dist/agents/requirement/runner.d.cts +117 -0
- package/dist/agents/requirement/runner.d.ts +117 -0
- package/dist/agents/requirement/runner.js +250 -0
- package/dist/agents/requirement/runner.js.map +1 -0
- package/dist/agents/requirement/types.cjs +40 -0
- package/dist/agents/requirement/types.cjs.map +1 -0
- package/dist/agents/requirement/types.d.cts +24 -0
- package/dist/agents/requirement/types.d.ts +24 -0
- package/dist/agents/requirement/types.js +35 -0
- package/dist/agents/requirement/types.js.map +1 -0
- package/dist/agents/requirement/utils/llm.cjs +202 -0
- package/dist/agents/requirement/utils/llm.cjs.map +1 -0
- package/dist/agents/requirement/utils/llm.d.cts +50 -0
- package/dist/agents/requirement/utils/llm.d.ts +50 -0
- package/dist/agents/requirement/utils/llm.js +199 -0
- package/dist/agents/requirement/utils/llm.js.map +1 -0
- package/dist/agents/requirement/utils/tool.cjs +94 -0
- package/dist/agents/requirement/utils/tool.cjs.map +1 -0
- package/dist/agents/requirement/utils/tool.d.cts +24 -0
- package/dist/agents/requirement/utils/tool.d.ts +24 -0
- package/dist/agents/requirement/utils/tool.js +91 -0
- package/dist/agents/requirement/utils/tool.js.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs +61 -0
- package/dist/agents/requirement/utils/toolCallChecker.cjs.map +1 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.cts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.d.ts +28 -0
- package/dist/agents/requirement/utils/toolCallChecker.js +59 -0
- package/dist/agents/requirement/utils/toolCallChecker.js.map +1 -0
- package/dist/agents/toolCalling/agent.cjs +9 -5
- package/dist/agents/toolCalling/agent.cjs.map +1 -1
- package/dist/agents/toolCalling/agent.d.cts +8 -12
- package/dist/agents/toolCalling/agent.d.ts +8 -12
- 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-BsY2baWy.d.ts → base-BurRTBA7.d.ts} +4 -2
- package/dist/{base-BP7v-NSL.d.cts → base-v-PYIq5G.d.cts} +4 -2
- package/dist/cache/fileCache.cjs.map +1 -1
- package/dist/cache/fileCache.js.map +1 -1
- package/dist/{chat-W9j8T6UU.d.ts → chat-BbCYMAdE.d.ts} +4 -2
- package/dist/{chat-CR4yfOR9.d.cts → chat-DB_cf15S.d.cts} +4 -2
- package/dist/context.cjs +22 -5
- package/dist/context.cjs.map +1 -1
- package/dist/context.d.cts +19 -6
- package/dist/context.d.ts +19 -6
- package/dist/context.js +23 -7
- package/dist/context.js.map +1 -1
- package/dist/emitter/emitter.cjs +19 -13
- package/dist/emitter/emitter.cjs.map +1 -1
- package/dist/emitter/emitter.d.cts +1 -1
- package/dist/emitter/emitter.d.ts +1 -1
- package/dist/emitter/emitter.js +19 -13
- package/dist/emitter/emitter.js.map +1 -1
- package/dist/emitter/types.d.cts +1 -1
- package/dist/emitter/types.d.ts +1 -1
- package/dist/{emitter-DWEsd-ud.d.cts → emitter-CGKd_-kK.d.cts} +6 -5
- package/dist/{emitter-C9nwGLt6.d.ts → emitter-CN7I4uSV.d.ts} +6 -5
- package/dist/index.d.cts +5 -5
- package/dist/index.d.ts +5 -5
- 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/internals/helpers/prototype.cjs +5 -0
- package/dist/internals/helpers/prototype.cjs.map +1 -1
- package/dist/internals/helpers/prototype.d.cts +2 -1
- package/dist/internals/helpers/prototype.d.ts +2 -1
- package/dist/internals/helpers/prototype.js +5 -1
- package/dist/internals/helpers/prototype.js.map +1 -1
- package/dist/internals/types.cjs.map +1 -1
- package/dist/internals/types.d.cts +1 -1
- package/dist/internals/types.d.ts +1 -1
- package/dist/internals/types.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/slidingMemory.d.cts +1 -1
- package/dist/memory/slidingMemory.d.ts +1 -1
- package/dist/memory/summarizeMemory.d.cts +2 -2
- package/dist/memory/summarizeMemory.d.ts +2 -2
- package/dist/middleware/trajectory.cjs +322 -0
- package/dist/middleware/trajectory.cjs.map +1 -0
- package/dist/middleware/trajectory.d.cts +115 -0
- package/dist/middleware/trajectory.d.ts +115 -0
- package/dist/middleware/trajectory.js +320 -0
- package/dist/middleware/trajectory.js.map +1 -0
- 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/serializer.cjs +5 -4
- package/dist/serializer/serializer.cjs.map +1 -1
- package/dist/serializer/serializer.d.cts +1 -1
- package/dist/serializer/serializer.d.ts +1 -1
- package/dist/serializer/serializer.js +5 -4
- package/dist/serializer/serializer.js.map +1 -1
- package/dist/serializer/utils.cjs +3 -0
- package/dist/serializer/utils.cjs.map +1 -1
- package/dist/serializer/utils.d.cts +1 -1
- package/dist/serializer/utils.d.ts +1 -1
- package/dist/serializer/utils.js +3 -0
- package/dist/serializer/utils.js.map +1 -1
- package/dist/{serializer-CQxucveV.d.ts → serializer-53t8gGQa.d.ts} +3 -2
- package/dist/{serializer-BKn50Vnx.d.cts → serializer-c51B2z6d.d.cts} +3 -2
- package/dist/template.cjs +20 -0
- package/dist/template.cjs.map +1 -1
- package/dist/template.d.cts +1 -0
- package/dist/template.d.ts +1 -0
- package/dist/template.js +20 -0
- package/dist/template.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 +3 -2
- package/dist/tools/base.d.ts +3 -2
- 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 +3 -3
- package/dist/tools/database/milvus.d.ts +3 -3
- 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/think.cjs +52 -0
- package/dist/tools/think.cjs.map +1 -0
- package/dist/tools/think.d.cts +47 -0
- package/dist/tools/think.d.ts +47 -0
- package/dist/tools/think.js +50 -0
- package/dist/tools/think.js.map +1 -0
- 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/types-BXkkbABd.d.ts +213 -0
- package/dist/types-Cx6f43du.d.cts +213 -0
- 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 +70 -69
- 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
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { z, ZodSchema } from 'zod';
|
|
2
|
+
import { BaseToolOptions, StringToolOutput, Tool, BaseToolRunOptions } from './base.js';
|
|
3
|
+
import { RunContext } from '../context.js';
|
|
4
|
+
import { E as Emitter } from '../emitter-CN7I4uSV.js';
|
|
5
|
+
import 'ajv';
|
|
6
|
+
import '../errors.js';
|
|
7
|
+
import '../internals/types.js';
|
|
8
|
+
import '../internals/helpers/guards.js';
|
|
9
|
+
import '../internals/serializable.js';
|
|
10
|
+
import 'promise-based-task';
|
|
11
|
+
import '../cache/base.js';
|
|
12
|
+
import '../internals/helpers/schema.js';
|
|
13
|
+
import 'zod-to-json-schema';
|
|
14
|
+
import '../internals/helpers/promise.js';
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
18
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
19
|
+
*/
|
|
20
|
+
|
|
21
|
+
declare const ThinkSchema: z.ZodObject<{
|
|
22
|
+
thoughts: z.ZodString;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
thoughts: string;
|
|
25
|
+
}, {
|
|
26
|
+
thoughts: string;
|
|
27
|
+
}>;
|
|
28
|
+
type ThinkInput = z.infer<typeof ThinkSchema>;
|
|
29
|
+
interface ThinkToolOptions extends BaseToolOptions<StringToolOutput> {
|
|
30
|
+
extraInstructions?: string;
|
|
31
|
+
toolOutput?: string | ((input: ThinkInput) => string);
|
|
32
|
+
schema?: ZodSchema;
|
|
33
|
+
}
|
|
34
|
+
declare class ThinkTool extends Tool<StringToolOutput, ThinkToolOptions> {
|
|
35
|
+
name: string;
|
|
36
|
+
description: string;
|
|
37
|
+
readonly emitter: Emitter<any>;
|
|
38
|
+
protected _inputSchema: ZodSchema;
|
|
39
|
+
protected _toolOutput: string | ((input: ThinkInput) => string);
|
|
40
|
+
protected _extraInstructions: string;
|
|
41
|
+
constructor(options?: ThinkToolOptions);
|
|
42
|
+
inputSchema(): ZodSchema;
|
|
43
|
+
_run(input: ThinkInput, _options: BaseToolRunOptions, _context: RunContext<typeof this>): Promise<StringToolOutput>;
|
|
44
|
+
protected createEmitter(): Emitter<any>;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export { ThinkTool, type ThinkToolOptions };
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { Tool, StringToolOutput } from './base.js';
|
|
3
|
+
import { Emitter } from '../emitter/emitter.js';
|
|
4
|
+
|
|
5
|
+
var __defProp = Object.defineProperty;
|
|
6
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
7
|
+
const ThinkSchema = z.object({
|
|
8
|
+
thoughts: z.string().describe("Precisely describe what you are thinking about.")
|
|
9
|
+
});
|
|
10
|
+
class ThinkTool extends Tool {
|
|
11
|
+
static {
|
|
12
|
+
__name(this, "ThinkTool");
|
|
13
|
+
}
|
|
14
|
+
name = "think";
|
|
15
|
+
description = "Use when you want to think through a problem, clarify your assumptions, or break down complex steps before acting or responding.";
|
|
16
|
+
emitter;
|
|
17
|
+
_inputSchema;
|
|
18
|
+
_toolOutput;
|
|
19
|
+
_extraInstructions;
|
|
20
|
+
constructor(options = {}) {
|
|
21
|
+
super(options);
|
|
22
|
+
this._inputSchema = options.schema ?? ThinkSchema;
|
|
23
|
+
this._toolOutput = options.toolOutput ?? "OK";
|
|
24
|
+
this._extraInstructions = options.extraInstructions ?? "";
|
|
25
|
+
if (this._extraInstructions) {
|
|
26
|
+
this.description += ` ${this._extraInstructions}`;
|
|
27
|
+
}
|
|
28
|
+
this.emitter = this.createEmitter();
|
|
29
|
+
}
|
|
30
|
+
inputSchema() {
|
|
31
|
+
return this._inputSchema;
|
|
32
|
+
}
|
|
33
|
+
async _run(input, _options, _context) {
|
|
34
|
+
const output = typeof this._toolOutput === "function" ? this._toolOutput(input) : this._toolOutput;
|
|
35
|
+
return new StringToolOutput(output);
|
|
36
|
+
}
|
|
37
|
+
createEmitter() {
|
|
38
|
+
return Emitter.root.child({
|
|
39
|
+
namespace: [
|
|
40
|
+
"tool",
|
|
41
|
+
"think"
|
|
42
|
+
],
|
|
43
|
+
creator: this
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
export { ThinkTool };
|
|
49
|
+
//# sourceMappingURL=think.js.map
|
|
50
|
+
//# sourceMappingURL=think.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../src/tools/think.ts"],"names":["ThinkSchema","z","object","thoughts","string","describe","ThinkTool","Tool","name","description","emitter","_inputSchema","_toolOutput","_extraInstructions","options","schema","toolOutput","extraInstructions","createEmitter","inputSchema","_run","input","_options","_context","output","StringToolOutput","Emitter","root","child","namespace","creator"],"mappings":";;;;;;AAUA,MAAMA,WAAAA,GAAcC,EAAEC,MAAAA,CAAO;AAC3BC,EAAAA,QAAAA,EAAUF,CAAAA,CAAEG,MAAAA,EAAM,CAAGC,QAAAA,CAAS,iDAAA;AAChC,CAAA,CAAA;AAUO,MAAMC,kBAAkBC,IAAAA,CAAAA;EAtB/B;;;EAuBSC,IAAAA,GAAO,OAAA;EACPC,WAAAA,GACL,kIAAA;AAEcC,EAAAA,OAAAA;AAENC,EAAAA,YAAAA;AACAC,EAAAA,WAAAA;AACAC,EAAAA,kBAAAA;EAEV,WAAA,CAAYC,OAAAA,GAA4B,EAAC,EAAG;AAC1C,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAA,IAAA,CAAKH,YAAAA,GAAeG,QAAQC,MAAAA,IAAUf,WAAAA;AACtC,IAAA,IAAA,CAAKY,WAAAA,GAAcE,QAAQE,UAAAA,IAAc,IAAA;AACzC,IAAA,IAAA,CAAKH,kBAAAA,GAAqBC,QAAQG,iBAAAA,IAAqB,EAAA;AAEvD,IAAA,IAAI,KAAKJ,kBAAAA,EAAoB;AAC3B,MAAA,IAAA,CAAKJ,WAAAA,IAAe,CAAA,CAAA,EAAI,IAAA,CAAKI,kBAAkB,CAAA,CAAA;AACjD;AAEA,IAAA,IAAA,CAAKH,OAAAA,GAAU,KAAKQ,aAAAA,EAAa;AACnC;EAEAC,WAAAA,GAAyB;AACvB,IAAA,OAAO,IAAA,CAAKR,YAAAA;AACd;EAEA,MAAMS,IAAAA,CACJC,KAAAA,EACAC,QAAAA,EACAC,QAAAA,EAC2B;AAC3B,IAAA,MAAMC,MAAAA,GACJ,OAAO,IAAA,CAAKZ,WAAAA,KAAgB,aAAa,IAAA,CAAKA,WAAAA,CAAYS,KAAAA,CAAAA,GAAS,IAAA,CAAKT,WAAAA;AAC1E,IAAA,OAAO,IAAIa,iBAAiBD,MAAAA,CAAAA;AAC9B;EAEUN,aAAAA,GAA8B;AACtC,IAAA,OAAOQ,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;MACxBC,SAAAA,EAAW;AAAC,QAAA,MAAA;AAAQ,QAAA;;MACpBC,OAAAA,EAAS;KACX,CAAA;AACF;AACF","file":"think.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { z, ZodSchema } from \"zod\";\nimport { Tool, StringToolOutput, BaseToolRunOptions, BaseToolOptions } from \"@/tools/base.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nconst ThinkSchema = z.object({\n thoughts: z.string().describe(\"Precisely describe what you are thinking about.\"),\n});\n\ntype ThinkInput = z.infer<typeof ThinkSchema>;\n\nexport interface ThinkToolOptions extends BaseToolOptions<StringToolOutput> {\n extraInstructions?: string;\n toolOutput?: string | ((input: ThinkInput) => string);\n schema?: ZodSchema;\n}\n\nexport class ThinkTool extends Tool<StringToolOutput, ThinkToolOptions> {\n public name = \"think\";\n public description =\n \"Use when you want to think through a problem, clarify your assumptions, or break down complex steps before acting or responding.\";\n\n public readonly emitter: Emitter<any>;\n\n protected _inputSchema: ZodSchema;\n protected _toolOutput: string | ((input: ThinkInput) => string);\n protected _extraInstructions: string;\n\n constructor(options: ThinkToolOptions = {}) {\n super(options);\n this._inputSchema = options.schema ?? ThinkSchema;\n this._toolOutput = options.toolOutput ?? \"OK\";\n this._extraInstructions = options.extraInstructions ?? \"\";\n\n if (this._extraInstructions) {\n this.description += ` ${this._extraInstructions}`;\n }\n\n this.emitter = this.createEmitter();\n }\n\n inputSchema(): ZodSchema {\n return this._inputSchema;\n }\n\n async _run(\n input: ThinkInput,\n _options: BaseToolRunOptions,\n _context: RunContext<typeof this>,\n ): Promise<StringToolOutput> {\n const output =\n typeof this._toolOutput === \"function\" ? this._toolOutput(input) : this._toolOutput;\n return new StringToolOutput(output);\n }\n\n protected createEmitter(): Emitter<any> {\n return Emitter.root.child({\n namespace: [\"tool\", \"think\"],\n creator: this,\n });\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/weather/openMeteo.ts"],"names":["OpenMeteoToolOutput","JSONToolOutput","OpenMeteoTool","Tool","name","description","inputSchema","z","object","location","union","string","min","country","optional","language","default","strip","latitude","coerce","number","longitude","start_date","date","describe","end_date","temperature_unit","enum","emitter","Emitter","root","child","namespace","creator","register","options","responseFilter","excludedKeys","preprocessInput","rawInput","fixDate","key","value","getProp","setProp","substring","_run","startDate","endDate","input","_options","run","apiKey","prepareParams","extractLocation","response","_geocode","signal","pick","validateAndSetDates","startDateStr","endDateStr","now","Date","start","UTC","getFullYear","getMonth","getDate","end","ToolInputValidationError","toDateString","toISOString","split","createURLParams","pickBy","v","isNullish","current","daily","hourly","timezone","params","fetch","headers","Authorization","ok","ToolError","Error","text","data","json","omit","format","count","results","length"],"mappings":"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","file":"openMeteo.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { isNullish, omit, pick, pickBy } from \"remeda\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ResponseFilter {\n excludedKeys: (keyof OpenMeteoToolResponse)[];\n}\n\ninterface ToolOptions extends BaseToolOptions {\n apiKey?: string;\n responseFilter?: ResponseFilter;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\ninterface Location {\n latitude: number;\n longitude: number;\n}\n\ninterface LocationSearch {\n name: string;\n country?: string;\n language?: string;\n}\n\nexport interface OpenMeteoToolResponse {\n latitude?: number;\n longitude?: number;\n generationtime_ms?: number;\n utc_offset_seconds?: number;\n timezone?: string;\n timezone_abbreviation?: string;\n elevation?: number;\n current_units?: Record<string, string>;\n current?: Record<string, string>;\n hourly_units?: Record<string, string>;\n hourly?: Record<string, any[]>;\n daily_units?: Record<string, string>;\n daily?: Record<string, any[]>;\n}\n\nexport class OpenMeteoToolOutput extends JSONToolOutput<OpenMeteoToolResponse> {}\n\nexport class OpenMeteoTool extends Tool<OpenMeteoToolOutput, ToolOptions, ToolRunOptions> {\n name = \"OpenMeteo\";\n description = `Retrieve current, past, or future weather forecasts for a location.`;\n\n inputSchema() {\n return z\n .object({\n location: z.union([\n z\n .object({\n name: z.string().min(1),\n country: z.string().optional(),\n language: z.string().default(\"English\"),\n })\n .strip(),\n z\n .object({\n latitude: z.coerce.number(),\n longitude: z.coerce.number(),\n })\n .strip(),\n ]),\n start_date: z\n .string()\n .date()\n .describe(\"Start date for the weather forecast in the format YYYY-MM-DD (UTC)\"),\n end_date: z\n .string()\n .date()\n .describe(\"End date for the weather forecast in the format YYYY-MM-DD (UTC)\")\n .optional(),\n temperature_unit: z.enum([\"celsius\", \"fahrenheit\"]).default(\"celsius\"),\n })\n .strip();\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, OpenMeteoToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"weather\", \"openMeteo\"],\n creator: this,\n });\n\n static {\n this.register();\n }\n\n public constructor(options: Partial<ToolOptions> = {}) {\n super({\n ...options,\n responseFilter: options?.responseFilter ?? {\n excludedKeys: [\n \"latitude\",\n \"longitude\",\n \"generationtime_ms\",\n \"utc_offset_seconds\",\n \"timezone\",\n \"timezone_abbreviation\",\n \"elevation\",\n \"hourly\",\n \"hourly_units\",\n ],\n },\n });\n }\n\n protected preprocessInput(rawInput: unknown) {\n super.preprocessInput(rawInput);\n\n const fixDate = (key: keyof ToolInput<this>) => {\n const value = getProp(rawInput, [key]);\n if (value) {\n setProp(rawInput, [key], value.substring(0, 10));\n }\n };\n\n fixDate(\"start_date\");\n fixDate(\"end_date\");\n }\n\n protected async _run(\n { location, start_date: startDate, end_date: endDate, ...input }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const { apiKey } = this.options;\n\n const prepareParams = async () => {\n const extractLocation = async (): Promise<Location> => {\n if (\"name\" in location) {\n const response = await this._geocode(location, run.signal);\n return pick(response, [\"latitude\", \"longitude\"]);\n }\n return location;\n };\n\n function validateAndSetDates(\n startDateStr: string,\n endDateStr?: string,\n ): { start: Date; end: Date } {\n const now = new Date();\n const start = startDateStr\n ? new Date(startDateStr)\n : new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\n\n if (endDateStr) {\n const end = new Date(endDateStr);\n if (end < start) {\n throw new ToolInputValidationError(\n `The 'end_date' (${endDateStr}) has to occur on or after the 'start_date' (${startDateStr}).`,\n );\n }\n return { start: start, end: end };\n } else {\n // If endDate is undefined, set it to the start date\n return { start: start, end: new Date(start) };\n }\n }\n\n const { start, end } = validateAndSetDates(startDate, endDate);\n\n const toDateString = (date: Date) => date.toISOString().split(\"T\")[0];\n\n return createURLParams({\n ...pickBy(input, (v) => !isNullish(v) && v !== \"\"),\n ...(await extractLocation()),\n start_date: toDateString(start),\n end_date: toDateString(end),\n current: [\"temperature_2m\", \"rain\", \"relative_humidity_2m\", \"wind_speed_10m\"],\n daily: [\"temperature_2m_max\", \"temperature_2m_min\", \"rain_sum\"],\n hourly: [\"temperature_2m\", \"relative_humidity_2m\", \"rain\"],\n timezone: \"UTC\",\n });\n };\n\n const params = await prepareParams();\n const response = await fetch(`https://api.open-meteo.com/v1/forecast?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new ToolError(\"Request to OpenMeteo API has failed!\", [\n new Error(await response.text()),\n ]);\n }\n\n let data: OpenMeteoToolResponse = await response.json();\n\n if (this.options?.responseFilter?.excludedKeys) {\n data = omit(data, this.options.responseFilter.excludedKeys);\n }\n\n return new OpenMeteoToolOutput(data);\n }\n\n @Cache()\n protected async _geocode(location: LocationSearch, signal: AbortSignal) {\n const { apiKey } = this.options;\n\n const params = createURLParams({\n name: location.name,\n language: location.language,\n country: location.country,\n format: \"json\",\n count: 1,\n });\n const response = await fetch(`https://geocoding-api.open-meteo.com/v1/search?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal,\n });\n if (!response.ok) {\n throw new ToolError(`Failed to GeoCode provided location (${location.name}).`, [\n new Error(await response.text()),\n ]);\n }\n\n const { results } = await response.json();\n if (!results || results.length === 0) {\n throw new ToolError(`Location '${location.name}' was not found.`);\n }\n return results[0];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/weather/openMeteo.ts"],"names":["OpenMeteoToolOutput","JSONToolOutput","OpenMeteoTool","Tool","name","description","inputSchema","z","object","location","union","string","min","country","optional","language","default","strip","latitude","coerce","number","longitude","start_date","date","describe","end_date","temperature_unit","enum","emitter","Emitter","root","child","namespace","creator","register","options","responseFilter","excludedKeys","preprocessInput","rawInput","fixDate","key","value","getProp","setProp","substring","_run","startDate","endDate","input","_options","run","apiKey","prepareParams","extractLocation","response","_geocode","signal","pick","validateAndSetDates","startDateStr","endDateStr","now","Date","start","UTC","getFullYear","getMonth","getDate","end","ToolInputValidationError","toDateString","toISOString","split","createURLParams","pickBy","v","isNullish","current","daily","hourly","timezone","params","fetch","headers","Authorization","ok","ToolError","Error","text","data","json","omit","format","count","results","length"],"mappings":"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","file":"openMeteo.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { isNullish, omit, pick, pickBy } from \"remeda\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ResponseFilter {\n excludedKeys: (keyof OpenMeteoToolResponse)[];\n}\n\ninterface ToolOptions extends BaseToolOptions {\n apiKey?: string;\n responseFilter?: ResponseFilter;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\ninterface Location {\n latitude: number;\n longitude: number;\n}\n\ninterface LocationSearch {\n name: string;\n country?: string;\n language?: string;\n}\n\nexport interface OpenMeteoToolResponse {\n latitude?: number;\n longitude?: number;\n generationtime_ms?: number;\n utc_offset_seconds?: number;\n timezone?: string;\n timezone_abbreviation?: string;\n elevation?: number;\n current_units?: Record<string, string>;\n current?: Record<string, string>;\n hourly_units?: Record<string, string>;\n hourly?: Record<string, any[]>;\n daily_units?: Record<string, string>;\n daily?: Record<string, any[]>;\n}\n\nexport class OpenMeteoToolOutput extends JSONToolOutput<OpenMeteoToolResponse> {}\n\nexport class OpenMeteoTool extends Tool<OpenMeteoToolOutput, ToolOptions, ToolRunOptions> {\n name = \"OpenMeteo\";\n description = `Retrieve current, past, or future weather forecasts for a location.`;\n\n inputSchema() {\n return z\n .object({\n location: z.union([\n z\n .object({\n name: z.string().min(1),\n country: z.string().optional(),\n language: z.string().default(\"English\"),\n })\n .strip(),\n z\n .object({\n latitude: z.coerce.number(),\n longitude: z.coerce.number(),\n })\n .strip(),\n ]),\n start_date: z\n .string()\n .date()\n .describe(\"Start date for the weather forecast in the format YYYY-MM-DD (UTC)\"),\n end_date: z\n .string()\n .date()\n .describe(\"End date for the weather forecast in the format YYYY-MM-DD (UTC)\")\n .optional(),\n temperature_unit: z.enum([\"celsius\", \"fahrenheit\"]).default(\"celsius\"),\n })\n .strip();\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, OpenMeteoToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"weather\", \"openMeteo\"],\n creator: this,\n });\n\n static {\n this.register();\n }\n\n public constructor(options: Partial<ToolOptions> = {}) {\n super({\n ...options,\n responseFilter: options?.responseFilter ?? {\n excludedKeys: [\n \"latitude\",\n \"longitude\",\n \"generationtime_ms\",\n \"utc_offset_seconds\",\n \"timezone\",\n \"timezone_abbreviation\",\n \"elevation\",\n \"hourly\",\n \"hourly_units\",\n ],\n },\n });\n }\n\n protected preprocessInput(rawInput: unknown) {\n super.preprocessInput(rawInput);\n\n const fixDate = (key: keyof ToolInput<this>) => {\n const value = getProp(rawInput, [key]);\n if (value) {\n setProp(rawInput, [key], value.substring(0, 10));\n }\n };\n\n fixDate(\"start_date\");\n fixDate(\"end_date\");\n }\n\n protected async _run(\n { location, start_date: startDate, end_date: endDate, ...input }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const { apiKey } = this.options;\n\n const prepareParams = async () => {\n const extractLocation = async (): Promise<Location> => {\n if (\"name\" in location) {\n const response = await this._geocode(location, run.signal);\n return pick(response, [\"latitude\", \"longitude\"]) as Location;\n }\n return location;\n };\n\n function validateAndSetDates(\n startDateStr: string,\n endDateStr?: string,\n ): { start: Date; end: Date } {\n const now = new Date();\n const start = startDateStr\n ? new Date(startDateStr)\n : new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\n\n if (endDateStr) {\n const end = new Date(endDateStr);\n if (end < start) {\n throw new ToolInputValidationError(\n `The 'end_date' (${endDateStr}) has to occur on or after the 'start_date' (${startDateStr}).`,\n );\n }\n return { start: start, end: end };\n } else {\n // If endDate is undefined, set it to the start date\n return { start: start, end: new Date(start) };\n }\n }\n\n const { start, end } = validateAndSetDates(startDate, endDate);\n\n const toDateString = (date: Date) => date.toISOString().split(\"T\")[0];\n\n return createURLParams({\n ...pickBy(input, (v) => !isNullish(v) && v !== \"\"),\n ...(await extractLocation()),\n start_date: toDateString(start),\n end_date: toDateString(end),\n current: [\"temperature_2m\", \"rain\", \"relative_humidity_2m\", \"wind_speed_10m\"],\n daily: [\"temperature_2m_max\", \"temperature_2m_min\", \"rain_sum\"],\n hourly: [\"temperature_2m\", \"relative_humidity_2m\", \"rain\"],\n timezone: \"UTC\",\n });\n };\n\n const params = await prepareParams();\n const response = await fetch(`https://api.open-meteo.com/v1/forecast?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new ToolError(\"Request to OpenMeteo API has failed!\", [\n new Error(await response.text()),\n ]);\n }\n\n let data: OpenMeteoToolResponse = await response.json();\n\n if (this.options?.responseFilter?.excludedKeys) {\n data = omit(data, this.options.responseFilter.excludedKeys);\n }\n\n return new OpenMeteoToolOutput(data);\n }\n\n @Cache()\n protected async _geocode(location: LocationSearch, signal: AbortSignal) {\n const { apiKey } = this.options;\n\n const params = createURLParams({\n name: location.name,\n language: location.language,\n country: location.country,\n format: \"json\",\n count: 1,\n });\n const response = await fetch(`https://geocoding-api.open-meteo.com/v1/search?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal,\n });\n if (!response.ok) {\n throw new ToolError(`Failed to GeoCode provided location (${location.name}).`, [\n new Error(await response.text()),\n ]);\n }\n\n const { results } = await response.json();\n if (!results || results.length === 0) {\n throw new ToolError(`Location '${location.name}' was not found.`);\n }\n return results[0];\n }\n}\n"]}
|
|
@@ -10,7 +10,7 @@ import 'promise-based-task';
|
|
|
10
10
|
import '../../cache/base.cjs';
|
|
11
11
|
import '../../internals/helpers/schema.cjs';
|
|
12
12
|
import 'zod-to-json-schema';
|
|
13
|
-
import '../../emitter-
|
|
13
|
+
import '../../emitter-CGKd_-kK.cjs';
|
|
14
14
|
import '../../internals/helpers/promise.cjs';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -10,7 +10,7 @@ import 'promise-based-task';
|
|
|
10
10
|
import '../../cache/base.js';
|
|
11
11
|
import '../../internals/helpers/schema.js';
|
|
12
12
|
import 'zod-to-json-schema';
|
|
13
|
-
import '../../emitter-
|
|
13
|
+
import '../../emitter-CN7I4uSV.js';
|
|
14
14
|
import '../../internals/helpers/promise.js';
|
|
15
15
|
|
|
16
16
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/weather/openMeteo.ts"],"names":["OpenMeteoToolOutput","JSONToolOutput","OpenMeteoTool","Tool","name","description","inputSchema","z","object","location","union","string","min","country","optional","language","default","strip","latitude","coerce","number","longitude","start_date","date","describe","end_date","temperature_unit","enum","emitter","Emitter","root","child","namespace","creator","register","options","responseFilter","excludedKeys","preprocessInput","rawInput","fixDate","key","value","getProp","setProp","substring","_run","startDate","endDate","input","_options","run","apiKey","prepareParams","extractLocation","response","_geocode","signal","pick","validateAndSetDates","startDateStr","endDateStr","now","Date","start","UTC","getFullYear","getMonth","getDate","end","ToolInputValidationError","toDateString","toISOString","split","createURLParams","pickBy","v","isNullish","current","daily","hourly","timezone","params","fetch","headers","Authorization","ok","ToolError","Error","text","data","json","omit","format","count","results","length"],"mappings":"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","file":"openMeteo.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { isNullish, omit, pick, pickBy } from \"remeda\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ResponseFilter {\n excludedKeys: (keyof OpenMeteoToolResponse)[];\n}\n\ninterface ToolOptions extends BaseToolOptions {\n apiKey?: string;\n responseFilter?: ResponseFilter;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\ninterface Location {\n latitude: number;\n longitude: number;\n}\n\ninterface LocationSearch {\n name: string;\n country?: string;\n language?: string;\n}\n\nexport interface OpenMeteoToolResponse {\n latitude?: number;\n longitude?: number;\n generationtime_ms?: number;\n utc_offset_seconds?: number;\n timezone?: string;\n timezone_abbreviation?: string;\n elevation?: number;\n current_units?: Record<string, string>;\n current?: Record<string, string>;\n hourly_units?: Record<string, string>;\n hourly?: Record<string, any[]>;\n daily_units?: Record<string, string>;\n daily?: Record<string, any[]>;\n}\n\nexport class OpenMeteoToolOutput extends JSONToolOutput<OpenMeteoToolResponse> {}\n\nexport class OpenMeteoTool extends Tool<OpenMeteoToolOutput, ToolOptions, ToolRunOptions> {\n name = \"OpenMeteo\";\n description = `Retrieve current, past, or future weather forecasts for a location.`;\n\n inputSchema() {\n return z\n .object({\n location: z.union([\n z\n .object({\n name: z.string().min(1),\n country: z.string().optional(),\n language: z.string().default(\"English\"),\n })\n .strip(),\n z\n .object({\n latitude: z.coerce.number(),\n longitude: z.coerce.number(),\n })\n .strip(),\n ]),\n start_date: z\n .string()\n .date()\n .describe(\"Start date for the weather forecast in the format YYYY-MM-DD (UTC)\"),\n end_date: z\n .string()\n .date()\n .describe(\"End date for the weather forecast in the format YYYY-MM-DD (UTC)\")\n .optional(),\n temperature_unit: z.enum([\"celsius\", \"fahrenheit\"]).default(\"celsius\"),\n })\n .strip();\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, OpenMeteoToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"weather\", \"openMeteo\"],\n creator: this,\n });\n\n static {\n this.register();\n }\n\n public constructor(options: Partial<ToolOptions> = {}) {\n super({\n ...options,\n responseFilter: options?.responseFilter ?? {\n excludedKeys: [\n \"latitude\",\n \"longitude\",\n \"generationtime_ms\",\n \"utc_offset_seconds\",\n \"timezone\",\n \"timezone_abbreviation\",\n \"elevation\",\n \"hourly\",\n \"hourly_units\",\n ],\n },\n });\n }\n\n protected preprocessInput(rawInput: unknown) {\n super.preprocessInput(rawInput);\n\n const fixDate = (key: keyof ToolInput<this>) => {\n const value = getProp(rawInput, [key]);\n if (value) {\n setProp(rawInput, [key], value.substring(0, 10));\n }\n };\n\n fixDate(\"start_date\");\n fixDate(\"end_date\");\n }\n\n protected async _run(\n { location, start_date: startDate, end_date: endDate, ...input }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const { apiKey } = this.options;\n\n const prepareParams = async () => {\n const extractLocation = async (): Promise<Location> => {\n if (\"name\" in location) {\n const response = await this._geocode(location, run.signal);\n return pick(response, [\"latitude\", \"longitude\"]);\n }\n return location;\n };\n\n function validateAndSetDates(\n startDateStr: string,\n endDateStr?: string,\n ): { start: Date; end: Date } {\n const now = new Date();\n const start = startDateStr\n ? new Date(startDateStr)\n : new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\n\n if (endDateStr) {\n const end = new Date(endDateStr);\n if (end < start) {\n throw new ToolInputValidationError(\n `The 'end_date' (${endDateStr}) has to occur on or after the 'start_date' (${startDateStr}).`,\n );\n }\n return { start: start, end: end };\n } else {\n // If endDate is undefined, set it to the start date\n return { start: start, end: new Date(start) };\n }\n }\n\n const { start, end } = validateAndSetDates(startDate, endDate);\n\n const toDateString = (date: Date) => date.toISOString().split(\"T\")[0];\n\n return createURLParams({\n ...pickBy(input, (v) => !isNullish(v) && v !== \"\"),\n ...(await extractLocation()),\n start_date: toDateString(start),\n end_date: toDateString(end),\n current: [\"temperature_2m\", \"rain\", \"relative_humidity_2m\", \"wind_speed_10m\"],\n daily: [\"temperature_2m_max\", \"temperature_2m_min\", \"rain_sum\"],\n hourly: [\"temperature_2m\", \"relative_humidity_2m\", \"rain\"],\n timezone: \"UTC\",\n });\n };\n\n const params = await prepareParams();\n const response = await fetch(`https://api.open-meteo.com/v1/forecast?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new ToolError(\"Request to OpenMeteo API has failed!\", [\n new Error(await response.text()),\n ]);\n }\n\n let data: OpenMeteoToolResponse = await response.json();\n\n if (this.options?.responseFilter?.excludedKeys) {\n data = omit(data, this.options.responseFilter.excludedKeys);\n }\n\n return new OpenMeteoToolOutput(data);\n }\n\n @Cache()\n protected async _geocode(location: LocationSearch, signal: AbortSignal) {\n const { apiKey } = this.options;\n\n const params = createURLParams({\n name: location.name,\n language: location.language,\n country: location.country,\n format: \"json\",\n count: 1,\n });\n const response = await fetch(`https://geocoding-api.open-meteo.com/v1/search?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal,\n });\n if (!response.ok) {\n throw new ToolError(`Failed to GeoCode provided location (${location.name}).`, [\n new Error(await response.text()),\n ]);\n }\n\n const { results } = await response.json();\n if (!results || results.length === 0) {\n throw new ToolError(`Location '${location.name}' was not found.`);\n }\n return results[0];\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/weather/openMeteo.ts"],"names":["OpenMeteoToolOutput","JSONToolOutput","OpenMeteoTool","Tool","name","description","inputSchema","z","object","location","union","string","min","country","optional","language","default","strip","latitude","coerce","number","longitude","start_date","date","describe","end_date","temperature_unit","enum","emitter","Emitter","root","child","namespace","creator","register","options","responseFilter","excludedKeys","preprocessInput","rawInput","fixDate","key","value","getProp","setProp","substring","_run","startDate","endDate","input","_options","run","apiKey","prepareParams","extractLocation","response","_geocode","signal","pick","validateAndSetDates","startDateStr","endDateStr","now","Date","start","UTC","getFullYear","getMonth","getDate","end","ToolInputValidationError","toDateString","toISOString","split","createURLParams","pickBy","v","isNullish","current","daily","hourly","timezone","params","fetch","headers","Authorization","ok","ToolError","Error","text","data","json","omit","format","count","results","length"],"mappings":";;;;;;;;;;;;;;;;;;;;;AA6DO,MAAMA,4BAA4BC,cAAAA,CAAAA;AAAAA,EAAAA;;;AAAuC;AAEzE,MAAMC,sBAAsBC,IAAAA,CAAAA;AAAAA,EAAAA;;;EACjCC,IAAAA,GAAO,WAAA;EACPC,WAAAA,GAAc,CAAA,mEAAA,CAAA;EAEdC,WAAAA,GAAc;AACZ,IAAA,OAAOC,EACJC,MAAAA,CAAO;AACNC,MAAAA,QAAAA,EAAUF,EAAEG,KAAAA,CAAM;AAChBH,QAAAA,CAAAA,CACGC,MAAAA,CAAO;AACNJ,UAAAA,IAAAA,EAAMG,CAAAA,CAAEI,MAAAA,EAAM,CAAGC,GAAAA,CAAI,CAAA,CAAA;UACrBC,OAAAA,EAASN,CAAAA,CAAEI,MAAAA,EAAM,CAAGG,QAAAA,EAAQ;AAC5BC,UAAAA,QAAAA,EAAUR,CAAAA,CAAEI,MAAAA,EAAM,CAAGK,OAAAA,CAAQ,SAAA;AAC/B,SAAA,EACCC,KAAAA,EAAK;AACRV,QAAAA,CAAAA,CACGC,MAAAA,CAAO;UACNU,QAAAA,EAAUX,CAAAA,CAAEY,OAAOC,MAAAA,EAAM;UACzBC,SAAAA,EAAWd,CAAAA,CAAEY,OAAOC,MAAAA;AACtB,SAAA,EACCH,KAAAA;AACJ,OAAA,CAAA;AACDK,MAAAA,UAAAA,EAAYf,EACTI,MAAAA,EAAM,CACNY,IAAAA,EAAI,CACJC,SAAS,oEAAA,CAAA;MACZC,QAAAA,EAAUlB,CAAAA,CACPI,QAAM,CACNY,IAAAA,GACAC,QAAAA,CAAS,kEAAA,EACTV,QAAAA,EAAQ;AACXY,MAAAA,gBAAAA,EAAkBnB,EAAEoB,IAAAA,CAAK;AAAC,QAAA,SAAA;AAAW,QAAA;AAAa,OAAA,CAAA,CAAEX,QAAQ,SAAA;AAC9D,KAAA,EACCC,KAAAA,EAAK;AACV;EAEgBW,OAAAA,GAA6DC,OAAAA,CAAQC,KAAKC,KAAAA,CAAM;IAC9FC,SAAAA,EAAW;AAAC,MAAA,MAAA;AAAQ,MAAA,SAAA;AAAW,MAAA;;IAC/BC,OAAAA,EAAS;GACX,CAAA;EAEA;AACE,IAAA,IAAA,CAAKC,QAAAA,EAAQ;AACf;EAEA,WAAA,CAAmBC,OAAAA,GAAgC,EAAC,EAAG;AACrD,IAAA,KAAA,CAAM;MACJ,GAAGA,OAAAA;AACHC,MAAAA,cAAAA,EAAgBD,SAASC,cAAAA,IAAkB;QACzCC,YAAAA,EAAc;AACZ,UAAA,UAAA;AACA,UAAA,WAAA;AACA,UAAA,mBAAA;AACA,UAAA,oBAAA;AACA,UAAA,UAAA;AACA,UAAA,uBAAA;AACA,UAAA,WAAA;AACA,UAAA,QAAA;AACA,UAAA;;AAEJ;KACF,CAAA;AACF;AAEUC,EAAAA,eAAAA,CAAgBC,QAAAA,EAAmB;AAC3C,IAAA,KAAA,CAAMD,gBAAgBC,QAAAA,CAAAA;AAEtB,IAAA,MAAMC,OAAAA,2BAAWC,GAAAA,KAAAA;AACf,MAAA,MAAMC,KAAAA,GAAQC,QAAQJ,QAAAA,EAAU;AAACE,QAAAA;AAAI,OAAA,CAAA;AACrC,MAAA,IAAIC,KAAAA,EAAO;AACTE,QAAAA,OAAAA,CAAQL,QAAAA,EAAU;AAACE,UAAAA;WAAMC,KAAAA,CAAMG,SAAAA,CAAU,CAAA,EAAG,EAAA,CAAA,CAAA;AAC9C;KACF,EALgB,SAAA,CAAA;AAOhBL,IAAAA,OAAAA,CAAQ,YAAA,CAAA;AACRA,IAAAA,OAAAA,CAAQ,UAAA,CAAA;AACV;EAEA,MAAgBM,IAAAA,CACd,EAAErC,QAAAA,EAAUa,UAAAA,EAAYyB,SAAAA,EAAWtB,QAAAA,EAAUuB,OAAAA,EAAS,GAAGC,KAAAA,EAAAA,EACzDC,QAAAA,EACAC,GAAAA,EACA;AACA,IAAA,MAAM,EAAEC,MAAAA,EAAM,GAAK,IAAA,CAAKjB,OAAAA;AAExB,IAAA,MAAMkB,gCAAgB,MAAA,CAAA,YAAA;AACpB,MAAA,MAAMC,kCAAkB,MAAA,CAAA,YAAA;AACtB,QAAA,IAAI,UAAU7C,QAAAA,EAAU;AACtB,UAAA,MAAM8C,YAAW,MAAM,IAAA,CAAKC,QAAAA,CAAS/C,QAAAA,EAAU0C,IAAIM,MAAM,CAAA;AACzD,UAAA,OAAOC,KAAKH,SAAAA,EAAU;AAAC,YAAA,UAAA;AAAY,YAAA;AAAY,WAAA,CAAA;AACjD;AACA,QAAA,OAAO9C,QAAAA;OACT,EANwB,iBAAA,CAAA;AAQxB,MAAA,SAASkD,mBAAAA,CACPC,cACAC,UAAAA,EAAmB;AAEnB,QAAA,MAAMC,GAAAA,uBAAUC,IAAAA,EAAAA;AAChB,QAAA,MAAMC,SAAQJ,YAAAA,GACV,IAAIG,KAAKH,YAAAA,CAAAA,GACT,IAAIG,IAAAA,CAAKA,IAAAA,CAAKE,IAAIH,GAAAA,CAAII,WAAAA,IAAeJ,GAAAA,CAAIK,QAAAA,IAAYL,GAAAA,CAAIM,OAAAA,EAAO,CAAA,CAAA;AAEpE,QAAA,IAAIP,UAAAA,EAAY;AACd,UAAA,MAAMQ,IAAAA,GAAM,IAAIN,IAAAA,CAAKF,UAAAA,CAAAA;AACrB,UAAA,IAAIQ,OAAML,MAAAA,EAAO;AACf,YAAA,MAAM,IAAIM,wBAAAA,CACR,CAAA,gBAAA,EAAmBT,UAAAA,CAAAA,6CAAAA,EAA0DD,YAAAA,CAAAA,EAAAA,CAAgB,CAAA;AAEjG;AACA,UAAA,OAAO;YAAEI,KAAAA,EAAOA,MAAAA;YAAOK,GAAAA,EAAKA;AAAI,WAAA;SAClC,MAAO;AAEL,UAAA,OAAO;YAAEL,KAAAA,EAAOA,MAAAA;YAAOK,GAAAA,EAAK,IAAIN,KAAKC,MAAAA;AAAO,WAAA;AAC9C;AACF;AArBSL,MAAAA,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA;AAuBT,MAAA,MAAM,EAAEK,KAAAA,EAAOK,GAAAA,EAAG,GAAKV,mBAAAA,CAAoBZ,WAAWC,OAAAA,CAAAA;AAEtD,MAAA,MAAMuB,YAAAA,mBAAe,MAAA,CAAA,CAAChD,IAAAA,KAAeA,IAAAA,CAAKiD,WAAAA,GAAcC,KAAAA,CAAM,GAAA,CAAA,CAAK,CAAA,CAAA,EAA9C,cAAA,CAAA;AAErB,MAAA,OAAOC,eAAAA,CAAgB;QACrB,GAAGC,MAAAA,CAAO1B,OAAO,CAAC2B,CAAAA,KAAM,CAACC,SAAAA,CAAUD,CAAAA,CAAAA,IAAMA,CAAAA,KAAM,EAAA,CAAA;AAC/C,QAAA,GAAI,MAAMtB,eAAAA,EAAAA;AACVhC,QAAAA,UAAAA,EAAYiD,aAAaP,KAAAA,CAAAA;AACzBvC,QAAAA,QAAAA,EAAU8C,aAAaF,GAAAA,CAAAA;QACvBS,OAAAA,EAAS;AAAC,UAAA,gBAAA;AAAkB,UAAA,MAAA;AAAQ,UAAA,sBAAA;AAAwB,UAAA;;QAC5DC,KAAAA,EAAO;AAAC,UAAA,oBAAA;AAAsB,UAAA,oBAAA;AAAsB,UAAA;;QACpDC,MAAAA,EAAQ;AAAC,UAAA,gBAAA;AAAkB,UAAA,sBAAA;AAAwB,UAAA;;QACnDC,QAAAA,EAAU;OACZ,CAAA;KACF,EA9CsB,eAAA,CAAA;AAgDtB,IAAA,MAAMC,MAAAA,GAAS,MAAM7B,aAAAA,EAAAA;AACrB,IAAA,MAAME,QAAAA,GAAW,MAAM4B,KAAAA,CAAM,CAAA,uCAAA,EAA0CD,MAAAA,CAAAA,CAAAA,EAAU;MAC/EE,OAAAA,EAAS;AACP,QAAA,GAAIhC,MAAAA,IAAU;AACZiC,UAAAA,aAAAA,EAAe,UAAUjC,MAAAA,CAAAA;AAC3B;AACF,OAAA;AACAK,MAAAA,MAAAA,EAAQN,GAAAA,CAAIM;KACd,CAAA;AAEA,IAAA,IAAI,CAACF,SAAS+B,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,UAAU,sCAAA,EAAwC;AAC1D,QAAA,IAAIC,KAAAA,CAAM,MAAMjC,QAAAA,CAASkC,IAAAA,EAAI;AAC9B,OAAA,CAAA;AACH;AAEA,IAAA,IAAIC,IAAAA,GAA8B,MAAMnC,QAAAA,CAASoC,IAAAA,EAAI;AAErD,IAAA,IAAI,IAAA,CAAKxD,OAAAA,EAASC,cAAAA,EAAgBC,YAAAA,EAAc;AAC9CqD,MAAAA,IAAAA,GAAOE,IAAAA,CAAKF,IAAAA,EAAM,IAAA,CAAKvD,OAAAA,CAAQC,eAAeC,YAAY,CAAA;AAC5D;AAEA,IAAA,OAAO,IAAIrC,oBAAoB0F,IAAAA,CAAAA;AACjC;EAEA,MACgBlC,QAAAA,CAAS/C,UAA0BgD,MAAAA,EAAqB;AACtE,IAAA,MAAM,EAAEL,MAAAA,EAAM,GAAK,IAAA,CAAKjB,OAAAA;AAExB,IAAA,MAAM+C,SAASR,eAAAA,CAAgB;AAC7BtE,MAAAA,IAAAA,EAAMK,QAAAA,CAASL,IAAAA;AACfW,MAAAA,QAAAA,EAAUN,QAAAA,CAASM,QAAAA;AACnBF,MAAAA,OAAAA,EAASJ,QAAAA,CAASI,OAAAA;MAClBgF,MAAAA,EAAQ,MAAA;MACRC,KAAAA,EAAO;KACT,CAAA;AACA,IAAA,MAAMvC,QAAAA,GAAW,MAAM4B,KAAAA,CAAM,CAAA,+CAAA,EAAkDD,MAAAA,CAAAA,CAAAA,EAAU;MACvFE,OAAAA,EAAS;AACP,QAAA,GAAIhC,MAAAA,IAAU;AACZiC,UAAAA,aAAAA,EAAe,UAAUjC,MAAAA,CAAAA;AAC3B;AACF,OAAA;AACAK,MAAAA;KACF,CAAA;AACA,IAAA,IAAI,CAACF,SAAS+B,EAAAA,EAAI;AAChB,MAAA,MAAM,IAAIC,SAAAA,CAAU,CAAA,qCAAA,EAAwC9E,QAAAA,CAASL,IAAI,CAAA,EAAA,CAAA,EAAM;AAC7E,QAAA,IAAIoF,KAAAA,CAAM,MAAMjC,QAAAA,CAASkC,IAAAA,EAAI;AAC9B,OAAA,CAAA;AACH;AAEA,IAAA,MAAM,EAAEM,OAAAA,EAAO,GAAK,MAAMxC,SAASoC,IAAAA,EAAI;AACvC,IAAA,IAAI,CAACI,OAAAA,IAAWA,OAAAA,CAAQC,MAAAA,KAAW,CAAA,EAAG;AACpC,MAAA,MAAM,IAAIT,SAAAA,CAAU,CAAA,UAAA,EAAa9E,QAAAA,CAASL,IAAI,CAAA,gBAAA,CAAkB,CAAA;AAClE;AACA,IAAA,OAAO2F,QAAQ,CAAA,CAAA;AACjB;AACF","file":"openMeteo.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolError,\n ToolInput,\n ToolInputValidationError,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { createURLParams } from \"@/internals/fetcher.js\";\nimport { isNullish, omit, pick, pickBy } from \"remeda\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { RunContext } from \"@/context.js\";\nimport { getProp, setProp } from \"@/internals/helpers/object.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\nexport interface ResponseFilter {\n excludedKeys: (keyof OpenMeteoToolResponse)[];\n}\n\ninterface ToolOptions extends BaseToolOptions {\n apiKey?: string;\n responseFilter?: ResponseFilter;\n}\n\ntype ToolRunOptions = BaseToolRunOptions;\n\ninterface Location {\n latitude: number;\n longitude: number;\n}\n\ninterface LocationSearch {\n name: string;\n country?: string;\n language?: string;\n}\n\nexport interface OpenMeteoToolResponse {\n latitude?: number;\n longitude?: number;\n generationtime_ms?: number;\n utc_offset_seconds?: number;\n timezone?: string;\n timezone_abbreviation?: string;\n elevation?: number;\n current_units?: Record<string, string>;\n current?: Record<string, string>;\n hourly_units?: Record<string, string>;\n hourly?: Record<string, any[]>;\n daily_units?: Record<string, string>;\n daily?: Record<string, any[]>;\n}\n\nexport class OpenMeteoToolOutput extends JSONToolOutput<OpenMeteoToolResponse> {}\n\nexport class OpenMeteoTool extends Tool<OpenMeteoToolOutput, ToolOptions, ToolRunOptions> {\n name = \"OpenMeteo\";\n description = `Retrieve current, past, or future weather forecasts for a location.`;\n\n inputSchema() {\n return z\n .object({\n location: z.union([\n z\n .object({\n name: z.string().min(1),\n country: z.string().optional(),\n language: z.string().default(\"English\"),\n })\n .strip(),\n z\n .object({\n latitude: z.coerce.number(),\n longitude: z.coerce.number(),\n })\n .strip(),\n ]),\n start_date: z\n .string()\n .date()\n .describe(\"Start date for the weather forecast in the format YYYY-MM-DD (UTC)\"),\n end_date: z\n .string()\n .date()\n .describe(\"End date for the weather forecast in the format YYYY-MM-DD (UTC)\")\n .optional(),\n temperature_unit: z.enum([\"celsius\", \"fahrenheit\"]).default(\"celsius\"),\n })\n .strip();\n }\n\n public readonly emitter: ToolEmitter<ToolInput<this>, OpenMeteoToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"weather\", \"openMeteo\"],\n creator: this,\n });\n\n static {\n this.register();\n }\n\n public constructor(options: Partial<ToolOptions> = {}) {\n super({\n ...options,\n responseFilter: options?.responseFilter ?? {\n excludedKeys: [\n \"latitude\",\n \"longitude\",\n \"generationtime_ms\",\n \"utc_offset_seconds\",\n \"timezone\",\n \"timezone_abbreviation\",\n \"elevation\",\n \"hourly\",\n \"hourly_units\",\n ],\n },\n });\n }\n\n protected preprocessInput(rawInput: unknown) {\n super.preprocessInput(rawInput);\n\n const fixDate = (key: keyof ToolInput<this>) => {\n const value = getProp(rawInput, [key]);\n if (value) {\n setProp(rawInput, [key], value.substring(0, 10));\n }\n };\n\n fixDate(\"start_date\");\n fixDate(\"end_date\");\n }\n\n protected async _run(\n { location, start_date: startDate, end_date: endDate, ...input }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const { apiKey } = this.options;\n\n const prepareParams = async () => {\n const extractLocation = async (): Promise<Location> => {\n if (\"name\" in location) {\n const response = await this._geocode(location, run.signal);\n return pick(response, [\"latitude\", \"longitude\"]) as Location;\n }\n return location;\n };\n\n function validateAndSetDates(\n startDateStr: string,\n endDateStr?: string,\n ): { start: Date; end: Date } {\n const now = new Date();\n const start = startDateStr\n ? new Date(startDateStr)\n : new Date(Date.UTC(now.getFullYear(), now.getMonth(), now.getDate()));\n\n if (endDateStr) {\n const end = new Date(endDateStr);\n if (end < start) {\n throw new ToolInputValidationError(\n `The 'end_date' (${endDateStr}) has to occur on or after the 'start_date' (${startDateStr}).`,\n );\n }\n return { start: start, end: end };\n } else {\n // If endDate is undefined, set it to the start date\n return { start: start, end: new Date(start) };\n }\n }\n\n const { start, end } = validateAndSetDates(startDate, endDate);\n\n const toDateString = (date: Date) => date.toISOString().split(\"T\")[0];\n\n return createURLParams({\n ...pickBy(input, (v) => !isNullish(v) && v !== \"\"),\n ...(await extractLocation()),\n start_date: toDateString(start),\n end_date: toDateString(end),\n current: [\"temperature_2m\", \"rain\", \"relative_humidity_2m\", \"wind_speed_10m\"],\n daily: [\"temperature_2m_max\", \"temperature_2m_min\", \"rain_sum\"],\n hourly: [\"temperature_2m\", \"relative_humidity_2m\", \"rain\"],\n timezone: \"UTC\",\n });\n };\n\n const params = await prepareParams();\n const response = await fetch(`https://api.open-meteo.com/v1/forecast?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal: run.signal,\n });\n\n if (!response.ok) {\n throw new ToolError(\"Request to OpenMeteo API has failed!\", [\n new Error(await response.text()),\n ]);\n }\n\n let data: OpenMeteoToolResponse = await response.json();\n\n if (this.options?.responseFilter?.excludedKeys) {\n data = omit(data, this.options.responseFilter.excludedKeys);\n }\n\n return new OpenMeteoToolOutput(data);\n }\n\n @Cache()\n protected async _geocode(location: LocationSearch, signal: AbortSignal) {\n const { apiKey } = this.options;\n\n const params = createURLParams({\n name: location.name,\n language: location.language,\n country: location.country,\n format: \"json\",\n count: 1,\n });\n const response = await fetch(`https://geocoding-api.open-meteo.com/v1/search?${params}`, {\n headers: {\n ...(apiKey && {\n Authorization: `Bearer ${apiKey}`,\n }),\n },\n signal,\n });\n if (!response.ok) {\n throw new ToolError(`Failed to GeoCode provided location (${location.name}).`, [\n new Error(await response.text()),\n ]);\n }\n\n const { results } = await response.json();\n if (!results || results.length === 0) {\n throw new ToolError(`Location '${location.name}' was not found.`);\n }\n return results[0];\n }\n}\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/web/webCrawler.ts"],"names":["WebCrawlerToolOutput","JSONToolOutput","getTextContent","result","url","statusCode","statusText","contentType","content","join","defaultParser","response","text","headers","get","includes","stripHtml","WebCrawlerTool","Tool","name","description","inputSchema","z","object","string","describe","client","parser","emitter","Emitter","root","child","namespace","creator","options","fetch","_run","_options","run","redirect","request","signal","status","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/web/webCrawler.ts"],"names":["WebCrawlerToolOutput","JSONToolOutput","getTextContent","result","url","statusCode","statusText","contentType","content","join","defaultParser","response","text","headers","get","includes","stripHtml","WebCrawlerTool","Tool","name","description","inputSchema","z","object","string","describe","client","parser","emitter","Emitter","root","child","namespace","creator","options","fetch","_run","_options","run","redirect","request","signal","status","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"webCrawler.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { stripHtml } from \"string-strip-html\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface CrawlerOutput {\n url: string;\n statusCode: number;\n statusText: string;\n contentType: string;\n content: string;\n}\n\nexport class WebCrawlerToolOutput extends JSONToolOutput<CrawlerOutput> {\n @Cache()\n getTextContent(): string {\n return [\n `URL: ${this.result.url}`,\n `STATUS: ${this.result.statusCode} (${this.result.statusText})`,\n `CONTENT-TYPE: ${this.result.contentType}`,\n `CONTENT: ${this.result.content}`,\n ].join(\"\\n\");\n }\n}\n\nexport type HttpClient = (url: string, options?: RequestInit) => Promise<HttpClientResponse>;\ninterface HttpClientResponse {\n status: number;\n statusText: string;\n headers: Headers;\n text(): Promise<string>;\n}\n\ntype Parser = (response: HttpClientResponse) => Promise<string>;\ninterface WebsiteCrawlerToolOptions extends BaseToolOptions {\n client?: HttpClient;\n parser?: Parser;\n request?: RequestInit;\n}\n\nasync function defaultParser(response: HttpClientResponse) {\n const text = await response.text();\n if (text) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"text/html\")) {\n return stripHtml(text).result;\n }\n }\n return text || \"No Content\";\n}\n\nexport class WebCrawlerTool extends Tool<WebCrawlerToolOutput, WebsiteCrawlerToolOptions> {\n name = \"WebCrawler\";\n description = `Retrieves content of an arbitrary website.`;\n inputSchema() {\n return z.object({\n url: z.string().url().describe(\"Website URL\"),\n });\n }\n\n protected client: HttpClient;\n protected parser: Parser;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, WebCrawlerToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"webCrawler\"],\n creator: this,\n });\n\n constructor({ client, parser, ...options }: WebsiteCrawlerToolOptions = {}) {\n super(options);\n this.client = client ?? fetch;\n this.parser = parser ?? defaultParser;\n }\n\n protected async _run(\n { url }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const response = await this.client(url, {\n redirect: \"follow\",\n ...this.options.request,\n signal: run.signal,\n });\n\n const content = await this.parser(response);\n return new WebCrawlerToolOutput({\n url,\n statusCode: response.status,\n statusText: response.statusText,\n contentType: response.headers.get(\"content-type\") ?? \"unknown\",\n content,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n client: this.client,\n parser: this.parser,\n };\n }\n\n loadSnapshot({ client, parser, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n client: client ?? fetch,\n parser: parser ?? defaultParser,\n });\n }\n}\n"]}
|
|
@@ -3,7 +3,7 @@ import * as promise_based_task from 'promise-based-task';
|
|
|
3
3
|
import { JSONToolOutput, Tool, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.cjs';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { RunContext } from '../../context.cjs';
|
|
6
|
-
import { E as Emitter } from '../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../emitter-CGKd_-kK.cjs';
|
|
7
7
|
import '../../internals/serializable.cjs';
|
|
8
8
|
import '../../internals/types.cjs';
|
|
9
9
|
import '../../internals/helpers/guards.cjs';
|
|
@@ -3,7 +3,7 @@ import * as promise_based_task from 'promise-based-task';
|
|
|
3
3
|
import { JSONToolOutput, Tool, BaseToolOptions, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.js';
|
|
4
4
|
import { z } from 'zod';
|
|
5
5
|
import { RunContext } from '../../context.js';
|
|
6
|
-
import { E as Emitter } from '../../emitter-
|
|
6
|
+
import { E as Emitter } from '../../emitter-CN7I4uSV.js';
|
|
7
7
|
import '../../internals/serializable.js';
|
|
8
8
|
import '../../internals/types.js';
|
|
9
9
|
import '../../internals/helpers/guards.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../src/tools/web/webCrawler.ts"],"names":["WebCrawlerToolOutput","JSONToolOutput","getTextContent","result","url","statusCode","statusText","contentType","content","join","defaultParser","response","text","headers","get","includes","stripHtml","WebCrawlerTool","Tool","name","description","inputSchema","z","object","string","describe","client","parser","emitter","Emitter","root","child","namespace","creator","options","fetch","_run","_options","run","redirect","request","signal","status","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/web/webCrawler.ts"],"names":["WebCrawlerToolOutput","JSONToolOutput","getTextContent","result","url","statusCode","statusText","contentType","content","join","defaultParser","response","text","headers","get","includes","stripHtml","WebCrawlerTool","Tool","name","description","inputSchema","z","object","string","describe","client","parser","emitter","Emitter","root","child","namespace","creator","options","fetch","_run","_options","run","redirect","request","signal","status","createSnapshot","loadSnapshot","snapshot","Object","assign"],"mappings":"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","file":"webCrawler.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n JSONToolOutput,\n Tool,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { stripHtml } from \"string-strip-html\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ninterface CrawlerOutput {\n url: string;\n statusCode: number;\n statusText: string;\n contentType: string;\n content: string;\n}\n\nexport class WebCrawlerToolOutput extends JSONToolOutput<CrawlerOutput> {\n @Cache()\n getTextContent(): string {\n return [\n `URL: ${this.result.url}`,\n `STATUS: ${this.result.statusCode} (${this.result.statusText})`,\n `CONTENT-TYPE: ${this.result.contentType}`,\n `CONTENT: ${this.result.content}`,\n ].join(\"\\n\");\n }\n}\n\nexport type HttpClient = (url: string, options?: RequestInit) => Promise<HttpClientResponse>;\ninterface HttpClientResponse {\n status: number;\n statusText: string;\n headers: Headers;\n text(): Promise<string>;\n}\n\ntype Parser = (response: HttpClientResponse) => Promise<string>;\ninterface WebsiteCrawlerToolOptions extends BaseToolOptions {\n client?: HttpClient;\n parser?: Parser;\n request?: RequestInit;\n}\n\nasync function defaultParser(response: HttpClientResponse) {\n const text = await response.text();\n if (text) {\n const contentType = response.headers.get(\"content-type\") ?? \"\";\n if (contentType.includes(\"text/html\")) {\n return stripHtml(text).result;\n }\n }\n return text || \"No Content\";\n}\n\nexport class WebCrawlerTool extends Tool<WebCrawlerToolOutput, WebsiteCrawlerToolOptions> {\n name = \"WebCrawler\";\n description = `Retrieves content of an arbitrary website.`;\n inputSchema() {\n return z.object({\n url: z.string().url().describe(\"Website URL\"),\n });\n }\n\n protected client: HttpClient;\n protected parser: Parser;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, WebCrawlerToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"webCrawler\"],\n creator: this,\n });\n\n constructor({ client, parser, ...options }: WebsiteCrawlerToolOptions = {}) {\n super(options);\n this.client = client ?? fetch;\n this.parser = parser ?? defaultParser;\n }\n\n protected async _run(\n { url }: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const response = await this.client(url, {\n redirect: \"follow\",\n ...this.options.request,\n signal: run.signal,\n });\n\n const content = await this.parser(response);\n return new WebCrawlerToolOutput({\n url,\n statusCode: response.status,\n statusText: response.statusText,\n contentType: response.headers.get(\"content-type\") ?? \"unknown\",\n content,\n });\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n client: this.client,\n parser: this.parser,\n };\n }\n\n loadSnapshot({ client, parser, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, {\n client: client ?? fetch,\n parser: parser ?? defaultParser,\n });\n }\n}\n"]}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { BaseMemory } from './memory/base.js';
|
|
2
|
+
import { AssistantMessage } from './backend/message.js';
|
|
3
|
+
import { Tool, BaseToolRunOptions, StringToolOutput, AnyTool, ToolOutput } from './tools/base.js';
|
|
4
|
+
import { FrameworkError } from './errors.js';
|
|
5
|
+
import { PromptTemplate } from './template.js';
|
|
6
|
+
import { f as ChatModelUsage, c as ChatModelToolChoice, n as ChatModelOutput } from './chat-BbCYMAdE.js';
|
|
7
|
+
import { B as BaseAgentRunOptions } from './base-BurRTBA7.js';
|
|
8
|
+
import { ZodSchema, z } from 'zod';
|
|
9
|
+
import { ToolCallPart } from 'ai';
|
|
10
|
+
import { E as Emitter } from './emitter-CN7I4uSV.js';
|
|
11
|
+
import { RunContext } from './context.js';
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
15
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
interface ToolInvocationResult {
|
|
19
|
+
msg: ToolCallPart;
|
|
20
|
+
tool: AnyTool | null;
|
|
21
|
+
input: unknown;
|
|
22
|
+
output: ToolOutput;
|
|
23
|
+
error: FrameworkError | null;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Run a single tool with error handling
|
|
27
|
+
*/
|
|
28
|
+
declare function runTool(tools: AnyTool[], msg: ToolCallPart, context: Record<string, any>): Promise<ToolInvocationResult>;
|
|
29
|
+
/**
|
|
30
|
+
* Special tool for capturing final answers
|
|
31
|
+
*/
|
|
32
|
+
declare class FinalAnswerTool extends Tool {
|
|
33
|
+
readonly name = "final_answer";
|
|
34
|
+
readonly description = "Sends the final answer to the user";
|
|
35
|
+
instructions?: string;
|
|
36
|
+
customSchema: boolean;
|
|
37
|
+
readonly emitter: Emitter<any>;
|
|
38
|
+
protected expectedOutput: string | ZodSchema | null;
|
|
39
|
+
protected state: RequirementAgentRunState;
|
|
40
|
+
constructor(expectedOutput: string | ZodSchema | null, state: RequirementAgentRunState);
|
|
41
|
+
inputSchema(): ZodSchema;
|
|
42
|
+
_run(input: any, _options: BaseToolRunOptions, _ctx: RunContext<typeof this>): Promise<StringToolOutput>;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
/**
|
|
46
|
+
* Copyright 2025 © BeeAI a Series of LF Projects, LLC
|
|
47
|
+
* SPDX-License-Identifier: Apache-2.0
|
|
48
|
+
*/
|
|
49
|
+
|
|
50
|
+
declare const RequirementAgentSystemPromptInputSchema: z.ZodObject<{
|
|
51
|
+
role: z.ZodOptional<z.ZodString>;
|
|
52
|
+
instructions: z.ZodOptional<z.ZodString>;
|
|
53
|
+
notes: z.ZodOptional<z.ZodString>;
|
|
54
|
+
finalAnswerName: z.ZodString;
|
|
55
|
+
finalAnswerSchema: z.ZodOptional<z.ZodString>;
|
|
56
|
+
finalAnswerInstructions: z.ZodOptional<z.ZodString>;
|
|
57
|
+
tools: z.ZodArray<z.ZodObject<{
|
|
58
|
+
name: z.ZodString;
|
|
59
|
+
description: z.ZodString;
|
|
60
|
+
inputSchema: z.ZodString;
|
|
61
|
+
allowed: z.ZodString;
|
|
62
|
+
reason: z.ZodOptional<z.ZodString>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
name: string;
|
|
65
|
+
description: string;
|
|
66
|
+
inputSchema: string;
|
|
67
|
+
allowed: string;
|
|
68
|
+
reason?: string | undefined;
|
|
69
|
+
}, {
|
|
70
|
+
name: string;
|
|
71
|
+
description: string;
|
|
72
|
+
inputSchema: string;
|
|
73
|
+
allowed: string;
|
|
74
|
+
reason?: string | undefined;
|
|
75
|
+
}>, "many">;
|
|
76
|
+
}, "strip", z.ZodTypeAny, {
|
|
77
|
+
tools: {
|
|
78
|
+
name: string;
|
|
79
|
+
description: string;
|
|
80
|
+
inputSchema: string;
|
|
81
|
+
allowed: string;
|
|
82
|
+
reason?: string | undefined;
|
|
83
|
+
}[];
|
|
84
|
+
finalAnswerName: string;
|
|
85
|
+
role?: string | undefined;
|
|
86
|
+
instructions?: string | undefined;
|
|
87
|
+
notes?: string | undefined;
|
|
88
|
+
finalAnswerSchema?: string | undefined;
|
|
89
|
+
finalAnswerInstructions?: string | undefined;
|
|
90
|
+
}, {
|
|
91
|
+
tools: {
|
|
92
|
+
name: string;
|
|
93
|
+
description: string;
|
|
94
|
+
inputSchema: string;
|
|
95
|
+
allowed: string;
|
|
96
|
+
reason?: string | undefined;
|
|
97
|
+
}[];
|
|
98
|
+
finalAnswerName: string;
|
|
99
|
+
role?: string | undefined;
|
|
100
|
+
instructions?: string | undefined;
|
|
101
|
+
notes?: string | undefined;
|
|
102
|
+
finalAnswerSchema?: string | undefined;
|
|
103
|
+
finalAnswerInstructions?: string | undefined;
|
|
104
|
+
}>;
|
|
105
|
+
declare const RequirementAgentTaskPromptInputSchema: z.ZodObject<{
|
|
106
|
+
prompt: z.ZodString;
|
|
107
|
+
context: z.ZodOptional<z.ZodString>;
|
|
108
|
+
expectedOutput: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
prompt: string;
|
|
111
|
+
context?: string | undefined;
|
|
112
|
+
expectedOutput?: string | undefined;
|
|
113
|
+
}, {
|
|
114
|
+
prompt: string;
|
|
115
|
+
context?: string | undefined;
|
|
116
|
+
expectedOutput?: string | undefined;
|
|
117
|
+
}>;
|
|
118
|
+
declare const RequirementAgentToolErrorPromptInputSchema: z.ZodObject<{
|
|
119
|
+
reason: z.ZodString;
|
|
120
|
+
}, "strip", z.ZodTypeAny, {
|
|
121
|
+
reason: string;
|
|
122
|
+
}, {
|
|
123
|
+
reason: string;
|
|
124
|
+
}>;
|
|
125
|
+
declare const RequirementAgentToolNoResultPromptInputSchema: z.ZodObject<{
|
|
126
|
+
toolCall: z.ZodObject<{
|
|
127
|
+
tool: z.ZodOptional<z.ZodAny>;
|
|
128
|
+
input: z.ZodUnknown;
|
|
129
|
+
}, "strip", z.ZodTypeAny, {
|
|
130
|
+
input?: unknown;
|
|
131
|
+
tool?: any;
|
|
132
|
+
}, {
|
|
133
|
+
input?: unknown;
|
|
134
|
+
tool?: any;
|
|
135
|
+
}>;
|
|
136
|
+
}, "strip", z.ZodTypeAny, {
|
|
137
|
+
toolCall: {
|
|
138
|
+
input?: unknown;
|
|
139
|
+
tool?: any;
|
|
140
|
+
};
|
|
141
|
+
}, {
|
|
142
|
+
toolCall: {
|
|
143
|
+
input?: unknown;
|
|
144
|
+
tool?: any;
|
|
145
|
+
};
|
|
146
|
+
}>;
|
|
147
|
+
interface RequirementAgentTemplates {
|
|
148
|
+
system: PromptTemplate<typeof RequirementAgentSystemPromptInputSchema>;
|
|
149
|
+
task: PromptTemplate<typeof RequirementAgentTaskPromptInputSchema>;
|
|
150
|
+
toolError: PromptTemplate<typeof RequirementAgentToolErrorPromptInputSchema>;
|
|
151
|
+
toolNoResult: PromptTemplate<typeof RequirementAgentToolNoResultPromptInputSchema>;
|
|
152
|
+
}
|
|
153
|
+
interface RequirementAgentRunStateStep {
|
|
154
|
+
id: string;
|
|
155
|
+
iteration: number;
|
|
156
|
+
tool: AnyTool | null;
|
|
157
|
+
input: unknown;
|
|
158
|
+
output: ToolOutput;
|
|
159
|
+
error: FrameworkError | null;
|
|
160
|
+
}
|
|
161
|
+
interface RequirementAgentRunState {
|
|
162
|
+
answer: AssistantMessage | null;
|
|
163
|
+
result: unknown;
|
|
164
|
+
memory: BaseMemory;
|
|
165
|
+
iteration: number;
|
|
166
|
+
steps: RequirementAgentRunStateStep[];
|
|
167
|
+
usage: ChatModelUsage;
|
|
168
|
+
}
|
|
169
|
+
interface RequirementAgentOutput {
|
|
170
|
+
result: AssistantMessage;
|
|
171
|
+
memory: BaseMemory;
|
|
172
|
+
state: RequirementAgentRunState;
|
|
173
|
+
}
|
|
174
|
+
interface RequirementAgentRequest {
|
|
175
|
+
tools: AnyTool[];
|
|
176
|
+
allowedTools: AnyTool[];
|
|
177
|
+
reasonByTool: WeakMap<AnyTool, string | undefined>;
|
|
178
|
+
hiddenTools: AnyTool[];
|
|
179
|
+
toolChoice: ChatModelToolChoice;
|
|
180
|
+
finalAnswer: FinalAnswerTool;
|
|
181
|
+
canStop: boolean;
|
|
182
|
+
}
|
|
183
|
+
interface RequirementAgentExecutionConfig {
|
|
184
|
+
maxRetriesPerStep?: number;
|
|
185
|
+
totalMaxRetries?: number;
|
|
186
|
+
maxIterations?: number;
|
|
187
|
+
}
|
|
188
|
+
interface RequirementAgentRunInput {
|
|
189
|
+
prompt: string | null;
|
|
190
|
+
context?: string;
|
|
191
|
+
expectedOutput?: string | z.ZodSchema;
|
|
192
|
+
}
|
|
193
|
+
interface RequirementAgentRunOptions extends BaseAgentRunOptions {
|
|
194
|
+
execution?: RequirementAgentExecutionConfig;
|
|
195
|
+
}
|
|
196
|
+
interface RequirementAgentCallbacks {
|
|
197
|
+
start: (data: {
|
|
198
|
+
state: RequirementAgentRunState;
|
|
199
|
+
request: RequirementAgentRequest;
|
|
200
|
+
}) => void;
|
|
201
|
+
success: (data: {
|
|
202
|
+
state: RequirementAgentRunState;
|
|
203
|
+
response: ChatModelOutput;
|
|
204
|
+
}) => void;
|
|
205
|
+
finalAnswer: (data: {
|
|
206
|
+
state: RequirementAgentRunState;
|
|
207
|
+
output: string;
|
|
208
|
+
delta: string;
|
|
209
|
+
outputStructured: unknown;
|
|
210
|
+
}) => void;
|
|
211
|
+
}
|
|
212
|
+
|
|
213
|
+
export { FinalAnswerTool as F, type RequirementAgentRunState as R, type ToolInvocationResult as T, type RequirementAgentRequest as a, RequirementAgentSystemPromptInputSchema as b, type RequirementAgentExecutionConfig as c, type RequirementAgentTemplates as d, type RequirementAgentRunInput as e, type RequirementAgentOutput as f, type RequirementAgentRunOptions as g, type RequirementAgentCallbacks as h, RequirementAgentTaskPromptInputSchema as i, RequirementAgentToolErrorPromptInputSchema as j, RequirementAgentToolNoResultPromptInputSchema as k, type RequirementAgentRunStateStep as l, runTool as r };
|