From e09cfc5cf539bcb15e2e5633e9c977ca0bc69cd2 Mon Sep 17 00:00:00 2001 From: Brian Love Date: Tue, 16 Jun 2026 14:12:07 -0700 Subject: [PATCH] refactor(py): consume published threadplane-middleware; regenerate deploys Plan A PR2 (post-publish flip). threadplane-middleware 0.0.1 is live on PyPI, so remove the transitional [tool.uv.sources] path overrides from all three consumers and re-resolve to the published package. Regenerate uv.lock + requirements.txt (now pin threadplane-middleware==0.0.1) and the ag-ui deploy config. The shared-dev langgraph deploy generates its deps at deploy time from the cockpit example, so langgraph.json is unchanged. Verified: real python import resolves from site-packages (not editable path); both cockpit smokes green; deploy regeneration idempotent; grep clean of the old package name outside .venv/dated docs. Co-Authored-By: Claude Opus 4.8 (1M context) --- cockpit/ag-ui/client-tools/python/pyproject.toml | 3 --- cockpit/ag-ui/client-tools/python/requirements.txt | 6 +++--- cockpit/ag-ui/client-tools/python/uv.lock | 14 +++++--------- .../langgraph/client-tools/python/pyproject.toml | 3 --- .../langgraph/client-tools/python/requirements.txt | 6 +++--- cockpit/langgraph/client-tools/python/uv.lock | 14 +++++--------- .../ag-ui-dev/deps/client_tools/pyproject.toml | 3 --- .../ag-ui-dev/deps/client_tools/requirements.txt | 6 +++--- deployments/ag-ui-dev/deps/client_tools/uv.lock | 14 +++++--------- deployments/ag-ui-dev/requirements.txt | 2 +- examples/ag-ui/python/pyproject.toml | 3 --- examples/ag-ui/python/requirements.txt | 2 +- examples/ag-ui/python/uv.lock | 14 +++++--------- 13 files changed, 31 insertions(+), 59 deletions(-) diff --git a/cockpit/ag-ui/client-tools/python/pyproject.toml b/cockpit/ag-ui/client-tools/python/pyproject.toml index c136f099f..275a36190 100644 --- a/cockpit/ag-ui/client-tools/python/pyproject.toml +++ b/cockpit/ag-ui/client-tools/python/pyproject.toml @@ -18,6 +18,3 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src"] - -[tool.uv.sources] -threadplane-middleware = { path = "../../../../packages/threadplane-middleware", editable = true } diff --git a/cockpit/ag-ui/client-tools/python/requirements.txt b/cockpit/ag-ui/client-tools/python/requirements.txt index 9349c196d..6fe6f9833 100644 --- a/cockpit/ag-ui/client-tools/python/requirements.txt +++ b/cockpit/ag-ui/client-tools/python/requirements.txt @@ -70,7 +70,7 @@ langchain-core==1.4.2 # langgraph-checkpoint # langgraph-prebuilt # langgraph-sdk - # threadplane-client-tools + # threadplane-middleware langchain-openai==1.2.2 # via cockpit-ag-ui-client-tools langchain-protocol==0.0.16 @@ -82,7 +82,7 @@ langgraph==1.2.4 # ag-ui-langgraph # cockpit-ag-ui-client-tools # langchain - # threadplane-client-tools + # threadplane-middleware langgraph-checkpoint==4.1.1 # via # langgraph @@ -140,7 +140,7 @@ starlette==1.2.1 # via fastapi tenacity==9.1.4 # via langchain-core -threadplane-client-tools==0.0.1 +threadplane-middleware==0.0.1 # via cockpit-ag-ui-client-tools tiktoken==0.13.0 # via langchain-openai diff --git a/cockpit/ag-ui/client-tools/python/uv.lock b/cockpit/ag-ui/client-tools/python/uv.lock index a6c23db87..ceacf88e3 100644 --- a/cockpit/ag-ui/client-tools/python/uv.lock +++ b/cockpit/ag-ui/client-tools/python/uv.lock @@ -186,7 +186,7 @@ requires-dist = [ { name = "langchain-openai", specifier = ">=0.3" }, { name = "langgraph", specifier = ">=0.3" }, { name = "langsmith", specifier = ">=0.2" }, - { name = "threadplane-middleware", editable = "../../../../packages/threadplane-middleware" }, + { name = "threadplane-middleware", specifier = ">=0.0.1" }, { name = "uvicorn", extras = ["standard"], specifier = ">=0.29" }, ] @@ -953,19 +953,15 @@ wheels = [ [[package]] name = "threadplane-middleware" version = "0.0.1" -source = { editable = "../../../../packages/threadplane-middleware" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph" }, ] - -[package.metadata] -requires-dist = [ - { name = "langchain-core", specifier = ">=0.3.0" }, - { name = "langgraph", specifier = ">=0.3.0" }, - { name = "pytest", marker = "extra == 'test'", specifier = ">=8" }, +sdist = { url = "https://files.pythonhosted.org/packages/01/5f/fee360e3547bede9388bb72a9ad20ca811935582b989c78dafeaae57558a/threadplane_middleware-0.0.1.tar.gz", hash = "sha256:60c931d0248ed2e701a3aa1330c6fd647e611a949500269c5ba82f3607102cef", size = 95505, upload-time = "2026-06-16T20:55:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/55/28e6b752f3f53f2c5d2c2fa3ef27ac62a255a3b29376384f2dfc96d8acb0/threadplane_middleware-0.0.1-py3-none-any.whl", hash = "sha256:c14e49d506e8bd3078f54df381c150d390f2d129f844694d8f5154a2cd8710ea", size = 4315, upload-time = "2026-06-16T20:55:19.044Z" }, ] -provides-extras = ["test"] [[package]] name = "tiktoken" diff --git a/cockpit/langgraph/client-tools/python/pyproject.toml b/cockpit/langgraph/client-tools/python/pyproject.toml index 19cbfe1cb..0b3b8de3e 100644 --- a/cockpit/langgraph/client-tools/python/pyproject.toml +++ b/cockpit/langgraph/client-tools/python/pyproject.toml @@ -14,9 +14,6 @@ dev-dependencies = [ "langgraph-cli[inmem]>=0.1", ] -[tool.uv.sources] -threadplane-middleware = { path = "../../../../packages/threadplane-middleware", editable = true } - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/cockpit/langgraph/client-tools/python/requirements.txt b/cockpit/langgraph/client-tools/python/requirements.txt index 1c700a5b5..57522867a 100644 --- a/cockpit/langgraph/client-tools/python/requirements.txt +++ b/cockpit/langgraph/client-tools/python/requirements.txt @@ -86,7 +86,7 @@ langchain-core==1.4.2 # langgraph-checkpoint # langgraph-prebuilt # langgraph-sdk - # threadplane-client-tools + # threadplane-middleware langchain-openai==1.2.2 # via cockpit-langgraph-client-tools langchain-protocol==0.0.16 @@ -99,7 +99,7 @@ langgraph==1.2.4 # cockpit-langgraph-client-tools # langgraph-api # langgraph-runtime-inmem - # threadplane-client-tools + # threadplane-middleware langgraph-api==0.9.0 # via langgraph-cli langgraph-checkpoint==4.1.1 @@ -222,7 +222,7 @@ tenacity==9.1.4 # via # langchain-core # langgraph-api -threadplane-client-tools==0.0.1 +threadplane-middleware==0.0.1 # via cockpit-langgraph-client-tools tiktoken==0.13.0 # via langchain-openai diff --git a/cockpit/langgraph/client-tools/python/uv.lock b/cockpit/langgraph/client-tools/python/uv.lock index b67871303..7746f68c3 100644 --- a/cockpit/langgraph/client-tools/python/uv.lock +++ b/cockpit/langgraph/client-tools/python/uv.lock @@ -217,7 +217,7 @@ requires-dist = [ { name = "langchain-openai", specifier = ">=0.3" }, { name = "langgraph", specifier = ">=0.3" }, { name = "langsmith", specifier = ">=0.2" }, - { name = "threadplane-middleware", editable = "../../../../packages/threadplane-middleware" }, + { name = "threadplane-middleware", specifier = ">=0.0.1" }, ] [package.metadata.requires-dev] @@ -1428,19 +1428,15 @@ wheels = [ [[package]] name = "threadplane-middleware" version = "0.0.1" -source = { editable = "../../../../packages/threadplane-middleware" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph" }, ] - -[package.metadata] -requires-dist = [ - { name = "langchain-core", specifier = ">=0.3.0" }, - { name = "langgraph", specifier = ">=0.3.0" }, - { name = "pytest", marker = "extra == 'test'", specifier = ">=8" }, +sdist = { url = "https://files.pythonhosted.org/packages/01/5f/fee360e3547bede9388bb72a9ad20ca811935582b989c78dafeaae57558a/threadplane_middleware-0.0.1.tar.gz", hash = "sha256:60c931d0248ed2e701a3aa1330c6fd647e611a949500269c5ba82f3607102cef", size = 95505, upload-time = "2026-06-16T20:55:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/55/28e6b752f3f53f2c5d2c2fa3ef27ac62a255a3b29376384f2dfc96d8acb0/threadplane_middleware-0.0.1-py3-none-any.whl", hash = "sha256:c14e49d506e8bd3078f54df381c150d390f2d129f844694d8f5154a2cd8710ea", size = 4315, upload-time = "2026-06-16T20:55:19.044Z" }, ] -provides-extras = ["test"] [[package]] name = "tiktoken" diff --git a/deployments/ag-ui-dev/deps/client_tools/pyproject.toml b/deployments/ag-ui-dev/deps/client_tools/pyproject.toml index c136f099f..275a36190 100644 --- a/deployments/ag-ui-dev/deps/client_tools/pyproject.toml +++ b/deployments/ag-ui-dev/deps/client_tools/pyproject.toml @@ -18,6 +18,3 @@ build-backend = "hatchling.build" [tool.hatch.build.targets.wheel] packages = ["src"] - -[tool.uv.sources] -threadplane-middleware = { path = "../../../../packages/threadplane-middleware", editable = true } diff --git a/deployments/ag-ui-dev/deps/client_tools/requirements.txt b/deployments/ag-ui-dev/deps/client_tools/requirements.txt index 9349c196d..6fe6f9833 100644 --- a/deployments/ag-ui-dev/deps/client_tools/requirements.txt +++ b/deployments/ag-ui-dev/deps/client_tools/requirements.txt @@ -70,7 +70,7 @@ langchain-core==1.4.2 # langgraph-checkpoint # langgraph-prebuilt # langgraph-sdk - # threadplane-client-tools + # threadplane-middleware langchain-openai==1.2.2 # via cockpit-ag-ui-client-tools langchain-protocol==0.0.16 @@ -82,7 +82,7 @@ langgraph==1.2.4 # ag-ui-langgraph # cockpit-ag-ui-client-tools # langchain - # threadplane-client-tools + # threadplane-middleware langgraph-checkpoint==4.1.1 # via # langgraph @@ -140,7 +140,7 @@ starlette==1.2.1 # via fastapi tenacity==9.1.4 # via langchain-core -threadplane-client-tools==0.0.1 +threadplane-middleware==0.0.1 # via cockpit-ag-ui-client-tools tiktoken==0.13.0 # via langchain-openai diff --git a/deployments/ag-ui-dev/deps/client_tools/uv.lock b/deployments/ag-ui-dev/deps/client_tools/uv.lock index a6c23db87..ceacf88e3 100644 --- a/deployments/ag-ui-dev/deps/client_tools/uv.lock +++ b/deployments/ag-ui-dev/deps/client_tools/uv.lock @@ -186,7 +186,7 @@ requires-dist = [ { name = "langchain-openai", specifier = ">=0.3" }, { name = "langgraph", specifier = ">=0.3" }, { name = "langsmith", specifier = ">=0.2" }, - { name = "threadplane-middleware", editable = "../../../../packages/threadplane-middleware" }, + { name = "threadplane-middleware", specifier = ">=0.0.1" }, { name = "uvicorn", extras = ["standard"], specifier = ">=0.29" }, ] @@ -953,19 +953,15 @@ wheels = [ [[package]] name = "threadplane-middleware" version = "0.0.1" -source = { editable = "../../../../packages/threadplane-middleware" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph" }, ] - -[package.metadata] -requires-dist = [ - { name = "langchain-core", specifier = ">=0.3.0" }, - { name = "langgraph", specifier = ">=0.3.0" }, - { name = "pytest", marker = "extra == 'test'", specifier = ">=8" }, +sdist = { url = "https://files.pythonhosted.org/packages/01/5f/fee360e3547bede9388bb72a9ad20ca811935582b989c78dafeaae57558a/threadplane_middleware-0.0.1.tar.gz", hash = "sha256:60c931d0248ed2e701a3aa1330c6fd647e611a949500269c5ba82f3607102cef", size = 95505, upload-time = "2026-06-16T20:55:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/55/28e6b752f3f53f2c5d2c2fa3ef27ac62a255a3b29376384f2dfc96d8acb0/threadplane_middleware-0.0.1-py3-none-any.whl", hash = "sha256:c14e49d506e8bd3078f54df381c150d390f2d129f844694d8f5154a2cd8710ea", size = 4315, upload-time = "2026-06-16T20:55:19.044Z" }, ] -provides-extras = ["test"] [[package]] name = "tiktoken" diff --git a/deployments/ag-ui-dev/requirements.txt b/deployments/ag-ui-dev/requirements.txt index 80c8007b8..c2532c22e 100644 --- a/deployments/ag-ui-dev/requirements.txt +++ b/deployments/ag-ui-dev/requirements.txt @@ -4,5 +4,5 @@ fastapi==0.136.3 langchain-openai==1.2.2 langgraph==1.2.4 langsmith==0.8.11 -threadplane-client-tools==0.0.1 +threadplane-middleware==0.0.1 uvicorn==0.49.0 diff --git a/examples/ag-ui/python/pyproject.toml b/examples/ag-ui/python/pyproject.toml index e94d24792..80df87b99 100644 --- a/examples/ag-ui/python/pyproject.toml +++ b/examples/ag-ui/python/pyproject.toml @@ -18,9 +18,6 @@ dev-dependencies = [ "pytest-asyncio>=0.23", ] -[tool.uv.sources] -threadplane-middleware = { path = "../../../packages/threadplane-middleware", editable = true } - [build-system] requires = ["hatchling"] build-backend = "hatchling.build" diff --git a/examples/ag-ui/python/requirements.txt b/examples/ag-ui/python/requirements.txt index cfcf8b92e..5d520d0ab 100644 --- a/examples/ag-ui/python/requirements.txt +++ b/examples/ag-ui/python/requirements.txt @@ -1,5 +1,5 @@ # This file was autogenerated by uv via the following command: -# uv export --no-hashes --no-sources -o requirements.txt +# uv export --no-hashes -o requirements.txt -e . ag-ui-a2ui-toolkit==0.0.2 # via ag-ui-langgraph diff --git a/examples/ag-ui/python/uv.lock b/examples/ag-ui/python/uv.lock index 90b359d86..69ff4bb94 100644 --- a/examples/ag-ui/python/uv.lock +++ b/examples/ag-ui/python/uv.lock @@ -210,7 +210,7 @@ requires-dist = [ { name = "langchain-openai", specifier = ">=0.3" }, { name = "langgraph", specifier = ">=0.3" }, { name = "python-dotenv", specifier = ">=1.0" }, - { name = "threadplane-middleware", editable = "../../../packages/threadplane-middleware" }, + { name = "threadplane-middleware", specifier = ">=0.0.1" }, { name = "uvicorn", specifier = ">=0.30" }, ] @@ -985,19 +985,15 @@ wheels = [ [[package]] name = "threadplane-middleware" version = "0.0.1" -source = { editable = "../../../packages/threadplane-middleware" } +source = { registry = "https://pypi.org/simple" } dependencies = [ { name = "langchain-core" }, { name = "langgraph" }, ] - -[package.metadata] -requires-dist = [ - { name = "langchain-core", specifier = ">=0.3.0" }, - { name = "langgraph", specifier = ">=0.3.0" }, - { name = "pytest", marker = "extra == 'test'", specifier = ">=8" }, +sdist = { url = "https://files.pythonhosted.org/packages/01/5f/fee360e3547bede9388bb72a9ad20ca811935582b989c78dafeaae57558a/threadplane_middleware-0.0.1.tar.gz", hash = "sha256:60c931d0248ed2e701a3aa1330c6fd647e611a949500269c5ba82f3607102cef", size = 95505, upload-time = "2026-06-16T20:55:18.335Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/72/55/28e6b752f3f53f2c5d2c2fa3ef27ac62a255a3b29376384f2dfc96d8acb0/threadplane_middleware-0.0.1-py3-none-any.whl", hash = "sha256:c14e49d506e8bd3078f54df381c150d390f2d129f844694d8f5154a2cd8710ea", size = 4315, upload-time = "2026-06-16T20:55:19.044Z" }, ] -provides-extras = ["test"] [[package]] name = "tiktoken"