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
package/dist/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","updatedInput","Object","assign","pickBy","_","k","getProp","undefined","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/template.ts"],"names":["PromptTemplateError","FrameworkError","template","message","context","ValidationPromptTemplateError","PromptTemplate","Serializable","config","functions","trim","text","render","replace","defaults","schema","toJsonSchema","escape","Boolean","customTags","register","validateInput","input","validator","createSchemaValidator","coerceTypes","success","errors","fork","customizer","clone","newConfig","isPlainObject","ValueError","update","undefined","Object","assign","updatedInput","pickBy","_","k","getProp","view","output","Mustache","tags","identity","match","loadSnapshot","data","createSnapshot"],"mappings":"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","file":"template.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError, ValueError } from \"@/errors.js\";\nimport { ObjectLike, PlainObject } from \"@/internals/types.js\";\nimport { clone, identity, isPlainObject, pickBy } from \"remeda\";\nimport Mustache from \"mustache\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { z, ZodType } from \"zod\";\nimport { createSchemaValidator, toJsonSchema } from \"@/internals/helpers/schema.js\";\nimport type { SchemaObject, ValidateFunction } from \"ajv\";\nimport { getProp } from \"@/internals/helpers/object.js\";\n\ntype PostInfer<T> = T extends PlainObject\n ? {\n [K in keyof T]: T[K] extends Date ? string : T[K];\n }\n : T;\ntype InferValue<T> = T extends ZodType<infer A> ? PostInfer<A> : never;\nexport type PromptTemplateRenderFn<K extends ZodType> = (this: InferValue<K>) => any;\n\nexport type PromptTemplateRenderInput<T extends ZodType, T2 extends z.input<T> = z.input<T>> = {\n [K in Extract<keyof T2, string>]: T2[K] | PromptTemplateRenderFn<T> | undefined;\n};\n\nexport interface PromptTemplateInput<T extends ZodType> {\n template: string;\n customTags?: [string, string];\n escape?: boolean;\n schema: SchemaObject;\n defaults?: Partial<InferValue<T>>;\n functions?: Record<string, PromptTemplateRenderFn<T>>;\n}\n\ntype PromptTemplateConstructor<T extends ZodType, N> = N extends ZodType\n ? Omit<PromptTemplateInput<N>, \"schema\" | \"functions\" | \"defaults\"> & {\n schema: N;\n functions?: Record<string, PromptTemplateRenderFn<N | T>>;\n defaults?: Partial<InferValue<N | T>>;\n }\n : Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject };\n\ntype Customizer<T extends ZodType, N> =\n | ((config: Required<PromptTemplateInput<T>>) => PromptTemplateConstructor<T, N>)\n | ((config: Required<PromptTemplateInput<T>>) => void);\n\nexport class PromptTemplateError<T extends ZodType> extends FrameworkError {\n template: PromptTemplate<T>;\n\n constructor(message: string, template: PromptTemplate<T>, context?: ObjectLike) {\n super(message, [], {\n context,\n });\n this.template = template;\n }\n}\n\nexport class ValidationPromptTemplateError<T extends ZodType> extends PromptTemplateError<T> {}\n\nexport class PromptTemplate<T extends ZodType> extends Serializable {\n protected config: Required<PromptTemplateInput<T>>;\n\n public static functions = {\n trim: () => (text: string, render: (value: string) => string) => {\n return render(text).replace(/(,\\s*$)/g, \"\");\n },\n };\n\n constructor(config: Omit<PromptTemplateInput<T>, \"schema\"> & { schema: T | SchemaObject }) {\n super();\n this.config = {\n ...config,\n defaults: (config.defaults ?? {}) as Partial<InferValue<T>>,\n schema: toJsonSchema(config.schema),\n escape: Boolean(config.escape),\n customTags: config.customTags ?? [\"{{\", \"}}\"],\n functions: {\n ...PromptTemplate.functions,\n ...config.functions,\n },\n };\n }\n\n static {\n this.register();\n }\n\n validateInput(input: unknown): asserts input is T {\n const validator = createSchemaValidator(this.config.schema, {\n coerceTypes: false,\n }) as ValidateFunction<T>;\n\n const success = validator(input);\n if (!success) {\n throw new ValidationPromptTemplateError(\n `Template cannot be rendered because input does not adhere to the template schema.`,\n this,\n {\n errors: validator.errors,\n },\n );\n }\n }\n\n fork(customizer: Customizer<T, SchemaObject>): PromptTemplate<T>;\n fork<R extends ZodType>(customizer: Customizer<T, R>): PromptTemplate<R>;\n fork<R extends ZodType>(\n customizer: Customizer<T, SchemaObject> | Customizer<T, R>,\n ): PromptTemplate<T | R> {\n const config = clone(this.config);\n const newConfig = customizer?.(config) ?? config;\n if (!isPlainObject(newConfig)) {\n throw new ValueError(\"Return type from customizer must be a config or nothing.\");\n }\n return new PromptTemplate(newConfig);\n }\n\n update(input: Partial<PromptTemplateInput<T>>) {\n if (input.schema) {\n this.config.schema = input.schema;\n }\n if (input.template !== undefined) {\n this.config.template = input.template;\n }\n if (input.functions) {\n Object.assign(this.config.functions, input.functions);\n }\n if (input.defaults) {\n Object.assign(this.config.defaults, input.defaults);\n }\n if (input.escape !== undefined) {\n this.config.escape = input.escape;\n }\n if (input.customTags) {\n this.config.customTags = input.customTags;\n }\n }\n\n render(input: PromptTemplateRenderInput<T>): string {\n const updatedInput: typeof input = { ...input };\n Object.assign(\n updatedInput,\n pickBy(this.config.defaults, (_, k) => getProp(updatedInput, [k]) === undefined),\n );\n\n this.validateInput(updatedInput);\n const view: Record<string, any> = {\n ...this.config.functions,\n ...updatedInput,\n };\n\n const output = Mustache.render(\n this.config.template,\n view,\n {},\n {\n tags: this.config.customTags,\n ...(!this.config.escape && {\n escape: identity(),\n }),\n },\n );\n\n if (output.match(/\\[object (.+)]/)) {\n throw new ValidationPromptTemplateError(\n \"Rendered template contains incorrectly serialized value!\",\n this,\n {\n output,\n },\n );\n }\n\n return output;\n }\n\n loadSnapshot(data: ReturnType<typeof this.createSnapshot>) {\n this.config = data.config;\n }\n\n createSnapshot() {\n return {\n config: this.config,\n };\n }\n}\n\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport namespace PromptTemplate {\n export type infer<T> = PromptTemplate<ZodType<T>>;\n}\n"]}
|
package/dist/tools/arxiv.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.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 { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.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 { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
|
package/dist/tools/arxiv.d.cts
CHANGED
|
@@ -9,7 +9,7 @@ import '../internals/helpers/guards.cjs';
|
|
|
9
9
|
import '../internals/serializable.cjs';
|
|
10
10
|
import 'promise-based-task';
|
|
11
11
|
import '../cache/base.cjs';
|
|
12
|
-
import '../emitter-
|
|
12
|
+
import '../emitter-CGKd_-kK.cjs';
|
|
13
13
|
import '../internals/helpers/promise.cjs';
|
|
14
14
|
import 'zod-to-json-schema';
|
|
15
15
|
|
package/dist/tools/arxiv.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import '../internals/helpers/guards.js';
|
|
|
9
9
|
import '../internals/serializable.js';
|
|
10
10
|
import 'promise-based-task';
|
|
11
11
|
import '../cache/base.js';
|
|
12
|
-
import '../emitter-
|
|
12
|
+
import '../emitter-CN7I4uSV.js';
|
|
13
13
|
import '../internals/helpers/promise.js';
|
|
14
14
|
import 'zod-to-json-schema';
|
|
15
15
|
|
package/dist/tools/arxiv.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.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 { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/arxiv.ts"],"names":["SortType","RELEVANCE","LAST_UPDATED_DATE","SUBMITTED_DATE","SortOrder","ASCENDING","DESCENDING","FilterType","ALL","TITLE","AUTHOR","ABSTRACT","COMMENT","JOURNAL_REFERENCE","SUBJECT_CATEGORY","REPORT_NUMBER","FilterTypeMapping","all","title","author","abstract","comment","journal_reference","subject_category","report_number","Separators","AND","OR","ANDNOT","ArXivToolOutput","JSONToolOutput","isEmpty","result","totalResults","entries","length","extractId","value","replace","ArXivTool","Tool","name","description","emitter","Emitter","root","child","namespace","creator","inputSchema","entrySchema","z","object","field","nativeEnum","default","string","min","ids","array","optional","search_query","include","nonempty","describe","exclude","start","number","int","maxResults","max","register","validateInput","schema","rawInput","ToolInputValidationError","_prepareParams","input","createURLParams","max_results","id_list","undefined","map","tag","join","filter","Boolean","sortBy","sortOrder","_run","_options","run","params","url","decodeURIComponent","toString","response","fetch","signal","data","_parseResponse","parser","XMLParser","allowBooleanAttributes","alwaysCreateTextNode","attributeNamePrefix","attributesGroupName","cdataPropName","ignoreAttributes","numberParseOptions","hex","leadingZeros","parseAttributeValue","parseTagValue","preserveOrder","removeNSPrefix","textNodeName","trimValues","ignoreDeclaration","text","parsedData","parse","ok","ToolError","Error","JSON","stringify","getProp","castArray","Math","startIndex","itemsPerPage","entry","pickBy","id","summary","published","updated","authors","affiliation","doi","journalReference","journal_ref","primaryCategory","primary_category","categories","category","links","link","isDefined"],"mappings":"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","file":"arxiv.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 { Cache } from \"@/cache/decoratorCache.js\";\nimport { XMLParser } from \"fast-xml-parser\";\nimport { getProp } from \"@/internals/helpers/object.js\";\nimport { isDefined, isEmpty, pickBy } from \"remeda\";\nimport { castArray } from \"@/internals/helpers/array.js\";\nimport { ValueOf } from \"@/internals/types.js\";\nimport { AnyToolSchemaLike } from \"@/internals/helpers/schema.js\";\nimport { RunContext } from \"@/context.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\n\ntype ToolOptions = BaseToolOptions;\ntype ToolRunOptions = BaseToolRunOptions;\n\nexport const SortType = {\n RELEVANCE: \"relevance\",\n LAST_UPDATED_DATE: \"lastUpdatedDate\",\n SUBMITTED_DATE: \"submittedDate\",\n} as const;\n\nexport const SortOrder = {\n ASCENDING: \"ascending\",\n DESCENDING: \"descending\",\n} as const;\n\nexport const FilterType = {\n ALL: \"all\",\n TITLE: \"title\",\n AUTHOR: \"author\",\n ABSTRACT: \"abstract\",\n COMMENT: \"comment\",\n JOURNAL_REFERENCE: \"journal_reference\",\n SUBJECT_CATEGORY: \"subject_category\",\n REPORT_NUMBER: \"report_number\",\n} as const;\n\nconst FilterTypeMapping: Record<ValueOf<typeof FilterType>, string> = {\n all: \"all\",\n title: \"ti\",\n author: \"au\",\n abstract: \"abs\",\n comment: \"co\",\n journal_reference: \"jr\",\n subject_category: \"cat\",\n report_number: \"rn\",\n};\n\nexport const Separators = {\n AND: \"+AND+\",\n OR: \"+OR+\",\n ANDNOT: \"+ANDNOT+\",\n} as const;\n\nexport interface ArXivResponse {\n totalResults: number;\n startIndex: number;\n itemsPerPage: number;\n entries: {\n id: string;\n title: string;\n summary: string;\n published: string;\n updated: string;\n authors: { name: string; affiliation: string[] }[];\n doi: string;\n comment: string;\n journalReference: string;\n primaryCategory: string;\n categories: string[];\n links: string[];\n }[];\n}\n\nexport class ArXivToolOutput extends JSONToolOutput<ArXivResponse> {\n isEmpty(): boolean {\n return !this.result || this.result.totalResults === 0 || this.result.entries.length === 0;\n }\n}\n\nconst extractId = (value: string) =>\n value\n .replace(\"https://arxiv.org/abs/\", \"\")\n .replace(\"https://arxiv.org/pdf/\", \"\")\n .replace(/v\\d$/, \"\");\n\nexport class ArXivTool extends Tool<ArXivToolOutput, ToolOptions, ToolRunOptions> {\n name = \"ArXiv\";\n description = `Retrieves research articles published on arXiv including related metadata.`;\n\n public readonly emitter: ToolEmitter<ToolInput<this>, ArXivToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"search\", \"arxiv\"],\n creator: this,\n });\n\n @Cache()\n inputSchema() {\n const entrySchema = z.object({\n field: z.nativeEnum(FilterType).default(FilterType.ALL),\n value: z.string().min(1),\n });\n\n return z\n .object({\n ids: z.array(z.string().min(1)).optional(),\n search_query: z\n .object({\n include: z.array(entrySchema).nonempty().describe(\"Filters to include results.\"),\n exclude: z.array(entrySchema).optional().describe(\"Filters to exclude results.\"),\n })\n .optional(),\n start: z.number().int().min(0).default(0),\n maxResults: z.number().int().min(1).max(100).default(5),\n })\n .describe(\"Sorting by date is not supported.\");\n }\n\n static {\n this.register();\n }\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n super.validateInput(schema, rawInput);\n if (isEmpty(rawInput.ids ?? []) && !rawInput.search_query) {\n throw new ToolInputValidationError(\n `The 'search_query' property must be non-empty if the 'ids' property is not provided!`,\n );\n }\n }\n\n protected _prepareParams(input: ToolInput<typeof this>) {\n return createURLParams({\n start: input.start,\n max_results: input.maxResults,\n id_list: isEmpty(input.ids ?? []) ? undefined : input.ids?.map(extractId),\n search_query:\n input.search_query &&\n [\n input.search_query.include\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.AND),\n (input.search_query.exclude ?? [])\n .map((tag) => `${FilterTypeMapping[tag.field]}:${tag.value}`)\n .join(Separators.ANDNOT),\n ]\n .filter(Boolean)\n .join(Separators.ANDNOT),\n sortBy: SortType.RELEVANCE,\n sortOrder: SortOrder.DESCENDING,\n });\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const params = this._prepareParams(input);\n const url = `https://export.arxiv.org/api/query?${decodeURIComponent(params.toString())}`;\n const response = await fetch(url, {\n signal: run.signal,\n });\n const data = await this._parseResponse(response);\n return new ArXivToolOutput(data);\n }\n\n protected async _parseResponse(response: Response): Promise<ArXivResponse> {\n const parser = new XMLParser({\n allowBooleanAttributes: true,\n alwaysCreateTextNode: false,\n attributeNamePrefix: \"@_\",\n attributesGroupName: false,\n cdataPropName: \"#cdata\",\n ignoreAttributes: true,\n numberParseOptions: { hex: false, leadingZeros: true },\n parseAttributeValue: false,\n parseTagValue: true,\n preserveOrder: false,\n removeNSPrefix: true,\n textNodeName: \"#text\",\n trimValues: true,\n ignoreDeclaration: true,\n });\n\n const text = await response.text();\n const parsedData = parser.parse(text);\n\n if (!response.ok) {\n throw new ToolError(\"Request to ArXiv API has failed!\", [\n new Error(JSON.stringify(getProp(parsedData, [\"feed\", \"entry\"], parsedData), null, 2)),\n ]);\n }\n\n let entries: Record<string, any>[] = getProp(parsedData, [\"feed\", \"entry\"], []);\n entries = castArray(entries);\n\n return {\n totalResults: Math.max(getProp(parsedData, [\"feed\", \"totalResults\"], 0), entries.length),\n startIndex: getProp(parsedData, [\"feed\", \"startIndex\"], 0),\n itemsPerPage: getProp(parsedData, [\"feed\", \"itemsPerPage\"], 0),\n entries: entries.map((entry) =>\n pickBy(\n {\n id: extractId(entry.id),\n url: entry.id,\n title: entry.title,\n summary: entry.summary,\n published: entry.published,\n updated: entry.updated,\n authors: castArray(entry.author)\n .filter(Boolean)\n .map((author: any) => ({\n name: author.name,\n affiliation: castArray(author.affiliation ?? []),\n })),\n doi: entry.doi,\n comment: entry.comment,\n journalReference: entry.journal_ref,\n primaryCategory: entry.primary_category,\n categories: castArray(entry.category).filter(Boolean),\n links: castArray(entry.link).filter(Boolean),\n },\n isDefined,\n ),\n ),\n };\n }\n}\n"]}
|
package/dist/tools/base.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.cjs","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\nexport type AnyToolClass = abstract new (...args: any[]) => AnyTool;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
|
package/dist/tools/base.d.cts
CHANGED
|
@@ -7,7 +7,7 @@ import { Task } from 'promise-based-task';
|
|
|
7
7
|
import { BaseCache } from '../cache/base.cjs';
|
|
8
8
|
import { AnyToolSchemaLike, FromSchemaLikeRaw, FromSchemaLike } from '../internals/helpers/schema.cjs';
|
|
9
9
|
import { ZodSchema, z } from 'zod';
|
|
10
|
-
import { E as Emitter, C as Callback } from '../emitter-
|
|
10
|
+
import { E as Emitter, C as Callback } from '../emitter-CGKd_-kK.cjs';
|
|
11
11
|
import '../internals/helpers/promise.cjs';
|
|
12
12
|
import '../internals/types.cjs';
|
|
13
13
|
import '../internals/helpers/guards.cjs';
|
|
@@ -126,6 +126,7 @@ declare abstract class Tool<TOutput extends ToolOutput = ToolOutput, TOptions ex
|
|
|
126
126
|
}): DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>;
|
|
127
127
|
}
|
|
128
128
|
type AnyTool = Tool<any, any, any>;
|
|
129
|
+
type AnyToolClass = abstract new (...args: any[]) => AnyTool;
|
|
129
130
|
declare class DynamicTool<TOutput extends ToolOutput, TInputSchema extends AnyToolSchemaLike, TOptions extends BaseToolOptions = BaseToolOptions, TRunOptions extends BaseToolRunOptions = BaseToolRunOptions, TInput = FromSchemaLike<TInputSchema>> extends Tool<TOutput, TOptions, TRunOptions> {
|
|
130
131
|
name: string;
|
|
131
132
|
description: string;
|
|
@@ -153,4 +154,4 @@ declare class DynamicTool<TOutput extends ToolOutput, TInputSchema extends AnyTo
|
|
|
153
154
|
loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>): void;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
export { type AnyTool, type BaseToolOptions, type BaseToolRunOptions, DynamicTool, type InferToolOutput, JSONToolOutput, type RetryOptions, StringToolOutput, Tool, type ToolEmitter, ToolError, type ToolEvents, type ToolInput, type ToolInputRaw, ToolInputValidationError, ToolOutput, type ToolSnapshot };
|
|
157
|
+
export { type AnyTool, type AnyToolClass, type BaseToolOptions, type BaseToolRunOptions, DynamicTool, type InferToolOutput, JSONToolOutput, type RetryOptions, StringToolOutput, Tool, type ToolEmitter, ToolError, type ToolEvents, type ToolInput, type ToolInputRaw, ToolInputValidationError, ToolOutput, type ToolSnapshot };
|
package/dist/tools/base.d.ts
CHANGED
|
@@ -7,7 +7,7 @@ import { Task } from 'promise-based-task';
|
|
|
7
7
|
import { BaseCache } from '../cache/base.js';
|
|
8
8
|
import { AnyToolSchemaLike, FromSchemaLikeRaw, FromSchemaLike } from '../internals/helpers/schema.js';
|
|
9
9
|
import { ZodSchema, z } from 'zod';
|
|
10
|
-
import { E as Emitter, C as Callback } from '../emitter-
|
|
10
|
+
import { E as Emitter, C as Callback } from '../emitter-CN7I4uSV.js';
|
|
11
11
|
import '../internals/helpers/promise.js';
|
|
12
12
|
import '../internals/types.js';
|
|
13
13
|
import '../internals/helpers/guards.js';
|
|
@@ -126,6 +126,7 @@ declare abstract class Tool<TOutput extends ToolOutput = ToolOutput, TOptions ex
|
|
|
126
126
|
}): DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>;
|
|
127
127
|
}
|
|
128
128
|
type AnyTool = Tool<any, any, any>;
|
|
129
|
+
type AnyToolClass = abstract new (...args: any[]) => AnyTool;
|
|
129
130
|
declare class DynamicTool<TOutput extends ToolOutput, TInputSchema extends AnyToolSchemaLike, TOptions extends BaseToolOptions = BaseToolOptions, TRunOptions extends BaseToolRunOptions = BaseToolRunOptions, TInput = FromSchemaLike<TInputSchema>> extends Tool<TOutput, TOptions, TRunOptions> {
|
|
130
131
|
name: string;
|
|
131
132
|
description: string;
|
|
@@ -153,4 +154,4 @@ declare class DynamicTool<TOutput extends ToolOutput, TInputSchema extends AnyTo
|
|
|
153
154
|
loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>): void;
|
|
154
155
|
}
|
|
155
156
|
|
|
156
|
-
export { type AnyTool, type BaseToolOptions, type BaseToolRunOptions, DynamicTool, type InferToolOutput, JSONToolOutput, type RetryOptions, StringToolOutput, Tool, type ToolEmitter, ToolError, type ToolEvents, type ToolInput, type ToolInputRaw, ToolInputValidationError, ToolOutput, type ToolSnapshot };
|
|
157
|
+
export { type AnyTool, type AnyToolClass, type BaseToolOptions, type BaseToolRunOptions, DynamicTool, type InferToolOutput, JSONToolOutput, type RetryOptions, StringToolOutput, Tool, type ToolEmitter, ToolError, type ToolEvents, type ToolInput, type ToolInputRaw, ToolInputValidationError, ToolOutput, type ToolSnapshot };
|
package/dist/tools/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../../src/tools/base.ts"],"names":["ToolError","FrameworkError","ToolInputValidationError","validationErrors","message","ToolOutput","Serializable","toString","getTextContent","StringToolOutput","result","ctx","register","isEmpty","createSnapshot","loadSnapshot","snapshot","Object","assign","cacheKey","WeakRefKeyFn","from","self","JSONToolOutput","R","JSON","stringify","Tool","cache","options","contextKeys","Memory","Symbol","args","NullCache","toError","e","context","name","run","input","shallowCopy","RunContext","enter","signal","params","meta","errorPropagated","ref","parse","output","Retryable","executor","emitter","emit","enabled","_runCached","_run","onError","error","fatalErrors","some","cls","onRetry","_","config","_createRetryOptions","retryOptions","get","key","ObjectHashKeyFn","omit","cacheEntry","undefined","task","Task","set","then","req","resolve","catch","err","reject","delete","clearCache","clear","getInputJsonSchema","toJsonSchema","inputSchema","isTool","value","overrides","defaultOptions","maxRetries","factor","pipe","filter","isTruthy","map","pickBy","isDefined","mergeAll","schema","validateSchema","tool","hint","validateInput","isFatal","isRetryable","copy","preprocessInput","rawInput","validator","createSchemaValidator","success","errors","join","description","mapper","DynamicTool","handler","selfOutput","wrappedInput","extend","_inputSchema","fields","validate","z","object","string","refine","val","test","union","instanceof","ZodSchema","passthrough","function","optional","Emitter","root","child","namespace","toCamelCase","creator","arg"],"mappings":"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","file":"base.js","sourcesContent":["/**\n * Copyright 2025 © BeeAI a Series of LF Projects, LLC\n * SPDX-License-Identifier: Apache-2.0\n */\n\nimport { FrameworkError } from \"@/errors.js\";\nimport * as R from \"remeda\";\nimport { Retryable, RetryableConfig } from \"@/internals/helpers/retryable.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { Task } from \"promise-based-task\";\nimport { Cache, ObjectHashKeyFn, WeakRefKeyFn } from \"@/cache/decoratorCache.js\";\nimport { BaseCache } from \"@/cache/base.js\";\nimport { NullCache } from \"@/cache/nullCache.js\";\nimport type { ErrorObject, ValidateFunction } from \"ajv\";\nimport {\n AnyToolSchemaLike,\n createSchemaValidator,\n FromSchemaLike,\n FromSchemaLikeRaw,\n toJsonSchema,\n validateSchema,\n} from \"@/internals/helpers/schema.js\";\nimport { validate } from \"@/internals/helpers/general.js\";\nimport { z, ZodSchema } from \"zod\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { Callback } from \"@/emitter/types.js\";\nimport { GetRunContext, RunContext } from \"@/context.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { toCamelCase } from \"remeda\";\n\nexport class ToolError extends FrameworkError {}\n\nexport class ToolInputValidationError extends ToolError {\n validationErrors: ErrorObject[];\n\n constructor(message: string, validationErrors: ErrorObject[] = []) {\n super(message, []);\n this.validationErrors = validationErrors;\n }\n}\n\nexport interface RetryOptions {\n maxRetries?: number;\n factor?: number;\n}\n\nexport interface BaseToolOptions<TOutput = any> {\n retryOptions?: RetryOptions;\n fatalErrors?: ErrorConstructor[];\n cache?: BaseCache<Task<TOutput>> | false;\n}\n\nexport interface BaseToolRunOptions {\n retryOptions?: RetryOptions;\n signal?: AbortSignal;\n}\n\nexport abstract class ToolOutput extends Serializable {\n abstract getTextContent(): string;\n abstract isEmpty(): boolean;\n\n toString() {\n return this.getTextContent();\n }\n}\n\nexport class StringToolOutput extends ToolOutput {\n constructor(\n public readonly result = \"\",\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n this.result = result ?? \"\";\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result;\n }\n\n @Cache({\n cacheKey: WeakRefKeyFn.from<StringToolOutput>((self) => [self.result]),\n })\n getTextContent(): string {\n return this.result.toString();\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport class JSONToolOutput<T> extends ToolOutput {\n constructor(\n public readonly result: T,\n public readonly ctx?: Record<string, any>,\n ) {\n super();\n }\n\n static {\n this.register();\n }\n\n isEmpty() {\n return !this.result || R.isEmpty(this.result);\n }\n\n getTextContent(): string {\n return JSON.stringify(this.result);\n }\n\n createSnapshot() {\n return {\n result: this.result,\n ctx: this.ctx,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\nexport interface ToolSnapshot<TOutput extends ToolOutput, TOptions extends BaseToolOptions> {\n name: string;\n description: string;\n options: TOptions;\n cache: BaseCache<Task<TOutput>>;\n emitter: Emitter<any>;\n}\n\nexport type InferToolOutput<T extends AnyTool> = T extends Tool<infer A, any, any> ? A : never;\nexport type ToolInput<T extends AnyTool> = FromSchemaLike<Awaited<ReturnType<T[\"inputSchema\"]>>>;\nexport type ToolInputRaw<T extends AnyTool> = FromSchemaLikeRaw<\n Awaited<ReturnType<T[\"inputSchema\"]>>\n>;\n\ntype ToolConstructorParameters<TOptions extends BaseToolOptions> =\n Partial<TOptions> extends TOptions ? [options?: TOptions] : [options: TOptions];\n\nexport interface ToolEvents<\n TInput extends Record<string, any> = Record<string, any>,\n TOutput extends ToolOutput = ToolOutput,\n> {\n start: Callback<{ input: TInput; options: unknown }>;\n success: Callback<{ output: TOutput; input: TInput; options: unknown }>;\n error: Callback<{ input: TInput; error: ToolError | ToolInputValidationError; options: unknown }>;\n retry: Callback<{ error: ToolError | ToolInputValidationError; input: TInput; options: unknown }>;\n finish: Callback<null>;\n}\n\nexport type ToolEmitter<\n A extends Record<string, any>,\n B extends ToolOutput,\n C = Record<never, never>,\n> = Emitter<ToolEvents<A, B> & Omit<C, keyof ToolEvents>>;\n\nexport abstract class Tool<\n TOutput extends ToolOutput = ToolOutput,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n> extends Serializable {\n abstract name: string;\n abstract description: string;\n\n public readonly cache: BaseCache<Task<TOutput>>;\n public readonly options: TOptions;\n\n public static contextKeys = {\n Memory: Symbol(\"Memory\"),\n } as const;\n\n public abstract readonly emitter: Emitter<ToolEvents<any, TOutput>>;\n\n abstract inputSchema(): Promise<AnyToolSchemaLike> | AnyToolSchemaLike;\n\n constructor(...args: ToolConstructorParameters<TOptions>) {\n super();\n\n const [options] = args;\n this.options = options ?? ({} as TOptions);\n this.cache = options?.cache ? options.cache : new NullCache();\n }\n\n protected toError(e: Error, context: any) {\n if (e instanceof ToolError) {\n Object.assign(e.context, context);\n return e;\n } else {\n return new ToolError(`Tool \"${this.name}\" has occurred an error!`, [e], {\n context,\n });\n }\n }\n\n run(input: ToolInputRaw<this>, options: Partial<TRunOptions> = {}) {\n input = shallowCopy(input);\n options = shallowCopy(options);\n\n return RunContext.enter(\n this,\n { signal: options?.signal, params: [input, options] as const },\n async (run) => {\n const meta = { input, options };\n let errorPropagated = false;\n\n try {\n input = Object.assign({ ref: input }, { ref: await this.parse(input) }).ref;\n\n const output = await new Retryable({\n executor: async () => {\n errorPropagated = false;\n await run.emitter.emit(\"start\", { ...meta });\n return this.cache.enabled\n ? await this._runCached(input, options, run)\n : await this._run(input, options, run);\n },\n onError: async (error) => {\n errorPropagated = true;\n await run.emitter.emit(\"error\", {\n error: this.toError(error, meta),\n ...meta,\n });\n if (this.options.fatalErrors?.some((cls) => error instanceof cls)) {\n throw error;\n }\n },\n onRetry: async (_, error) => {\n await run.emitter.emit(\"retry\", { ...meta, error: this.toError(error, meta) });\n },\n config: {\n ...this._createRetryOptions(options?.retryOptions),\n signal: options?.signal,\n },\n }).get();\n\n await run.emitter.emit(\"success\", { output, ...meta });\n return output;\n } catch (e) {\n const error = this.toError(e, meta);\n if (!errorPropagated) {\n await run.emitter.emit(\"error\", {\n error,\n options,\n input,\n });\n }\n throw error;\n } finally {\n await run.emitter.emit(\"finish\", null);\n }\n },\n );\n }\n\n protected async _runCached(\n input: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<this>,\n ): Promise<TOutput> {\n const key = ObjectHashKeyFn({\n input,\n options: R.omit(options ?? ({} as TRunOptions), [\"signal\", \"retryOptions\"]),\n });\n\n const cacheEntry = await this.cache.get(key);\n if (cacheEntry !== undefined) {\n return cacheEntry!;\n }\n\n const task = new Task<TOutput, Error>();\n await this.cache.set(key, task);\n this._run(input, options, run)\n .then((req) => task.resolve(req))\n .catch(async (err) => {\n void task.reject(err);\n await this.cache.delete(key);\n });\n return task;\n }\n\n public async clearCache() {\n await this.cache.clear();\n }\n\n protected abstract _run(\n arg: ToolInput<this>,\n options: Partial<TRunOptions>,\n run: GetRunContext<typeof this>,\n ): Promise<TOutput>;\n\n async getInputJsonSchema() {\n return toJsonSchema(await this.inputSchema());\n }\n\n static isTool(value: unknown): value is Tool {\n return value instanceof Tool && \"name\" in value && \"description\" in value;\n }\n\n private _createRetryOptions(...overrides: (RetryOptions | undefined)[]): RetryableConfig {\n const defaultOptions: Required<RetryOptions> = {\n maxRetries: 0,\n factor: 1,\n };\n\n return R.pipe(\n [defaultOptions, this.options.retryOptions, ...overrides],\n R.filter(R.isTruthy),\n R.map((input: RetryOptions) => {\n const options: RetryableConfig = {\n maxRetries: input.maxRetries ?? defaultOptions.maxRetries,\n factor: input.factor ?? defaultOptions.maxRetries,\n };\n return R.pickBy(options, R.isDefined);\n }),\n R.mergeAll,\n ) as RetryableConfig;\n }\n\n async parse(input: unknown | ToolInputRaw<this> | ToolInput<this>): Promise<ToolInput<this>> {\n const schema = await this.inputSchema();\n if (schema) {\n validateSchema(schema, {\n context: {\n tool: this.constructor.name,\n hint: `To do post-validation override the '${this.validateInput.name}' method.`,\n schema,\n isFatal: true,\n isRetryable: false,\n },\n });\n }\n\n const copy = shallowCopy(input);\n this.preprocessInput(copy);\n this.validateInput(schema, copy);\n return copy;\n }\n\n // eslint-disable-next-line unused-imports/no-unused-vars\n protected preprocessInput(rawInput: unknown): void {}\n\n protected validateInput(\n schema: AnyToolSchemaLike,\n rawInput: unknown,\n ): asserts rawInput is ToolInput<this> {\n const validator = createSchemaValidator(schema) as ValidateFunction<ToolInput<this>>;\n const success = validator(rawInput);\n if (!success) {\n throw new ToolInputValidationError(\n [\n `The received tool input does not match the expected schema.`,\n `Input Schema: \"${JSON.stringify(toJsonSchema(schema))}\"`,\n `Validation Errors: ${JSON.stringify(validator.errors)}`,\n ].join(\"\\n\"),\n // ts doesn't infer that when success is false `validator.errors` is defined\n validator.errors!,\n );\n }\n }\n\n createSnapshot(): ToolSnapshot<TOutput, TOptions> {\n return {\n name: this.name,\n description: this.description,\n cache: this.cache,\n options: shallowCopy(this.options),\n emitter: this.emitter,\n };\n }\n\n loadSnapshot(snapshot: ToolSnapshot<TOutput, TOptions>): void {\n Object.assign(this, snapshot);\n }\n\n pipe<S extends AnyTool, T extends AnyTool>(\n this: S,\n tool: T,\n mapper: (\n input: ToolInputRaw<S>,\n output: TOutput,\n options: Partial<TRunOptions>,\n run: RunContext<\n DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>\n >,\n ) => ToolInputRaw<typeof tool>,\n ) {\n return new DynamicTool<TOutput, ZodSchema<ToolInput<S>>, TOptions, TRunOptions, ToolInput<S>>({\n name: this.name,\n description: this.description,\n options: this.options,\n inputSchema: this.inputSchema() as ZodSchema<ToolInput<S>>,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const selfOutput = await this.run(input, options);\n const wrappedInput = mapper(input, selfOutput, options, run);\n return await tool.run(wrappedInput);\n },\n } as const);\n }\n\n extend<S extends AnyTool, TS extends ZodSchema>(\n this: S,\n schema: TS,\n mapper: (\n input: z.output<TS>,\n options: Partial<TRunOptions>,\n run: RunContext<DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>>,\n ) => ToolInputRaw<S>,\n overrides: {\n name?: string;\n description?: string;\n } = {},\n ) {\n return new DynamicTool<TOutput, TS, TOptions, TRunOptions, z.output<TS>>({\n name: overrides?.name || this.name,\n description: overrides?.name || this.description,\n options: shallowCopy(this.options),\n inputSchema: schema,\n handler: async (input: ToolInputRaw<S>, options, run): Promise<TOutput> => {\n const wrappedInput = mapper(input, options, run);\n return await this.run(wrappedInput, options);\n },\n } as const);\n }\n}\n\nexport type AnyTool = Tool<any, any, any>;\nexport type AnyToolClass = abstract new (...args: any[]) => AnyTool;\n\nexport class DynamicTool<\n TOutput extends ToolOutput,\n TInputSchema extends AnyToolSchemaLike,\n TOptions extends BaseToolOptions = BaseToolOptions,\n TRunOptions extends BaseToolRunOptions = BaseToolRunOptions,\n TInput = FromSchemaLike<TInputSchema>,\n> extends Tool<TOutput, TOptions, TRunOptions> {\n static {\n this.register();\n }\n\n declare name: string;\n declare description: string;\n private readonly _inputSchema: TInputSchema;\n declare readonly emitter: Emitter<ToolEvents<FromSchemaLike<TInputSchema>, TOutput>>;\n private readonly handler;\n\n inputSchema(): TInputSchema {\n return this._inputSchema;\n }\n\n constructor(fields: {\n name: string;\n description: string;\n inputSchema: TInputSchema;\n handler: (\n input: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ) => Promise<TOutput>;\n options?: TOptions;\n }) {\n validate(\n fields,\n z.object({\n name: z\n .string({ message: \"Tool must have a name\" })\n .refine((val) => /^[a-zA-Z0-9\\-_]+$/.test(val), {\n message: \"Tool name must only have -, _, letters or numbers\",\n }),\n description: z\n .string({ message: \"Tool must have a description\" })\n .refine((val) => val && val !== \"\", { message: \"Tool must have a description\" }),\n inputSchema: z.union([z.instanceof(ZodSchema), z.object({}).passthrough()], {\n message: \"Tool must have a schema\",\n }),\n handler: z.function(),\n options: z.object({}).passthrough().optional(),\n }),\n );\n super(...([fields.options] as ToolConstructorParameters<TOptions>));\n this.name = fields.name;\n this.description = fields.description;\n this._inputSchema = fields.inputSchema;\n this.handler = fields.handler;\n this.emitter = Emitter.root.child({\n namespace: [\"tool\", \"dynamic\", toCamelCase(this.name)],\n creator: this,\n });\n }\n\n protected _run(\n arg: TInput,\n options: Partial<TRunOptions>,\n run: GetRunContext<DynamicTool<TOutput, TInputSchema, TOptions, TRunOptions, TInput>>,\n ): Promise<TOutput> {\n return this.handler(arg, options, run);\n }\n\n createSnapshot() {\n return { ...super.createSnapshot(), handler: this.handler, _inputSchema: this._inputSchema };\n }\n\n loadSnapshot({ handler, ...snapshot }: ReturnType<typeof this.createSnapshot>) {\n super.loadSnapshot(snapshot);\n Object.assign(this, { handler });\n }\n}\n"]}
|