Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 17 additions & 9 deletions pyproject.toml
Original file line number Diff line number Diff line change
Expand Up @@ -42,15 +42,23 @@ cloudpickle = ">=2.0"
# Agent framework integrations — optional, activated via [tool.poetry.extras] below.
# Floors raised to the versions ConductorAgent's own uv.lock proved mutually compatible
# (langchain's 0.3.x-floor collided with today's published 1.x line during resolution).
langchain = { version = ">=1.2.13", optional = true }
langchain-core = { version = ">=1.2.20", optional = true }
langchain-openai = { version = ">=1.1.11", optional = true }
langgraph = { version = ">=1.1.3", optional = true }
google-adk = { version = ">=1.27.1", optional = true }
openai = { version = ">=2.28.0", optional = true }
openai-agents = { version = ">=0.12.2", optional = true }
anthropic = { version = ">=0.91.0", optional = true }
claude-code-sdk = { version = ">=0.0.25", optional = true }
#
# CEILINGS: every one of these was previously unbounded (">=X" only), so
# `conductor-python[agents]` accepted any future major of langgraph/openai/anthropic/etc.
# A breaking upstream release therefore reached users — and the downstream e2e bundle's
# CI lanes — with no change here, presenting as an SDK or server regression. These are
# integration surfaces we call directly, so a major bump is exactly where they break.
# Caps are next-major (next-minor for the 0.x projects, whose minors are breaking by
# convention). Raise a cap deliberately, with a run of the agent suites behind it.
langchain = { version = ">=1.2.13,<2", optional = true }
langchain-core = { version = ">=1.2.20,<2", optional = true }
langchain-openai = { version = ">=1.1.11,<2", optional = true }
langgraph = { version = ">=1.1.3,<2", optional = true }
google-adk = { version = ">=1.27.1,<3", optional = true }
openai = { version = ">=2.28.0,<3", optional = true }
openai-agents = { version = ">=0.12.2,<0.13", optional = true }
anthropic = { version = ">=0.91.0,<0.121", optional = true }
claude-code-sdk = { version = ">=0.0.25,<0.1", optional = true }

[tool.poetry.extras]
langchain = ["langchain", "langchain-core", "langchain-openai"]
Expand Down
15 changes: 10 additions & 5 deletions scripts/package-e2e-bundle.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,18 @@ cat > "$STAGE/requirements.txt" <<'EOF'
conductor-python[agents]==@VERSION@

# Test runner + e2e support deps (mirrors .github/workflows/agent-e2e.yml).
pytest
pytest-asyncio
pytest-xdist
pytest-rerunfailures
# Bounded, not bare: these were unpinned, so `pip install -r requirements.txt` inside
# run.sh resolved to whatever was newest on the day a downstream lane happened to run.
# A pytest or plugin major could then redden a consumer's gating CI with no change to
# this bundle — and look like a server regression to whoever triaged it. Floors are the
# versions this bundle was cut against; ceilings are next-major.
pytest>=8,<10
pytest-asyncio>=1,<2
pytest-xdist>=3,<4
pytest-rerunfailures>=16,<17

# Live MCP server used by the MCP tool suites.
mcp-testkit
mcp-testkit>=1,<2
EOF

cat > "$STAGE/run.sh" <<'EOF'
Expand Down
Loading