upgrade to deepagents-0_5_2
This commit is contained in:
parent
b6976cc8bf
commit
788bb0089f
@ -4,7 +4,9 @@
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from pathlib import Path
|
from pathlib import Path
|
||||||
from typing import Annotated, Literal, cast
|
from typing import Annotated, cast
|
||||||
|
import mimetypes
|
||||||
|
import warnings
|
||||||
|
|
||||||
from langchain.tools import ToolRuntime
|
from langchain.tools import ToolRuntime
|
||||||
from langchain_core.messages import ToolMessage
|
from langchain_core.messages import ToolMessage
|
||||||
@ -15,19 +17,24 @@ from deepagents.backends import StateBackend
|
|||||||
from deepagents.backends.composite import CompositeBackend
|
from deepagents.backends.composite import CompositeBackend
|
||||||
from deepagents.backends.protocol import (
|
from deepagents.backends.protocol import (
|
||||||
BACKEND_TYPES,
|
BACKEND_TYPES,
|
||||||
|
ReadResult,
|
||||||
)
|
)
|
||||||
|
from deepagents.backends.utils import _get_file_type, validate_path
|
||||||
|
from langchain_core.messages.content import ContentBlock
|
||||||
from deepagents.middleware.filesystem import (
|
from deepagents.middleware.filesystem import (
|
||||||
DEFAULT_READ_OFFSET,
|
DEFAULT_READ_OFFSET,
|
||||||
DEFAULT_READ_LIMIT,
|
DEFAULT_READ_LIMIT,
|
||||||
IMAGE_EXTENSIONS,
|
|
||||||
IMAGE_MEDIA_TYPES,
|
|
||||||
FilesystemMiddleware,
|
FilesystemMiddleware,
|
||||||
FilesystemState,
|
FilesystemState,
|
||||||
|
READ_FILE_TOOL_DESCRIPTION,
|
||||||
|
READ_FILE_TRUNCATION_MSG,
|
||||||
|
NUM_CHARS_PER_TOKEN,
|
||||||
|
ReadFileSchema,
|
||||||
|
check_empty_content,
|
||||||
|
format_content_with_line_numbers,
|
||||||
)
|
)
|
||||||
|
|
||||||
from langgraph.types import Command
|
from langgraph.types import Command
|
||||||
import base64
|
|
||||||
from langchain_core.messages.content import create_image_block
|
|
||||||
|
|
||||||
|
|
||||||
# SKILL.md 文件的行数限制(设置为较大的值以完整读取)
|
# SKILL.md 文件的行数限制(设置为较大的值以完整读取)
|
||||||
@ -44,10 +51,62 @@ class CustomFilesystemMiddleware(FilesystemMiddleware):
|
|||||||
@override
|
@override
|
||||||
def _create_read_file_tool(self) -> BaseTool:
|
def _create_read_file_tool(self) -> BaseTool:
|
||||||
"""创建自定义的 read_file 工具,支持 SKILL.md 完整读取。"""
|
"""创建自定义的 read_file 工具,支持 SKILL.md 完整读取。"""
|
||||||
# 从父类获取工具描述
|
tool_description = self._custom_tool_descriptions.get("read_file") or READ_FILE_TOOL_DESCRIPTION
|
||||||
tool_description = self._custom_tool_descriptions.get("read_file") or self._get_read_file_description()
|
|
||||||
token_limit = self._tool_token_limit_before_evict
|
token_limit = self._tool_token_limit_before_evict
|
||||||
|
|
||||||
|
def _truncate(content: str, file_path: str, limit: int) -> str:
|
||||||
|
lines = content.splitlines(keepends=True)
|
||||||
|
if len(lines) > limit:
|
||||||
|
lines = lines[:limit]
|
||||||
|
content = "".join(lines)
|
||||||
|
|
||||||
|
if token_limit and len(content) >= NUM_CHARS_PER_TOKEN * token_limit:
|
||||||
|
truncation_msg = READ_FILE_TRUNCATION_MSG.format(file_path=file_path)
|
||||||
|
max_content_length = NUM_CHARS_PER_TOKEN * token_limit - len(truncation_msg)
|
||||||
|
content = content[:max_content_length] + truncation_msg
|
||||||
|
|
||||||
|
return content
|
||||||
|
|
||||||
|
def _handle_read_result(
|
||||||
|
read_result: ReadResult | str,
|
||||||
|
validated_path: str,
|
||||||
|
tool_call_id: str | None,
|
||||||
|
offset: int,
|
||||||
|
limit: int,
|
||||||
|
) -> ToolMessage | str:
|
||||||
|
if isinstance(read_result, str):
|
||||||
|
warnings.warn(
|
||||||
|
"Returning a plain `str` from `backend.read()` is deprecated. ",
|
||||||
|
DeprecationWarning,
|
||||||
|
stacklevel=2,
|
||||||
|
)
|
||||||
|
return _truncate(read_result, validated_path, limit)
|
||||||
|
|
||||||
|
if read_result.error:
|
||||||
|
return f"Error: {read_result.error}"
|
||||||
|
|
||||||
|
if read_result.file_data is None:
|
||||||
|
return f"Error: no data returned for '{validated_path}'"
|
||||||
|
|
||||||
|
file_type = _get_file_type(validated_path)
|
||||||
|
content = read_result.file_data["content"]
|
||||||
|
|
||||||
|
if file_type != "text":
|
||||||
|
mime_type = mimetypes.guess_type("file" + Path(validated_path).suffix)[0] or "application/octet-stream"
|
||||||
|
return ToolMessage(
|
||||||
|
content_blocks=cast("list[ContentBlock]", [{"type": file_type, "base64": content, "mime_type": mime_type}]),
|
||||||
|
name="read_file",
|
||||||
|
tool_call_id=tool_call_id,
|
||||||
|
additional_kwargs={"read_file_path": validated_path, "read_file_media_type": mime_type},
|
||||||
|
)
|
||||||
|
|
||||||
|
empty_msg = check_empty_content(content)
|
||||||
|
if empty_msg:
|
||||||
|
return empty_msg
|
||||||
|
|
||||||
|
content = format_content_with_line_numbers(content, start_line=offset + 1)
|
||||||
|
return _truncate(content, validated_path, limit)
|
||||||
|
|
||||||
def sync_read_file(
|
def sync_read_file(
|
||||||
file_path: Annotated[str, "Absolute path to the file to read. Must be absolute, not relative."],
|
file_path: Annotated[str, "Absolute path to the file to read. Must be absolute, not relative."],
|
||||||
runtime: ToolRuntime[None, FilesystemState],
|
runtime: ToolRuntime[None, FilesystemState],
|
||||||
@ -55,57 +114,18 @@ class CustomFilesystemMiddleware(FilesystemMiddleware):
|
|||||||
limit: Annotated[int, "Maximum number of lines to read. Use for pagination of large files."] = DEFAULT_READ_LIMIT,
|
limit: Annotated[int, "Maximum number of lines to read. Use for pagination of large files."] = DEFAULT_READ_LIMIT,
|
||||||
) -> ToolMessage | str:
|
) -> ToolMessage | str:
|
||||||
"""Synchronous wrapper for read_file tool with SKILL.md special handling."""
|
"""Synchronous wrapper for read_file tool with SKILL.md special handling."""
|
||||||
from deepagents.backends.utils import validate_path
|
|
||||||
from deepagents.middleware.filesystem import READ_FILE_TRUNCATION_MSG, NUM_CHARS_PER_TOKEN
|
|
||||||
|
|
||||||
resolved_backend = self._get_backend(runtime)
|
resolved_backend = self._get_backend(runtime)
|
||||||
try:
|
try:
|
||||||
validated_path = validate_path(file_path)
|
validated_path = validate_path(file_path)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return f"Error: {e}"
|
return f"Error: {e}"
|
||||||
|
|
||||||
ext = Path(validated_path).suffix.lower()
|
|
||||||
# 处理图片文件
|
|
||||||
if ext in IMAGE_EXTENSIONS:
|
|
||||||
responses = resolved_backend.download_files([validated_path])
|
|
||||||
if responses and responses[0].content is not None:
|
|
||||||
media_type = IMAGE_MEDIA_TYPES.get(ext, "image/png")
|
|
||||||
image_b64 = base64.standard_b64encode(responses[0].content).decode("utf-8")
|
|
||||||
return ToolMessage(
|
|
||||||
content_blocks=[create_image_block(base64=image_b64, mime_type=media_type)],
|
|
||||||
name="read_file",
|
|
||||||
tool_call_id=runtime.tool_call_id,
|
|
||||||
additional_kwargs={
|
|
||||||
"read_file_path": validated_path,
|
|
||||||
"read_file_media_type": media_type,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
if responses and responses[0].error:
|
|
||||||
return f"Error reading image: {responses[0].error}"
|
|
||||||
return "Error reading image: unknown error"
|
|
||||||
|
|
||||||
# 如果是 SKILL.md 文件,使用大限制读取完整内容
|
# 如果是 SKILL.md 文件,使用大限制读取完整内容
|
||||||
if validated_path.endswith("SKILL.md") or validated_path.endswith("/SKILL.md"):
|
if validated_path.endswith("SKILL.md") or validated_path.endswith("/SKILL.md"):
|
||||||
actual_limit = SKILL_MD_READ_LIMIT
|
limit = SKILL_MD_READ_LIMIT
|
||||||
else:
|
|
||||||
actual_limit = limit
|
|
||||||
|
|
||||||
result = resolved_backend.read(validated_path, offset=offset, limit=actual_limit)
|
read_result = resolved_backend.read(validated_path, offset=offset, limit=limit)
|
||||||
|
return _handle_read_result(read_result, validated_path, runtime.tool_call_id, offset, limit)
|
||||||
lines = result.splitlines(keepends=True)
|
|
||||||
if len(lines) > actual_limit:
|
|
||||||
lines = lines[:actual_limit]
|
|
||||||
result = "".join(lines)
|
|
||||||
|
|
||||||
# Check if result exceeds token threshold and truncate if necessary
|
|
||||||
if token_limit and len(result) >= NUM_CHARS_PER_TOKEN * token_limit:
|
|
||||||
# Calculate truncation message length to ensure final result stays under threshold
|
|
||||||
truncation_msg = READ_FILE_TRUNCATION_MSG.format(file_path=validated_path)
|
|
||||||
max_content_length = NUM_CHARS_PER_TOKEN * token_limit - len(truncation_msg)
|
|
||||||
result = result[:max_content_length]
|
|
||||||
result += truncation_msg
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
async def async_read_file(
|
async def async_read_file(
|
||||||
file_path: Annotated[str, "Absolute path to the file to read. Must be absolute, not relative."],
|
file_path: Annotated[str, "Absolute path to the file to read. Must be absolute, not relative."],
|
||||||
@ -114,66 +134,28 @@ class CustomFilesystemMiddleware(FilesystemMiddleware):
|
|||||||
limit: Annotated[int, "Maximum number of lines to read. Use for pagination of large files."] = DEFAULT_READ_LIMIT,
|
limit: Annotated[int, "Maximum number of lines to read. Use for pagination of large files."] = DEFAULT_READ_LIMIT,
|
||||||
) -> ToolMessage | str:
|
) -> ToolMessage | str:
|
||||||
"""Asynchronous wrapper for read_file tool with SKILL.md special handling."""
|
"""Asynchronous wrapper for read_file tool with SKILL.md special handling."""
|
||||||
from deepagents.backends.utils import validate_path
|
|
||||||
from deepagents.middleware.filesystem import READ_FILE_TRUNCATION_MSG, NUM_CHARS_PER_TOKEN
|
|
||||||
|
|
||||||
resolved_backend = self._get_backend(runtime)
|
resolved_backend = self._get_backend(runtime)
|
||||||
try:
|
try:
|
||||||
validated_path = validate_path(file_path)
|
validated_path = validate_path(file_path)
|
||||||
except ValueError as e:
|
except ValueError as e:
|
||||||
return f"Error: {e}"
|
return f"Error: {e}"
|
||||||
|
|
||||||
ext = Path(validated_path).suffix.lower()
|
|
||||||
# 处理图片文件
|
|
||||||
if ext in IMAGE_EXTENSIONS:
|
|
||||||
responses = await resolved_backend.adownload_files([validated_path])
|
|
||||||
if responses and responses[0].content is not None:
|
|
||||||
media_type = IMAGE_MEDIA_TYPES.get(ext, "image/png")
|
|
||||||
image_b64 = base64.standard_b64encode(responses[0].content).decode("utf-8")
|
|
||||||
return ToolMessage(
|
|
||||||
content_blocks=[create_image_block(base64=image_b64, mime_type=media_type)],
|
|
||||||
name="read_file",
|
|
||||||
tool_call_id=runtime.tool_call_id,
|
|
||||||
additional_kwargs={
|
|
||||||
"read_file_path": validated_path,
|
|
||||||
"read_file_media_type": media_type,
|
|
||||||
},
|
|
||||||
)
|
|
||||||
if responses and responses[0].error:
|
|
||||||
return f"Error reading image: {responses[0].error}"
|
|
||||||
return "Error reading image: unknown error"
|
|
||||||
|
|
||||||
# 如果是 SKILL.md 文件,使用大限制读取完整内容
|
# 如果是 SKILL.md 文件,使用大限制读取完整内容
|
||||||
if validated_path.endswith("SKILL.md") or validated_path.endswith("/SKILL.md"):
|
if validated_path.endswith("SKILL.md") or validated_path.endswith("/SKILL.md"):
|
||||||
actual_limit = SKILL_MD_READ_LIMIT
|
limit = SKILL_MD_READ_LIMIT
|
||||||
else:
|
|
||||||
actual_limit = limit
|
|
||||||
|
|
||||||
result = await resolved_backend.aread(validated_path, offset=offset, limit=actual_limit)
|
read_result = await resolved_backend.aread(validated_path, offset=offset, limit=limit)
|
||||||
|
return _handle_read_result(read_result, validated_path, runtime.tool_call_id, offset, limit)
|
||||||
lines = result.splitlines(keepends=True)
|
|
||||||
if len(lines) > actual_limit:
|
|
||||||
lines = lines[:actual_limit]
|
|
||||||
result = "".join(lines)
|
|
||||||
|
|
||||||
# Check if result exceeds token threshold and truncate if necessary
|
|
||||||
if token_limit and len(result) >= NUM_CHARS_PER_TOKEN * token_limit:
|
|
||||||
# Calculate truncation message length to ensure final result stays under threshold
|
|
||||||
truncation_msg = READ_FILE_TRUNCATION_MSG.format(file_path=validated_path)
|
|
||||||
max_content_length = NUM_CHARS_PER_TOKEN * token_limit - len(truncation_msg)
|
|
||||||
result = result[:max_content_length]
|
|
||||||
result += truncation_msg
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
return StructuredTool.from_function(
|
return StructuredTool.from_function(
|
||||||
name="read_file",
|
name="read_file",
|
||||||
description=tool_description,
|
description=tool_description,
|
||||||
func=sync_read_file,
|
func=sync_read_file,
|
||||||
coroutine=async_read_file,
|
coroutine=async_read_file,
|
||||||
|
infer_schema=False,
|
||||||
|
args_schema=ReadFileSchema,
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_read_file_description(self) -> str:
|
def _get_read_file_description(self) -> str:
|
||||||
"""获取 read_file 工具的描述,添加 SKILL.md 完整读取的说明。"""
|
"""获取 read_file 工具的描述,添加 SKILL.md 完整读取的说明。"""
|
||||||
from deepagents.middleware.filesystem import READ_FILE_TOOL_DESCRIPTION
|
|
||||||
return READ_FILE_TOOL_DESCRIPTION
|
return READ_FILE_TOOL_DESCRIPTION
|
||||||
|
|||||||
@ -405,19 +405,22 @@ def create_custom_cli_agent(
|
|||||||
# Use LocalShellBackend for filesystem + shell execution
|
# Use LocalShellBackend for filesystem + shell execution
|
||||||
backend = LocalShellBackend(
|
backend = LocalShellBackend(
|
||||||
root_dir=workspace_root,
|
root_dir=workspace_root,
|
||||||
|
virtual_mode=False,
|
||||||
inherit_env=True,
|
inherit_env=True,
|
||||||
env=final_shell_env,
|
env=final_shell_env,
|
||||||
)
|
)
|
||||||
else:
|
else:
|
||||||
# No shell access - use plain FilesystemBackend
|
# No shell access - use plain FilesystemBackend
|
||||||
backend = FilesystemBackend(root_dir=workspace_root)
|
backend = FilesystemBackend(root_dir=workspace_root, virtual_mode=True)
|
||||||
|
|
||||||
# Set up composite backend with routing (参考新版本实现)
|
# Set up composite backend with routing (参考新版本实现)
|
||||||
large_results_backend = FilesystemBackend(
|
large_results_backend = FilesystemBackend(
|
||||||
root_dir=tempfile.mkdtemp(prefix="deepagents_large_results_"),
|
root_dir=tempfile.mkdtemp(prefix="deepagents_large_results_"),
|
||||||
|
virtual_mode=True,
|
||||||
)
|
)
|
||||||
conversation_history_backend = FilesystemBackend(
|
conversation_history_backend = FilesystemBackend(
|
||||||
root_dir=tempfile.mkdtemp(prefix="deepagents_conversation_history_"),
|
root_dir=tempfile.mkdtemp(prefix="deepagents_conversation_history_"),
|
||||||
|
virtual_mode=True,
|
||||||
)
|
)
|
||||||
composite_backend = CompositeBackend(
|
composite_backend = CompositeBackend(
|
||||||
default=backend,
|
default=backend,
|
||||||
@ -433,7 +436,7 @@ def create_custom_cli_agent(
|
|||||||
|
|
||||||
agent_middleware.append(
|
agent_middleware.append(
|
||||||
CustomSkillsMiddleware(
|
CustomSkillsMiddleware(
|
||||||
backend=FilesystemBackend(root_dir=workspace_root),
|
backend=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
|
||||||
sources=skills_sources,
|
sources=skills_sources,
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
|||||||
@ -1,4 +1,3 @@
|
|||||||
from ast import Str
|
|
||||||
from langchain.agents.middleware import AgentState, AgentMiddleware, ModelRequest, ModelResponse
|
from langchain.agents.middleware import AgentState, AgentMiddleware, ModelRequest, ModelResponse
|
||||||
from langchain_core.messages import convert_to_openai_messages
|
from langchain_core.messages import convert_to_openai_messages
|
||||||
from agent.prompt_loader import load_guideline_prompt
|
from agent.prompt_loader import load_guideline_prompt
|
||||||
|
|||||||
1653
poetry.lock
generated
1653
poetry.lock
generated
File diff suppressed because it is too large
Load Diff
@ -6,7 +6,7 @@ authors = [
|
|||||||
{name = "朱潮",email = "zhuchaowe@users.noreply.github.com"}
|
{name = "朱潮",email = "zhuchaowe@users.noreply.github.com"}
|
||||||
]
|
]
|
||||||
readme = "README.md"
|
readme = "README.md"
|
||||||
requires-python = ">=3.12,<4.0"
|
requires-python = ">=3.12,<3.15"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fastapi==0.116.1",
|
"fastapi==0.116.1",
|
||||||
"uvicorn==0.35.0",
|
"uvicorn==0.35.0",
|
||||||
@ -26,12 +26,12 @@ dependencies = [
|
|||||||
"chardet>=5.0.0",
|
"chardet>=5.0.0",
|
||||||
"psutil (>=7.1.3,<8.0.0)",
|
"psutil (>=7.1.3,<8.0.0)",
|
||||||
"uvloop (>=0.22.1,<0.23.0)",
|
"uvloop (>=0.22.1,<0.23.0)",
|
||||||
"deepagents (>=0.4.3,<0.5.0)",
|
"deepagents (>=0.5.2,<0.6.0)",
|
||||||
"langchain-mcp-adapters (>=0.2.1,<0.3.0)",
|
"langchain-mcp-adapters (>=0.2.1,<0.3.0)",
|
||||||
"langchain-openai (>=1.1.1,<2.0.0)",
|
"langchain-openai (>=1.1.1,<2.0.0)",
|
||||||
"cachetools (>=6.2.4,<7.0.0)",
|
"cachetools (>=6.2.4,<7.0.0)",
|
||||||
"langgraph-checkpoint-postgres (>=3.0.0,<4.0.0)",
|
"langgraph-checkpoint-postgres (>=3.0.0,<4.0.0)",
|
||||||
"deepagents-cli (>=0.0.25,<0.0.26)",
|
"deepagents-cli (>=0.0.37,<0.1.0)",
|
||||||
"mem0ai (>=0.1.50,<0.3.0)",
|
"mem0ai (>=0.1.50,<0.3.0)",
|
||||||
"psycopg2-binary (>=2.9.11,<3.0.0)",
|
"psycopg2-binary (>=2.9.11,<3.0.0)",
|
||||||
"json-repair (>=0.29.0,<0.30.0)",
|
"json-repair (>=0.29.0,<0.30.0)",
|
||||||
|
|||||||
397
requirements.txt
397
requirements.txt
@ -1,199 +1,202 @@
|
|||||||
aiofiles==24.1.0 ; python_version >= "3.12" and python_version < "4.0"
|
agent-client-protocol==0.9.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
aiohappyeyeballs==2.6.1 ; python_version >= "3.12" and python_version < "4.0"
|
aiofiles==24.1.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
aiohttp-retry==2.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
aiohappyeyeballs==2.6.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
aiohttp==3.13.1 ; python_version >= "3.12" and python_version < "4.0"
|
aiohttp==3.13.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
aiosignal==1.4.0 ; python_version >= "3.12" and python_version < "4.0"
|
aiosignal==1.4.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
aiosqlite==0.22.1 ; python_version >= "3.12" and python_version < "4.0"
|
aiosqlite==0.22.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
annotated-types==0.7.0 ; python_version >= "3.12" and python_version < "4.0"
|
annotated-types==0.7.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
anthropic==0.84.0 ; python_version >= "3.12" and python_version < "4.0"
|
anthropic==0.94.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
anyio==4.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
anyio==4.11.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
attrs==25.4.0 ; python_version >= "3.12" and python_version < "4.0"
|
attrs==25.4.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
backoff==2.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
backoff==2.2.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
beautifulsoup4==4.14.3 ; python_version >= "3.12" and python_version < "4.0"
|
beautifulsoup4==4.14.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
bracex==2.6 ; python_version >= "3.12" and python_version < "4.0"
|
blockbuster==1.5.26 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
cachetools==6.2.4 ; python_version >= "3.12" and python_version < "4.0"
|
bracex==2.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
cbor2==5.7.1 ; python_version >= "3.12" and python_version < "4.0"
|
cachetools==6.2.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
certifi==2025.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
certifi==2025.10.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
cffi==2.0.0 ; python_version >= "3.12" and python_version < "4.0" and platform_python_implementation != "PyPy"
|
cffi==2.0.0 ; python_version >= "3.12" and python_version < "3.15" and platform_python_implementation != "PyPy"
|
||||||
chardet==5.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
chardet==5.2.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
charset-normalizer==3.4.4 ; python_version >= "3.12" and python_version < "4.0"
|
charset-normalizer==3.4.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
click==8.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
click==8.3.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Windows"
|
cloudpickle==3.1.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
croniter==3.0.4 ; python_version >= "3.12" and python_version < "4.0"
|
colorama==0.4.6 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Windows"
|
||||||
cryptography==46.0.5 ; python_version >= "3.12" and python_version < "4.0"
|
croniter==3.0.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
daytona-api-client-async==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
cryptography==46.0.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
daytona-api-client==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
deepagents-acp==0.0.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
daytona-toolbox-api-client-async==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
deepagents-cli==0.0.37 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
daytona-toolbox-api-client==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
deepagents==0.5.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
daytona==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
defusedxml==0.7.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
deepagents-cli==0.0.25 ; python_version >= "3.12" and python_version < "4.0"
|
distro==1.9.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
deepagents==0.4.3 ; python_version >= "3.12" and python_version < "4.0"
|
docstring-parser==0.17.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
defusedxml==0.7.1 ; python_version >= "3.12" and python_version < "4.0"
|
et-xmlfile==2.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
deprecated==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
|
fastapi==0.116.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
distro==1.9.0 ; python_version >= "3.12" and python_version < "4.0"
|
filelock==3.20.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
docstring-parser==0.17.0 ; python_version >= "3.12" and python_version < "4.0"
|
filetype==1.2.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
environs==14.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
forbiddenfruit==0.1.4 ; python_version >= "3.12" and python_version < "3.15" and implementation_name == "cpython"
|
||||||
et-xmlfile==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
frozenlist==1.8.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
fastapi==0.116.1 ; python_version >= "3.12" and python_version < "4.0"
|
fsspec==2025.9.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
filelock==3.20.0 ; python_version >= "3.12" and python_version < "4.0"
|
google-auth==2.48.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
filetype==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
google-genai==1.65.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
frozenlist==1.8.0 ; python_version >= "3.12" and python_version < "4.0"
|
googleapis-common-protos==1.74.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
fsspec==2025.9.0 ; python_version >= "3.12" and python_version < "4.0"
|
greenlet==3.3.0 ; python_version >= "3.12" and python_version < "3.15" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32")
|
||||||
google-auth==2.48.0 ; python_version >= "3.12" and python_version < "4.0"
|
grpcio-health-checking==1.78.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
google-genai==1.65.0 ; python_version >= "3.12" and python_version < "4.0"
|
grpcio-tools==1.78.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
greenlet==3.3.0 ; python_version >= "3.12" and python_version < "4.0" and (platform_machine == "aarch64" or platform_machine == "ppc64le" or platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "AMD64" or platform_machine == "win32" or platform_machine == "WIN32")
|
grpcio==1.78.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
grpcio-tools==1.71.2 ; python_version >= "3.13" and python_version < "4.0"
|
h11==0.16.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
grpcio==1.76.0 ; python_version >= "3.12" and python_version < "4.0"
|
h2==4.3.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
grpclib==0.4.8 ; python_version >= "3.12" and python_version < "4.0"
|
hf-xet==1.1.10 ; python_version >= "3.12" and python_version < "3.15" and (platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "arm64" or platform_machine == "aarch64")
|
||||||
h11==0.16.0 ; python_version >= "3.12" and python_version < "4.0"
|
hpack==4.1.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
h2==4.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
httpcore==1.0.9 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
hf-xet==1.1.10 ; python_version >= "3.12" and python_version < "4.0" and (platform_machine == "x86_64" or platform_machine == "amd64" or platform_machine == "arm64" or platform_machine == "aarch64")
|
httptools==0.7.1 ; python_version >= "3.12" and python_version < "3.15" and platform_system != "Windows"
|
||||||
hpack==4.1.0 ; python_version >= "3.12" and python_version < "4.0"
|
httpx-sse==0.4.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
httpcore==1.0.9 ; python_version >= "3.12" and python_version < "4.0"
|
httpx==0.28.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
httpx-sse==0.4.3 ; python_version >= "3.12" and python_version < "4.0"
|
huey==2.5.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
httpx==0.28.1 ; python_version >= "3.12" and python_version < "4.0"
|
huggingface-hub==0.35.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
huey==2.5.3 ; python_version >= "3.12" and python_version < "4.0"
|
hyperframe==6.1.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
huggingface-hub==0.35.3 ; python_version >= "3.12" and python_version < "4.0"
|
idna==3.11 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
hyperframe==6.1.0 ; python_version >= "3.12" and python_version < "4.0"
|
importlib-metadata==8.7.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
idna==3.11 ; python_version >= "3.12" and python_version < "4.0"
|
jinja2==3.1.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jinja2==3.1.6 ; python_version >= "3.12" and python_version < "4.0"
|
jiter==0.11.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jiter==0.11.1 ; python_version >= "3.12" and python_version < "4.0"
|
joblib==1.5.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
joblib==1.5.2 ; python_version >= "3.12" and python_version < "4.0"
|
json-repair==0.29.10 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
json-repair==0.29.10 ; python_version >= "3.12" and python_version < "4.0"
|
json5==0.13.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
json5==0.13.0 ; python_version >= "3.12" and python_version < "4.0"
|
jsonpatch==1.33 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jsonpatch==1.33 ; python_version >= "3.12" and python_version < "4.0"
|
jsonpointer==3.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jsonpointer==3.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
jsonschema-rs==0.44.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jsonschema-specifications==2025.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
jsonschema-specifications==2025.9.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
jsonschema==4.25.1 ; python_version >= "3.12" and python_version < "4.0"
|
jsonschema==4.25.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain-anthropic==1.3.4 ; python_version >= "3.12" and python_version < "4.0"
|
langchain-anthropic==1.4.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain-core==1.2.16 ; python_version >= "3.12" and python_version < "4.0"
|
langchain-core==1.2.28 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain-google-genai==4.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
langchain-google-genai==4.2.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain-mcp-adapters==0.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
langchain-mcp-adapters==0.2.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain-openai==1.1.9 ; python_version >= "3.12" and python_version < "4.0"
|
langchain-openai==1.1.12 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langchain==1.2.10 ; python_version >= "3.12" and python_version < "4.0"
|
langchain==1.2.15 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph-checkpoint-postgres==3.0.4 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-api==0.7.100 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph-checkpoint-sqlite==3.0.3 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-checkpoint-postgres==3.0.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph-checkpoint==4.0.1 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-checkpoint-sqlite==3.0.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph-prebuilt==1.0.8 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-checkpoint==4.0.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph-sdk==0.3.3 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-cli==0.4.21 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langgraph==1.0.10 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-prebuilt==1.0.9 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
langsmith==0.7.9 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-runtime-inmem==0.27.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
linkify-it-py==2.1.0 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph-sdk==0.3.13 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
markdown-it-py==4.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
langgraph==1.1.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
markdownify==1.2.2 ; python_version >= "3.12" and python_version < "4.0"
|
langsmith==0.7.9 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
markupsafe==3.0.3 ; python_version >= "3.12" and python_version < "4.0"
|
linkify-it-py==2.1.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
marshmallow==4.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
markdown-it-py==4.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
mcp==1.12.4 ; python_version >= "3.12" and python_version < "4.0"
|
markdownify==1.2.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
mdit-py-plugins==0.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
markupsafe==3.0.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
mdurl==0.1.2 ; python_version >= "3.12" and python_version < "4.0"
|
mcp==1.12.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
mem0ai==0.1.116 ; python_version >= "3.12" and python_version < "4.0"
|
mdit-py-plugins==0.5.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
modal==1.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
mdurl==0.1.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
mpmath==1.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
mem0ai==0.1.115 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
multidict==6.7.0 ; python_version >= "3.12" and python_version < "4.0"
|
mpmath==1.3.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
multipart==1.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
multidict==6.7.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
networkx==3.5 ; python_version >= "3.12" and python_version < "4.0"
|
networkx==3.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
numpy==1.26.4 ; python_version >= "3.12" and python_version < "4.0"
|
numpy==1.26.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
nvidia-cublas-cu12==12.1.3.1 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cublas-cu12==12.1.3.1 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cuda-cupti-cu12==12.1.105 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cuda-cupti-cu12==12.1.105 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cuda-nvrtc-cu12==12.1.105 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cuda-nvrtc-cu12==12.1.105 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cuda-runtime-cu12==12.1.105 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cuda-runtime-cu12==12.1.105 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cudnn-cu12==8.9.2.26 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cudnn-cu12==8.9.2.26 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cufft-cu12==11.0.2.54 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cufft-cu12==11.0.2.54 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-curand-cu12==10.3.2.106 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-curand-cu12==10.3.2.106 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cusolver-cu12==11.4.5.107 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cusolver-cu12==11.4.5.107 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-cusparse-cu12==12.1.0.106 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-cusparse-cu12==12.1.0.106 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-nccl-cu12==2.19.3 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-nccl-cu12==2.19.3 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-nvjitlink-cu12==12.9.86 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-nvjitlink-cu12==12.9.86 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
nvidia-nvtx-cu12==12.1.105 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
nvidia-nvtx-cu12==12.1.105 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
obstore==0.7.3 ; python_version >= "3.12" and python_version < "4.0"
|
openai==2.31.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
openai==2.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
openpyxl==3.1.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
openpyxl==3.1.5 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-api==1.41.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
orjson==3.11.5 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-exporter-otlp-proto-common==1.41.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
ormsgpack==1.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-exporter-otlp-proto-http==1.41.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
packaging==25.0 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-proto==1.41.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pandas==2.3.3 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-sdk==1.41.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pillow==12.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
opentelemetry-semantic-conventions==0.62b0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
platformdirs==4.9.2 ; python_version >= "3.12" and python_version < "4.0"
|
orjson==3.11.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
portalocker==2.10.1 ; python_version >= "3.13" and python_version < "4.0"
|
ormsgpack==1.12.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
packaging==25.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
pandas==2.3.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
pathspec==1.0.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
pillow==12.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
platformdirs==4.9.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
portalocker==2.10.1 ; python_version >= "3.13" and python_version < "3.15"
|
||||||
portalocker==3.2.0 ; python_version == "3.12"
|
portalocker==3.2.0 ; python_version == "3.12"
|
||||||
posthog==7.6.0 ; python_version >= "3.12" and python_version < "4.0"
|
posthog==7.6.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
prompt-toolkit==3.0.52 ; python_version >= "3.12" and python_version < "4.0"
|
prompt-toolkit==3.0.52 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
propcache==0.4.1 ; python_version >= "3.12" and python_version < "4.0"
|
propcache==0.4.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
protobuf==5.29.5 ; python_version >= "3.12" and python_version < "4.0"
|
protobuf==6.33.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
psutil==7.1.3 ; python_version >= "3.12" and python_version < "4.0"
|
psutil==7.1.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
psycopg-pool==3.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
psycopg-pool==3.3.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
psycopg2-binary==2.9.11 ; python_version >= "3.12" and python_version < "4.0"
|
psycopg2-binary==2.9.11 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
psycopg==3.3.2 ; python_version >= "3.12" and python_version < "4.0"
|
psycopg==3.3.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pyasn1-modules==0.4.2 ; python_version >= "3.12" and python_version < "4.0"
|
pyasn1-modules==0.4.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pyasn1==0.6.2 ; python_version >= "3.12" and python_version < "4.0"
|
pyasn1==0.6.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pycparser==3.0 ; python_version >= "3.12" and python_version < "4.0" and platform_python_implementation != "PyPy" and implementation_name != "PyPy"
|
pycparser==3.0 ; python_version >= "3.12" and python_version < "3.15" and platform_python_implementation != "PyPy" and implementation_name != "PyPy"
|
||||||
pydantic-core==2.27.2 ; python_version >= "3.12" and python_version < "4.0"
|
pydantic-core==2.27.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pydantic-settings==2.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
pydantic-settings==2.11.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pydantic==2.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
pydantic==2.10.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pygments==2.19.2 ; python_version >= "3.12" and python_version < "4.0"
|
pygments==2.19.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pyperclip==1.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
pyjwt==2.12.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
python-dateutil==2.8.2 ; python_version >= "3.12" and python_version < "4.0"
|
pyperclip==1.11.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
python-dotenv==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
python-dateutil==2.8.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
python-multipart==0.0.20 ; python_version >= "3.12" and python_version < "4.0"
|
python-dotenv==1.2.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pytz==2025.2 ; python_version >= "3.12" and python_version < "4.0"
|
python-multipart==0.0.20 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pywin32==311 ; python_version >= "3.12" and python_version < "4.0" and (sys_platform == "win32" or platform_system == "Windows")
|
pytz==2025.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
pyyaml==6.0.3 ; python_version >= "3.12" and python_version < "4.0"
|
pywin32==311 ; python_version >= "3.12" and python_version < "3.15" and (sys_platform == "win32" or platform_system == "Windows")
|
||||||
qdrant-client==1.12.1 ; python_version >= "3.13" and python_version < "4.0"
|
pyyaml==6.0.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
|
qdrant-client==1.12.1 ; python_version >= "3.13" and python_version < "3.15"
|
||||||
qdrant-client==1.16.2 ; python_version == "3.12"
|
qdrant-client==1.16.2 ; python_version == "3.12"
|
||||||
referencing==0.37.0 ; python_version >= "3.12" and python_version < "4.0"
|
referencing==0.37.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
regex==2025.9.18 ; python_version >= "3.12" and python_version < "4.0"
|
regex==2025.9.18 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
requests-toolbelt==1.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
requests-toolbelt==1.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
requests==2.32.5 ; python_version >= "3.12" and python_version < "4.0"
|
requests==2.32.5 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
rich==14.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
rich==14.2.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
rpds-py==0.27.1 ; python_version >= "3.12" and python_version < "4.0"
|
rpds-py==0.27.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
rsa==4.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
rsa==4.9.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
runloop-api-client==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
safetensors==0.6.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
safetensors==0.6.2 ; python_version >= "3.12" and python_version < "4.0"
|
scikit-learn==1.7.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
scikit-learn==1.7.2 ; python_version >= "3.12" and python_version < "4.0"
|
scipy==1.16.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
scipy==1.16.2 ; python_version >= "3.12" and python_version < "4.0"
|
sentence-transformers==5.1.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sentence-transformers==5.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
setuptools==80.9.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
setuptools==80.9.0 ; python_version >= "3.13" and python_version < "4.0"
|
six==1.17.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
shellingham==1.5.4 ; python_version >= "3.12" and python_version < "4.0"
|
sniffio==1.3.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
six==1.17.0 ; python_version >= "3.12" and python_version < "4.0"
|
soupsieve==2.8.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sniffio==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
|
sqlalchemy==2.0.45 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
soupsieve==2.8.1 ; python_version >= "3.12" and python_version < "4.0"
|
sqlite-vec==0.1.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sqlalchemy==2.0.45 ; python_version >= "3.12" and python_version < "4.0"
|
sse-starlette==3.0.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sqlite-vec==0.1.6 ; python_version >= "3.12" and python_version < "4.0"
|
starlette==0.47.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sse-starlette==3.0.2 ; python_version >= "3.12" and python_version < "4.0"
|
structlog==25.5.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
starlette==0.47.3 ; python_version >= "3.12" and python_version < "4.0"
|
sympy==1.14.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
sympy==1.14.0 ; python_version >= "3.12" and python_version < "4.0"
|
tavily-python==0.7.22 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
synchronicity==0.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
tenacity==9.1.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tavily-python==0.7.22 ; python_version >= "3.12" and python_version < "4.0"
|
textual-autocomplete==4.0.6 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tenacity==9.1.2 ; python_version >= "3.12" and python_version < "4.0"
|
textual-speedups==0.2.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
textual-autocomplete==4.0.6 ; python_version >= "3.12" and python_version < "4.0"
|
textual==8.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
textual==8.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
threadpoolctl==3.6.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
threadpoolctl==3.6.0 ; python_version >= "3.12" and python_version < "4.0"
|
tiktoken==0.12.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tiktoken==0.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
tokenizers==0.22.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tokenizers==0.22.1 ; python_version >= "3.12" and python_version < "4.0"
|
tomli-w==1.2.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
toml==0.10.2 ; python_version >= "3.12" and python_version < "4.0"
|
torch==2.2.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tomli-w==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
tqdm==4.67.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
torch==2.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
transformers==4.57.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tqdm==4.67.1 ; python_version >= "3.12" and python_version < "4.0"
|
triton==2.2.0 ; python_version >= "3.12" and python_version < "3.15" and platform_system == "Linux" and platform_machine == "x86_64"
|
||||||
transformers==4.57.1 ; python_version >= "3.12" and python_version < "4.0"
|
truststore==0.10.4 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
triton==2.2.0 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Linux" and platform_machine == "x86_64"
|
typing-extensions==4.15.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
typer==0.20.1 ; python_version >= "3.12" and python_version < "4.0"
|
typing-inspection==0.4.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
types-certifi==2021.10.8.3 ; python_version >= "3.12" and python_version < "4.0"
|
tzdata==2025.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
types-toml==0.10.8.20240310 ; python_version >= "3.12" and python_version < "4.0"
|
uc-micro-py==2.0.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
typing-extensions==4.15.0 ; python_version >= "3.12" and python_version < "4.0"
|
urllib3==2.5.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
typing-inspection==0.4.2 ; python_version >= "3.12" and python_version < "4.0"
|
uuid-utils==0.12.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
tzdata==2025.2 ; python_version >= "3.12" and python_version < "4.0"
|
uvicorn==0.35.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
uc-micro-py==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
uvloop==0.22.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
urllib3==2.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
watchfiles==1.1.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
uuid-utils==0.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
wcmatch==10.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
uvicorn==0.35.0 ; python_version >= "3.12" and python_version < "4.0"
|
wcwidth==0.2.14 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
uvloop==0.22.1 ; python_version >= "3.12" and python_version < "4.0"
|
websockets==15.0.1 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
watchfiles==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
wsgidav==4.3.3 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
wcmatch==10.1 ; python_version >= "3.12" and python_version < "4.0"
|
xlrd==2.0.2 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
wcwidth==0.2.14 ; python_version >= "3.12" and python_version < "4.0"
|
xxhash==3.6.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
websockets==15.0.1 ; python_version >= "3.12" and python_version < "4.0"
|
yarl==1.22.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
wrapt==2.0.1 ; python_version >= "3.12" and python_version < "4.0"
|
zipp==3.23.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
wsgidav==4.3.3 ; python_version >= "3.12" and python_version < "4.0"
|
zstandard==0.25.0 ; python_version >= "3.12" and python_version < "3.15"
|
||||||
xlrd==2.0.2 ; python_version >= "3.12" and python_version < "4.0"
|
|
||||||
xxhash==3.6.0 ; python_version >= "3.12" and python_version < "4.0"
|
|
||||||
yarl==1.22.0 ; python_version >= "3.12" and python_version < "4.0"
|
|
||||||
zstandard==0.25.0 ; python_version >= "3.12" and python_version < "4.0"
|
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user