feat: upgrade deepagents 0.4.3 and deepagents-cli 0.0.25
- Replace ShellMiddleware with LocalShellBackend
- Update AgentMemoryMiddleware to MemoryMiddleware with new signature
- Update CustomSkillsMiddleware to use new SkillsMiddleware signature
- Add LocalContextMiddleware for local context
- Update CompositeBackend to use routing
- Update dependencies: langgraph-checkpoint-postgres to 3.0.4
Breaking Changes:
- agent/deep_assistant.py: Major refactoring to adapt to new deepagents API
- pyproject.toml: Version bump
- deepagents: 0.2.8 -> 0.4.3
- deepagents-cli: 0.0.11 -> 0.0.25
- langgraph-checkpoint-postgres: 2.0.25 -> 3.0.4 (for compatibility with langgraph-checkpoint 3.x)
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
parent
8d29a263e1
commit
a0b6e4cc7f
@ -3,11 +3,12 @@ import logging
|
||||
import time
|
||||
import copy
|
||||
import os
|
||||
import tempfile
|
||||
from pathlib import Path
|
||||
from typing import Any, Dict
|
||||
from langchain.chat_models import init_chat_model
|
||||
from deepagents import create_deep_agent
|
||||
from deepagents.backends import CompositeBackend
|
||||
from deepagents.backends import CompositeBackend, LocalShellBackend
|
||||
from deepagents.backends.filesystem import FilesystemBackend
|
||||
from deepagents.backends.sandbox import SandboxBackendProtocol
|
||||
from deepagents_cli.agent import create_cli_agent
|
||||
@ -42,17 +43,18 @@ from langgraph.checkpoint.memory import InMemorySaver
|
||||
from langchain.tools import BaseTool
|
||||
from langchain_core.language_models import BaseChatModel
|
||||
from langgraph.pregel import Pregel
|
||||
from deepagents_cli.shell import ShellMiddleware
|
||||
from deepagents_cli.agent_memory import AgentMemoryMiddleware
|
||||
# 新版本导入:MemoryMiddleware 和 SkillsMiddleware 已迁移到 deepagents.middleware
|
||||
from deepagents.middleware import MemoryMiddleware, SkillsMiddleware
|
||||
from langchain.agents.middleware import AgentMiddleware
|
||||
from langgraph.types import Checkpointer
|
||||
from deepagents_cli.skills import SkillsMiddleware
|
||||
from deepagents_cli.config import settings, get_default_coding_instructions
|
||||
from langchain.agents.middleware import HumanInTheLoopMiddleware, InterruptOnConfig, TodoListMiddleware
|
||||
from deepagents.middleware.filesystem import FilesystemMiddleware
|
||||
from deepagents.middleware.patch_tool_calls import PatchToolCallsMiddleware
|
||||
from langchain_anthropic.middleware import AnthropicPromptCachingMiddleware
|
||||
from deepagents.graph import BASE_AGENT_PROMPT
|
||||
# 新增:LocalContextMiddleware
|
||||
from deepagents_cli.local_context import LocalContextMiddleware
|
||||
|
||||
# 全局 MemorySaver 实例
|
||||
# from langgraph.checkpoint.memory import MemorySaver
|
||||
@ -261,77 +263,49 @@ async def init_agent(config: AgentConfig):
|
||||
logger.info(f"create agent elapsed: {time.time() - create_start:.3f}s")
|
||||
return agent, checkpointer
|
||||
|
||||
class CustomAgentMemoryMiddleware(AgentMemoryMiddleware):
|
||||
class CustomAgentMemoryMiddleware(MemoryMiddleware):
|
||||
"""自定义的 AgentMemoryMiddleware,修改路径显示为当前目录"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
settings,
|
||||
assistant_id: str,
|
||||
system_prompt_template: str | None = None,
|
||||
backend: FilesystemBackend,
|
||||
sources: list[str],
|
||||
) -> None:
|
||||
super().__init__(
|
||||
settings=settings,
|
||||
assistant_id=assistant_id,
|
||||
system_prompt_template=system_prompt_template
|
||||
backend=backend,
|
||||
sources=sources,
|
||||
)
|
||||
self.agent_dir_display = f"."
|
||||
|
||||
def _format_memory_content(self, memories: list[dict]) -> str:
|
||||
"""Format memory content for display in system prompt.
|
||||
|
||||
Override to use relative path display.
|
||||
"""
|
||||
# 使用父类的默认实现,但路径显示已经是相对路径
|
||||
return super()._format_memory_content(memories) if hasattr(super(), '_format_memory_content') else ""
|
||||
|
||||
class CustomSkillsMiddleware(SkillsMiddleware):
|
||||
"""自定义的 SkillsMiddleware,使用新的签名格式"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
*,
|
||||
skills_dir: str | Path,
|
||||
assistant_id: str,
|
||||
project_skills_dir: str | Path | None = None,
|
||||
backend: FilesystemBackend,
|
||||
sources: list[str],
|
||||
project_skills_display: str = "./skills",
|
||||
) -> None:
|
||||
super().__init__(
|
||||
skills_dir=skills_dir,
|
||||
assistant_id=assistant_id,
|
||||
project_skills_dir=project_skills_dir
|
||||
backend=backend,
|
||||
sources=sources,
|
||||
)
|
||||
self.skills_dir = None
|
||||
self.project_skills_display = f"./skills"
|
||||
|
||||
def _format_skills_locations(self) -> str:
|
||||
"""Format skills locations for display in system prompt."""
|
||||
return "**Project Skills**: `{self.project_skills_dir}`"
|
||||
|
||||
def _format_skills_list(self, skills) -> str:
|
||||
"""Format skills metadata for display in system prompt."""
|
||||
if not skills:
|
||||
locations = [f"{self.user_skills_display}/"]
|
||||
if self.project_skills_dir:
|
||||
locations.append(f"{self.project_skills_display}/")
|
||||
return f"(No skills available yet. You can create skills in {' or '.join(locations)})"
|
||||
|
||||
# Group skills by source
|
||||
user_skills = [s for s in skills if s["source"] == "user"]
|
||||
project_skills = [s for s in skills if s["source"] == "project"]
|
||||
|
||||
lines = []
|
||||
|
||||
# Show user skills
|
||||
if user_skills:
|
||||
lines.append("**User Skills:**")
|
||||
for skill in user_skills:
|
||||
lines.append(f"- **{skill['name']}**: {skill['description']}")
|
||||
lines.append(f" → Read `{skill['path']}` for full instructions")
|
||||
lines.append("")
|
||||
|
||||
# Show project skills
|
||||
if project_skills:
|
||||
lines.append("**Project Skills:**")
|
||||
for skill in project_skills:
|
||||
lines.append(f"- **{skill['name']}**: {skill['description']}")
|
||||
lines.append(f" → Read `{skill['path']}` for full instructions")
|
||||
|
||||
return "\n".join(lines)
|
||||
self.project_skills_display = project_skills_display
|
||||
|
||||
def before_agent(self, state, runtime):
|
||||
"""Load skills metadata before agent execution.
|
||||
|
||||
This runs once at session start to discover available skills from both
|
||||
user-level and project-level directories.
|
||||
修改路径显示为相对路径。
|
||||
|
||||
Args:
|
||||
state: Current agent state.
|
||||
@ -341,11 +315,13 @@ class CustomSkillsMiddleware(SkillsMiddleware):
|
||||
Updated state with skills_metadata populated.
|
||||
"""
|
||||
state = super().before_agent(state, runtime)
|
||||
# 新版本的 skills_metadata 结构可能不同,需要检查
|
||||
if "skills_metadata" in state and state["skills_metadata"]:
|
||||
for item in state["skills_metadata"]:
|
||||
if item["source"] == "project":
|
||||
item["path"] = self.project_skills_display + item["path"].replace(str(self.project_skills_dir), "")
|
||||
else:
|
||||
item["path"] = self.user_skills_display + item["path"].replace(str(self.skills_dir), "")
|
||||
# 修改路径显示为相对路径
|
||||
if "path" in item and item["path"]:
|
||||
# 简化为只显示相对路径
|
||||
item["path"] = f"./skills/{item.get('name', 'unknown')}/SKILL.md"
|
||||
return state
|
||||
|
||||
def create_custom_cli_agent(
|
||||
@ -403,55 +379,86 @@ def create_custom_cli_agent(
|
||||
# Setup agent directory for persistent memory (if enabled)
|
||||
if enable_memory or enable_skills:
|
||||
agent_dir = settings.ensure_agent_dir(assistant_id)
|
||||
agent_md = agent_dir / "agent.md"
|
||||
agent_md = agent_dir / "AGENTS.md" # 新版本使用 AGENTS.md
|
||||
if not agent_md.exists():
|
||||
source_content = get_default_coding_instructions()
|
||||
agent_md.write_text(source_content)
|
||||
# Create empty file for user customizations
|
||||
agent_md.touch()
|
||||
|
||||
# Build middleware stack based on enabled features
|
||||
agent_middleware = middleware
|
||||
|
||||
# Prepare workspace root
|
||||
if workspace_root is None:
|
||||
workspace_root = str(Path.cwd())
|
||||
|
||||
# CONDITIONAL SETUP: Local vs Remote Sandbox
|
||||
if sandbox is None:
|
||||
# ========== LOCAL MODE ==========
|
||||
composite_backend = CompositeBackend(
|
||||
default=FilesystemBackend(root_dir=workspace_root, virtual_mode=True), # Current working directory
|
||||
routes={}, # No virtualization - use real paths
|
||||
)
|
||||
|
||||
# Add memory middleware
|
||||
if enable_memory:
|
||||
agent_middleware.append(
|
||||
CustomAgentMemoryMiddleware(settings=settings, assistant_id=assistant_id)
|
||||
)
|
||||
|
||||
# Add skills middleware
|
||||
if enable_skills:
|
||||
agent_middleware.append(
|
||||
CustomSkillsMiddleware(
|
||||
skills_dir=workspace_root,
|
||||
project_skills_dir=workspace_root+"/skills",
|
||||
assistant_id=assistant_id
|
||||
)
|
||||
)
|
||||
|
||||
# Add shell middleware (only in local mode)
|
||||
if enable_shell:
|
||||
# Create environment for shell commands
|
||||
# Start with a copy of current environment
|
||||
final_shell_env = os.environ.copy()
|
||||
# Merge custom environment variables if provided (custom vars take precedence)
|
||||
if shell_env:
|
||||
final_shell_env.update(shell_env)
|
||||
# Use custom workspace_root if provided, otherwise use current directory
|
||||
shell_workspace = workspace_root if workspace_root is not None else str(Path.cwd())
|
||||
|
||||
agent_middleware.append(
|
||||
ShellMiddleware(
|
||||
workspace_root=shell_workspace,
|
||||
# Use LocalShellBackend for filesystem + shell execution
|
||||
backend = LocalShellBackend(
|
||||
root_dir=workspace_root,
|
||||
virtual_mode=True,
|
||||
inherit_env=True,
|
||||
env=final_shell_env,
|
||||
)
|
||||
else:
|
||||
# No shell access - use plain FilesystemBackend
|
||||
backend = FilesystemBackend(root_dir=workspace_root, virtual_mode=True)
|
||||
|
||||
# Set up composite backend with routing (参考新版本实现)
|
||||
large_results_backend = FilesystemBackend(
|
||||
root_dir=tempfile.mkdtemp(prefix="deepagents_large_results_"),
|
||||
virtual_mode=True,
|
||||
)
|
||||
conversation_history_backend = FilesystemBackend(
|
||||
root_dir=tempfile.mkdtemp(prefix="deepagents_conversation_history_"),
|
||||
virtual_mode=True,
|
||||
)
|
||||
composite_backend = CompositeBackend(
|
||||
default=backend,
|
||||
routes={
|
||||
"/large_tool_results/": large_results_backend,
|
||||
"/conversation_history/": conversation_history_backend,
|
||||
},
|
||||
)
|
||||
|
||||
# Add memory middleware (using new signature)
|
||||
if enable_memory:
|
||||
memory_sources = [str(settings.get_user_agent_md_path(assistant_id))]
|
||||
memory_sources.extend(str(p) for p in settings.get_project_agent_md_path())
|
||||
|
||||
agent_middleware.append(
|
||||
CustomAgentMemoryMiddleware(
|
||||
backend=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
|
||||
sources=memory_sources,
|
||||
)
|
||||
)
|
||||
|
||||
# Add skills middleware (using new signature)
|
||||
if enable_skills:
|
||||
skills_sources = [workspace_root]
|
||||
skills_sources.append(workspace_root + "/skills")
|
||||
|
||||
agent_middleware.append(
|
||||
CustomSkillsMiddleware(
|
||||
backend=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
|
||||
sources=skills_sources,
|
||||
)
|
||||
)
|
||||
|
||||
# Add LocalContextMiddleware (new in latest version)
|
||||
# Check if backend supports execute (is _ExecutableBackend)
|
||||
if enable_shell:
|
||||
from deepagents_cli.local_context import LocalContextMiddleware, _ExecutableBackend
|
||||
if isinstance(backend, _ExecutableBackend):
|
||||
agent_middleware.append(LocalContextMiddleware(backend=backend))
|
||||
|
||||
else:
|
||||
# ========== REMOTE SANDBOX MODE ==========
|
||||
composite_backend = CompositeBackend(
|
||||
@ -461,17 +468,25 @@ def create_custom_cli_agent(
|
||||
|
||||
# Add memory middleware
|
||||
if enable_memory:
|
||||
memory_sources = [str(settings.get_user_agent_md_path(assistant_id))]
|
||||
memory_sources.extend(str(p) for p in settings.get_project_agent_md_path())
|
||||
|
||||
agent_middleware.append(
|
||||
CustomAgentMemoryMiddleware(settings=settings, assistant_id=assistant_id)
|
||||
CustomAgentMemoryMiddleware(
|
||||
backend=sandbox,
|
||||
sources=memory_sources,
|
||||
)
|
||||
)
|
||||
|
||||
# Add skills middleware
|
||||
if enable_skills:
|
||||
skills_sources = [workspace_root]
|
||||
skills_sources.append(workspace_root + "/skills")
|
||||
|
||||
agent_middleware.append(
|
||||
CustomSkillsMiddleware(
|
||||
skills_dir=workspace_root,
|
||||
project_skills_dir=workspace_root+"/skills",
|
||||
assistant_id=assistant_id
|
||||
backend=sandbox,
|
||||
sources=skills_sources,
|
||||
)
|
||||
)
|
||||
|
||||
@ -480,19 +495,15 @@ def create_custom_cli_agent(
|
||||
|
||||
# Get or use custom system prompt
|
||||
if system_prompt is None:
|
||||
# Import get_system_prompt from deepagents_cli.agent
|
||||
from deepagents_cli.agent import get_system_prompt as _get_system_prompt
|
||||
system_prompt = _get_system_prompt(assistant_id=assistant_id, sandbox_type=sandbox_type)
|
||||
|
||||
# Import InterruptOnConfig
|
||||
from langchain.agents.middleware import InterruptOnConfig
|
||||
|
||||
# Configure interrupt_on based on auto_approve setting
|
||||
if auto_approve:
|
||||
# No interrupts - all tools run automatically
|
||||
interrupt_on = {}
|
||||
else:
|
||||
# Full HITL for destructive operations - import from deepagents_cli.agent
|
||||
# Full HITL for destructive operations
|
||||
from deepagents_cli.agent import _add_interrupt_on
|
||||
interrupt_on = _add_interrupt_on()
|
||||
|
||||
@ -502,8 +513,8 @@ def create_custom_cli_agent(
|
||||
AnthropicPromptCachingMiddleware(unsupported_model_behavior="ignore"),
|
||||
PatchToolCallsMiddleware(),
|
||||
]
|
||||
if middleware:
|
||||
deepagent_middleware.extend(middleware)
|
||||
if agent_middleware:
|
||||
deepagent_middleware.extend(agent_middleware)
|
||||
if interrupt_on is not None:
|
||||
deepagent_middleware.append(HumanInTheLoopMiddleware(interrupt_on=interrupt_on))
|
||||
|
||||
|
||||
372
plans/deepagents-upgrade.md
Normal file
372
plans/deepagents-upgrade.md
Normal file
@ -0,0 +1,372 @@
|
||||
# DeepAgents 依赖升级计划
|
||||
|
||||
## 概述
|
||||
|
||||
将 qwen-agent 项目中的 deepagents 和 deepagents-cli 依赖升级到最新版本,同时保留自定义功能(workspace_root、shell_env、自定义中间件等)。
|
||||
|
||||
## 问题背景
|
||||
|
||||
### 当前版本
|
||||
|
||||
| 包名 | 当前版本 | 最新版本 |
|
||||
|------|---------|---------|
|
||||
| deepagents | 0.2.8 | 0.4.4 |
|
||||
| deepagents-cli | 0.0.11 | 0.0.25 |
|
||||
|
||||
### 自定义改造
|
||||
|
||||
项目中 `agent/deep_assistant.py:351-518` 的 `create_custom_cli_agent` 函数基于 deepagents-cli 的 `create_cli_agent` 进行了以下改造:
|
||||
|
||||
1. **workspace_root 参数** - 自定义工作目录为 `projects/robot/{bot_id}`
|
||||
2. **shell_env 参数** - 传递上下文环境变量(ASSISTANT_ID, USER_IDENTIFIER, TRACE_ID)
|
||||
3. **middleware 参数** - 支持外部传入自定义中间件列表
|
||||
4. **checkpointer 参数** - 支持外部传入 PostgreSQL checkpointer
|
||||
5. **store 参数** - 支持外部传入 store
|
||||
6. **CustomAgentMemoryMiddleware** - 修改路径显示为 `./`
|
||||
7. **CustomSkillsMiddleware** - 修改技能路径显示
|
||||
|
||||
### API 变更对比
|
||||
|
||||
| 参数 | 0.0.11 (当前) | 0.0.25 (最新) | 影响 |
|
||||
|------|--------------|--------------|------|
|
||||
| workspace_root | 支持(自定义添加) | 不支持 | Critical |
|
||||
| shell_env | 支持(自定义添加) | 不支持 | Critical |
|
||||
| middleware | 支持(自定义添加) | 不支持 | Critical |
|
||||
| checkpointer | 支持外部传入 | 内部创建 InMemorySaver | Critical |
|
||||
| store | 支持 | 不支持 | Important |
|
||||
| enable_shell | 支持 | 支持 | 兼容 |
|
||||
| sandbox_type | 支持 | 支持 | 兼容 |
|
||||
|
||||
## 模块迁移对照表(重要变更)
|
||||
|
||||
> ⚠️ **关键发现**:多个模块已从 `deepagents_cli` 迁移到 `deepagents` 包
|
||||
|
||||
| 模块/类名 | 旧位置 (0.0.11) | 新位置 (0.0.25) | 变更说明 |
|
||||
|-----------|----------------|----------------|---------|
|
||||
| `ShellMiddleware` | `deepagents_cli.shell` | **已删除** | 被 `LocalShellBackend` 替代 |
|
||||
| `AgentMemoryMiddleware` | `deepagents_cli.agent_memory` | `deepagents.middleware.memory.MemoryMiddleware` | 改名为 `MemoryMiddleware` |
|
||||
| `SkillsMiddleware` | `deepagents_cli.skills` | `deepagents.middleware.skills` | 迁移到 SDK |
|
||||
| `settings` | `deepagents_cli.config` | `deepagents_cli.config` | 无变化 |
|
||||
| `get_default_coding_instructions` | `deepagents_cli.config` | `deepagents_cli.config` | 无变化 |
|
||||
| `create_cli_agent` | `deepagents_cli.agent` | `deepagents_cli.agent` | 无变化 |
|
||||
|
||||
### LocalShellBackend 替代 ShellMiddleware
|
||||
|
||||
`ShellMiddleware` 已被 `LocalShellBackend` 替代。新版本的 `LocalShellBackend` 同时提供文件系统操作和 shell 执行功能:
|
||||
|
||||
```python
|
||||
from deepagents.backends import LocalShellBackend
|
||||
|
||||
# 创建 backend,支持自定义环境变量
|
||||
backend = LocalShellBackend(
|
||||
root_dir=workspace_root,
|
||||
virtual_mode=True,
|
||||
env={"ASSISTANT_ID": "xxx", "USER_IDENTIFIER": "yyy"}, # 自定义环境变量
|
||||
inherit_env=True, # 继承父进程环境变量
|
||||
)
|
||||
```
|
||||
|
||||
**参数说明**:
|
||||
- `root_dir`: 工作目录
|
||||
- `virtual_mode`: 虚拟路径模式
|
||||
- `env`: 自定义环境变量字典
|
||||
- `inherit_env`: 是否继承 `os.environ`
|
||||
|
||||
## 推荐方案:Fork 并修改
|
||||
|
||||
复制最新版本的 `create_cli_agent` 源代码,在其基础上添加缺失的参数支持。
|
||||
|
||||
### 原因
|
||||
|
||||
1. **保持控制力** - 完全控制 agent 创建过程,不受上游 API 变更影响
|
||||
2. **复用新功能** - 基于新版本代码,获得 bug 修复和性能改进
|
||||
3. **维护成本适中** - 只需在版本升级时同步上游变更
|
||||
4. **风险可控** - 可以逐步验证每个功能
|
||||
|
||||
## 技术考虑
|
||||
|
||||
### 1. FilesystemBackend 的 root_dir 支持
|
||||
|
||||
**最新版本确认**:`FilesystemBackend` 仍然支持 `root_dir` 参数
|
||||
|
||||
```python
|
||||
# 当前实现
|
||||
composite_backend = CompositeBackend(
|
||||
default=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
|
||||
routes={},
|
||||
)
|
||||
```
|
||||
|
||||
**结论**:可以直接复用,无需修改。
|
||||
|
||||
### 2. Shell 环境变量支持(重大变更)
|
||||
|
||||
**原实现**(使用 ShellMiddleware):
|
||||
```python
|
||||
from deepagents_cli.shell import ShellMiddleware
|
||||
|
||||
agent_middleware.append(
|
||||
ShellMiddleware(
|
||||
workspace_root=workspace_root,
|
||||
env=final_shell_env,
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
**新实现**(使用 LocalShellBackend):
|
||||
```python
|
||||
from deepagents.backends import LocalShellBackend
|
||||
|
||||
# 创建带自定义环境变量的 backend
|
||||
shell_backend = LocalShellBackend(
|
||||
root_dir=workspace_root,
|
||||
virtual_mode=True,
|
||||
env=shell_env,
|
||||
inherit_env=True,
|
||||
)
|
||||
|
||||
# 或使用 CompositeBackend 路由
|
||||
composite_backend = CompositeBackend(
|
||||
default=FilesystemBackend(root_dir=workspace_root, virtual_mode=True),
|
||||
routes={
|
||||
"/shell/": shell_backend, # shell 命令路由
|
||||
},
|
||||
)
|
||||
```
|
||||
|
||||
**结论**:需要修改 shell 环境变量的传递方式。
|
||||
|
||||
### 3. checkpointer 管理
|
||||
|
||||
**问题**:最新版本在 `create_deep_agent` 中硬编码 `InMemorySaver`
|
||||
|
||||
**解决方案**:在自定义的 `create_custom_cli_agent` 中保留外部传入 checkpointer 的能力。
|
||||
|
||||
### 4. 中间件兼容性
|
||||
|
||||
需要验证以下自定义中间件与最新版本的兼容性:
|
||||
|
||||
- `CustomAgentMemoryMiddleware` - 父类已从 `AgentMemoryMiddleware` 改名为 `MemoryMiddleware`
|
||||
- `CustomSkillsMiddleware` - 父类 `SkillsMiddleware` 已迁移到 `deepagents.middleware.skills`
|
||||
|
||||
## 实施步骤
|
||||
|
||||
### Phase 1: 准备工作
|
||||
|
||||
- [ ] 创建升级分支 `git checkout -b upgrade/deepagents-0.4.4`
|
||||
- [ ] 备份当前 `agent/deep_assistant.py`
|
||||
- [ ] 更新 pyproject.toml 中的依赖版本
|
||||
```
|
||||
deepagents = ">=0.4.4,<0.5.0"
|
||||
deepagents-cli = ">=0.0.25,<0.0.26"
|
||||
```
|
||||
- [ ] 执行 `poetry install` 安装新版本
|
||||
- [ ] 执行 `poetry export -f requirements.txt -o requirements.txt --without-hashes`
|
||||
|
||||
### Phase 2: 更新导入语句
|
||||
|
||||
根据模块迁移对照表,更新 `agent/deep_assistant.py` 中的导入:
|
||||
|
||||
```python
|
||||
# === 需要修改的导入 ===
|
||||
|
||||
# 旧:from deepagents_cli.shell import ShellMiddleware
|
||||
# 新:不再使用 ShellMiddleware,改用 LocalShellBackend
|
||||
from deepagents.backends import LocalShellBackend
|
||||
|
||||
# 旧:from deepagents_cli.agent_memory import AgentMemoryMiddleware
|
||||
# 新:from deepagents.middleware import MemoryMiddleware
|
||||
from deepagents.middleware import MemoryMiddleware
|
||||
|
||||
# 旧:from deepagents_cli.skills import SkillsMiddleware
|
||||
# 新:
|
||||
from deepagents.middleware import SkillsMiddleware
|
||||
|
||||
# === 无需修改的导入 ===
|
||||
from deepagents_cli.config import settings, get_default_coding_instructions
|
||||
from deepagents_cli.agent import create_cli_agent
|
||||
```
|
||||
|
||||
### Phase 3: 适配 LocalShellBackend
|
||||
|
||||
修改 shell 环境变量的传递方式:
|
||||
|
||||
```python
|
||||
# 原代码(使用 ShellMiddleware)
|
||||
if enable_shell:
|
||||
final_shell_env = os.environ.copy()
|
||||
if shell_env:
|
||||
final_shell_env.update(shell_env)
|
||||
agent_middleware.append(
|
||||
ShellMiddleware(
|
||||
workspace_root=workspace_root,
|
||||
env=final_shell_env,
|
||||
)
|
||||
)
|
||||
|
||||
# 新代码(使用 LocalShellBackend)
|
||||
if enable_shell:
|
||||
final_shell_env = shell_env or {}
|
||||
shell_backend = LocalShellBackend(
|
||||
root_dir=workspace_root,
|
||||
virtual_mode=True,
|
||||
env=final_shell_env,
|
||||
inherit_env=True, # 继承 os.environ
|
||||
)
|
||||
# 将 shell_backend 传入 CompositeBackend 或作为 sandbox 参数
|
||||
```
|
||||
|
||||
### Phase 4: 适配自定义中间件
|
||||
|
||||
更新 `CustomAgentMemoryMiddleware` 和 `CustomSkillsMiddleware` 的父类:
|
||||
|
||||
```python
|
||||
# 旧代码
|
||||
from deepagents_cli.agent_memory import AgentMemoryMiddleware
|
||||
from deepagents_cli.skills import SkillsMiddleware
|
||||
|
||||
class CustomAgentMemoryMiddleware(AgentMemoryMiddleware):
|
||||
...
|
||||
|
||||
class CustomSkillsMiddleware(SkillsMiddleware):
|
||||
...
|
||||
|
||||
# 新代码
|
||||
from deepagents.middleware import MemoryMiddleware, SkillsMiddleware
|
||||
|
||||
class CustomAgentMemoryMiddleware(MemoryMiddleware):
|
||||
...
|
||||
|
||||
class CustomSkillsMiddleware(SkillsMiddleware):
|
||||
...
|
||||
```
|
||||
|
||||
**注意**:需要检查新版本的 `MemoryMiddleware` 和 `SkillsMiddleware` 的构造函数签名是否有变化。
|
||||
|
||||
### Phase 5: 测试
|
||||
|
||||
- [ ] 单元测试
|
||||
```bash
|
||||
poetry run pytest tests/test_deep_assistant.py -v
|
||||
```
|
||||
|
||||
- [ ] 集成测试
|
||||
```bash
|
||||
# 启动服务
|
||||
poetry run uvicorn fastapi_app:app --host 0.0.0.0 --port 8001
|
||||
|
||||
# 执行测试请求
|
||||
curl --request POST \
|
||||
--url http://localhost:8001/api/v2/chat/completions \
|
||||
--header 'authorization: Bearer test' \
|
||||
--header 'content-type: application/json' \
|
||||
--data '{
|
||||
"messages": [{"role": "user", "content": "你好"}],
|
||||
"stream": true,
|
||||
"model": "whatever",
|
||||
"bot_id": "test-bot",
|
||||
"session_id": "test-session"
|
||||
}'
|
||||
```
|
||||
|
||||
- [ ] 功能验证
|
||||
- [ ] 文件隔离:验证不同 bot_id 的文件不互相干扰
|
||||
- [ ] 环境变量:验证 shell 命令中可以访问 ASSISTANT_ID 等
|
||||
- [ ] 中间件:验证自定义中间件正常执行
|
||||
- [ ] 会话持久化:验证 session_id 恢复对话正常
|
||||
|
||||
## 风险分析
|
||||
|
||||
### 高风险
|
||||
|
||||
| 风险 | 影响 | 缓解措施 |
|
||||
|------|------|---------|
|
||||
| API 不兼容 | 编译失败 | 逐步升级,逐个验证 |
|
||||
| 功能丢失 | 业务中断 | 保留旧版本代码,快速回滚 |
|
||||
| checkpointer 不兼容 | 会话丢失 | 先在测试环境验证 |
|
||||
| LocalShellBackend 行为差异 | shell 执行异常 | 详细测试 shell 功能 |
|
||||
|
||||
### 中风险
|
||||
|
||||
| 风险 | 影响 | 缓解措施 |
|
||||
|------|------|---------|
|
||||
| 中间件不兼容 | 功能异常 | 单独测试每个中间件 |
|
||||
| 性能下降 | 响应变慢 | 压力测试对比 |
|
||||
| 路径显示异常 | 用户困惑 | 视觉验证 |
|
||||
| MemoryMiddleware 签名变更 | 编译失败 | 检查新签名并适配 |
|
||||
|
||||
## 回滚策略
|
||||
|
||||
### 快速回滚(5分钟)
|
||||
|
||||
```bash
|
||||
# 1. 切换回主分支
|
||||
git checkout master
|
||||
|
||||
# 2. 恢复依赖
|
||||
poetry install
|
||||
|
||||
# 3. 重启服务
|
||||
pkill -f "uvicorn fastapi_app:app"
|
||||
poetry run uvicorn fastapi_app:app --host 0.0.0.0 --port 8001
|
||||
```
|
||||
|
||||
### 数据回滚
|
||||
|
||||
如果 checkpointer 数据不兼容:
|
||||
|
||||
```bash
|
||||
# 恢复到升级前的数据库备份
|
||||
pg_restore -d qwen_agent backup_before_upgrade.dump
|
||||
```
|
||||
|
||||
## 成功<E68890><E58A9F>准
|
||||
|
||||
- [ ] 所有现有功能正常工作
|
||||
- [ ] 性能无明显下降(响应时间 < 2s)
|
||||
- [ ] 错误率 < 0.1%
|
||||
- [ ] 用户无感知升级
|
||||
|
||||
## 参考资源
|
||||
|
||||
### 内部文件
|
||||
|
||||
- `agent/deep_assistant.py:351-518` - 当前 create_custom_cli_agent 实现
|
||||
- `agent/deep_assistant.py:242-259` - workspace_root 使用
|
||||
- `agent/deep_assistant.py:45-50` - 当前导入语句
|
||||
- `pyproject.toml:29` - deepagents 版本约束
|
||||
- `pyproject.toml:34` - deepagents-cli 版本约束
|
||||
|
||||
### 外部资源
|
||||
|
||||
- [deepagents GitHub](https://github.com/langchain-ai/deepagents)
|
||||
- [deepagents 官方文档](https://docs.langchain.com/oss/python/deepagents)
|
||||
- 本地克隆仓库:`/Users/moshui/Documents/felo/deepagents`
|
||||
|
||||
### 关键源文件(本地克隆)
|
||||
|
||||
| 文件 | 用途 |
|
||||
|------|------|
|
||||
| `libs/cli/deepagents_cli/agent.py` | 最新 create_cli_agent |
|
||||
| `libs/deepagents/deepagents/backends/local_shell.py` | LocalShellBackend(替代 ShellMiddleware) |
|
||||
| `libs/deepagents/deepagents/middleware/memory.py` | MemoryMiddleware(原 AgentMemoryMiddleware) |
|
||||
| `libs/deepagents/deepagents/middleware/skills.py` | SkillsMiddleware |
|
||||
| `libs/deepagents/deepagents/middleware/__init__.py` | 中间件导出 |
|
||||
| `libs/deepagents/deepagents/backends/__init__.py` | Backend 导出 |
|
||||
| `libs/cli/deepagents_cli/config.py` | settings, get_default_coding_instructions |
|
||||
|
||||
## 变更检查清单
|
||||
|
||||
升级前需要确认的关键变更:
|
||||
|
||||
- [ ] `ShellMiddleware` → `LocalShellBackend` 替代方案
|
||||
- [ ] `AgentMemoryMiddleware` → `MemoryMiddleware` 命名变更
|
||||
- [ ] `SkillsMiddleware` 导入路径变更
|
||||
- [ ] `LocalShellBackend` 的 `env` 和 `inherit_env` 参数使用
|
||||
- [ ] `MemoryMiddleware` 新签名适配
|
||||
- [ ] `SkillsMiddleware` 新签名适配
|
||||
|
||||
---
|
||||
|
||||
**创建时间**: 2026-03-02
|
||||
**状态**: 待审核
|
||||
663
poetry.lock
generated
663
poetry.lock
generated
@ -197,6 +197,22 @@ files = [
|
||||
frozenlist = ">=1.1.0"
|
||||
typing-extensions = {version = ">=4.2", markers = "python_version < \"3.13\""}
|
||||
|
||||
[[package]]
|
||||
name = "aiosqlite"
|
||||
version = "0.22.1"
|
||||
description = "asyncio bridge to the standard sqlite3 module"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "aiosqlite-0.22.1-py3-none-any.whl", hash = "sha256:21c002eb13823fad740196c5a2e9d8e62f6243bd9e7e4a1f87fb5e44ecb4fceb"},
|
||||
{file = "aiosqlite-0.22.1.tar.gz", hash = "sha256:043e0bd78d32888c0a9ca90fc788b38796843360c855a7262a532813133a0650"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
dev = ["attribution (==1.8.0)", "black (==25.11.0)", "build (>=1.2)", "coverage[toml] (==7.10.7)", "flake8 (==7.3.0)", "flake8-bugbear (==24.12.12)", "flit (==3.12.0)", "mypy (==1.19.0)", "ufmt (==2.8.0)", "usort (==1.0.8.post1)"]
|
||||
docs = ["sphinx (==8.1.3)", "sphinx-mdinclude (==0.6.2)"]
|
||||
|
||||
[[package]]
|
||||
name = "annotated-types"
|
||||
version = "0.7.0"
|
||||
@ -211,14 +227,14 @@ files = [
|
||||
|
||||
[[package]]
|
||||
name = "anthropic"
|
||||
version = "0.75.0"
|
||||
version = "0.84.0"
|
||||
description = "The official Python library for the anthropic API"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "anthropic-0.75.0-py3-none-any.whl", hash = "sha256:ea8317271b6c15d80225a9f3c670152746e88805a7a61e14d4a374577164965b"},
|
||||
{file = "anthropic-0.75.0.tar.gz", hash = "sha256:e8607422f4ab616db2ea5baacc215dd5f028da99ce2f022e33c7c535b29f3dfb"},
|
||||
{file = "anthropic-0.84.0-py3-none-any.whl", hash = "sha256:861c4c50f91ca45f942e091d83b60530ad6d4f98733bfe648065364da05d29e7"},
|
||||
{file = "anthropic-0.84.0.tar.gz", hash = "sha256:72f5f90e5aebe62dca316cb013629cfa24996b0f5a4593b8c3d712bc03c43c37"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -234,6 +250,7 @@ typing-extensions = ">=4.10,<5"
|
||||
[package.extras]
|
||||
aiohttp = ["aiohttp", "httpx-aiohttp (>=0.1.9)"]
|
||||
bedrock = ["boto3 (>=1.28.57)", "botocore (>=1.31.57)"]
|
||||
mcp = ["mcp (>=1.0) ; python_version >= \"3.10\""]
|
||||
vertex = ["google-auth[requests] (>=2,<3)"]
|
||||
|
||||
[[package]]
|
||||
@ -399,6 +416,104 @@ files = [
|
||||
{file = "certifi-2025.10.5.tar.gz", hash = "sha256:47c09d31ccf2acf0be3f701ea53595ee7e0b8fa08801c6624be771df09ae7b43"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "cffi"
|
||||
version = "2.0.0"
|
||||
description = "Foreign Function Interface for Python calling C code."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
markers = "platform_python_implementation != \"PyPy\""
|
||||
files = [
|
||||
{file = "cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a"},
|
||||
{file = "cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5"},
|
||||
{file = "cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5"},
|
||||
{file = "cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75"},
|
||||
{file = "cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25"},
|
||||
{file = "cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6"},
|
||||
{file = "cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-macosx_10_13_x86_64.whl", hash = "sha256:fe562eb1a64e67dd297ccc4f5addea2501664954f2692b69a76449ec7913ecbf"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-macosx_11_0_arm64.whl", hash = "sha256:de8dad4425a6ca6e4e5e297b27b5c824ecc7581910bf9aee86cb6835e6812aa7"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:4647afc2f90d1ddd33441e5b0e85b16b12ddec4fca55f0d9671fef036ecca27c"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3f4d46d8b35698056ec29bca21546e1551a205058ae1a181d871e278b0b28165"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:e6e73b9e02893c764e7e8d5bb5ce277f1a009cd5243f8228f75f842bf937c534"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:cb527a79772e5ef98fb1d700678fe031e353e765d1ca2d409c92263c6d43e09f"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:61d028e90346df14fedc3d1e5441df818d095f3b87d286825dfcbd6459b7ef63"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_aarch64.whl", hash = "sha256:0f6084a0ea23d05d20c3edcda20c3d006f9b6f3fefeac38f59262e10cef47ee2"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_i686.whl", hash = "sha256:1cd13c99ce269b3ed80b417dcd591415d3372bcac067009b6e0f59c7d4015e65"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-musllinux_1_2_x86_64.whl", hash = "sha256:89472c9762729b5ae1ad974b777416bfda4ac5642423fa93bd57a09204712322"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-win32.whl", hash = "sha256:2081580ebb843f759b9f617314a24ed5738c51d2aee65d31e02f6f7a2b97707a"},
|
||||
{file = "cffi-2.0.0-cp39-cp39-win_amd64.whl", hash = "sha256:b882b3df248017dba09d6b16defe9b5c407fe32fc7c65a9c69798e6175601be9"},
|
||||
{file = "cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pycparser = {version = "*", markers = "implementation_name != \"PyPy\""}
|
||||
|
||||
[[package]]
|
||||
name = "chardet"
|
||||
version = "5.2.0"
|
||||
@ -562,6 +677,78 @@ files = [
|
||||
]
|
||||
markers = {main = "platform_system == \"Windows\"", dev = "sys_platform == \"win32\""}
|
||||
|
||||
[[package]]
|
||||
name = "cryptography"
|
||||
version = "46.0.5"
|
||||
description = "cryptography is a package which provides cryptographic recipes and primitives to Python developers."
|
||||
optional = false
|
||||
python-versions = "!=3.9.0,!=3.9.1,>=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48"},
|
||||
{file = "cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a"},
|
||||
{file = "cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72"},
|
||||
{file = "cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257"},
|
||||
{file = "cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7"},
|
||||
{file = "cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
cffi = {version = ">=2.0.0", markers = "python_full_version >= \"3.9.0\" and platform_python_implementation != \"PyPy\""}
|
||||
|
||||
[package.extras]
|
||||
docs = ["sphinx (>=5.3.0)", "sphinx-inline-tabs", "sphinx-rtd-theme (>=3.0.0)"]
|
||||
docstest = ["pyenchant (>=3)", "readme-renderer (>=30.0)", "sphinxcontrib-spelling (>=7.3.1)"]
|
||||
nox = ["nox[uv] (>=2024.4.15)"]
|
||||
pep8test = ["check-sdist", "click (>=8.0.1)", "mypy (>=1.14)", "ruff (>=0.11.11)"]
|
||||
sdist = ["build (>=1.0.0)"]
|
||||
ssh = ["bcrypt (>=3.1.5)"]
|
||||
test = ["certifi (>=2024)", "cryptography-vectors (==46.0.5)", "pretend (>=0.7)", "pytest (>=7.4.0)", "pytest-benchmark (>=4.0)", "pytest-cov (>=2.10.1)", "pytest-xdist (>=3.5.0)"]
|
||||
test-randomorder = ["pytest-randomly"]
|
||||
|
||||
[[package]]
|
||||
name = "daytona"
|
||||
version = "0.127.0"
|
||||
@ -667,48 +854,77 @@ urllib3 = ">=2.1.0,<3.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "deepagents"
|
||||
version = "0.2.8"
|
||||
version = "0.4.3"
|
||||
description = "General purpose 'deep agent' with sub-agent spawning, todo list capabilities, and mock file system. Built on LangGraph."
|
||||
optional = false
|
||||
python-versions = "<4.0,>=3.11"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "deepagents-0.2.8-py3-none-any.whl", hash = "sha256:d4c3d0df074be5e10f3a17005e68db3df18b3d51f48aca3e299d87c254fda797"},
|
||||
{file = "deepagents-0.2.8.tar.gz", hash = "sha256:5fbf7f0db06b923409b79a6598784e0e9925958efabd4b702eed9238b459ae09"},
|
||||
{file = "deepagents-0.4.3-py3-none-any.whl", hash = "sha256:298d19c5c0b4c6fc6a74b68049a7bfea0ba481aece7201ab21e7172b71ee61b9"},
|
||||
{file = "deepagents-0.4.3.tar.gz", hash = "sha256:88033c616c5ea481f2620dbb2d05533bc8fdcd48f376d713f9dba49a8157b6f8"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain = ">=1.0.2,<2.0.0"
|
||||
langchain-anthropic = ">=1.0.0,<2.0.0"
|
||||
langchain-core = ">=1.0.0,<2.0.0"
|
||||
langchain = ">=1.2.10,<2.0.0"
|
||||
langchain-anthropic = ">=1.3.3,<2.0.0"
|
||||
langchain-core = ">=1.2.10,<2.0.0"
|
||||
langchain-google-genai = ">=4.2.0,<5.0.0"
|
||||
wcmatch = "*"
|
||||
|
||||
[[package]]
|
||||
name = "deepagents-cli"
|
||||
version = "0.0.11"
|
||||
description = "Deepagents CLI"
|
||||
version = "0.0.25"
|
||||
description = "Terminal interface for Deep Agents - interactive AI agent with file operations, shell access, and sub-agent capabilities."
|
||||
optional = false
|
||||
python-versions = "<4.0,>=3.11"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "deepagents_cli-0.0.11-py3-none-any.whl", hash = "sha256:40f6ab9727a31130d4313344a3fa4680ab75cb1c68aba400bddd5cf8a9fe891d"},
|
||||
{file = "deepagents_cli-0.0.11.tar.gz", hash = "sha256:1429f25000575b8af3baed247d79340199b94a07b1fb5f1290aa33f1ed302902"},
|
||||
{file = "deepagents_cli-0.0.25-py3-none-any.whl", hash = "sha256:2dafc1c051ddf5fec841fa69c4300c75b89a1d3923dad108186dcddb2f02f2f5"},
|
||||
{file = "deepagents_cli-0.0.25.tar.gz", hash = "sha256:480e3396d23c2c8bf925ce1060729f76f62b5aea820dee995095017d56ce9793"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
daytona = ">=0.113.0"
|
||||
deepagents = "0.2.8"
|
||||
langchain = ">=1.0.7"
|
||||
langchain-openai = ">=0.1.0"
|
||||
markdownify = ">=0.13.0"
|
||||
modal = ">=0.65.0"
|
||||
pillow = ">=10.0.0"
|
||||
prompt-toolkit = ">=3.0.52"
|
||||
python-dotenv = "*"
|
||||
requests = "*"
|
||||
rich = ">=13.0.0"
|
||||
aiosqlite = ">=0.19.0,<1.0.0"
|
||||
daytona = ">=0.113.0,<1.0.0"
|
||||
deepagents = "0.4.3"
|
||||
langchain = ">=1.2.10,<2.0.0"
|
||||
langchain-openai = ">=1.1.8,<2.0.0"
|
||||
langgraph-checkpoint-sqlite = ">=3.0.0,<4.0.0"
|
||||
langsmith = ">=0.6.6"
|
||||
markdownify = ">=0.13.0,<2.0.0"
|
||||
modal = ">=0.65.0,<2.0.0"
|
||||
pillow = ">=10.0.0,<13.0.0"
|
||||
prompt-toolkit = ">=3.0.52,<4.0.0"
|
||||
pyperclip = ">=1.11.0,<2.0.0"
|
||||
python-dotenv = ">=1.0.0,<2.0.0"
|
||||
pyyaml = ">=6.0.0"
|
||||
requests = ">=2.0.0,<3.0.0"
|
||||
rich = ">=14.0.0,<15.0.0"
|
||||
runloop-api-client = ">=0.69.0"
|
||||
tavily-python = "*"
|
||||
tavily-python = ">=0.7.21,<1.0.0"
|
||||
textual = ">=8.0.0,<9.0.0"
|
||||
textual-autocomplete = ">=3.0.0,<5.0.0"
|
||||
tomli-w = ">=1.0.0,<2.0.0"
|
||||
|
||||
[package.extras]
|
||||
all-providers = ["langchain-anthropic (>=1.0.0,<2.0.0)", "langchain-aws (>=1.0.0,<2.0.0)", "langchain-cohere (>=0.5.0,<1.0.0)", "langchain-deepseek (>=1.0.0,<2.0.0)", "langchain-fireworks (>=1.0.0,<2.0.0)", "langchain-google-genai (>=4.0.0,<5.0.0)", "langchain-google-vertexai (>=3.0.0,<4.0.0)", "langchain-groq (>=1.0.0,<2.0.0)", "langchain-huggingface (>=1.0.0,<2.0.0)", "langchain-ibm (>=1.0.0,<2.0.0)", "langchain-mistralai (>=1.0.0,<2.0.0)", "langchain-nvidia-ai-endpoints (>=1.0.0,<2.0.0)", "langchain-ollama (>=1.0.0,<2.0.0)", "langchain-openai (>=1.1.8,<2.0.0)", "langchain-openrouter (>=0.0.1,<2.0.0)", "langchain-perplexity (>=1.0.0,<2.0.0)", "langchain-xai (>=1.0.0,<2.0.0)"]
|
||||
anthropic = ["langchain-anthropic (>=1.0.0,<2.0.0)"]
|
||||
bedrock = ["langchain-aws (>=1.0.0,<2.0.0)"]
|
||||
cohere = ["langchain-cohere (>=0.5.0,<1.0.0)"]
|
||||
deepseek = ["langchain-deepseek (>=1.0.0,<2.0.0)"]
|
||||
fireworks = ["langchain-fireworks (>=1.0.0,<2.0.0)"]
|
||||
google-genai = ["langchain-google-genai (>=4.0.0,<5.0.0)"]
|
||||
groq = ["langchain-groq (>=1.0.0,<2.0.0)"]
|
||||
huggingface = ["langchain-huggingface (>=1.0.0,<2.0.0)"]
|
||||
ibm = ["langchain-ibm (>=1.0.0,<2.0.0)"]
|
||||
mistralai = ["langchain-mistralai (>=1.0.0,<2.0.0)"]
|
||||
nvidia = ["langchain-nvidia-ai-endpoints (>=1.0.0,<2.0.0)"]
|
||||
ollama = ["langchain-ollama (>=1.0.0,<2.0.0)"]
|
||||
openai = ["langchain-openai (>=1.1.8,<2.0.0)"]
|
||||
openrouter = ["langchain-openrouter (>=0.0.1,<2.0.0)"]
|
||||
perplexity = ["langchain-perplexity (>=1.0.0,<2.0.0)"]
|
||||
vertexai = ["langchain-google-vertexai (>=3.0.0,<4.0.0)"]
|
||||
xai = ["langchain-xai (>=1.0.0,<2.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "deprecated"
|
||||
@ -824,6 +1040,18 @@ files = [
|
||||
{file = "filelock-3.20.0.tar.gz", hash = "sha256:711e943b4ec6be42e1d4e6690b48dc175c822967466bb31c0c293f34334c13f4"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "filetype"
|
||||
version = "1.2.0"
|
||||
description = "Infer file type and MIME type of any file/buffer. No external dependencies."
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "filetype-1.2.0-py2.py3-none-any.whl", hash = "sha256:7ce71b6880181241cf7ac8697a2f1eb6a8bd9b429f7ad6d27b8db9ba5f1c2d25"},
|
||||
{file = "filetype-1.2.0.tar.gz", hash = "sha256:66b56cd6474bf41d8c54660347d37afcc3f7d1970648de365c102ef77548aadb"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "frozenlist"
|
||||
version = "1.8.0"
|
||||
@ -1004,6 +1232,63 @@ test-downstream = ["aiobotocore (>=2.5.4,<3.0.0)", "dask[dataframe,test]", "moto
|
||||
test-full = ["adlfs", "aiohttp (!=4.0.0a0,!=4.0.0a1)", "cloudpickle", "dask", "distributed", "dropbox", "dropboxdrivefs", "fastparquet", "fusepy", "gcsfs", "jinja2", "kerchunk", "libarchive-c", "lz4", "notebook", "numpy", "ocifs", "pandas", "panel", "paramiko", "pyarrow", "pyarrow (>=1)", "pyftpdlib", "pygit2", "pytest", "pytest-asyncio (!=0.22.0)", "pytest-benchmark", "pytest-cov", "pytest-mock", "pytest-recording", "pytest-rerunfailures", "python-snappy", "requests", "smbprotocol", "tqdm", "urllib3", "zarr", "zstandard ; python_version < \"3.14\""]
|
||||
tqdm = ["tqdm"]
|
||||
|
||||
[[package]]
|
||||
name = "google-auth"
|
||||
version = "2.48.0"
|
||||
description = "Google Authentication Library"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "google_auth-2.48.0-py3-none-any.whl", hash = "sha256:2e2a537873d449434252a9632c28bfc268b0adb1e53f9fb62afc5333a975903f"},
|
||||
{file = "google_auth-2.48.0.tar.gz", hash = "sha256:4f7e706b0cd3208a3d940a19a822c37a476ddba5450156c3e6624a71f7c841ce"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
cryptography = ">=38.0.3"
|
||||
pyasn1-modules = ">=0.2.1"
|
||||
requests = {version = ">=2.20.0,<3.0.0", optional = true, markers = "extra == \"requests\""}
|
||||
rsa = ">=3.1.4,<5"
|
||||
|
||||
[package.extras]
|
||||
aiohttp = ["aiohttp (>=3.6.2,<4.0.0)", "requests (>=2.20.0,<3.0.0)"]
|
||||
cryptography = ["cryptography (>=38.0.3)"]
|
||||
enterprise-cert = ["pyopenssl"]
|
||||
pyjwt = ["pyjwt (>=2.0)"]
|
||||
pyopenssl = ["pyopenssl (>=20.0.0)"]
|
||||
reauth = ["pyu2f (>=0.1.5)"]
|
||||
requests = ["requests (>=2.20.0,<3.0.0)"]
|
||||
testing = ["aiohttp (<3.10.0)", "aiohttp (>=3.6.2,<4.0.0)", "aioresponses", "flask", "freezegun", "grpcio", "oauth2client", "packaging", "pyjwt (>=2.0)", "pyopenssl (<24.3.0)", "pyopenssl (>=20.0.0)", "pytest", "pytest-asyncio", "pytest-cov", "pytest-localserver", "pyu2f (>=0.1.5)", "requests (>=2.20.0,<3.0.0)", "responses", "urllib3"]
|
||||
urllib3 = ["packaging", "urllib3"]
|
||||
|
||||
[[package]]
|
||||
name = "google-genai"
|
||||
version = "1.65.0"
|
||||
description = "GenAI Python SDK"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "google_genai-1.65.0-py3-none-any.whl", hash = "sha256:68c025205856919bc03edb0155c11b4b833810b7ce17ad4b7a9eeba5158f6c44"},
|
||||
{file = "google_genai-1.65.0.tar.gz", hash = "sha256:d470eb600af802d58a79c7f13342d9ea0d05d965007cae8f76c7adff3d7a4750"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
anyio = ">=4.8.0,<5.0.0"
|
||||
distro = ">=1.7.0,<2"
|
||||
google-auth = {version = ">=2.47.0,<3.0.0", extras = ["requests"]}
|
||||
httpx = ">=0.28.1,<1.0.0"
|
||||
pydantic = ">=2.9.0,<3.0.0"
|
||||
requests = ">=2.28.1,<3.0.0"
|
||||
sniffio = "*"
|
||||
tenacity = ">=8.2.3,<9.2.0"
|
||||
typing-extensions = ">=4.11.0,<5.0.0"
|
||||
websockets = ">=13.0.0,<17.0"
|
||||
|
||||
[package.extras]
|
||||
aiohttp = ["aiohttp (>=3.10.11,<4.0.0)"]
|
||||
local-tokenizer = ["protobuf", "sentencepiece (>=0.2.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "greenlet"
|
||||
version = "3.3.0"
|
||||
@ -1665,19 +1950,19 @@ referencing = ">=0.31.0"
|
||||
|
||||
[[package]]
|
||||
name = "langchain"
|
||||
version = "1.1.3"
|
||||
version = "1.2.10"
|
||||
description = "Building applications with LLMs through composability"
|
||||
optional = false
|
||||
python-versions = "<4.0.0,>=3.10.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langchain-1.1.3-py3-none-any.whl", hash = "sha256:e5b208ed93e553df4087117a40bd0d450f9095030a843cad35c53ff2814bf731"},
|
||||
{file = "langchain-1.1.3.tar.gz", hash = "sha256:8c641a750a4277d948c3836529f31de496e7ed4ea9f1c77f66f1845cb586987d"},
|
||||
{file = "langchain-1.2.10-py3-none-any.whl", hash = "sha256:e07a377204451fffaed88276b8193e894893b1003e25c5bca6539288ccca3698"},
|
||||
{file = "langchain-1.2.10.tar.gz", hash = "sha256:bdcd7218d9c79a413cf15e106e4eb94408ac0963df9333ccd095b9ed43bf3be7"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain-core = ">=1.1.2,<2.0.0"
|
||||
langgraph = ">=1.0.2,<1.1.0"
|
||||
langchain-core = ">=1.2.10,<2.0.0"
|
||||
langgraph = ">=1.0.8,<1.1.0"
|
||||
pydantic = ">=2.7.4,<3.0.0"
|
||||
|
||||
[package.extras]
|
||||
@ -1700,43 +1985,61 @@ xai = ["langchain-xai"]
|
||||
|
||||
[[package]]
|
||||
name = "langchain-anthropic"
|
||||
version = "1.2.0"
|
||||
version = "1.3.4"
|
||||
description = "Integration package connecting Claude (Anthropic) APIs and LangChain"
|
||||
optional = false
|
||||
python-versions = "<4.0.0,>=3.10.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langchain_anthropic-1.2.0-py3-none-any.whl", hash = "sha256:f489df97833e12ca0360a098eb9d04e410752840416be87ab60b0a3e120a99fe"},
|
||||
{file = "langchain_anthropic-1.2.0.tar.gz", hash = "sha256:3f3cfad8c519ead2deb21c30dc538b18f4c094704c7874784320cbed7a199453"},
|
||||
{file = "langchain_anthropic-1.3.4-py3-none-any.whl", hash = "sha256:cd112dcc8049aef09f58b3c4338b2c9db5ee98105e08664954a4e40d8bf120b9"},
|
||||
{file = "langchain_anthropic-1.3.4.tar.gz", hash = "sha256:000ed4c2d6fb8842b4ffeed22a74a3e84f9e9bcb63638e4abbb4a1d8ffa07211"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
anthropic = ">=0.73.0,<1.0.0"
|
||||
langchain-core = ">=1.1.0,<2.0.0"
|
||||
anthropic = ">=0.78.0,<1.0.0"
|
||||
langchain-core = ">=1.2.15,<2.0.0"
|
||||
pydantic = ">=2.7.4,<3.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "langchain-core"
|
||||
version = "1.1.3"
|
||||
version = "1.2.16"
|
||||
description = "Building applications with LLMs through composability"
|
||||
optional = false
|
||||
python-versions = "<4.0.0,>=3.10.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langchain_core-1.1.3-py3-none-any.whl", hash = "sha256:e06efbf55bf7c7e4fcffc2f5b0a39a855176df16b02077add063534d7dabb740"},
|
||||
{file = "langchain_core-1.1.3.tar.gz", hash = "sha256:ff0bc5e6e701c4d6fe00c73c4feae5c993a7a8e0b91f0a1d07015277d4634275"},
|
||||
{file = "langchain_core-1.2.16-py3-none-any.whl", hash = "sha256:2768add9aa97232a7712580f678e0ba045ee1036c71fe471355be0434fcb6e30"},
|
||||
{file = "langchain_core-1.2.16.tar.gz", hash = "sha256:055a4bfe7d62f4ac45ed49fd759ee2e6bdd15abf998fbeea695fda5da2de6413"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
jsonpatch = ">=1.33.0,<2.0.0"
|
||||
langsmith = ">=0.3.45,<1.0.0"
|
||||
packaging = ">=23.2.0,<26.0.0"
|
||||
packaging = ">=23.2.0"
|
||||
pydantic = ">=2.7.4,<3.0.0"
|
||||
pyyaml = ">=5.3.0,<7.0.0"
|
||||
tenacity = ">=8.1.0,<8.4.0 || >8.4.0,<10.0.0"
|
||||
typing-extensions = ">=4.7.0,<5.0.0"
|
||||
uuid-utils = ">=0.12.0,<1.0"
|
||||
|
||||
[[package]]
|
||||
name = "langchain-google-genai"
|
||||
version = "4.2.1"
|
||||
description = "An integration package connecting Google's genai package and LangChain"
|
||||
optional = false
|
||||
python-versions = "<4.0.0,>=3.10.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langchain_google_genai-4.2.1-py3-none-any.whl", hash = "sha256:a7735289cf94ca3a684d830e09196aac8f6e75e647e3a0a1c3c9dc534ceb985e"},
|
||||
{file = "langchain_google_genai-4.2.1.tar.gz", hash = "sha256:7f44487a0337535897e3bba9a1d6605d722629e034f757ffa8755af0aa85daa8"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
filetype = ">=1.2.0,<2.0.0"
|
||||
google-genai = ">=1.56.0,<2.0.0"
|
||||
langchain-core = ">=1.2.5,<2.0.0"
|
||||
pydantic = ">=2.0.0,<3.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "langchain-mcp-adapters"
|
||||
version = "0.2.1"
|
||||
@ -1756,90 +2059,107 @@ typing-extensions = ">=4.14.0"
|
||||
|
||||
[[package]]
|
||||
name = "langchain-openai"
|
||||
version = "1.1.1"
|
||||
version = "1.1.9"
|
||||
description = "An integration package connecting OpenAI and LangChain"
|
||||
optional = false
|
||||
python-versions = "<4.0.0,>=3.10.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langchain_openai-1.1.1-py3-none-any.whl", hash = "sha256:69b9be37e6ae3372b4d937cb9365cf55c0c59b5f7870e7507cb7d802a8b98b30"},
|
||||
{file = "langchain_openai-1.1.1.tar.gz", hash = "sha256:72aa7262854104e0b2794522a90c49353c79d0132caa1be27ef253852685d5e7"},
|
||||
{file = "langchain_openai-1.1.9-py3-none-any.whl", hash = "sha256:ca2482b136c45fb67c0db84a9817de675e0eb8fb2203a33914c1b7a96f273940"},
|
||||
{file = "langchain_openai-1.1.9.tar.gz", hash = "sha256:fdee25dcf4b0685d8e2f59856f4d5405431ef9e04ab53afe19e2e8360fed8234"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain-core = ">=1.1.1,<2.0.0"
|
||||
langchain-core = ">=1.2.11,<2.0.0"
|
||||
openai = ">=1.109.1,<3.0.0"
|
||||
tiktoken = ">=0.7.0,<1.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph"
|
||||
version = "1.0.6"
|
||||
version = "1.0.10"
|
||||
description = "Building stateful, multi-actor applications with LLMs"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langgraph-1.0.6-py3-none-any.whl", hash = "sha256:bcfce190974519c72e29f6e5b17f0023914fd6f936bfab8894083215b271eb89"},
|
||||
{file = "langgraph-1.0.6.tar.gz", hash = "sha256:dd8e754c76d34a07485308d7117221acf63990e7de8f46ddf5fe256b0a22e6c5"},
|
||||
{file = "langgraph-1.0.10-py3-none-any.whl", hash = "sha256:7c298bef4f6ea292fcf9824d6088fe41a6727e2904ad6066f240c4095af12247"},
|
||||
{file = "langgraph-1.0.10.tar.gz", hash = "sha256:73bd10ee14a8020f31ef07e9cd4c1a70c35cc07b9c2b9cd637509a10d9d51e29"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain-core = ">=0.1"
|
||||
langgraph-checkpoint = ">=2.1.0,<5.0.0"
|
||||
langgraph-prebuilt = ">=1.0.2,<1.1.0"
|
||||
langgraph-prebuilt = ">=1.0.8,<1.1.0"
|
||||
langgraph-sdk = ">=0.3.0,<0.4.0"
|
||||
pydantic = ">=2.7.4"
|
||||
xxhash = ">=3.5.0"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph-checkpoint"
|
||||
version = "2.1.2"
|
||||
version = "4.0.1"
|
||||
description = "Library with base interfaces for LangGraph checkpoint savers."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langgraph_checkpoint-2.1.2-py3-none-any.whl", hash = "sha256:911ebffb069fd01775d4b5184c04aaafc2962fcdf50cf49d524cd4367c4d0c60"},
|
||||
{file = "langgraph_checkpoint-2.1.2.tar.gz", hash = "sha256:112e9d067a6eff8937caf198421b1ffba8d9207193f14ac6f89930c1260c06f9"},
|
||||
{file = "langgraph_checkpoint-4.0.1-py3-none-any.whl", hash = "sha256:e3adcd7a0e0166f3b48b8cf508ce0ea366e7420b5a73aa81289888727769b034"},
|
||||
{file = "langgraph_checkpoint-4.0.1.tar.gz", hash = "sha256:b433123735df11ade28829e40ce25b9be614930cd50245ff2af60629234befd9"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain-core = ">=0.2.38"
|
||||
ormsgpack = ">=1.10.0"
|
||||
ormsgpack = ">=1.12.0"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph-checkpoint-postgres"
|
||||
version = "2.0.25"
|
||||
version = "3.0.4"
|
||||
description = "Library with a Postgres implementation of LangGraph checkpoint saver."
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langgraph_checkpoint_postgres-2.0.25-py3-none-any.whl", hash = "sha256:cf1248a58fe828c9cfc36ee57ff118d7799ce214d4b35718e57ec98407130fb5"},
|
||||
{file = "langgraph_checkpoint_postgres-2.0.25.tar.gz", hash = "sha256:916b80f73a641a589301f6c54414974768b6d646d82db7b301ff8d47105c3613"},
|
||||
{file = "langgraph_checkpoint_postgres-3.0.4-py3-none-any.whl", hash = "sha256:12cd5661da2a374882770deb9008a4eb16641c3fd38d7595e312030080390c6e"},
|
||||
{file = "langgraph_checkpoint_postgres-3.0.4.tar.gz", hash = "sha256:83e6a1097563369173442de2a66e6d712d60a1a6de07c98c5130d476bb2b76ae"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langgraph-checkpoint = ">=2.1.2,<3.0.0"
|
||||
langgraph-checkpoint = ">=2.1.2,<5.0.0"
|
||||
orjson = ">=3.10.1"
|
||||
psycopg = ">=3.2.0"
|
||||
psycopg-pool = ">=3.2.0"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph-checkpoint-sqlite"
|
||||
version = "3.0.3"
|
||||
description = "Library with a SQLite implementation of LangGraph checkpoint saver."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langgraph_checkpoint_sqlite-3.0.3-py3-none-any.whl", hash = "sha256:02eb683a79aa6fcda7cd4de43861062a5d160dbbb990ef8a9fd76c979998a952"},
|
||||
{file = "langgraph_checkpoint_sqlite-3.0.3.tar.gz", hash = "sha256:438c234d37dabda979218954c9c6eb1db73bee6492c2f1d3a00552fe23fa34ed"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
aiosqlite = ">=0.20"
|
||||
langgraph-checkpoint = ">=3,<5.0.0"
|
||||
sqlite-vec = ">=0.1.6"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph-prebuilt"
|
||||
version = "1.0.5"
|
||||
version = "1.0.8"
|
||||
description = "Library with high-level APIs for creating and executing LangGraph agents and tools."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langgraph_prebuilt-1.0.5-py3-none-any.whl", hash = "sha256:22369563e1848862ace53fbc11b027c28dd04a9ac39314633bb95f2a7e258496"},
|
||||
{file = "langgraph_prebuilt-1.0.5.tar.gz", hash = "sha256:85802675ad778cc7240fd02d47db1e0b59c0c86d8369447d77ce47623845db2d"},
|
||||
{file = "langgraph_prebuilt-1.0.8-py3-none-any.whl", hash = "sha256:d16a731e591ba4470f3e313a319c7eee7dbc40895bcf15c821f985a3522a7ce0"},
|
||||
{file = "langgraph_prebuilt-1.0.8.tar.gz", hash = "sha256:0cd3cf5473ced8a6cd687cc5294e08d3de57529d8dd14fdc6ae4899549efcf69"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
langchain-core = ">=1.0.0"
|
||||
langgraph-checkpoint = ">=2.1.0,<4.0.0"
|
||||
langgraph-checkpoint = ">=2.1.0,<5.0.0"
|
||||
|
||||
[[package]]
|
||||
name = "langgraph-sdk"
|
||||
@ -1859,34 +2179,58 @@ orjson = ">=3.10.1"
|
||||
|
||||
[[package]]
|
||||
name = "langsmith"
|
||||
version = "0.4.59"
|
||||
version = "0.7.9"
|
||||
description = "Client library to connect to the LangSmith Observability and Evaluation Platform."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "langsmith-0.4.59-py3-none-any.whl", hash = "sha256:97c26399286441a7b7b06b912e2801420fbbf3a049787e609d49dc975ab10bc5"},
|
||||
{file = "langsmith-0.4.59.tar.gz", hash = "sha256:6b143214c2303dafb29ab12dcd05ac50bdfc60dac01c6e0450e50cee1d2415e0"},
|
||||
{file = "langsmith-0.7.9-py3-none-any.whl", hash = "sha256:e73478f4c4ae9b7407e0fcdced181f9f8b0e024c62a1552dbf0667ef6b19e82d"},
|
||||
{file = "langsmith-0.7.9.tar.gz", hash = "sha256:c6dfcc4cb8fea249714ac60a1963faa84cc59ded9cd1882794ffce8a8d1d1588"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
httpx = ">=0.23.0,<1"
|
||||
orjson = {version = ">=3.9.14", markers = "platform_python_implementation != \"PyPy\""}
|
||||
packaging = ">=23.2"
|
||||
pydantic = ">=1,<3"
|
||||
pydantic = ">=2,<3"
|
||||
requests = ">=2.0.0"
|
||||
requests-toolbelt = ">=1.0.0"
|
||||
uuid-utils = ">=0.12.0,<1.0"
|
||||
xxhash = ">=3.0.0"
|
||||
zstandard = ">=0.23.0"
|
||||
|
||||
[package.extras]
|
||||
claude-agent-sdk = ["claude-agent-sdk (>=0.1.0) ; python_version >= \"3.10\""]
|
||||
google-adk = ["google-adk (>=1.0.0)", "wrapt (>=1.16.0)"]
|
||||
langsmith-pyo3 = ["langsmith-pyo3 (>=0.1.0rc2)"]
|
||||
openai-agents = ["openai-agents (>=0.0.3)"]
|
||||
otel = ["opentelemetry-api (>=1.30.0)", "opentelemetry-exporter-otlp-proto-http (>=1.30.0)", "opentelemetry-sdk (>=1.30.0)"]
|
||||
pytest = ["pytest (>=7.0.0)", "rich (>=13.9.4)", "vcrpy (>=7.0.0)"]
|
||||
sandbox = ["websockets (>=15.0)"]
|
||||
vcr = ["vcrpy (>=7.0.0)"]
|
||||
|
||||
[[package]]
|
||||
name = "linkify-it-py"
|
||||
version = "2.1.0"
|
||||
description = "Links recognition library with FULL unicode support."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "linkify_it_py-2.1.0-py3-none-any.whl", hash = "sha256:0d252c1594ecba2ecedc444053db5d3a9b7ec1b0dd929c8f1d74dce89f86c05e"},
|
||||
{file = "linkify_it_py-2.1.0.tar.gz", hash = "sha256:43360231720999c10e9328dc3691160e27a718e280673d444c38d7d3aaa3b98b"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
uc-micro-py = "*"
|
||||
|
||||
[package.extras]
|
||||
benchmark = ["pytest", "pytest-benchmark"]
|
||||
dev = ["black", "flake8", "isort", "pre-commit", "pyproject-flake8"]
|
||||
doc = ["myst-parser", "sphinx", "sphinx_book_theme"]
|
||||
test = ["coverage", "pytest", "pytest-cov"]
|
||||
|
||||
[[package]]
|
||||
name = "markdown-it-py"
|
||||
version = "4.0.0"
|
||||
@ -1900,6 +2244,7 @@ files = [
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
linkify-it-py = {version = ">=1,<3", optional = true, markers = "extra == \"linkify\""}
|
||||
mdurl = ">=0.1,<1.0"
|
||||
|
||||
[package.extras]
|
||||
@ -2073,6 +2418,26 @@ cli = ["python-dotenv (>=1.0.0)", "typer (>=0.16.0)"]
|
||||
rich = ["rich (>=13.9.4)"]
|
||||
ws = ["websockets (>=15.0.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "mdit-py-plugins"
|
||||
version = "0.5.0"
|
||||
description = "Collection of plugins for markdown-it-py"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "mdit_py_plugins-0.5.0-py3-none-any.whl", hash = "sha256:07a08422fc1936a5d26d146759e9155ea466e842f5ab2f7d2266dd084c8dab1f"},
|
||||
{file = "mdit_py_plugins-0.5.0.tar.gz", hash = "sha256:f4918cb50119f50446560513a8e311d574ff6aaed72606ddae6d35716fe809c6"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
markdown-it-py = ">=2.0.0,<5.0.0"
|
||||
|
||||
[package.extras]
|
||||
code-style = ["pre-commit"]
|
||||
rtd = ["myst-parser", "sphinx-book-theme"]
|
||||
testing = ["coverage", "pytest", "pytest-cov", "pytest-regressions"]
|
||||
|
||||
[[package]]
|
||||
name = "mdurl"
|
||||
version = "0.1.2"
|
||||
@ -3070,6 +3435,18 @@ test-arrow = ["arro3-compute", "arro3-core", "nanoarrow", "pyarrow"]
|
||||
tests = ["check-manifest", "coverage (>=7.4.2)", "defusedxml", "markdown2", "olefile", "packaging", "pyroma (>=5)", "pytest", "pytest-cov", "pytest-timeout", "pytest-xdist", "trove-classifiers (>=2024.10.12)"]
|
||||
xmp = ["defusedxml"]
|
||||
|
||||
[[package]]
|
||||
name = "platformdirs"
|
||||
version = "4.9.2"
|
||||
description = "A small Python package for determining appropriate platform-specific dirs, e.g. a `user data dir`."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "platformdirs-4.9.2-py3-none-any.whl", hash = "sha256:9170634f126f8efdae22fb58ae8a0eaa86f38365bc57897a6c4f781d1f5875bd"},
|
||||
{file = "platformdirs-4.9.2.tar.gz", hash = "sha256:9a33809944b9db043ad67ca0db94b14bf452cc6aeaac46a88ea55b26e2e9d291"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pluggy"
|
||||
version = "1.6.0"
|
||||
@ -3473,6 +3850,46 @@ files = [
|
||||
{file = "psycopg2_binary-2.9.11-cp39-cp39-win_amd64.whl", hash = "sha256:875039274f8a2361e5207857899706da840768e2a775bf8c65e82f60b197df02"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyasn1"
|
||||
version = "0.6.2"
|
||||
description = "Pure-Python implementation of ASN.1 types and DER/BER/CER codecs (X.208)"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf"},
|
||||
{file = "pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pyasn1-modules"
|
||||
version = "0.4.2"
|
||||
description = "A collection of ASN.1-based protocols modules"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pyasn1_modules-0.4.2-py3-none-any.whl", hash = "sha256:29253a9207ce32b64c3ac6600edc75368f98473906e8fd1043bd6b5b1de2c14a"},
|
||||
{file = "pyasn1_modules-0.4.2.tar.gz", hash = "sha256:677091de870a80aae844b1ca6134f54652fa2c8c5a52aa396440ac3106e941e6"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pyasn1 = ">=0.6.1,<0.7.0"
|
||||
|
||||
[[package]]
|
||||
name = "pycparser"
|
||||
version = "3.0"
|
||||
description = "C parser in Python"
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
markers = "platform_python_implementation != \"PyPy\" and implementation_name != \"PyPy\""
|
||||
files = [
|
||||
{file = "pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992"},
|
||||
{file = "pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pydantic"
|
||||
version = "2.10.5"
|
||||
@ -3646,6 +4063,18 @@ files = [
|
||||
[package.extras]
|
||||
windows-terminal = ["colorama (>=0.4.6)"]
|
||||
|
||||
[[package]]
|
||||
name = "pyperclip"
|
||||
version = "1.11.0"
|
||||
description = "A cross-platform clipboard module for Python. (Only handles plain text for now.)"
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "pyperclip-1.11.0-py3-none-any.whl", hash = "sha256:299403e9ff44581cb9ba2ffeed69c7aa96a008622ad0c46cb575ca75b5b84273"},
|
||||
{file = "pyperclip-1.11.0.tar.gz", hash = "sha256:244035963e4428530d9e3a6101a1ef97209c6825edab1567beac148ccc1db1b6"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "pytest"
|
||||
version = "9.0.2"
|
||||
@ -4251,6 +4680,21 @@ files = [
|
||||
{file = "rpds_py-0.27.1.tar.gz", hash = "sha256:26a1c73171d10b7acccbded82bf6a586ab8203601e565badc74bbbf8bc5a10f8"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "rsa"
|
||||
version = "4.9.1"
|
||||
description = "Pure-Python RSA implementation"
|
||||
optional = false
|
||||
python-versions = "<4,>=3.6"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "rsa-4.9.1-py3-none-any.whl", hash = "sha256:68635866661c6836b8d39430f97a996acbd61bfa49406748ea243539fe239762"},
|
||||
{file = "rsa-4.9.1.tar.gz", hash = "sha256:e7bdbfdb5497da4c07dfd35530e1a902659db6ff241e39d9953cad06ebd0ae75"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
pyasn1 = ">=0.1.3"
|
||||
|
||||
[[package]]
|
||||
name = "runloop-api-client"
|
||||
version = "1.2.0"
|
||||
@ -4639,6 +5083,21 @@ postgresql-psycopgbinary = ["psycopg[binary] (>=3.0.7)"]
|
||||
pymysql = ["pymysql"]
|
||||
sqlcipher = ["sqlcipher3_binary"]
|
||||
|
||||
[[package]]
|
||||
name = "sqlite-vec"
|
||||
version = "0.1.6"
|
||||
description = ""
|
||||
optional = false
|
||||
python-versions = "*"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "sqlite_vec-0.1.6-py3-none-macosx_10_6_x86_64.whl", hash = "sha256:77491bcaa6d496f2acb5cc0d0ff0b8964434f141523c121e313f9a7d8088dee3"},
|
||||
{file = "sqlite_vec-0.1.6-py3-none-macosx_11_0_arm64.whl", hash = "sha256:fdca35f7ee3243668a055255d4dee4dea7eed5a06da8cad409f89facf4595361"},
|
||||
{file = "sqlite_vec-0.1.6-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:7b0519d9cd96164cd2e08e8eed225197f9cd2f0be82cb04567692a0a4be02da3"},
|
||||
{file = "sqlite_vec-0.1.6-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.manylinux1_x86_64.whl", hash = "sha256:823b0493add80d7fe82ab0fe25df7c0703f4752941aee1c7b2b02cec9656cb24"},
|
||||
{file = "sqlite_vec-0.1.6-py3-none-win_amd64.whl", hash = "sha256:c65bcfd90fa2f41f9000052bcb8bb75d38240b2dae49225389eca6c3136d3f0c"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "sse-starlette"
|
||||
version = "3.0.2"
|
||||
@ -4717,14 +5176,14 @@ compile = ["sigtools (>=4.0.1)"]
|
||||
|
||||
[[package]]
|
||||
name = "tavily-python"
|
||||
version = "0.7.17"
|
||||
version = "0.7.22"
|
||||
description = "Python wrapper for the Tavily API"
|
||||
optional = false
|
||||
python-versions = ">=3.8"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "tavily_python-0.7.17-py3-none-any.whl", hash = "sha256:a2725b9cba71e404e73d19ff277df916283c10100137c336e07f8e1bd7789fcf"},
|
||||
{file = "tavily_python-0.7.17.tar.gz", hash = "sha256:437ba064639dfdce1acdbc37cbb73246abe500ab735e988a4b8698a8d5fb7df7"},
|
||||
{file = "tavily_python-0.7.22-py3-none-any.whl", hash = "sha256:25d05f02be3fa2508ff1c114196b714e069d75312c26ddf747c9f5bdc617bbb3"},
|
||||
{file = "tavily_python-0.7.22.tar.gz", hash = "sha256:050c0113309b516f58fbdc484d6091efa7ce6c016c2a2cd9f111581269f00dfe"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
@ -4748,6 +5207,45 @@ files = [
|
||||
doc = ["reno", "sphinx"]
|
||||
test = ["pytest", "tornado (>=4.5)", "typeguard"]
|
||||
|
||||
[[package]]
|
||||
name = "textual"
|
||||
version = "8.0.0"
|
||||
description = "Modern Text User Interface framework"
|
||||
optional = false
|
||||
python-versions = "<4.0,>=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "textual-8.0.0-py3-none-any.whl", hash = "sha256:8908f4ebe93a6b4f77ca7262197784a52162bc88b05f4ecf50ac93a92d49bb8f"},
|
||||
{file = "textual-8.0.0.tar.gz", hash = "sha256:ce48f83a3d686c0fac0e80bf9136e1f8851c653aa6a4502e43293a151df18809"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
markdown-it-py = {version = ">=2.1.0", extras = ["linkify"]}
|
||||
mdit-py-plugins = "*"
|
||||
platformdirs = ">=3.6.0,<5"
|
||||
pygments = ">=2.19.2,<3.0.0"
|
||||
rich = ">=14.2.0"
|
||||
typing-extensions = ">=4.4.0,<5.0.0"
|
||||
|
||||
[package.extras]
|
||||
syntax = ["tree-sitter (>=0.25.0) ; python_version >= \"3.10\"", "tree-sitter-bash (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-css (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-go (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-html (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-java (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-javascript (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-json (>=0.24.0) ; python_version >= \"3.10\"", "tree-sitter-markdown (>=0.3.0) ; python_version >= \"3.10\"", "tree-sitter-python (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-regex (>=0.24.0) ; python_version >= \"3.10\"", "tree-sitter-rust (>=0.23.0) ; python_version >= \"3.10\"", "tree-sitter-sql (>=0.3.11) ; python_version >= \"3.10\"", "tree-sitter-toml (>=0.6.0) ; python_version >= \"3.10\"", "tree-sitter-xml (>=0.7.0) ; python_version >= \"3.10\"", "tree-sitter-yaml (>=0.6.0) ; python_version >= \"3.10\""]
|
||||
|
||||
[[package]]
|
||||
name = "textual-autocomplete"
|
||||
version = "4.0.6"
|
||||
description = "Easily add autocomplete dropdowns to your Textual apps."
|
||||
optional = false
|
||||
python-versions = ">=3.9.0"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "textual_autocomplete-4.0.6-py3-none-any.whl", hash = "sha256:bff69c19386e2cbb4a007503b058dc37671d480a4fa2ddb3959c15ceb4aff9b5"},
|
||||
{file = "textual_autocomplete-4.0.6.tar.gz", hash = "sha256:2ba2f0d767be4480ecacb3e4b130cf07340e033c3500fc424fed9125d27a4586"},
|
||||
]
|
||||
|
||||
[package.dependencies]
|
||||
textual = ">=2.0.0"
|
||||
typing-extensions = ">=4.5.0"
|
||||
|
||||
[[package]]
|
||||
name = "threadpoolctl"
|
||||
version = "3.6.0"
|
||||
@ -4879,6 +5377,18 @@ files = [
|
||||
{file = "toml-0.10.2.tar.gz", hash = "sha256:b3bda1d108d5dd99f4a20d24d9c348e91c4db7ab1b749200bded2f839ccbe68f"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "tomli-w"
|
||||
version = "1.2.0"
|
||||
description = "A lil' TOML writer"
|
||||
optional = false
|
||||
python-versions = ">=3.9"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "tomli_w-1.2.0-py3-none-any.whl", hash = "sha256:188306098d013b691fcadc011abd66727d3c414c571bb01b1a174ba8c983cf90"},
|
||||
{file = "tomli_w-1.2.0.tar.gz", hash = "sha256:2dd14fac5a47c27be9cd4c976af5a12d87fb1f0b4512f81d69cce3b35ae25021"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "torch"
|
||||
version = "2.2.0"
|
||||
@ -5141,6 +5651,21 @@ files = [
|
||||
{file = "tzdata-2025.2.tar.gz", hash = "sha256:b60a638fcc0daffadf82fe0f57e53d06bdec2f36c4df66280ae79bce6bd6f2b9"},
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "uc-micro-py"
|
||||
version = "2.0.0"
|
||||
description = "Micro subset of unicode data files for linkify-it-py projects."
|
||||
optional = false
|
||||
python-versions = ">=3.10"
|
||||
groups = ["main"]
|
||||
files = [
|
||||
{file = "uc_micro_py-2.0.0-py3-none-any.whl", hash = "sha256:3603a3859af53e5a39bc7677713c78ea6589ff188d70f4fee165db88e22b242c"},
|
||||
{file = "uc_micro_py-2.0.0.tar.gz", hash = "sha256:c53691e495c8db60e16ffc4861a35469b0ba0821fe409a8a7a0a71864d33a811"},
|
||||
]
|
||||
|
||||
[package.extras]
|
||||
test = ["coverage", "pytest", "pytest-cov"]
|
||||
|
||||
[[package]]
|
||||
name = "urllib3"
|
||||
version = "2.5.0"
|
||||
@ -6049,4 +6574,4 @@ cffi = ["cffi (>=1.17,<2.0) ; platform_python_implementation != \"PyPy\" and pyt
|
||||
[metadata]
|
||||
lock-version = "2.1"
|
||||
python-versions = ">=3.12,<4.0"
|
||||
content-hash = "abce2b9aba5a46841df8e6e4e4f12523ff9c4cd34dab7d180490ae36b2dee16e"
|
||||
content-hash = "a8aef80608df449d575c613456bd339bbb6e407133b1f7c68893b0ec70f04eab"
|
||||
|
||||
@ -26,12 +26,12 @@ dependencies = [
|
||||
"chardet>=5.0.0",
|
||||
"psutil (>=7.1.3,<8.0.0)",
|
||||
"uvloop (>=0.22.1,<0.23.0)",
|
||||
"deepagents (>=0.2.8,<0.4.0)",
|
||||
"deepagents (>=0.4.3,<0.5.0)",
|
||||
"langchain-mcp-adapters (>=0.2.1,<0.3.0)",
|
||||
"langchain-openai (>=1.1.1,<2.0.0)",
|
||||
"cachetools (>=6.2.4,<7.0.0)",
|
||||
"langgraph-checkpoint-postgres (>=2.0.0,<3.0.0)",
|
||||
"deepagents-cli (>=0.0.11,<0.0.12)",
|
||||
"langgraph-checkpoint-postgres (>=3.0.0,<4.0.0)",
|
||||
"deepagents-cli (>=0.0.25,<0.0.26)",
|
||||
"mem0ai (>=0.1.50,<0.3.0)",
|
||||
"psycopg2-binary (>=2.9.11,<3.0.0)",
|
||||
"json-repair (>=0.29.0,<0.30.0)",
|
||||
|
||||
@ -3,8 +3,9 @@ aiohappyeyeballs==2.6.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
aiohttp-retry==2.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
aiohttp==3.13.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
aiosignal==1.4.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
aiosqlite==0.22.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
annotated-types==0.7.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
anthropic==0.75.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
anthropic==0.84.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
anyio==4.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
attrs==25.4.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
backoff==2.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -13,17 +14,19 @@ bracex==2.6 ; python_version >= "3.12" and python_version < "4.0"
|
||||
cachetools==6.2.4 ; python_version >= "3.12" and python_version < "4.0"
|
||||
cbor2==5.7.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
certifi==2025.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
cffi==2.0.0 ; python_version >= "3.12" and python_version < "4.0" and platform_python_implementation != "PyPy"
|
||||
chardet==5.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
charset-normalizer==3.4.4 ; python_version >= "3.12" and python_version < "4.0"
|
||||
click==8.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
colorama==0.4.6 ; python_version >= "3.12" and python_version < "4.0" and platform_system == "Windows"
|
||||
cryptography==46.0.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
daytona-api-client-async==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
daytona-api-client==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
daytona-toolbox-api-client-async==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
daytona-toolbox-api-client==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
daytona==0.127.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
deepagents-cli==0.0.11 ; python_version >= "3.12" and python_version < "4.0"
|
||||
deepagents==0.2.8 ; python_version >= "3.12" and python_version < "4.0"
|
||||
deepagents-cli==0.0.25 ; python_version >= "3.12" and python_version < "4.0"
|
||||
deepagents==0.4.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
deprecated==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
distro==1.9.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
docstring-parser==0.17.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -31,8 +34,11 @@ environs==14.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
et-xmlfile==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
fastapi==0.116.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
filelock==3.20.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
filetype==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
frozenlist==1.8.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
fsspec==2025.9.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
google-auth==2.48.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
google-genai==1.65.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
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-tools==1.71.2 ; python_version >= "3.13" and python_version < "4.0"
|
||||
grpcio==1.76.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -56,22 +62,26 @@ jsonpatch==1.33 ; python_version >= "3.12" and python_version < "4.0"
|
||||
jsonpointer==3.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
jsonschema-specifications==2025.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
jsonschema==4.25.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-anthropic==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-core==1.1.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-anthropic==1.3.4 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-core==1.2.16 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-google-genai==4.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-mcp-adapters==0.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-openai==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain==1.1.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-checkpoint-postgres==2.0.25 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-checkpoint==2.1.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-prebuilt==1.0.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain-openai==1.1.9 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langchain==1.2.10 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-checkpoint-postgres==3.0.4 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-checkpoint-sqlite==3.0.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-checkpoint==4.0.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-prebuilt==1.0.8 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph-sdk==0.3.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph==1.0.6 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langsmith==0.4.59 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langgraph==1.0.10 ; python_version >= "3.12" and python_version < "4.0"
|
||||
langsmith==0.7.9 ; python_version >= "3.12" and python_version < "4.0"
|
||||
linkify-it-py==2.1.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
markdown-it-py==4.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
markdownify==1.2.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
markupsafe==3.0.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
marshmallow==4.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
mcp==1.12.4 ; python_version >= "3.12" and python_version < "4.0"
|
||||
mdit-py-plugins==0.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
mdurl==0.1.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
mem0ai==0.1.116 ; python_version >= "3.12" and python_version < "4.0"
|
||||
modal==1.2.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -100,6 +110,7 @@ ormsgpack==1.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
packaging==25.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pandas==2.3.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pillow==12.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
platformdirs==4.9.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
portalocker==2.10.1 ; python_version >= "3.13" and python_version < "4.0"
|
||||
portalocker==3.2.0 ; python_version == "3.12"
|
||||
posthog==7.6.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -110,10 +121,14 @@ psutil==7.1.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
psycopg-pool==3.3.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
psycopg2-binary==2.9.11 ; python_version >= "3.12" and python_version < "4.0"
|
||||
psycopg==3.3.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pyasn1-modules==0.4.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pyasn1==0.6.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pycparser==3.0 ; python_version >= "3.12" and python_version < "4.0" and platform_python_implementation != "PyPy" and implementation_name != "PyPy"
|
||||
pydantic-core==2.27.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pydantic-settings==2.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pydantic==2.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pygments==2.19.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
pyperclip==1.11.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
python-dateutil==2.8.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
python-dotenv==1.1.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
python-multipart==0.0.20 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -128,6 +143,7 @@ requests-toolbelt==1.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
requests==2.32.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
rich==14.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
rpds-py==0.27.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
rsa==4.9.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
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 < "4.0"
|
||||
scikit-learn==1.7.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -139,16 +155,20 @@ six==1.17.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
sniffio==1.3.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
soupsieve==2.8.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
sqlalchemy==2.0.45 ; python_version >= "3.12" and python_version < "4.0"
|
||||
sqlite-vec==0.1.6 ; python_version >= "3.12" and python_version < "4.0"
|
||||
sse-starlette==3.0.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
starlette==0.47.3 ; python_version >= "3.12" and python_version < "4.0"
|
||||
sympy==1.14.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
synchronicity==0.10.5 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tavily-python==0.7.17 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tavily-python==0.7.22 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tenacity==9.1.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
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 < "4.0"
|
||||
threadpoolctl==3.6.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tiktoken==0.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tokenizers==0.22.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
toml==0.10.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tomli-w==1.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
torch==2.2.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tqdm==4.67.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
transformers==4.57.1 ; python_version >= "3.12" and python_version < "4.0"
|
||||
@ -159,6 +179,7 @@ types-toml==0.10.8.20240310 ; python_version >= "3.12" and python_version < "4.0
|
||||
typing-extensions==4.15.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
typing-inspection==0.4.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
tzdata==2025.2 ; python_version >= "3.12" and python_version < "4.0"
|
||||
uc-micro-py==2.0.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
urllib3==2.5.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
uuid-utils==0.12.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
uvicorn==0.35.0 ; python_version >= "3.12" and python_version < "4.0"
|
||||
|
||||
Loading…
Reference in New Issue
Block a user