beeai-framework 0.1.2
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/README.md +226 -0
- package/dist/adapters/amazon-bedrock/backend/chat.cjs +21 -0
- package/dist/adapters/amazon-bedrock/backend/chat.cjs.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/chat.d.cts +49 -0
- package/dist/adapters/amazon-bedrock/backend/chat.d.ts +49 -0
- package/dist/adapters/amazon-bedrock/backend/chat.js +19 -0
- package/dist/adapters/amazon-bedrock/backend/chat.js.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/client.cjs +21 -0
- package/dist/adapters/amazon-bedrock/backend/client.cjs.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/client.d.cts +28 -0
- package/dist/adapters/amazon-bedrock/backend/client.d.ts +28 -0
- package/dist/adapters/amazon-bedrock/backend/client.js +19 -0
- package/dist/adapters/amazon-bedrock/backend/client.js.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs +21 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.cjs.map +1 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.d.cts +40 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.d.ts +40 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.js +19 -0
- package/dist/adapters/amazon-bedrock/backend/embedding.js.map +1 -0
- package/dist/adapters/anthropic/backend/chat.cjs +24 -0
- package/dist/adapters/anthropic/backend/chat.cjs.map +1 -0
- package/dist/adapters/anthropic/backend/chat.d.cts +49 -0
- package/dist/adapters/anthropic/backend/chat.d.ts +49 -0
- package/dist/adapters/anthropic/backend/chat.js +22 -0
- package/dist/adapters/anthropic/backend/chat.js.map +1 -0
- package/dist/adapters/anthropic/backend/client.cjs +32 -0
- package/dist/adapters/anthropic/backend/client.cjs.map +1 -0
- package/dist/adapters/anthropic/backend/client.d.cts +28 -0
- package/dist/adapters/anthropic/backend/client.d.ts +28 -0
- package/dist/adapters/anthropic/backend/client.js +30 -0
- package/dist/adapters/anthropic/backend/client.js.map +1 -0
- package/dist/adapters/anthropic/backend/embedding.cjs +21 -0
- package/dist/adapters/anthropic/backend/embedding.cjs.map +1 -0
- package/dist/adapters/anthropic/backend/embedding.d.cts +40 -0
- package/dist/adapters/anthropic/backend/embedding.d.ts +40 -0
- package/dist/adapters/anthropic/backend/embedding.js +19 -0
- package/dist/adapters/anthropic/backend/embedding.js.map +1 -0
- package/dist/adapters/azure-openai/backend/chat.cjs +21 -0
- package/dist/adapters/azure-openai/backend/chat.cjs.map +1 -0
- package/dist/adapters/azure-openai/backend/chat.d.cts +49 -0
- package/dist/adapters/azure-openai/backend/chat.d.ts +49 -0
- package/dist/adapters/azure-openai/backend/chat.js +19 -0
- package/dist/adapters/azure-openai/backend/chat.js.map +1 -0
- package/dist/adapters/azure-openai/backend/client.cjs +26 -0
- package/dist/adapters/azure-openai/backend/client.cjs.map +1 -0
- package/dist/adapters/azure-openai/backend/client.d.cts +28 -0
- package/dist/adapters/azure-openai/backend/client.d.ts +28 -0
- package/dist/adapters/azure-openai/backend/client.js +24 -0
- package/dist/adapters/azure-openai/backend/client.js.map +1 -0
- package/dist/adapters/azure-openai/backend/embedding.cjs +21 -0
- package/dist/adapters/azure-openai/backend/embedding.cjs.map +1 -0
- package/dist/adapters/azure-openai/backend/embedding.d.cts +40 -0
- package/dist/adapters/azure-openai/backend/embedding.d.ts +40 -0
- package/dist/adapters/azure-openai/backend/embedding.js +19 -0
- package/dist/adapters/azure-openai/backend/embedding.js.map +1 -0
- package/dist/adapters/dummy/backend/chat.cjs +51 -0
- package/dist/adapters/dummy/backend/chat.cjs.map +1 -0
- package/dist/adapters/dummy/backend/chat.d.cts +39 -0
- package/dist/adapters/dummy/backend/chat.d.ts +39 -0
- package/dist/adapters/dummy/backend/chat.js +49 -0
- package/dist/adapters/dummy/backend/chat.js.map +1 -0
- package/dist/adapters/dummy/backend/embedding.cjs +44 -0
- package/dist/adapters/dummy/backend/embedding.cjs.map +1 -0
- package/dist/adapters/dummy/backend/embedding.d.cts +41 -0
- package/dist/adapters/dummy/backend/embedding.d.ts +41 -0
- package/dist/adapters/dummy/backend/embedding.js +42 -0
- package/dist/adapters/dummy/backend/embedding.js.map +1 -0
- package/dist/adapters/google-vertex/backend/chat.cjs +21 -0
- package/dist/adapters/google-vertex/backend/chat.cjs.map +1 -0
- package/dist/adapters/google-vertex/backend/chat.d.cts +49 -0
- package/dist/adapters/google-vertex/backend/chat.d.ts +49 -0
- package/dist/adapters/google-vertex/backend/chat.js +19 -0
- package/dist/adapters/google-vertex/backend/chat.js.map +1 -0
- package/dist/adapters/google-vertex/backend/client.cjs +25 -0
- package/dist/adapters/google-vertex/backend/client.cjs.map +1 -0
- package/dist/adapters/google-vertex/backend/client.d.cts +28 -0
- package/dist/adapters/google-vertex/backend/client.d.ts +28 -0
- package/dist/adapters/google-vertex/backend/client.js +23 -0
- package/dist/adapters/google-vertex/backend/client.js.map +1 -0
- package/dist/adapters/google-vertex/backend/embedding.cjs +21 -0
- package/dist/adapters/google-vertex/backend/embedding.cjs.map +1 -0
- package/dist/adapters/google-vertex/backend/embedding.d.cts +40 -0
- package/dist/adapters/google-vertex/backend/embedding.d.ts +40 -0
- package/dist/adapters/google-vertex/backend/embedding.js +19 -0
- package/dist/adapters/google-vertex/backend/embedding.js.map +1 -0
- package/dist/adapters/groq/backend/chat.cjs +24 -0
- package/dist/adapters/groq/backend/chat.cjs.map +1 -0
- package/dist/adapters/groq/backend/chat.d.cts +49 -0
- package/dist/adapters/groq/backend/chat.d.ts +49 -0
- package/dist/adapters/groq/backend/chat.js +22 -0
- package/dist/adapters/groq/backend/chat.js.map +1 -0
- package/dist/adapters/groq/backend/client.cjs +24 -0
- package/dist/adapters/groq/backend/client.cjs.map +1 -0
- package/dist/adapters/groq/backend/client.d.cts +28 -0
- package/dist/adapters/groq/backend/client.d.ts +28 -0
- package/dist/adapters/groq/backend/client.js +22 -0
- package/dist/adapters/groq/backend/client.js.map +1 -0
- package/dist/adapters/groq/backend/embedding.cjs +25 -0
- package/dist/adapters/groq/backend/embedding.cjs.map +1 -0
- package/dist/adapters/groq/backend/embedding.d.cts +40 -0
- package/dist/adapters/groq/backend/embedding.d.ts +40 -0
- package/dist/adapters/groq/backend/embedding.js +23 -0
- package/dist/adapters/groq/backend/embedding.js.map +1 -0
- package/dist/adapters/langchain/backend/chat.cjs +117 -0
- package/dist/adapters/langchain/backend/chat.cjs.map +1 -0
- package/dist/adapters/langchain/backend/chat.d.cts +48 -0
- package/dist/adapters/langchain/backend/chat.d.ts +48 -0
- package/dist/adapters/langchain/backend/chat.js +115 -0
- package/dist/adapters/langchain/backend/chat.js.map +1 -0
- package/dist/adapters/langchain/backend/embedding.cjs +56 -0
- package/dist/adapters/langchain/backend/embedding.cjs.map +1 -0
- package/dist/adapters/langchain/backend/embedding.d.cts +43 -0
- package/dist/adapters/langchain/backend/embedding.d.ts +43 -0
- package/dist/adapters/langchain/backend/embedding.js +54 -0
- package/dist/adapters/langchain/backend/embedding.js.map +1 -0
- package/dist/adapters/langchain/tools.cjs +114 -0
- package/dist/adapters/langchain/tools.cjs.map +1 -0
- package/dist/adapters/langchain/tools.d.cts +44 -0
- package/dist/adapters/langchain/tools.d.ts +44 -0
- package/dist/adapters/langchain/tools.js +92 -0
- package/dist/adapters/langchain/tools.js.map +1 -0
- package/dist/adapters/ollama/backend/chat.cjs +28 -0
- package/dist/adapters/ollama/backend/chat.cjs.map +1 -0
- package/dist/adapters/ollama/backend/chat.d.cts +50 -0
- package/dist/adapters/ollama/backend/chat.d.ts +50 -0
- package/dist/adapters/ollama/backend/chat.js +26 -0
- package/dist/adapters/ollama/backend/chat.js.map +1 -0
- package/dist/adapters/ollama/backend/client.cjs +23 -0
- package/dist/adapters/ollama/backend/client.cjs.map +1 -0
- package/dist/adapters/ollama/backend/client.d.cts +28 -0
- package/dist/adapters/ollama/backend/client.d.ts +28 -0
- package/dist/adapters/ollama/backend/client.js +21 -0
- package/dist/adapters/ollama/backend/client.js.map +1 -0
- package/dist/adapters/ollama/backend/embedding.cjs +21 -0
- package/dist/adapters/ollama/backend/embedding.cjs.map +1 -0
- package/dist/adapters/ollama/backend/embedding.d.cts +40 -0
- package/dist/adapters/ollama/backend/embedding.d.ts +40 -0
- package/dist/adapters/ollama/backend/embedding.js +19 -0
- package/dist/adapters/ollama/backend/embedding.js.map +1 -0
- package/dist/adapters/openai/backend/chat.cjs +21 -0
- package/dist/adapters/openai/backend/chat.cjs.map +1 -0
- package/dist/adapters/openai/backend/chat.d.cts +49 -0
- package/dist/adapters/openai/backend/chat.d.ts +49 -0
- package/dist/adapters/openai/backend/chat.js +19 -0
- package/dist/adapters/openai/backend/chat.js.map +1 -0
- package/dist/adapters/openai/backend/client.cjs +33 -0
- package/dist/adapters/openai/backend/client.cjs.map +1 -0
- package/dist/adapters/openai/backend/client.d.cts +28 -0
- package/dist/adapters/openai/backend/client.d.ts +28 -0
- package/dist/adapters/openai/backend/client.js +31 -0
- package/dist/adapters/openai/backend/client.js.map +1 -0
- package/dist/adapters/openai/backend/embedding.cjs +21 -0
- package/dist/adapters/openai/backend/embedding.cjs.map +1 -0
- package/dist/adapters/openai/backend/embedding.d.cts +40 -0
- package/dist/adapters/openai/backend/embedding.d.ts +40 -0
- package/dist/adapters/openai/backend/embedding.js +19 -0
- package/dist/adapters/openai/backend/embedding.js.map +1 -0
- package/dist/adapters/vercel/backend/chat.cjs +184 -0
- package/dist/adapters/vercel/backend/chat.cjs.map +1 -0
- package/dist/adapters/vercel/backend/chat.d.cts +45 -0
- package/dist/adapters/vercel/backend/chat.d.ts +45 -0
- package/dist/adapters/vercel/backend/chat.js +182 -0
- package/dist/adapters/vercel/backend/chat.js.map +1 -0
- package/dist/adapters/vercel/backend/embedding.cjs +63 -0
- package/dist/adapters/vercel/backend/embedding.cjs.map +1 -0
- package/dist/adapters/vercel/backend/embedding.d.cts +45 -0
- package/dist/adapters/vercel/backend/embedding.d.ts +45 -0
- package/dist/adapters/vercel/backend/embedding.js +61 -0
- package/dist/adapters/vercel/backend/embedding.js.map +1 -0
- package/dist/adapters/watsonx/backend/chat.cjs +199 -0
- package/dist/adapters/watsonx/backend/chat.cjs.map +1 -0
- package/dist/adapters/watsonx/backend/chat.d.cts +56 -0
- package/dist/adapters/watsonx/backend/chat.d.ts +56 -0
- package/dist/adapters/watsonx/backend/chat.js +193 -0
- package/dist/adapters/watsonx/backend/chat.js.map +1 -0
- package/dist/adapters/watsonx/backend/client.cjs +48 -0
- package/dist/adapters/watsonx/backend/client.cjs.map +1 -0
- package/dist/adapters/watsonx/backend/client.d.cts +38 -0
- package/dist/adapters/watsonx/backend/client.d.ts +38 -0
- package/dist/adapters/watsonx/backend/client.js +46 -0
- package/dist/adapters/watsonx/backend/client.js.map +1 -0
- package/dist/adapters/watsonx/backend/embedding.cjs +70 -0
- package/dist/adapters/watsonx/backend/embedding.cjs.map +1 -0
- package/dist/adapters/watsonx/backend/embedding.d.cts +50 -0
- package/dist/adapters/watsonx/backend/embedding.d.ts +50 -0
- package/dist/adapters/watsonx/backend/embedding.js +68 -0
- package/dist/adapters/watsonx/backend/embedding.js.map +1 -0
- package/dist/agent-BbaHVlob.d.cts +84 -0
- package/dist/agent-Bks2fOUl.d.ts +84 -0
- package/dist/agents/base.cjs +73 -0
- package/dist/agents/base.cjs.map +1 -0
- package/dist/agents/base.d.cts +18 -0
- package/dist/agents/base.d.ts +18 -0
- package/dist/agents/base.js +70 -0
- package/dist/agents/base.js.map +1 -0
- package/dist/agents/bee/agent.cjs +193 -0
- package/dist/agents/bee/agent.cjs.map +1 -0
- package/dist/agents/bee/agent.d.cts +32 -0
- package/dist/agents/bee/agent.d.ts +32 -0
- package/dist/agents/bee/agent.js +171 -0
- package/dist/agents/bee/agent.js.map +1 -0
- package/dist/agents/bee/prompts.cjs +176 -0
- package/dist/agents/bee/prompts.cjs.map +1 -0
- package/dist/agents/bee/prompts.d.cts +148 -0
- package/dist/agents/bee/prompts.d.ts +148 -0
- package/dist/agents/bee/prompts.js +166 -0
- package/dist/agents/bee/prompts.js.map +1 -0
- package/dist/agents/bee/runners/base.cjs +103 -0
- package/dist/agents/bee/runners/base.cjs.map +1 -0
- package/dist/agents/bee/runners/base.d.cts +32 -0
- package/dist/agents/bee/runners/base.d.ts +32 -0
- package/dist/agents/bee/runners/base.js +101 -0
- package/dist/agents/bee/runners/base.js.map +1 -0
- package/dist/agents/bee/runners/deep-think/prompts.cjs +92 -0
- package/dist/agents/bee/runners/deep-think/prompts.cjs.map +1 -0
- package/dist/agents/bee/runners/deep-think/prompts.d.cts +145 -0
- package/dist/agents/bee/runners/deep-think/prompts.d.ts +145 -0
- package/dist/agents/bee/runners/deep-think/prompts.js +84 -0
- package/dist/agents/bee/runners/deep-think/prompts.js.map +1 -0
- package/dist/agents/bee/runners/deep-think/runner.cjs +124 -0
- package/dist/agents/bee/runners/deep-think/runner.cjs.map +1 -0
- package/dist/agents/bee/runners/deep-think/runner.d.cts +166 -0
- package/dist/agents/bee/runners/deep-think/runner.d.ts +166 -0
- package/dist/agents/bee/runners/deep-think/runner.js +122 -0
- package/dist/agents/bee/runners/deep-think/runner.js.map +1 -0
- package/dist/agents/bee/runners/default/runner.cjs +416 -0
- package/dist/agents/bee/runners/default/runner.cjs.map +1 -0
- package/dist/agents/bee/runners/default/runner.d.cts +186 -0
- package/dist/agents/bee/runners/default/runner.d.ts +186 -0
- package/dist/agents/bee/runners/default/runner.js +414 -0
- package/dist/agents/bee/runners/default/runner.js.map +1 -0
- package/dist/agents/bee/runners/default/runner.spec.cjs +113 -0
- package/dist/agents/bee/runners/default/runner.spec.cjs.map +1 -0
- package/dist/agents/bee/runners/default/runner.spec.d.cts +2 -0
- package/dist/agents/bee/runners/default/runner.spec.d.ts +2 -0
- package/dist/agents/bee/runners/default/runner.spec.js +111 -0
- package/dist/agents/bee/runners/default/runner.spec.js.map +1 -0
- package/dist/agents/bee/runners/granite/prompts.cjs +94 -0
- package/dist/agents/bee/runners/granite/prompts.cjs.map +1 -0
- package/dist/agents/bee/runners/granite/prompts.d.cts +145 -0
- package/dist/agents/bee/runners/granite/prompts.d.ts +145 -0
- package/dist/agents/bee/runners/granite/prompts.js +86 -0
- package/dist/agents/bee/runners/granite/prompts.js.map +1 -0
- package/dist/agents/bee/runners/granite/runner.cjs +102 -0
- package/dist/agents/bee/runners/granite/runner.cjs.map +1 -0
- package/dist/agents/bee/runners/granite/runner.d.cts +167 -0
- package/dist/agents/bee/runners/granite/runner.d.ts +167 -0
- package/dist/agents/bee/runners/granite/runner.js +100 -0
- package/dist/agents/bee/runners/granite/runner.js.map +1 -0
- package/dist/agents/bee/types.cjs +4 -0
- package/dist/agents/bee/types.cjs.map +1 -0
- package/dist/agents/bee/types.d.cts +164 -0
- package/dist/agents/bee/types.d.ts +164 -0
- package/dist/agents/bee/types.js +3 -0
- package/dist/agents/bee/types.js.map +1 -0
- package/dist/agents/experimental/replan/agent.cjs +119 -0
- package/dist/agents/experimental/replan/agent.cjs.map +1 -0
- package/dist/agents/experimental/replan/agent.d.cts +96 -0
- package/dist/agents/experimental/replan/agent.d.ts +96 -0
- package/dist/agents/experimental/replan/agent.js +117 -0
- package/dist/agents/experimental/replan/agent.js.map +1 -0
- package/dist/agents/experimental/replan/prompts.cjs +89 -0
- package/dist/agents/experimental/replan/prompts.cjs.map +1 -0
- package/dist/agents/experimental/replan/prompts.d.cts +153 -0
- package/dist/agents/experimental/replan/prompts.d.ts +153 -0
- package/dist/agents/experimental/replan/prompts.js +85 -0
- package/dist/agents/experimental/replan/prompts.js.map +1 -0
- package/dist/agents/experimental/streamlit/agent.cjs +161 -0
- package/dist/agents/experimental/streamlit/agent.cjs.map +1 -0
- package/dist/agents/experimental/streamlit/agent.d.cts +95 -0
- package/dist/agents/experimental/streamlit/agent.d.ts +95 -0
- package/dist/agents/experimental/streamlit/agent.js +159 -0
- package/dist/agents/experimental/streamlit/agent.js.map +1 -0
- package/dist/agents/experimental/streamlit/prompts.cjs +312 -0
- package/dist/agents/experimental/streamlit/prompts.cjs.map +1 -0
- package/dist/agents/experimental/streamlit/prompts.d.cts +30 -0
- package/dist/agents/experimental/streamlit/prompts.d.ts +30 -0
- package/dist/agents/experimental/streamlit/prompts.js +310 -0
- package/dist/agents/experimental/streamlit/prompts.js.map +1 -0
- package/dist/agents/types.cjs +4 -0
- package/dist/agents/types.cjs.map +1 -0
- package/dist/agents/types.d.cts +18 -0
- package/dist/agents/types.d.ts +18 -0
- package/dist/agents/types.js +3 -0
- package/dist/agents/types.js.map +1 -0
- package/dist/backend/backend.cjs +45 -0
- package/dist/backend/backend.cjs.map +1 -0
- package/dist/backend/backend.d.cts +56 -0
- package/dist/backend/backend.d.ts +56 -0
- package/dist/backend/backend.js +43 -0
- package/dist/backend/backend.js.map +1 -0
- package/dist/backend/chat.cjs +270 -0
- package/dist/backend/chat.cjs.map +1 -0
- package/dist/backend/chat.d.cts +141 -0
- package/dist/backend/chat.d.ts +141 -0
- package/dist/backend/chat.js +267 -0
- package/dist/backend/chat.js.map +1 -0
- package/dist/backend/client.cjs +40 -0
- package/dist/backend/client.cjs.map +1 -0
- package/dist/backend/client.d.cts +33 -0
- package/dist/backend/client.d.ts +33 -0
- package/dist/backend/client.js +38 -0
- package/dist/backend/client.js.map +1 -0
- package/dist/backend/constants.cjs +62 -0
- package/dist/backend/constants.cjs.map +1 -0
- package/dist/backend/constants.d.cts +62 -0
- package/dist/backend/constants.d.ts +62 -0
- package/dist/backend/constants.js +60 -0
- package/dist/backend/constants.js.map +1 -0
- package/dist/backend/core.cjs +42 -0
- package/dist/backend/core.cjs.map +1 -0
- package/dist/backend/core.d.cts +23 -0
- package/dist/backend/core.d.ts +23 -0
- package/dist/backend/core.js +7 -0
- package/dist/backend/core.js.map +1 -0
- package/dist/backend/embedding.cjs +70 -0
- package/dist/backend/embedding.cjs.map +1 -0
- package/dist/backend/embedding.d.cts +50 -0
- package/dist/backend/embedding.d.ts +50 -0
- package/dist/backend/embedding.js +68 -0
- package/dist/backend/embedding.js.map +1 -0
- package/dist/backend/errors.cjs +27 -0
- package/dist/backend/errors.cjs.map +1 -0
- package/dist/backend/errors.d.cts +28 -0
- package/dist/backend/errors.d.ts +28 -0
- package/dist/backend/errors.js +23 -0
- package/dist/backend/errors.js.map +1 -0
- package/dist/backend/message.cjs +201 -0
- package/dist/backend/message.cjs.map +1 -0
- package/dist/backend/message.d.cts +85 -0
- package/dist/backend/message.d.ts +85 -0
- package/dist/backend/message.js +193 -0
- package/dist/backend/message.js.map +1 -0
- package/dist/backend/utils.cjs +39 -0
- package/dist/backend/utils.cjs.map +1 -0
- package/dist/backend/utils.d.cts +29 -0
- package/dist/backend/utils.d.ts +29 -0
- package/dist/backend/utils.js +36 -0
- package/dist/backend/utils.js.map +1 -0
- package/dist/base-Csr9guq2.d.cts +66 -0
- package/dist/base-DHhpWHQm.d.ts +66 -0
- package/dist/cache/base.cjs +16 -0
- package/dist/cache/base.cjs.map +1 -0
- package/dist/cache/base.d.cts +31 -0
- package/dist/cache/base.d.ts +31 -0
- package/dist/cache/base.js +14 -0
- package/dist/cache/base.js.map +1 -0
- package/dist/cache/decoratorCache.cjs +289 -0
- package/dist/cache/decoratorCache.cjs.map +1 -0
- package/dist/cache/decoratorCache.d.cts +66 -0
- package/dist/cache/decoratorCache.d.ts +66 -0
- package/dist/cache/decoratorCache.js +259 -0
- package/dist/cache/decoratorCache.js.map +1 -0
- package/dist/cache/fileCache.cjs +121 -0
- package/dist/cache/fileCache.cjs.map +1 -0
- package/dist/cache/fileCache.d.cts +48 -0
- package/dist/cache/fileCache.d.ts +48 -0
- package/dist/cache/fileCache.js +115 -0
- package/dist/cache/fileCache.js.map +1 -0
- package/dist/cache/nullCache.cjs +40 -0
- package/dist/cache/nullCache.cjs.map +1 -0
- package/dist/cache/nullCache.d.cts +36 -0
- package/dist/cache/nullCache.d.ts +36 -0
- package/dist/cache/nullCache.js +38 -0
- package/dist/cache/nullCache.js.map +1 -0
- package/dist/cache/slidingCache.cjs +81 -0
- package/dist/cache/slidingCache.cjs.map +1 -0
- package/dist/cache/slidingCache.d.cts +53 -0
- package/dist/cache/slidingCache.d.ts +53 -0
- package/dist/cache/slidingCache.js +79 -0
- package/dist/cache/slidingCache.js.map +1 -0
- package/dist/cache/unconstrainedCache.cjs +46 -0
- package/dist/cache/unconstrainedCache.cjs.map +1 -0
- package/dist/cache/unconstrainedCache.d.cts +37 -0
- package/dist/cache/unconstrainedCache.d.ts +37 -0
- package/dist/cache/unconstrainedCache.js +44 -0
- package/dist/cache/unconstrainedCache.js.map +1 -0
- package/dist/context.cjs +162 -0
- package/dist/context.cjs.map +1 -0
- package/dist/context.d.cts +79 -0
- package/dist/context.d.ts +79 -0
- package/dist/context.js +159 -0
- package/dist/context.js.map +1 -0
- package/dist/emitter/emitter.cjs +222 -0
- package/dist/emitter/emitter.cjs.map +1 -0
- package/dist/emitter/emitter.d.cts +4 -0
- package/dist/emitter/emitter.d.ts +4 -0
- package/dist/emitter/emitter.js +220 -0
- package/dist/emitter/emitter.js.map +1 -0
- package/dist/emitter/errors.cjs +15 -0
- package/dist/emitter/errors.cjs.map +1 -0
- package/dist/emitter/errors.d.cts +24 -0
- package/dist/emitter/errors.d.ts +24 -0
- package/dist/emitter/errors.js +13 -0
- package/dist/emitter/errors.js.map +1 -0
- package/dist/emitter/types.cjs +4 -0
- package/dist/emitter/types.cjs.map +1 -0
- package/dist/emitter/types.d.cts +4 -0
- package/dist/emitter/types.d.ts +4 -0
- package/dist/emitter/types.js +3 -0
- package/dist/emitter/types.js.map +1 -0
- package/dist/emitter/utils.cjs +38 -0
- package/dist/emitter/utils.cjs.map +1 -0
- package/dist/emitter/utils.d.cts +21 -0
- package/dist/emitter/utils.d.ts +21 -0
- package/dist/emitter/utils.js +33 -0
- package/dist/emitter/utils.js.map +1 -0
- package/dist/emitter-BWtGHYn0.d.cts +121 -0
- package/dist/emitter-l0W9gC1A.d.ts +121 -0
- package/dist/errors.cjs +144 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +50 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.js +116 -0
- package/dist/errors.js.map +1 -0
- package/dist/index.cjs +49 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.cts +23 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/instrumentation/config.cjs +12 -0
- package/dist/instrumentation/config.cjs.map +1 -0
- package/dist/instrumentation/config.d.cts +19 -0
- package/dist/instrumentation/config.d.ts +19 -0
- package/dist/instrumentation/config.js +9 -0
- package/dist/instrumentation/config.js.map +1 -0
- package/dist/instrumentation/create-telemetry-middleware.cjs +239 -0
- package/dist/instrumentation/create-telemetry-middleware.cjs.map +1 -0
- package/dist/instrumentation/create-telemetry-middleware.d.cts +26 -0
- package/dist/instrumentation/create-telemetry-middleware.d.ts +26 -0
- package/dist/instrumentation/create-telemetry-middleware.js +237 -0
- package/dist/instrumentation/create-telemetry-middleware.js.map +1 -0
- package/dist/instrumentation/helpers/create-span.cjs +36 -0
- package/dist/instrumentation/helpers/create-span.cjs.map +1 -0
- package/dist/instrumentation/helpers/create-span.d.cts +34 -0
- package/dist/instrumentation/helpers/create-span.d.ts +34 -0
- package/dist/instrumentation/helpers/create-span.js +34 -0
- package/dist/instrumentation/helpers/create-span.js.map +1 -0
- package/dist/instrumentation/helpers/get-error-safe.cjs +20 -0
- package/dist/instrumentation/helpers/get-error-safe.cjs.map +1 -0
- package/dist/instrumentation/helpers/get-error-safe.d.cts +18 -0
- package/dist/instrumentation/helpers/get-error-safe.d.ts +18 -0
- package/dist/instrumentation/helpers/get-error-safe.js +18 -0
- package/dist/instrumentation/helpers/get-error-safe.js.map +1 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.cjs +27 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.cjs.map +1 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.d.cts +18 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.d.ts +18 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.js +25 -0
- package/dist/instrumentation/helpers/get-serialized-object-safe.js.map +1 -0
- package/dist/instrumentation/helpers/id-name-manager.cjs +34 -0
- package/dist/instrumentation/helpers/id-name-manager.cjs.map +1 -0
- package/dist/instrumentation/helpers/id-name-manager.d.cts +31 -0
- package/dist/instrumentation/helpers/id-name-manager.d.ts +31 -0
- package/dist/instrumentation/helpers/id-name-manager.js +32 -0
- package/dist/instrumentation/helpers/id-name-manager.js.map +1 -0
- package/dist/instrumentation/helpers/trace-serializer.cjs +30 -0
- package/dist/instrumentation/helpers/trace-serializer.cjs.map +1 -0
- package/dist/instrumentation/helpers/trace-serializer.d.cts +20 -0
- package/dist/instrumentation/helpers/trace-serializer.d.ts +20 -0
- package/dist/instrumentation/helpers/trace-serializer.js +28 -0
- package/dist/instrumentation/helpers/trace-serializer.js.map +1 -0
- package/dist/instrumentation/helpers/utils.cjs +14 -0
- package/dist/instrumentation/helpers/utils.cjs.map +1 -0
- package/dist/instrumentation/helpers/utils.d.cts +40 -0
- package/dist/instrumentation/helpers/utils.d.ts +40 -0
- package/dist/instrumentation/helpers/utils.js +12 -0
- package/dist/instrumentation/helpers/utils.js.map +1 -0
- package/dist/instrumentation/logger.cjs +12 -0
- package/dist/instrumentation/logger.cjs.map +1 -0
- package/dist/instrumentation/logger.d.cts +26 -0
- package/dist/instrumentation/logger.d.ts +26 -0
- package/dist/instrumentation/logger.js +10 -0
- package/dist/instrumentation/logger.js.map +1 -0
- package/dist/instrumentation/tracer.cjs +84 -0
- package/dist/instrumentation/tracer.cjs.map +1 -0
- package/dist/instrumentation/tracer.d.cts +36 -0
- package/dist/instrumentation/tracer.d.ts +36 -0
- package/dist/instrumentation/tracer.js +76 -0
- package/dist/instrumentation/tracer.js.map +1 -0
- package/dist/instrumentation/types.cjs +4 -0
- package/dist/instrumentation/types.cjs.map +1 -0
- package/dist/instrumentation/types.d.cts +39 -0
- package/dist/instrumentation/types.d.ts +39 -0
- package/dist/instrumentation/types.js +3 -0
- package/dist/instrumentation/types.js.map +1 -0
- package/dist/internals/env.cjs +43 -0
- package/dist/internals/env.cjs.map +1 -0
- package/dist/internals/env.d.cts +27 -0
- package/dist/internals/env.d.ts +27 -0
- package/dist/internals/env.js +39 -0
- package/dist/internals/env.js.map +1 -0
- package/dist/internals/fetcher.cjs +189 -0
- package/dist/internals/fetcher.cjs.map +1 -0
- package/dist/internals/fetcher.d.cts +101 -0
- package/dist/internals/fetcher.d.ts +101 -0
- package/dist/internals/fetcher.js +185 -0
- package/dist/internals/fetcher.js.map +1 -0
- package/dist/internals/helpers/array.cjs +30 -0
- package/dist/internals/helpers/array.cjs.map +1 -0
- package/dist/internals/helpers/array.d.cts +21 -0
- package/dist/internals/helpers/array.d.ts +21 -0
- package/dist/internals/helpers/array.js +26 -0
- package/dist/internals/helpers/array.js.map +1 -0
- package/dist/internals/helpers/cancellation.cjs +29 -0
- package/dist/internals/helpers/cancellation.cjs.map +1 -0
- package/dist/internals/helpers/cancellation.d.cts +19 -0
- package/dist/internals/helpers/cancellation.d.ts +19 -0
- package/dist/internals/helpers/cancellation.js +26 -0
- package/dist/internals/helpers/cancellation.js.map +1 -0
- package/dist/internals/helpers/counter.cjs +53 -0
- package/dist/internals/helpers/counter.cjs.map +1 -0
- package/dist/internals/helpers/counter.d.cts +40 -0
- package/dist/internals/helpers/counter.d.ts +40 -0
- package/dist/internals/helpers/counter.js +51 -0
- package/dist/internals/helpers/counter.js.map +1 -0
- package/dist/internals/helpers/general.cjs +31 -0
- package/dist/internals/helpers/general.cjs.map +1 -0
- package/dist/internals/helpers/general.d.cts +25 -0
- package/dist/internals/helpers/general.d.ts +25 -0
- package/dist/internals/helpers/general.js +28 -0
- package/dist/internals/helpers/general.js.map +1 -0
- package/dist/internals/helpers/guards.cjs +34 -0
- package/dist/internals/helpers/guards.cjs.map +1 -0
- package/dist/internals/helpers/guards.d.cts +19 -0
- package/dist/internals/helpers/guards.d.ts +19 -0
- package/dist/internals/helpers/guards.js +12 -0
- package/dist/internals/helpers/guards.js.map +1 -0
- package/dist/internals/helpers/hash.cjs +21 -0
- package/dist/internals/helpers/hash.cjs.map +1 -0
- package/dist/internals/helpers/hash.d.cts +19 -0
- package/dist/internals/helpers/hash.d.ts +19 -0
- package/dist/internals/helpers/hash.js +18 -0
- package/dist/internals/helpers/hash.js.map +1 -0
- package/dist/internals/helpers/map.cjs +16 -0
- package/dist/internals/helpers/map.cjs.map +1 -0
- package/dist/internals/helpers/map.d.cts +18 -0
- package/dist/internals/helpers/map.d.ts +18 -0
- package/dist/internals/helpers/map.js +14 -0
- package/dist/internals/helpers/map.js.map +1 -0
- package/dist/internals/helpers/math.cjs +31 -0
- package/dist/internals/helpers/math.cjs.map +1 -0
- package/dist/internals/helpers/math.d.cts +19 -0
- package/dist/internals/helpers/math.d.ts +19 -0
- package/dist/internals/helpers/math.js +28 -0
- package/dist/internals/helpers/math.js.map +1 -0
- package/dist/internals/helpers/number.cjs +48 -0
- package/dist/internals/helpers/number.cjs.map +1 -0
- package/dist/internals/helpers/number.d.cts +23 -0
- package/dist/internals/helpers/number.d.ts +23 -0
- package/dist/internals/helpers/number.js +24 -0
- package/dist/internals/helpers/number.js.map +1 -0
- package/dist/internals/helpers/object.cjs +142 -0
- package/dist/internals/helpers/object.cjs.map +1 -0
- package/dist/internals/helpers/object.d.cts +35 -0
- package/dist/internals/helpers/object.d.ts +35 -0
- package/dist/internals/helpers/object.js +108 -0
- package/dist/internals/helpers/object.js.map +1 -0
- package/dist/internals/helpers/paginate.cjs +28 -0
- package/dist/internals/helpers/paginate.cjs.map +1 -0
- package/dist/internals/helpers/paginate.d.cts +28 -0
- package/dist/internals/helpers/paginate.d.ts +28 -0
- package/dist/internals/helpers/paginate.js +26 -0
- package/dist/internals/helpers/paginate.js.map +1 -0
- package/dist/internals/helpers/promise.cjs +143 -0
- package/dist/internals/helpers/promise.cjs.map +1 -0
- package/dist/internals/helpers/promise.d.cts +45 -0
- package/dist/internals/helpers/promise.d.ts +45 -0
- package/dist/internals/helpers/promise.js +132 -0
- package/dist/internals/helpers/promise.js.map +1 -0
- package/dist/internals/helpers/prototype.cjs +56 -0
- package/dist/internals/helpers/prototype.cjs.map +1 -0
- package/dist/internals/helpers/prototype.d.cts +24 -0
- package/dist/internals/helpers/prototype.d.ts +24 -0
- package/dist/internals/helpers/prototype.js +32 -0
- package/dist/internals/helpers/prototype.js.map +1 -0
- package/dist/internals/helpers/retry.cjs +44 -0
- package/dist/internals/helpers/retry.cjs.map +1 -0
- package/dist/internals/helpers/retry.d.cts +29 -0
- package/dist/internals/helpers/retry.d.ts +29 -0
- package/dist/internals/helpers/retry.js +42 -0
- package/dist/internals/helpers/retry.js.map +1 -0
- package/dist/internals/helpers/retryable.cjs +169 -0
- package/dist/internals/helpers/retryable.cjs.map +1 -0
- package/dist/internals/helpers/retryable.d.cts +71 -0
- package/dist/internals/helpers/retryable.d.ts +71 -0
- package/dist/internals/helpers/retryable.js +146 -0
- package/dist/internals/helpers/retryable.js.map +1 -0
- package/dist/internals/helpers/schema.cjs +78 -0
- package/dist/internals/helpers/schema.cjs.map +1 -0
- package/dist/internals/helpers/schema.d.cts +36 -0
- package/dist/internals/helpers/schema.d.ts +36 -0
- package/dist/internals/helpers/schema.js +69 -0
- package/dist/internals/helpers/schema.js.map +1 -0
- package/dist/internals/helpers/stream.cjs +21 -0
- package/dist/internals/helpers/stream.cjs.map +1 -0
- package/dist/internals/helpers/stream.d.cts +19 -0
- package/dist/internals/helpers/stream.d.ts +19 -0
- package/dist/internals/helpers/stream.js +18 -0
- package/dist/internals/helpers/stream.js.map +1 -0
- package/dist/internals/helpers/string.cjs +230 -0
- package/dist/internals/helpers/string.cjs.map +1 -0
- package/dist/internals/helpers/string.d.cts +57 -0
- package/dist/internals/helpers/string.d.ts +57 -0
- package/dist/internals/helpers/string.js +201 -0
- package/dist/internals/helpers/string.js.map +1 -0
- package/dist/internals/helpers/weakRef.cjs +65 -0
- package/dist/internals/helpers/weakRef.cjs.map +1 -0
- package/dist/internals/helpers/weakRef.d.cts +29 -0
- package/dist/internals/helpers/weakRef.d.ts +29 -0
- package/dist/internals/helpers/weakRef.js +61 -0
- package/dist/internals/helpers/weakRef.js.map +1 -0
- package/dist/internals/serializable.cjs +63 -0
- package/dist/internals/serializable.cjs.map +1 -0
- package/dist/internals/serializable.d.cts +36 -0
- package/dist/internals/serializable.d.ts +36 -0
- package/dist/internals/serializable.js +61 -0
- package/dist/internals/serializable.js.map +1 -0
- package/dist/internals/types.cjs +15 -0
- package/dist/internals/types.cjs.map +1 -0
- package/dist/internals/types.d.cts +92 -0
- package/dist/internals/types.d.ts +92 -0
- package/dist/internals/types.js +13 -0
- package/dist/internals/types.js.map +1 -0
- package/dist/logger/logger.cjs +210 -0
- package/dist/logger/logger.cjs.map +1 -0
- package/dist/logger/logger.d.cts +48 -0
- package/dist/logger/logger.d.ts +48 -0
- package/dist/logger/logger.js +181 -0
- package/dist/logger/logger.js.map +1 -0
- package/dist/logger/pretty.cjs +79 -0
- package/dist/logger/pretty.cjs.map +1 -0
- package/dist/logger/pretty.d.cts +5 -0
- package/dist/logger/pretty.d.ts +5 -0
- package/dist/logger/pretty.js +72 -0
- package/dist/logger/pretty.js.map +1 -0
- package/dist/memory/base.cjs +98 -0
- package/dist/memory/base.cjs.map +1 -0
- package/dist/memory/base.d.cts +44 -0
- package/dist/memory/base.d.ts +44 -0
- package/dist/memory/base.js +93 -0
- package/dist/memory/base.js.map +1 -0
- package/dist/memory/slidingMemory.cjs +79 -0
- package/dist/memory/slidingMemory.cjs.map +1 -0
- package/dist/memory/slidingMemory.d.cts +30 -0
- package/dist/memory/slidingMemory.d.ts +30 -0
- package/dist/memory/slidingMemory.js +77 -0
- package/dist/memory/slidingMemory.js.map +1 -0
- package/dist/memory/summarizeMemory.cjs +82 -0
- package/dist/memory/summarizeMemory.cjs.map +1 -0
- package/dist/memory/summarizeMemory.d.cts +65 -0
- package/dist/memory/summarizeMemory.d.ts +65 -0
- package/dist/memory/summarizeMemory.js +79 -0
- package/dist/memory/summarizeMemory.js.map +1 -0
- package/dist/memory/tokenMemory.cjs +154 -0
- package/dist/memory/tokenMemory.cjs.map +1 -0
- package/dist/memory/tokenMemory.d.cts +55 -0
- package/dist/memory/tokenMemory.d.ts +55 -0
- package/dist/memory/tokenMemory.js +133 -0
- package/dist/memory/tokenMemory.js.map +1 -0
- package/dist/memory/unconstrainedMemory.cjs +43 -0
- package/dist/memory/unconstrainedMemory.cjs.map +1 -0
- package/dist/memory/unconstrainedMemory.d.cts +20 -0
- package/dist/memory/unconstrainedMemory.d.ts +20 -0
- package/dist/memory/unconstrainedMemory.js +41 -0
- package/dist/memory/unconstrainedMemory.js.map +1 -0
- package/dist/parsers/errors.cjs +32 -0
- package/dist/parsers/errors.cjs.map +1 -0
- package/dist/parsers/errors.d.cts +46 -0
- package/dist/parsers/errors.d.ts +46 -0
- package/dist/parsers/errors.js +30 -0
- package/dist/parsers/errors.js.map +1 -0
- package/dist/parsers/field.cjs +192 -0
- package/dist/parsers/field.cjs.map +1 -0
- package/dist/parsers/field.d.cts +68 -0
- package/dist/parsers/field.d.ts +68 -0
- package/dist/parsers/field.js +188 -0
- package/dist/parsers/field.js.map +1 -0
- package/dist/parsers/linePrefix.cjs +312 -0
- package/dist/parsers/linePrefix.cjs.map +1 -0
- package/dist/parsers/linePrefix.d.cts +127 -0
- package/dist/parsers/linePrefix.d.ts +127 -0
- package/dist/parsers/linePrefix.js +305 -0
- package/dist/parsers/linePrefix.js.map +1 -0
- package/dist/serializer/error.cjs +21 -0
- package/dist/serializer/error.cjs.map +1 -0
- package/dist/serializer/error.d.cts +25 -0
- package/dist/serializer/error.d.ts +25 -0
- package/dist/serializer/error.js +19 -0
- package/dist/serializer/error.js.map +1 -0
- package/dist/serializer/serializer.cjs +543 -0
- package/dist/serializer/serializer.cjs.map +1 -0
- package/dist/serializer/serializer.d.cts +4 -0
- package/dist/serializer/serializer.d.ts +4 -0
- package/dist/serializer/serializer.js +521 -0
- package/dist/serializer/serializer.js.map +1 -0
- package/dist/serializer/utils.cjs +261 -0
- package/dist/serializer/utils.cjs.map +1 -0
- package/dist/serializer/utils.d.cts +4 -0
- package/dist/serializer/utils.d.ts +4 -0
- package/dist/serializer/utils.js +226 -0
- package/dist/serializer/utils.js.map +1 -0
- package/dist/serializer-CJx5ZpUx.d.cts +125 -0
- package/dist/serializer-VYDhdryk.d.ts +125 -0
- package/dist/template.cjs +121 -0
- package/dist/template.cjs.map +1 -0
- package/dist/template.d.cts +75 -0
- package/dist/template.d.ts +75 -0
- package/dist/template.js +113 -0
- package/dist/template.js.map +1 -0
- package/dist/tools/arxiv.cjs +212 -0
- package/dist/tools/arxiv.cjs.map +1 -0
- package/dist/tools/arxiv.d.cts +196 -0
- package/dist/tools/arxiv.d.ts +196 -0
- package/dist/tools/arxiv.js +205 -0
- package/dist/tools/arxiv.js.map +1 -0
- package/dist/tools/base.cjs +434 -0
- package/dist/tools/base.cjs.map +1 -0
- package/dist/tools/base.d.cts +156 -0
- package/dist/tools/base.d.ts +156 -0
- package/dist/tools/base.js +407 -0
- package/dist/tools/base.js.map +1 -0
- package/dist/tools/calculator.cjs +74 -0
- package/dist/tools/calculator.cjs.map +1 -0
- package/dist/tools/calculator.d.cts +63 -0
- package/dist/tools/calculator.d.ts +63 -0
- package/dist/tools/calculator.js +72 -0
- package/dist/tools/calculator.js.map +1 -0
- package/dist/tools/custom.cjs +122 -0
- package/dist/tools/custom.cjs.map +1 -0
- package/dist/tools/custom.d.cts +110 -0
- package/dist/tools/custom.d.ts +110 -0
- package/dist/tools/custom.js +118 -0
- package/dist/tools/custom.js.map +1 -0
- package/dist/tools/database/elasticsearch.cjs +157 -0
- package/dist/tools/database/elasticsearch.cjs.map +1 -0
- package/dist/tools/database/elasticsearch.d.cts +78 -0
- package/dist/tools/database/elasticsearch.d.ts +78 -0
- package/dist/tools/database/elasticsearch.js +154 -0
- package/dist/tools/database/elasticsearch.js.map +1 -0
- package/dist/tools/database/metadata.cjs +114 -0
- package/dist/tools/database/metadata.cjs.map +1 -0
- package/dist/tools/database/metadata.d.cts +27 -0
- package/dist/tools/database/metadata.d.ts +27 -0
- package/dist/tools/database/metadata.js +112 -0
- package/dist/tools/database/metadata.js.map +1 -0
- package/dist/tools/database/milvus.cjs +191 -0
- package/dist/tools/database/milvus.cjs.map +1 -0
- package/dist/tools/database/milvus.d.cts +89 -0
- package/dist/tools/database/milvus.d.ts +89 -0
- package/dist/tools/database/milvus.js +188 -0
- package/dist/tools/database/milvus.js.map +1 -0
- package/dist/tools/database/sql.cjs +174 -0
- package/dist/tools/database/sql.cjs.map +1 -0
- package/dist/tools/database/sql.d.cts +71 -0
- package/dist/tools/database/sql.d.ts +71 -0
- package/dist/tools/database/sql.js +170 -0
- package/dist/tools/database/sql.js.map +1 -0
- package/dist/tools/llm.cjs +74 -0
- package/dist/tools/llm.cjs.map +1 -0
- package/dist/tools/llm.d.cts +68 -0
- package/dist/tools/llm.d.ts +68 -0
- package/dist/tools/llm.js +72 -0
- package/dist/tools/llm.js.map +1 -0
- package/dist/tools/mcp.cjs +73 -0
- package/dist/tools/mcp.cjs.map +1 -0
- package/dist/tools/mcp.d.cts +52 -0
- package/dist/tools/mcp.d.ts +52 -0
- package/dist/tools/mcp.js +70 -0
- package/dist/tools/mcp.js.map +1 -0
- package/dist/tools/openapi.cjs +178 -0
- package/dist/tools/openapi.cjs.map +1 -0
- package/dist/tools/openapi.d.cts +59 -0
- package/dist/tools/openapi.d.ts +59 -0
- package/dist/tools/openapi.js +175 -0
- package/dist/tools/openapi.js.map +1 -0
- package/dist/tools/python/output.cjs +65 -0
- package/dist/tools/python/output.cjs.map +1 -0
- package/dist/tools/python/output.d.cts +52 -0
- package/dist/tools/python/output.d.ts +52 -0
- package/dist/tools/python/output.js +63 -0
- package/dist/tools/python/output.js.map +1 -0
- package/dist/tools/python/python.cjs +163 -0
- package/dist/tools/python/python.cjs.map +1 -0
- package/dist/tools/python/python.d.cts +91 -0
- package/dist/tools/python/python.d.ts +91 -0
- package/dist/tools/python/python.js +160 -0
- package/dist/tools/python/python.js.map +1 -0
- package/dist/tools/python/storage.cjs +170 -0
- package/dist/tools/python/storage.cjs.map +1 -0
- package/dist/tools/python/storage.d.cts +83 -0
- package/dist/tools/python/storage.d.ts +83 -0
- package/dist/tools/python/storage.js +142 -0
- package/dist/tools/python/storage.js.map +1 -0
- package/dist/tools/search/base.cjs +77 -0
- package/dist/tools/search/base.cjs.map +1 -0
- package/dist/tools/search/base.d.cts +49 -0
- package/dist/tools/search/base.d.ts +49 -0
- package/dist/tools/search/base.js +55 -0
- package/dist/tools/search/base.js.map +1 -0
- package/dist/tools/search/duckDuckGoSearch.cjs +146 -0
- package/dist/tools/search/duckDuckGoSearch.cjs.map +1 -0
- package/dist/tools/search/duckDuckGoSearch.d.cts +75 -0
- package/dist/tools/search/duckDuckGoSearch.d.ts +75 -0
- package/dist/tools/search/duckDuckGoSearch.js +136 -0
- package/dist/tools/search/duckDuckGoSearch.js.map +1 -0
- package/dist/tools/search/googleSearch.cjs +155 -0
- package/dist/tools/search/googleSearch.cjs.map +1 -0
- package/dist/tools/search/googleSearch.d.cts +62 -0
- package/dist/tools/search/googleSearch.d.ts +62 -0
- package/dist/tools/search/googleSearch.js +152 -0
- package/dist/tools/search/googleSearch.js.map +1 -0
- package/dist/tools/search/searXNGSearch.cjs +86 -0
- package/dist/tools/search/searXNGSearch.cjs.map +1 -0
- package/dist/tools/search/searXNGSearch.d.cts +61 -0
- package/dist/tools/search/searXNGSearch.d.ts +61 -0
- package/dist/tools/search/searXNGSearch.js +83 -0
- package/dist/tools/search/searXNGSearch.js.map +1 -0
- package/dist/tools/search/wikipedia.cjs +338 -0
- package/dist/tools/search/wikipedia.cjs.map +1 -0
- package/dist/tools/search/wikipedia.d.cts +108 -0
- package/dist/tools/search/wikipedia.d.ts +108 -0
- package/dist/tools/search/wikipedia.js +310 -0
- package/dist/tools/search/wikipedia.js.map +1 -0
- package/dist/tools/similarity.cjs +61 -0
- package/dist/tools/similarity.cjs.map +1 -0
- package/dist/tools/similarity.d.cts +90 -0
- package/dist/tools/similarity.d.ts +90 -0
- package/dist/tools/similarity.js +58 -0
- package/dist/tools/similarity.js.map +1 -0
- package/dist/tools/weather/openMeteo.cjs +221 -0
- package/dist/tools/weather/openMeteo.cjs.map +1 -0
- package/dist/tools/weather/openMeteo.d.cts +123 -0
- package/dist/tools/weather/openMeteo.d.ts +123 -0
- package/dist/tools/weather/openMeteo.js +218 -0
- package/dist/tools/weather/openMeteo.js.map +1 -0
- package/dist/tools/web/webCrawler.cjs +111 -0
- package/dist/tools/web/webCrawler.cjs.map +1 -0
- package/dist/tools/web/webCrawler.d.cts +66 -0
- package/dist/tools/web/webCrawler.d.ts +66 -0
- package/dist/tools/web/webCrawler.js +108 -0
- package/dist/tools/web/webCrawler.js.map +1 -0
- package/dist/version.cjs +9 -0
- package/dist/version.cjs.map +1 -0
- package/dist/version.d.cts +18 -0
- package/dist/version.d.ts +18 -0
- package/dist/version.js +9 -0
- package/dist/version.js.map +1 -0
- package/dist/workflows/agent.cjs +95 -0
- package/dist/workflows/agent.cjs.map +1 -0
- package/dist/workflows/agent.d.cts +166 -0
- package/dist/workflows/agent.d.ts +166 -0
- package/dist/workflows/agent.js +93 -0
- package/dist/workflows/agent.js.map +1 -0
- package/dist/workflows/workflow.cjs +222 -0
- package/dist/workflows/workflow.cjs.map +1 -0
- package/dist/workflows/workflow.d.cts +118 -0
- package/dist/workflows/workflow.d.ts +118 -0
- package/dist/workflows/workflow.js +219 -0
- package/dist/workflows/workflow.js.map +1 -0
- package/package.json +339 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/python/python.ts"],"names":["PythonTool","Tool","name","description","join","storage","files","emitter","Emitter","root","child","namespace","creator","inputSchema","list","fileNames","unique","map","filename","z","object","language","enum","describe","code","string","hasMinLength","inputFiles","array","preprocess","options","codeInterpreter","url","ValidationError","message","data","propertyName","register","_run","input","_options","run","pipe","uniqueBy","f","filter","file","isIncludedIn","upload","getSourceCode","llm","promptTemplate","response","create","messages","UserMessage","render","abortSignal","signal","getTextContent","trim","prefix","result","callCodeInterpreter","body","source_code","Object","fromEntries","pythonId","filesOutput","download","entries","path","_","startsWith","String","slice","length","every","PythonToolOutput","stdout","stderr","exit_code","createSnapshot","shallowCopy","loadSnapshot","snapshot","fetch","method","headers","JSON","stringify","catch","error","cause","ToolError","ok","status","Error","text","json"],"mappings":"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","file":"python.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n Tool,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { filter, isIncludedIn, map, pipe, unique, uniqueBy } from \"remeda\";\nimport { PythonFile, PythonStorage } from \"@/tools/python/storage.js\";\nimport { PythonToolOutput } from \"@/tools/python/output.js\";\nimport { ValidationError } from \"ajv\";\nimport { ConnectionOptions } from \"node:tls\";\nimport { RunContext } from \"@/context.js\";\nimport { hasMinLength } from \"@/internals/helpers/array.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { UserMessage } from \"@/backend/message.js\";\n\nexport interface CodeInterpreterOptions {\n url: string;\n connectionOptions?: ConnectionOptions;\n}\n\nexport interface PythonToolOptions extends BaseToolOptions {\n codeInterpreter: CodeInterpreterOptions;\n preprocess?: {\n llm: ChatModel;\n promptTemplate: PromptTemplate.infer<{ input: string }>;\n };\n storage: PythonStorage;\n}\n\nexport class PythonTool extends Tool<PythonToolOutput, PythonToolOptions> {\n name = \"Python\";\n description = [\n \"Run Python and/or shell code and return the console output. Use for isolated calculations, computations, data or file manipulation but still prefer assistant's capabilities (IMPORTANT: Do not use for text analysis or summarization).\",\n \"Files provided by the user, or created in a previous run, will be accessible if and only if they are specified in the input. It is necessary to always print() results.\",\n \"The following shell commands are available:\",\n \"Use ffmpeg to convert videos.\",\n \"Use yt-dlp to download videos, and unless specified otherwise use `-S vcodec:h264,res,acodec:m4a` for video and `-x --audio-format mp3` for audio-only.\",\n \"Use pandoc to convert documents between formats (like MD, DOC, DOCX, PDF) -- and don't forget that you can create PDFs by writing markdown and then converting.\",\n \"In Python, the following modules are available:\",\n \"Use numpy, pandas, scipy and sympy for working with data.\",\n \"Use matplotlib to plot charts.\",\n \"Use pillow (import PIL) to create and manipulate images.\",\n \"Use moviepy for complex manipulations with videos.\",\n \"Use PyPDF2, pikepdf, or fitz to manipulate PDFs.\",\n \"Use pdf2image to convert PDF to images.\",\n \"Other Python libraries are also available -- however, prefer using the ones above.\",\n \"Prefer using qualified imports -- `import library; library.thing()` instead of `import thing from library`.\",\n \"Do not attempt to install libraries manually -- it will not work.\",\n \"Each invocation of Python runs in a completely fresh VM -- it will not remember anything from before.\",\n \"Do not use this tool multiple times in a row, always write the full code you want to run in a single invocation.\",\n ].join(\" \");\n\n public readonly storage: PythonStorage;\n protected files: PythonFile[] = [];\n\n public readonly emitter: ToolEmitter<ToolInput<this>, PythonToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"python\"],\n creator: this,\n });\n\n async inputSchema() {\n this.files = await this.storage.list();\n const fileNames = unique(map(this.files, ({ filename }) => filename));\n return z.object({\n language: z.enum([\"python\", \"shell\"]).describe(\"Use shell for ffmpeg, pandoc, yt-dlp\"),\n code: z.string().describe(\"full source code file that will be executed\"),\n ...(hasMinLength(fileNames, 1)\n ? {\n inputFiles: z\n .array(z.enum(fileNames))\n .describe(\n \"To access an existing file, you must specify it; otherwise, the file will not be accessible. IMPORTANT: If the file is not provided in the input, it will not be accessible.\",\n ),\n }\n : {}),\n });\n }\n\n protected readonly preprocess;\n\n public constructor(options: PythonToolOptions) {\n super(options);\n if (!options.codeInterpreter.url) {\n throw new ValidationError([\n {\n message: \"Property must be a valid URL!\",\n data: options,\n propertyName: \"codeInterpreter.url\",\n },\n ]);\n }\n this.preprocess = options.preprocess;\n this.storage = options.storage;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const inputFiles = await pipe(\n this.files ?? (await this.storage.list()),\n uniqueBy((f) => f.filename),\n filter((file) => isIncludedIn(file.filename, (input.inputFiles ?? []) as string[])),\n (files) => this.storage.upload(files),\n );\n\n const getSourceCode = async () => {\n if (this.preprocess) {\n const { llm, promptTemplate } = this.preprocess;\n const response = await llm.create({\n messages: [new UserMessage(promptTemplate.render({ input: input.code }))],\n abortSignal: run.signal,\n });\n return response.getTextContent().trim();\n }\n return input.code;\n };\n\n const prefix = \"/workspace/\";\n\n const result = await callCodeInterpreter({\n url: `${this.options.codeInterpreter.url}/v1/execute`,\n body: {\n source_code: await getSourceCode(),\n files: Object.fromEntries(\n inputFiles.map((file) => [`${prefix}${file.filename}`, file.pythonId]),\n ),\n },\n signal: run.signal,\n });\n\n const filesOutput = await this.storage.download(\n Object.entries(result.files)\n .filter(([path, _]) => path.startsWith(prefix))\n .map(([path, pythonId]) => ({ path: path, pythonId: String(pythonId) }))\n .map((file) => ({ filename: file.path.slice(prefix.length), pythonId: file.pythonId }))\n .filter((file) =>\n inputFiles.every(\n (input) => input.filename !== file.filename || input.pythonId !== file.pythonId,\n ),\n ),\n );\n\n return new PythonToolOutput(result.stdout, result.stderr, result.exit_code, filesOutput);\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n files: shallowCopy(this.files),\n storage: this.storage,\n preprocess: this.preprocess,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n super.loadSnapshot(snapshot);\n }\n}\n\nexport async function callCodeInterpreter({\n url,\n body,\n signal,\n}: {\n url: string;\n body: unknown;\n signal?: AbortSignal;\n}): Promise<Record<string, any>> {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n signal,\n }).catch((error) => {\n if (error.cause.name == \"HTTPParserError\") {\n throw new ToolError(\n \"Request to bee-code-interpreter has failed -- ensure that CODE_INTERPRETER_URL points to the new HTTP endpoint (default port: 50081).\",\n [error],\n );\n } else {\n throw new ToolError(\"Request to bee-code-interpreter has failed.\", [error]);\n }\n });\n\n if (!response?.ok && response.status > 400) {\n throw new ToolError(\n `Request to bee-code-interpreter has failed with HTTP status code ${response.status}.`,\n [new Error(await response.text())],\n );\n }\n\n return await response.json();\n}\n"]}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { BaseCache } from '../../cache/base.cjs';
|
|
2
|
+
import * as promise_based_task from 'promise-based-task';
|
|
3
|
+
import { BaseToolOptions, Tool, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.cjs';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { PromptTemplate } from '../../template.cjs';
|
|
6
|
+
import { PythonStorage, PythonFile } from './storage.cjs';
|
|
7
|
+
import { PythonToolOutput } from './output.cjs';
|
|
8
|
+
import { ConnectionOptions } from 'node:tls';
|
|
9
|
+
import { RunContext } from '../../context.cjs';
|
|
10
|
+
import { E as Emitter } from '../../emitter-BWtGHYn0.cjs';
|
|
11
|
+
import { ChatModel } from '../../backend/chat.cjs';
|
|
12
|
+
import '../../internals/serializable.cjs';
|
|
13
|
+
import '../../internals/types.cjs';
|
|
14
|
+
import '../../internals/helpers/guards.cjs';
|
|
15
|
+
import 'ajv';
|
|
16
|
+
import '../../errors.cjs';
|
|
17
|
+
import '../../internals/helpers/schema.cjs';
|
|
18
|
+
import 'zod-to-json-schema';
|
|
19
|
+
import '../../internals/helpers/promise.cjs';
|
|
20
|
+
import 'fs';
|
|
21
|
+
import '../../backend/message.cjs';
|
|
22
|
+
import 'ai';
|
|
23
|
+
import '../../backend/utils.cjs';
|
|
24
|
+
import '../../backend/constants.cjs';
|
|
25
|
+
import '@ai-sdk/provider';
|
|
26
|
+
|
|
27
|
+
interface CodeInterpreterOptions {
|
|
28
|
+
url: string;
|
|
29
|
+
connectionOptions?: ConnectionOptions;
|
|
30
|
+
}
|
|
31
|
+
interface PythonToolOptions extends BaseToolOptions {
|
|
32
|
+
codeInterpreter: CodeInterpreterOptions;
|
|
33
|
+
preprocess?: {
|
|
34
|
+
llm: ChatModel;
|
|
35
|
+
promptTemplate: PromptTemplate.infer<{
|
|
36
|
+
input: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
storage: PythonStorage;
|
|
40
|
+
}
|
|
41
|
+
declare class PythonTool extends Tool<PythonToolOutput, PythonToolOptions> {
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
readonly storage: PythonStorage;
|
|
45
|
+
protected files: PythonFile[];
|
|
46
|
+
readonly emitter: ToolEmitter<ToolInput<this>, PythonToolOutput>;
|
|
47
|
+
inputSchema(): Promise<z.ZodObject<{
|
|
48
|
+
inputFiles?: z.ZodArray<z.ZodEnum<[any, ...string[]]>, "many"> | undefined;
|
|
49
|
+
language: z.ZodEnum<["python", "shell"]>;
|
|
50
|
+
code: z.ZodString;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
code: string;
|
|
53
|
+
language: "python" | "shell";
|
|
54
|
+
inputFiles?: unknown;
|
|
55
|
+
}, {
|
|
56
|
+
code: string;
|
|
57
|
+
language: "python" | "shell";
|
|
58
|
+
inputFiles?: unknown;
|
|
59
|
+
}>>;
|
|
60
|
+
protected readonly preprocess: {
|
|
61
|
+
llm: ChatModel;
|
|
62
|
+
promptTemplate: PromptTemplate.infer<{
|
|
63
|
+
input: string;
|
|
64
|
+
}>;
|
|
65
|
+
} | undefined;
|
|
66
|
+
constructor(options: PythonToolOptions);
|
|
67
|
+
protected _run(input: ToolInput<this>, _options: Partial<BaseToolRunOptions>, run: RunContext<this>): Promise<PythonToolOutput>;
|
|
68
|
+
createSnapshot(): {
|
|
69
|
+
files: PythonFile[];
|
|
70
|
+
storage: PythonStorage;
|
|
71
|
+
preprocess: {
|
|
72
|
+
llm: ChatModel;
|
|
73
|
+
promptTemplate: PromptTemplate.infer<{
|
|
74
|
+
input: string;
|
|
75
|
+
}>;
|
|
76
|
+
} | undefined;
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
options: PythonToolOptions;
|
|
80
|
+
cache: BaseCache<promise_based_task.Task<PythonToolOutput, any>>;
|
|
81
|
+
emitter: Emitter<any>;
|
|
82
|
+
};
|
|
83
|
+
loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
|
|
84
|
+
}
|
|
85
|
+
declare function callCodeInterpreter({ url, body, signal, }: {
|
|
86
|
+
url: string;
|
|
87
|
+
body: unknown;
|
|
88
|
+
signal?: AbortSignal;
|
|
89
|
+
}): Promise<Record<string, any>>;
|
|
90
|
+
|
|
91
|
+
export { type CodeInterpreterOptions, PythonTool, type PythonToolOptions, callCodeInterpreter };
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { BaseCache } from '../../cache/base.js';
|
|
2
|
+
import * as promise_based_task from 'promise-based-task';
|
|
3
|
+
import { BaseToolOptions, Tool, ToolEmitter, ToolInput, BaseToolRunOptions } from '../base.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { PromptTemplate } from '../../template.js';
|
|
6
|
+
import { PythonStorage, PythonFile } from './storage.js';
|
|
7
|
+
import { PythonToolOutput } from './output.js';
|
|
8
|
+
import { ConnectionOptions } from 'node:tls';
|
|
9
|
+
import { RunContext } from '../../context.js';
|
|
10
|
+
import { E as Emitter } from '../../emitter-l0W9gC1A.js';
|
|
11
|
+
import { ChatModel } from '../../backend/chat.js';
|
|
12
|
+
import '../../internals/serializable.js';
|
|
13
|
+
import '../../internals/types.js';
|
|
14
|
+
import '../../internals/helpers/guards.js';
|
|
15
|
+
import 'ajv';
|
|
16
|
+
import '../../errors.js';
|
|
17
|
+
import '../../internals/helpers/schema.js';
|
|
18
|
+
import 'zod-to-json-schema';
|
|
19
|
+
import '../../internals/helpers/promise.js';
|
|
20
|
+
import 'fs';
|
|
21
|
+
import '../../backend/message.js';
|
|
22
|
+
import 'ai';
|
|
23
|
+
import '../../backend/utils.js';
|
|
24
|
+
import '../../backend/constants.js';
|
|
25
|
+
import '@ai-sdk/provider';
|
|
26
|
+
|
|
27
|
+
interface CodeInterpreterOptions {
|
|
28
|
+
url: string;
|
|
29
|
+
connectionOptions?: ConnectionOptions;
|
|
30
|
+
}
|
|
31
|
+
interface PythonToolOptions extends BaseToolOptions {
|
|
32
|
+
codeInterpreter: CodeInterpreterOptions;
|
|
33
|
+
preprocess?: {
|
|
34
|
+
llm: ChatModel;
|
|
35
|
+
promptTemplate: PromptTemplate.infer<{
|
|
36
|
+
input: string;
|
|
37
|
+
}>;
|
|
38
|
+
};
|
|
39
|
+
storage: PythonStorage;
|
|
40
|
+
}
|
|
41
|
+
declare class PythonTool extends Tool<PythonToolOutput, PythonToolOptions> {
|
|
42
|
+
name: string;
|
|
43
|
+
description: string;
|
|
44
|
+
readonly storage: PythonStorage;
|
|
45
|
+
protected files: PythonFile[];
|
|
46
|
+
readonly emitter: ToolEmitter<ToolInput<this>, PythonToolOutput>;
|
|
47
|
+
inputSchema(): Promise<z.ZodObject<{
|
|
48
|
+
inputFiles?: z.ZodArray<z.ZodEnum<[any, ...string[]]>, "many"> | undefined;
|
|
49
|
+
language: z.ZodEnum<["python", "shell"]>;
|
|
50
|
+
code: z.ZodString;
|
|
51
|
+
}, "strip", z.ZodTypeAny, {
|
|
52
|
+
code: string;
|
|
53
|
+
language: "python" | "shell";
|
|
54
|
+
inputFiles?: unknown;
|
|
55
|
+
}, {
|
|
56
|
+
code: string;
|
|
57
|
+
language: "python" | "shell";
|
|
58
|
+
inputFiles?: unknown;
|
|
59
|
+
}>>;
|
|
60
|
+
protected readonly preprocess: {
|
|
61
|
+
llm: ChatModel;
|
|
62
|
+
promptTemplate: PromptTemplate.infer<{
|
|
63
|
+
input: string;
|
|
64
|
+
}>;
|
|
65
|
+
} | undefined;
|
|
66
|
+
constructor(options: PythonToolOptions);
|
|
67
|
+
protected _run(input: ToolInput<this>, _options: Partial<BaseToolRunOptions>, run: RunContext<this>): Promise<PythonToolOutput>;
|
|
68
|
+
createSnapshot(): {
|
|
69
|
+
files: PythonFile[];
|
|
70
|
+
storage: PythonStorage;
|
|
71
|
+
preprocess: {
|
|
72
|
+
llm: ChatModel;
|
|
73
|
+
promptTemplate: PromptTemplate.infer<{
|
|
74
|
+
input: string;
|
|
75
|
+
}>;
|
|
76
|
+
} | undefined;
|
|
77
|
+
name: string;
|
|
78
|
+
description: string;
|
|
79
|
+
options: PythonToolOptions;
|
|
80
|
+
cache: BaseCache<promise_based_task.Task<PythonToolOutput, any>>;
|
|
81
|
+
emitter: Emitter<any>;
|
|
82
|
+
};
|
|
83
|
+
loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void;
|
|
84
|
+
}
|
|
85
|
+
declare function callCodeInterpreter({ url, body, signal, }: {
|
|
86
|
+
url: string;
|
|
87
|
+
body: unknown;
|
|
88
|
+
signal?: AbortSignal;
|
|
89
|
+
}): Promise<Record<string, any>>;
|
|
90
|
+
|
|
91
|
+
export { type CodeInterpreterOptions, PythonTool, type PythonToolOptions, callCodeInterpreter };
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
import { Tool, ToolError } from '../base.js';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { unique, map, pipe, uniqueBy, filter, isIncludedIn } from 'remeda';
|
|
4
|
+
import { PythonToolOutput } from './output.js';
|
|
5
|
+
import { ValidationError } from 'ajv';
|
|
6
|
+
import { hasMinLength } from '../../internals/helpers/array.js';
|
|
7
|
+
import { Emitter } from '../../emitter/emitter.js';
|
|
8
|
+
import { shallowCopy } from '../../serializer/utils.js';
|
|
9
|
+
import { UserMessage } from '../../backend/message.js';
|
|
10
|
+
|
|
11
|
+
var __defProp = Object.defineProperty;
|
|
12
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
13
|
+
class PythonTool extends Tool {
|
|
14
|
+
static {
|
|
15
|
+
__name(this, "PythonTool");
|
|
16
|
+
}
|
|
17
|
+
name = "Python";
|
|
18
|
+
description = [
|
|
19
|
+
"Run Python and/or shell code and return the console output. Use for isolated calculations, computations, data or file manipulation but still prefer assistant's capabilities (IMPORTANT: Do not use for text analysis or summarization).",
|
|
20
|
+
"Files provided by the user, or created in a previous run, will be accessible if and only if they are specified in the input. It is necessary to always print() results.",
|
|
21
|
+
"The following shell commands are available:",
|
|
22
|
+
"Use ffmpeg to convert videos.",
|
|
23
|
+
"Use yt-dlp to download videos, and unless specified otherwise use `-S vcodec:h264,res,acodec:m4a` for video and `-x --audio-format mp3` for audio-only.",
|
|
24
|
+
"Use pandoc to convert documents between formats (like MD, DOC, DOCX, PDF) -- and don't forget that you can create PDFs by writing markdown and then converting.",
|
|
25
|
+
"In Python, the following modules are available:",
|
|
26
|
+
"Use numpy, pandas, scipy and sympy for working with data.",
|
|
27
|
+
"Use matplotlib to plot charts.",
|
|
28
|
+
"Use pillow (import PIL) to create and manipulate images.",
|
|
29
|
+
"Use moviepy for complex manipulations with videos.",
|
|
30
|
+
"Use PyPDF2, pikepdf, or fitz to manipulate PDFs.",
|
|
31
|
+
"Use pdf2image to convert PDF to images.",
|
|
32
|
+
"Other Python libraries are also available -- however, prefer using the ones above.",
|
|
33
|
+
"Prefer using qualified imports -- `import library; library.thing()` instead of `import thing from library`.",
|
|
34
|
+
"Do not attempt to install libraries manually -- it will not work.",
|
|
35
|
+
"Each invocation of Python runs in a completely fresh VM -- it will not remember anything from before.",
|
|
36
|
+
"Do not use this tool multiple times in a row, always write the full code you want to run in a single invocation."
|
|
37
|
+
].join(" ");
|
|
38
|
+
storage;
|
|
39
|
+
files = [];
|
|
40
|
+
emitter = Emitter.root.child({
|
|
41
|
+
namespace: [
|
|
42
|
+
"tool",
|
|
43
|
+
"python"
|
|
44
|
+
],
|
|
45
|
+
creator: this
|
|
46
|
+
});
|
|
47
|
+
async inputSchema() {
|
|
48
|
+
this.files = await this.storage.list();
|
|
49
|
+
const fileNames = unique(map(this.files, ({ filename }) => filename));
|
|
50
|
+
return z.object({
|
|
51
|
+
language: z.enum([
|
|
52
|
+
"python",
|
|
53
|
+
"shell"
|
|
54
|
+
]).describe("Use shell for ffmpeg, pandoc, yt-dlp"),
|
|
55
|
+
code: z.string().describe("full source code file that will be executed"),
|
|
56
|
+
...hasMinLength(fileNames, 1) ? {
|
|
57
|
+
inputFiles: z.array(z.enum(fileNames)).describe("To access an existing file, you must specify it; otherwise, the file will not be accessible. IMPORTANT: If the file is not provided in the input, it will not be accessible.")
|
|
58
|
+
} : {}
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
preprocess;
|
|
62
|
+
constructor(options) {
|
|
63
|
+
super(options);
|
|
64
|
+
if (!options.codeInterpreter.url) {
|
|
65
|
+
throw new ValidationError([
|
|
66
|
+
{
|
|
67
|
+
message: "Property must be a valid URL!",
|
|
68
|
+
data: options,
|
|
69
|
+
propertyName: "codeInterpreter.url"
|
|
70
|
+
}
|
|
71
|
+
]);
|
|
72
|
+
}
|
|
73
|
+
this.preprocess = options.preprocess;
|
|
74
|
+
this.storage = options.storage;
|
|
75
|
+
}
|
|
76
|
+
static {
|
|
77
|
+
this.register();
|
|
78
|
+
}
|
|
79
|
+
async _run(input, _options, run) {
|
|
80
|
+
const inputFiles = await pipe(this.files ?? await this.storage.list(), uniqueBy((f) => f.filename), filter((file) => isIncludedIn(file.filename, input.inputFiles ?? [])), (files) => this.storage.upload(files));
|
|
81
|
+
const getSourceCode = /* @__PURE__ */ __name(async () => {
|
|
82
|
+
if (this.preprocess) {
|
|
83
|
+
const { llm, promptTemplate } = this.preprocess;
|
|
84
|
+
const response = await llm.create({
|
|
85
|
+
messages: [
|
|
86
|
+
new UserMessage(promptTemplate.render({
|
|
87
|
+
input: input.code
|
|
88
|
+
}))
|
|
89
|
+
],
|
|
90
|
+
abortSignal: run.signal
|
|
91
|
+
});
|
|
92
|
+
return response.getTextContent().trim();
|
|
93
|
+
}
|
|
94
|
+
return input.code;
|
|
95
|
+
}, "getSourceCode");
|
|
96
|
+
const prefix = "/workspace/";
|
|
97
|
+
const result = await callCodeInterpreter({
|
|
98
|
+
url: `${this.options.codeInterpreter.url}/v1/execute`,
|
|
99
|
+
body: {
|
|
100
|
+
source_code: await getSourceCode(),
|
|
101
|
+
files: Object.fromEntries(inputFiles.map((file) => [
|
|
102
|
+
`${prefix}${file.filename}`,
|
|
103
|
+
file.pythonId
|
|
104
|
+
]))
|
|
105
|
+
},
|
|
106
|
+
signal: run.signal
|
|
107
|
+
});
|
|
108
|
+
const filesOutput = await this.storage.download(Object.entries(result.files).filter(([path, _]) => path.startsWith(prefix)).map(([path, pythonId]) => ({
|
|
109
|
+
path,
|
|
110
|
+
pythonId: String(pythonId)
|
|
111
|
+
})).map((file) => ({
|
|
112
|
+
filename: file.path.slice(prefix.length),
|
|
113
|
+
pythonId: file.pythonId
|
|
114
|
+
})).filter((file) => inputFiles.every((input2) => input2.filename !== file.filename || input2.pythonId !== file.pythonId)));
|
|
115
|
+
return new PythonToolOutput(result.stdout, result.stderr, result.exit_code, filesOutput);
|
|
116
|
+
}
|
|
117
|
+
createSnapshot() {
|
|
118
|
+
return {
|
|
119
|
+
...super.createSnapshot(),
|
|
120
|
+
files: shallowCopy(this.files),
|
|
121
|
+
storage: this.storage,
|
|
122
|
+
preprocess: this.preprocess
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
loadSnapshot(snapshot) {
|
|
126
|
+
super.loadSnapshot(snapshot);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
async function callCodeInterpreter({ url, body, signal }) {
|
|
130
|
+
const response = await fetch(url, {
|
|
131
|
+
method: "POST",
|
|
132
|
+
headers: {
|
|
133
|
+
"Accept": "application/json",
|
|
134
|
+
"Content-Type": "application/json"
|
|
135
|
+
},
|
|
136
|
+
body: JSON.stringify(body),
|
|
137
|
+
signal
|
|
138
|
+
}).catch((error) => {
|
|
139
|
+
if (error.cause.name == "HTTPParserError") {
|
|
140
|
+
throw new ToolError("Request to bee-code-interpreter has failed -- ensure that CODE_INTERPRETER_URL points to the new HTTP endpoint (default port: 50081).", [
|
|
141
|
+
error
|
|
142
|
+
]);
|
|
143
|
+
} else {
|
|
144
|
+
throw new ToolError("Request to bee-code-interpreter has failed.", [
|
|
145
|
+
error
|
|
146
|
+
]);
|
|
147
|
+
}
|
|
148
|
+
});
|
|
149
|
+
if (!response?.ok && response.status > 400) {
|
|
150
|
+
throw new ToolError(`Request to bee-code-interpreter has failed with HTTP status code ${response.status}.`, [
|
|
151
|
+
new Error(await response.text())
|
|
152
|
+
]);
|
|
153
|
+
}
|
|
154
|
+
return await response.json();
|
|
155
|
+
}
|
|
156
|
+
__name(callCodeInterpreter, "callCodeInterpreter");
|
|
157
|
+
|
|
158
|
+
export { PythonTool, callCodeInterpreter };
|
|
159
|
+
//# sourceMappingURL=python.js.map
|
|
160
|
+
//# sourceMappingURL=python.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/python/python.ts"],"names":["PythonTool","Tool","name","description","join","storage","files","emitter","Emitter","root","child","namespace","creator","inputSchema","list","fileNames","unique","map","filename","z","object","language","enum","describe","code","string","hasMinLength","inputFiles","array","preprocess","options","codeInterpreter","url","ValidationError","message","data","propertyName","register","_run","input","_options","run","pipe","uniqueBy","f","filter","file","isIncludedIn","upload","getSourceCode","llm","promptTemplate","response","create","messages","UserMessage","render","abortSignal","signal","getTextContent","trim","prefix","result","callCodeInterpreter","body","source_code","Object","fromEntries","pythonId","filesOutput","download","entries","path","_","startsWith","String","slice","length","every","PythonToolOutput","stdout","stderr","exit_code","createSnapshot","shallowCopy","loadSnapshot","snapshot","fetch","method","headers","JSON","stringify","catch","error","cause","ToolError","ok","status","Error","text","json"],"mappings":";;;;;;;;;;;;AAoDO,MAAMA,mBAAmBC,IAAAA,CAAAA;EApDhC;;;EAqDEC,IAAO,GAAA,QAAA;EACPC,WAAc,GAAA;AACZ,IAAA,0OAAA;AACA,IAAA,yKAAA;AACA,IAAA,6CAAA;AACA,IAAA,+BAAA;AACA,IAAA,yJAAA;AACA,IAAA,iKAAA;AACA,IAAA,iDAAA;AACA,IAAA,2DAAA;AACA,IAAA,gCAAA;AACA,IAAA,0DAAA;AACA,IAAA,oDAAA;AACA,IAAA,kDAAA;AACA,IAAA,yCAAA;AACA,IAAA,oFAAA;AACA,IAAA,6GAAA;AACA,IAAA,mEAAA;AACA,IAAA,uGAAA;AACA,IAAA;AACAC,GAAAA,CAAAA,IAAAA,CAAK,GAAA,CAAA;AAESC,EAAAA,OAAAA;AACNC,EAAAA,KAAAA,GAAsB,EAAA;EAEhBC,OAA0DC,GAAAA,OAAAA,CAAQC,KAAKC,KAAM,CAAA;IAC3FC,SAAW,EAAA;AAAC,MAAA,MAAA;AAAQ,MAAA;;IACpBC,OAAS,EAAA;GACX,CAAA;AAEA,EAAA,MAAMC,WAAc,GAAA;AAClB,IAAA,IAAA,CAAKP,KAAQ,GAAA,MAAM,IAAKD,CAAAA,OAAAA,CAAQS,IAAI,EAAA;AACpC,IAAMC,MAAAA,SAAAA,GAAYC,MAAOC,CAAAA,GAAAA,CAAI,IAAKX,CAAAA,KAAAA,EAAO,CAAC,EAAEY,QAAAA,EAAeA,KAAAA,QAAAA,CAAAA,CAAAA;AAC3D,IAAA,OAAOC,EAAEC,MAAO,CAAA;AACdC,MAAAA,QAAAA,EAAUF,EAAEG,IAAK,CAAA;AAAC,QAAA,QAAA;AAAU,QAAA;AAAQ,OAAA,CAAA,CAAEC,SAAS,sCAAA,CAAA;AAC/CC,MAAAA,IAAAA,EAAML,CAAEM,CAAAA,MAAAA,EAASF,CAAAA,QAAAA,CAAS,6CAAA,CAAA;MAC1B,GAAIG,YAAAA,CAAaX,SAAW,EAAA,CAAA,CACxB,GAAA;QACEY,UAAYR,EAAAA,CAAAA,CACTS,MAAMT,CAAEG,CAAAA,IAAAA,CAAKP,SAAAA,CAAAA,CAAAA,CACbQ,SACC,8KAAA;AAEN,OAAA,GACA;KACN,CAAA;AACF;AAEmBM,EAAAA,UAAAA;AAEnB,EAAA,WAAA,CAAmBC,OAA4B,EAAA;AAC7C,IAAA,KAAA,CAAMA,OAAAA,CAAAA;AACN,IAAI,IAAA,CAACA,OAAQC,CAAAA,eAAAA,CAAgBC,GAAK,EAAA;AAChC,MAAA,MAAM,IAAIC,eAAgB,CAAA;AACxB,QAAA;UACEC,OAAS,EAAA,+BAAA;UACTC,IAAML,EAAAA,OAAAA;UACNM,YAAc,EAAA;AAChB;AACD,OAAA,CAAA;AACH;AACA,IAAA,IAAA,CAAKP,aAAaC,OAAQD,CAAAA,UAAAA;AAC1B,IAAA,IAAA,CAAKxB,UAAUyB,OAAQzB,CAAAA,OAAAA;AACzB;EAEA;AACE,IAAA,IAAA,CAAKgC,QAAQ,EAAA;AACf;EAEA,MAAgBC,IAAAA,CACdC,KACAC,EAAAA,QAAAA,EACAC,GACA,EAAA;AACA,IAAA,MAAMd,UAAa,GAAA,MAAMe,IACvB,CAAA,IAAA,CAAKpC,SAAU,MAAM,IAAA,CAAKD,OAAQS,CAAAA,IAAAA,IAClC6B,QAAS,CAAA,CAACC,CAAMA,KAAAA,CAAAA,CAAE1B,QAAQ,CAC1B2B,EAAAA,MAAAA,CAAO,CAACC,IAAAA,KAASC,YAAaD,CAAAA,IAAAA,CAAK5B,QAAWqB,EAAAA,KAAAA,CAAMZ,cAAc,EAAE,CAAA,CAAA,EACpE,CAACrB,KAAU,KAAA,IAAA,CAAKD,OAAQ2C,CAAAA,MAAAA,CAAO1C,KAAAA,CAAAA,CAAAA;AAGjC,IAAA,MAAM2C,gCAAgB,MAAA,CAAA,YAAA;AACpB,MAAA,IAAI,KAAKpB,UAAY,EAAA;AACnB,QAAA,MAAM,EAAEqB,GAAAA,EAAKC,cAAc,EAAA,GAAK,IAAKtB,CAAAA,UAAAA;AACrC,QAAMuB,MAAAA,QAAAA,GAAW,MAAMF,GAAAA,CAAIG,MAAO,CAAA;UAChCC,QAAU,EAAA;YAAC,IAAIC,WAAAA,CAAYJ,eAAeK,MAAO,CAAA;AAAEjB,cAAAA,KAAAA,EAAOA,KAAMf,CAAAA;AAAK,aAAA,CAAA;;AACrEiC,UAAAA,WAAAA,EAAahB,GAAIiB,CAAAA;SACnB,CAAA;AACA,QAAON,OAAAA,QAAAA,CAASO,cAAc,EAAA,CAAGC,IAAI,EAAA;AACvC;AACA,MAAA,OAAOrB,KAAMf,CAAAA,IAAAA;KATO,EAAA,eAAA,CAAA;AAYtB,IAAA,MAAMqC,MAAS,GAAA,aAAA;AAEf,IAAMC,MAAAA,MAAAA,GAAS,MAAMC,mBAAoB,CAAA;AACvC/B,MAAAA,GAAAA,EAAK,CAAG,EAAA,IAAA,CAAKF,OAAQC,CAAAA,eAAAA,CAAgBC,GAAG,CAAA,WAAA,CAAA;MACxCgC,IAAM,EAAA;AACJC,QAAAA,WAAAA,EAAa,MAAMhB,aAAAA,EAAAA;AACnB3C,QAAAA,KAAAA,EAAO4D,MAAOC,CAAAA,WAAAA,CACZxC,UAAWV,CAAAA,GAAAA,CAAI,CAAC6B,IAAS,KAAA;UAAC,CAAGe,EAAAA,MAAAA,CAASf,EAAAA,IAAAA,CAAK5B,QAAQ,CAAA,CAAA;UAAI4B,IAAKsB,CAAAA;SAAS,CAAA;AAEzE,OAAA;AACAV,MAAAA,MAAAA,EAAQjB,GAAIiB,CAAAA;KACd,CAAA;AAEA,IAAMW,MAAAA,WAAAA,GAAc,MAAM,IAAA,CAAKhE,OAAQiE,CAAAA,QAAAA,CACrCJ,MAAOK,CAAAA,OAAAA,CAAQT,MAAOxD,CAAAA,KAAK,CACxBuC,CAAAA,MAAAA,CAAO,CAAC,CAAC2B,MAAMC,CAAAA,CAAAA,KAAOD,IAAKE,CAAAA,UAAAA,CAAWb,MAAAA,CAAAA,CACtC5C,CAAAA,GAAAA,CAAI,CAAC,CAACuD,IAAMJ,EAAAA,QAAAA,CAAe,MAAA;AAAEI,MAAAA,IAAAA;AAAYJ,MAAAA,QAAAA,EAAUO,OAAOP,QAAAA;KAAU,CAAA,CAAA,CACpEnD,GAAI,CAAA,CAAC6B,IAAU,MAAA;AAAE5B,MAAAA,QAAAA,EAAU4B,IAAK0B,CAAAA,IAAAA,CAAKI,KAAMf,CAAAA,MAAAA,CAAOgB,MAAM,CAAA;AAAGT,MAAAA,QAAAA,EAAUtB,IAAKsB,CAAAA;AAAS,KAAA,CAAA,EACnFvB,MAAO,CAAA,CAACC,IACPnB,KAAAA,UAAAA,CAAWmD,MACT,CAACvC,MAAAA,KAAUA,MAAMrB,CAAAA,QAAAA,KAAa4B,KAAK5B,QAAYqB,IAAAA,MAAAA,CAAM6B,aAAatB,IAAKsB,CAAAA,QAAQ,CAAA,CAAA,CAAA;AAKvF,IAAO,OAAA,IAAIW,iBAAiBjB,MAAOkB,CAAAA,MAAAA,EAAQlB,OAAOmB,MAAQnB,EAAAA,MAAAA,CAAOoB,WAAWb,WAAAA,CAAAA;AAC9E;EAEAc,cAAiB,GAAA;AACf,IAAO,OAAA;AACL,MAAA,GAAG,MAAMA,cAAAA,EAAAA;MACT7E,KAAO8E,EAAAA,WAAAA,CAAY,KAAK9E,KAAK,CAAA;AAC7BD,MAAAA,OAAAA,EAAS,IAAKA,CAAAA,OAAAA;AACdwB,MAAAA,UAAAA,EAAY,IAAKA,CAAAA;AACnB,KAAA;AACF;AAEAwD,EAAAA,YAAAA,CAAaC,QAAwD,EAAA;AACnE,IAAA,KAAA,CAAMD,aAAaC,QAAAA,CAAAA;AACrB;AACF;AAEA,eAAsBvB,mBAAoB,CAAA,EACxC/B,GACAgC,EAAAA,IAAAA,EACAN,QAKD,EAAA;AACC,EAAMN,MAAAA,QAAAA,GAAW,MAAMmC,KAAAA,CAAMvD,GAAK,EAAA;IAChCwD,MAAQ,EAAA,MAAA;IACRC,OAAS,EAAA;MACP,QAAU,EAAA,kBAAA;MACV,cAAgB,EAAA;AAClB,KAAA;IACAzB,IAAM0B,EAAAA,IAAAA,CAAKC,UAAU3B,IAAAA,CAAAA;AACrBN,IAAAA;GACF,CAAA,CAAGkC,KAAM,CAAA,CAACC,KAAAA,KAAAA;AACR,IAAIA,IAAAA,KAAAA,CAAMC,KAAM5F,CAAAA,IAAAA,IAAQ,iBAAmB,EAAA;AACzC,MAAM,MAAA,IAAI6F,UACR,uIACA,EAAA;AAACF,QAAAA;AAAM,OAAA,CAAA;KAEJ,MAAA;AACL,MAAM,MAAA,IAAIE,UAAU,6CAA+C,EAAA;AAACF,QAAAA;AAAM,OAAA,CAAA;AAC5E;GACF,CAAA;AAEA,EAAA,IAAI,CAACzC,QAAAA,EAAU4C,EAAM5C,IAAAA,QAAAA,CAAS6C,SAAS,GAAK,EAAA;AAC1C,IAAA,MAAM,IAAIF,SAAAA,CACR,CAAoE3C,iEAAAA,EAAAA,QAAAA,CAAS6C,MAAM,CACnF,CAAA,CAAA,EAAA;AAAC,MAAA,IAAIC,KAAM,CAAA,MAAM9C,QAAS+C,CAAAA,IAAAA,EAAI;AAAI,KAAA,CAAA;AAEtC;AAEA,EAAO,OAAA,MAAM/C,SAASgD,IAAI,EAAA;AAC5B;AApCsBrC,MAAAA,CAAAA,mBAAAA,EAAAA,qBAAAA,CAAAA","file":"python.js","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport {\n BaseToolOptions,\n BaseToolRunOptions,\n ToolEmitter,\n Tool,\n ToolError,\n ToolInput,\n} from \"@/tools/base.js\";\nimport { z } from \"zod\";\nimport { PromptTemplate } from \"@/template.js\";\nimport { filter, isIncludedIn, map, pipe, unique, uniqueBy } from \"remeda\";\nimport { PythonFile, PythonStorage } from \"@/tools/python/storage.js\";\nimport { PythonToolOutput } from \"@/tools/python/output.js\";\nimport { ValidationError } from \"ajv\";\nimport { ConnectionOptions } from \"node:tls\";\nimport { RunContext } from \"@/context.js\";\nimport { hasMinLength } from \"@/internals/helpers/array.js\";\nimport { Emitter } from \"@/emitter/emitter.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\nimport { ChatModel } from \"@/backend/chat.js\";\nimport { UserMessage } from \"@/backend/message.js\";\n\nexport interface CodeInterpreterOptions {\n url: string;\n connectionOptions?: ConnectionOptions;\n}\n\nexport interface PythonToolOptions extends BaseToolOptions {\n codeInterpreter: CodeInterpreterOptions;\n preprocess?: {\n llm: ChatModel;\n promptTemplate: PromptTemplate.infer<{ input: string }>;\n };\n storage: PythonStorage;\n}\n\nexport class PythonTool extends Tool<PythonToolOutput, PythonToolOptions> {\n name = \"Python\";\n description = [\n \"Run Python and/or shell code and return the console output. Use for isolated calculations, computations, data or file manipulation but still prefer assistant's capabilities (IMPORTANT: Do not use for text analysis or summarization).\",\n \"Files provided by the user, or created in a previous run, will be accessible if and only if they are specified in the input. It is necessary to always print() results.\",\n \"The following shell commands are available:\",\n \"Use ffmpeg to convert videos.\",\n \"Use yt-dlp to download videos, and unless specified otherwise use `-S vcodec:h264,res,acodec:m4a` for video and `-x --audio-format mp3` for audio-only.\",\n \"Use pandoc to convert documents between formats (like MD, DOC, DOCX, PDF) -- and don't forget that you can create PDFs by writing markdown and then converting.\",\n \"In Python, the following modules are available:\",\n \"Use numpy, pandas, scipy and sympy for working with data.\",\n \"Use matplotlib to plot charts.\",\n \"Use pillow (import PIL) to create and manipulate images.\",\n \"Use moviepy for complex manipulations with videos.\",\n \"Use PyPDF2, pikepdf, or fitz to manipulate PDFs.\",\n \"Use pdf2image to convert PDF to images.\",\n \"Other Python libraries are also available -- however, prefer using the ones above.\",\n \"Prefer using qualified imports -- `import library; library.thing()` instead of `import thing from library`.\",\n \"Do not attempt to install libraries manually -- it will not work.\",\n \"Each invocation of Python runs in a completely fresh VM -- it will not remember anything from before.\",\n \"Do not use this tool multiple times in a row, always write the full code you want to run in a single invocation.\",\n ].join(\" \");\n\n public readonly storage: PythonStorage;\n protected files: PythonFile[] = [];\n\n public readonly emitter: ToolEmitter<ToolInput<this>, PythonToolOutput> = Emitter.root.child({\n namespace: [\"tool\", \"python\"],\n creator: this,\n });\n\n async inputSchema() {\n this.files = await this.storage.list();\n const fileNames = unique(map(this.files, ({ filename }) => filename));\n return z.object({\n language: z.enum([\"python\", \"shell\"]).describe(\"Use shell for ffmpeg, pandoc, yt-dlp\"),\n code: z.string().describe(\"full source code file that will be executed\"),\n ...(hasMinLength(fileNames, 1)\n ? {\n inputFiles: z\n .array(z.enum(fileNames))\n .describe(\n \"To access an existing file, you must specify it; otherwise, the file will not be accessible. IMPORTANT: If the file is not provided in the input, it will not be accessible.\",\n ),\n }\n : {}),\n });\n }\n\n protected readonly preprocess;\n\n public constructor(options: PythonToolOptions) {\n super(options);\n if (!options.codeInterpreter.url) {\n throw new ValidationError([\n {\n message: \"Property must be a valid URL!\",\n data: options,\n propertyName: \"codeInterpreter.url\",\n },\n ]);\n }\n this.preprocess = options.preprocess;\n this.storage = options.storage;\n }\n\n static {\n this.register();\n }\n\n protected async _run(\n input: ToolInput<this>,\n _options: Partial<BaseToolRunOptions>,\n run: RunContext<this>,\n ) {\n const inputFiles = await pipe(\n this.files ?? (await this.storage.list()),\n uniqueBy((f) => f.filename),\n filter((file) => isIncludedIn(file.filename, (input.inputFiles ?? []) as string[])),\n (files) => this.storage.upload(files),\n );\n\n const getSourceCode = async () => {\n if (this.preprocess) {\n const { llm, promptTemplate } = this.preprocess;\n const response = await llm.create({\n messages: [new UserMessage(promptTemplate.render({ input: input.code }))],\n abortSignal: run.signal,\n });\n return response.getTextContent().trim();\n }\n return input.code;\n };\n\n const prefix = \"/workspace/\";\n\n const result = await callCodeInterpreter({\n url: `${this.options.codeInterpreter.url}/v1/execute`,\n body: {\n source_code: await getSourceCode(),\n files: Object.fromEntries(\n inputFiles.map((file) => [`${prefix}${file.filename}`, file.pythonId]),\n ),\n },\n signal: run.signal,\n });\n\n const filesOutput = await this.storage.download(\n Object.entries(result.files)\n .filter(([path, _]) => path.startsWith(prefix))\n .map(([path, pythonId]) => ({ path: path, pythonId: String(pythonId) }))\n .map((file) => ({ filename: file.path.slice(prefix.length), pythonId: file.pythonId }))\n .filter((file) =>\n inputFiles.every(\n (input) => input.filename !== file.filename || input.pythonId !== file.pythonId,\n ),\n ),\n );\n\n return new PythonToolOutput(result.stdout, result.stderr, result.exit_code, filesOutput);\n }\n\n createSnapshot() {\n return {\n ...super.createSnapshot(),\n files: shallowCopy(this.files),\n storage: this.storage,\n preprocess: this.preprocess,\n };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>): void {\n super.loadSnapshot(snapshot);\n }\n}\n\nexport async function callCodeInterpreter({\n url,\n body,\n signal,\n}: {\n url: string;\n body: unknown;\n signal?: AbortSignal;\n}): Promise<Record<string, any>> {\n const response = await fetch(url, {\n method: \"POST\",\n headers: {\n \"Accept\": \"application/json\",\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n signal,\n }).catch((error) => {\n if (error.cause.name == \"HTTPParserError\") {\n throw new ToolError(\n \"Request to bee-code-interpreter has failed -- ensure that CODE_INTERPRETER_URL points to the new HTTP endpoint (default port: 50081).\",\n [error],\n );\n } else {\n throw new ToolError(\"Request to bee-code-interpreter has failed.\", [error]);\n }\n });\n\n if (!response?.ok && response.status > 400) {\n throw new ToolError(\n `Request to bee-code-interpreter has failed with HTTP status code ${response.status}.`,\n [new Error(await response.text())],\n );\n }\n\n return await response.json();\n}\n"]}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var crypto = require('node:crypto');
|
|
4
|
+
var promises$1 = require('node:stream/promises');
|
|
5
|
+
var fs = require('node:fs');
|
|
6
|
+
var promises = require('node:fs/promises');
|
|
7
|
+
var path = require('node:path');
|
|
8
|
+
var decoratorCache_cjs = require('../../cache/decoratorCache.cjs');
|
|
9
|
+
var serializable_cjs = require('../../internals/serializable.cjs');
|
|
10
|
+
var utils_cjs = require('../../serializer/utils.cjs');
|
|
11
|
+
|
|
12
|
+
function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; }
|
|
13
|
+
|
|
14
|
+
function _interopNamespace(e) {
|
|
15
|
+
if (e && e.__esModule) return e;
|
|
16
|
+
var n = Object.create(null);
|
|
17
|
+
if (e) {
|
|
18
|
+
Object.keys(e).forEach(function (k) {
|
|
19
|
+
if (k !== 'default') {
|
|
20
|
+
var d = Object.getOwnPropertyDescriptor(e, k);
|
|
21
|
+
Object.defineProperty(n, k, d.get ? d : {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return e[k]; }
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
n.default = e;
|
|
29
|
+
return Object.freeze(n);
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
var crypto__namespace = /*#__PURE__*/_interopNamespace(crypto);
|
|
33
|
+
var fs__default = /*#__PURE__*/_interopDefault(fs);
|
|
34
|
+
var path__default = /*#__PURE__*/_interopDefault(path);
|
|
35
|
+
|
|
36
|
+
var __defProp = Object.defineProperty;
|
|
37
|
+
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
|
|
38
|
+
function _ts_decorate(decorators, target, key, desc) {
|
|
39
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
40
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
41
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
42
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
43
|
+
}
|
|
44
|
+
__name(_ts_decorate, "_ts_decorate");
|
|
45
|
+
function _ts_metadata(k, v) {
|
|
46
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
47
|
+
}
|
|
48
|
+
__name(_ts_metadata, "_ts_metadata");
|
|
49
|
+
class PythonStorage extends serializable_cjs.Serializable {
|
|
50
|
+
static {
|
|
51
|
+
__name(this, "PythonStorage");
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
class TemporaryStorage extends PythonStorage {
|
|
55
|
+
static {
|
|
56
|
+
__name(this, "TemporaryStorage");
|
|
57
|
+
}
|
|
58
|
+
files = [];
|
|
59
|
+
async list() {
|
|
60
|
+
return this.files.slice();
|
|
61
|
+
}
|
|
62
|
+
async upload(files) {
|
|
63
|
+
return files.map((file) => ({
|
|
64
|
+
id: file.id,
|
|
65
|
+
pythonId: file.id,
|
|
66
|
+
filename: file.filename
|
|
67
|
+
}));
|
|
68
|
+
}
|
|
69
|
+
async download(files) {
|
|
70
|
+
this.files = [
|
|
71
|
+
...this.files.filter((file) => files.every((f) => f.filename !== file.filename)),
|
|
72
|
+
...files.map((file) => ({
|
|
73
|
+
id: file.pythonId,
|
|
74
|
+
...file
|
|
75
|
+
}))
|
|
76
|
+
];
|
|
77
|
+
return this.files.slice();
|
|
78
|
+
}
|
|
79
|
+
createSnapshot() {
|
|
80
|
+
return {
|
|
81
|
+
files: this.files.slice()
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
loadSnapshot(snapshot) {
|
|
85
|
+
Object.assign(this, snapshot);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
class LocalPythonStorage extends PythonStorage {
|
|
89
|
+
static {
|
|
90
|
+
__name(this, "LocalPythonStorage");
|
|
91
|
+
}
|
|
92
|
+
input;
|
|
93
|
+
constructor(input) {
|
|
94
|
+
super();
|
|
95
|
+
this.input = {
|
|
96
|
+
...input,
|
|
97
|
+
ignoredFiles: input?.ignoredFiles ?? /* @__PURE__ */ new Set([
|
|
98
|
+
".gitkeep"
|
|
99
|
+
])
|
|
100
|
+
};
|
|
101
|
+
}
|
|
102
|
+
async init() {
|
|
103
|
+
await fs__default.default.promises.mkdir(this.input.localWorkingDir, {
|
|
104
|
+
recursive: true
|
|
105
|
+
});
|
|
106
|
+
await fs__default.default.promises.mkdir(this.input.interpreterWorkingDir, {
|
|
107
|
+
recursive: true
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
async list() {
|
|
111
|
+
await this.init();
|
|
112
|
+
const files = await fs__default.default.promises.readdir(this.input.localWorkingDir, {
|
|
113
|
+
withFileTypes: true,
|
|
114
|
+
recursive: false
|
|
115
|
+
});
|
|
116
|
+
return Promise.all(files.filter((file) => file.isFile() && !this.input.ignoredFiles.has(file.name)).map(async (file) => {
|
|
117
|
+
const pythonId = await this.computeHash(path__default.default.join(this.input.localWorkingDir.toString(), file.name));
|
|
118
|
+
return {
|
|
119
|
+
id: pythonId,
|
|
120
|
+
filename: file.name,
|
|
121
|
+
pythonId
|
|
122
|
+
};
|
|
123
|
+
}));
|
|
124
|
+
}
|
|
125
|
+
async upload(files) {
|
|
126
|
+
await this.init();
|
|
127
|
+
const fileList = await this.list();
|
|
128
|
+
await Promise.all(files.map((file) => {
|
|
129
|
+
const filesystemFile = fileList.find((filesystemFile2) => filesystemFile2.id === file.id);
|
|
130
|
+
return promises.copyFile(path__default.default.join(this.input.localWorkingDir.toString(), filesystemFile.filename), path__default.default.join(this.input.interpreterWorkingDir.toString(), filesystemFile.id));
|
|
131
|
+
}));
|
|
132
|
+
return files.map((file) => ({
|
|
133
|
+
...file,
|
|
134
|
+
pythonId: file.id
|
|
135
|
+
}));
|
|
136
|
+
}
|
|
137
|
+
async download(files) {
|
|
138
|
+
await this.init();
|
|
139
|
+
await Promise.all(files.map((file) => promises.copyFile(path__default.default.join(this.input.interpreterWorkingDir.toString(), file.pythonId), path__default.default.join(this.input.localWorkingDir.toString(), file.filename))));
|
|
140
|
+
return files.map((file) => ({
|
|
141
|
+
...file,
|
|
142
|
+
id: file.pythonId
|
|
143
|
+
}));
|
|
144
|
+
}
|
|
145
|
+
async computeHash(file) {
|
|
146
|
+
const hash = crypto__namespace.createHash("sha256");
|
|
147
|
+
await promises$1.pipeline(fs.createReadStream(file), hash);
|
|
148
|
+
return hash.digest("hex");
|
|
149
|
+
}
|
|
150
|
+
createSnapshot() {
|
|
151
|
+
return {
|
|
152
|
+
input: utils_cjs.shallowCopy(this.input)
|
|
153
|
+
};
|
|
154
|
+
}
|
|
155
|
+
loadSnapshot(snapshot) {
|
|
156
|
+
Object.assign(this, snapshot);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
_ts_decorate([
|
|
160
|
+
decoratorCache_cjs.Cache(),
|
|
161
|
+
_ts_metadata("design:type", Function),
|
|
162
|
+
_ts_metadata("design:paramtypes", []),
|
|
163
|
+
_ts_metadata("design:returntype", Promise)
|
|
164
|
+
], LocalPythonStorage.prototype, "init", null);
|
|
165
|
+
|
|
166
|
+
exports.LocalPythonStorage = LocalPythonStorage;
|
|
167
|
+
exports.PythonStorage = PythonStorage;
|
|
168
|
+
exports.TemporaryStorage = TemporaryStorage;
|
|
169
|
+
//# sourceMappingURL=storage.cjs.map
|
|
170
|
+
//# sourceMappingURL=storage.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/tools/python/storage.ts"],"names":["PythonStorage","Serializable","TemporaryStorage","files","list","slice","upload","map","file","id","pythonId","filename","download","filter","every","f","createSnapshot","loadSnapshot","snapshot","Object","assign","LocalPythonStorage","input","constructor","ignoredFiles","Set","init","fs","promises","mkdir","localWorkingDir","recursive","interpreterWorkingDir","readdir","withFileTypes","Promise","all","isFile","has","name","computeHash","path","join","toString","fileList","filesystemFile","find","copyFile","hash","crypto","createHash","pipeline","createReadStream","digest","shallowCopy"],"mappings":"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","file":"storage.cjs","sourcesContent":["/**\n * Copyright 2025 IBM Corp.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\n\nimport { PathLike } from \"fs\";\nimport * as crypto from \"node:crypto\";\nimport { pipeline } from \"node:stream/promises\";\nimport fs, { createReadStream } from \"node:fs\";\nimport { copyFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { Cache } from \"@/cache/decoratorCache.js\";\nimport { Serializable } from \"@/internals/serializable.js\";\nimport { shallowCopy } from \"@/serializer/utils.js\";\n\nexport interface PythonFile {\n id: string;\n pythonId: string;\n filename: string;\n}\n\nexport interface PythonUploadFile {\n id: string;\n filename: string;\n}\n\nexport interface PythonDownloadFile {\n id?: string;\n filename: string;\n pythonId: string;\n}\n\nexport abstract class PythonStorage extends Serializable {\n /**\n * List all files that code interpreter can use.\n */\n abstract list(): Promise<PythonFile[]>;\n\n /**\n * Prepare subset of available files to code interpreter.\n */\n abstract upload(files: PythonUploadFile[]): Promise<PythonFile[]>;\n\n /**\n * Process updated/modified/deleted files from code interpreter response.\n */\n abstract download(files: PythonDownloadFile[]): Promise<PythonFile[]>;\n}\n\nexport class TemporaryStorage extends PythonStorage {\n protected files: PythonFile[] = [];\n\n async list() {\n return this.files.slice();\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n return files.map((file) => ({\n id: file.id,\n pythonId: file.id,\n filename: file.filename,\n }));\n }\n\n async download(files: PythonDownloadFile[]) {\n this.files = [\n ...this.files.filter((file) => files.every((f) => f.filename !== file.filename)),\n ...files.map((file) => ({ id: file.pythonId, ...file })),\n ];\n return this.files.slice();\n }\n\n createSnapshot() {\n return { files: this.files.slice() };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n\ninterface Input {\n localWorkingDir: PathLike;\n interpreterWorkingDir: PathLike;\n ignoredFiles?: Set<string>;\n}\n\nexport class LocalPythonStorage extends PythonStorage {\n protected readonly input: Required<Input>;\n\n constructor(input: Input) {\n super();\n this.input = {\n ...input,\n ignoredFiles: input?.ignoredFiles ?? new Set([\".gitkeep\"]),\n };\n }\n\n @Cache()\n protected async init() {\n await fs.promises.mkdir(this.input.localWorkingDir, { recursive: true });\n await fs.promises.mkdir(this.input.interpreterWorkingDir, { recursive: true });\n }\n\n async list(): Promise<PythonFile[]> {\n await this.init();\n\n const files = await fs.promises.readdir(this.input.localWorkingDir, {\n withFileTypes: true,\n recursive: false,\n });\n return Promise.all(\n files\n .filter((file) => file.isFile() && !this.input.ignoredFiles.has(file.name))\n .map(async (file) => {\n const pythonId = await this.computeHash(\n path.join(this.input.localWorkingDir.toString(), file.name),\n );\n\n return {\n id: pythonId,\n filename: file.name,\n pythonId,\n };\n }),\n );\n }\n\n async upload(files: PythonUploadFile[]): Promise<PythonFile[]> {\n await this.init();\n\n const fileList = await this.list();\n\n await Promise.all(\n files.map((file) => {\n const filesystemFile = fileList.find((filesystemFile) => filesystemFile.id === file.id)!;\n return copyFile(\n path.join(this.input.localWorkingDir.toString(), filesystemFile.filename),\n path.join(this.input.interpreterWorkingDir.toString(), filesystemFile.id),\n );\n }),\n );\n return files.map((file) => ({ ...file, pythonId: file.id }));\n }\n\n async download(files: PythonDownloadFile[]) {\n await this.init();\n\n await Promise.all(\n files.map((file) =>\n copyFile(\n path.join(this.input.interpreterWorkingDir.toString(), file.pythonId),\n path.join(this.input.localWorkingDir.toString(), file.filename),\n ),\n ),\n );\n return files.map((file) => ({ ...file, id: file.pythonId }));\n }\n\n protected async computeHash(file: PathLike) {\n const hash = crypto.createHash(\"sha256\");\n await pipeline(createReadStream(file), hash);\n return hash.digest(\"hex\");\n }\n\n createSnapshot() {\n return { input: shallowCopy(this.input) };\n }\n\n loadSnapshot(snapshot: ReturnType<typeof this.createSnapshot>) {\n Object.assign(this, snapshot);\n }\n}\n"]}
|