From 4e2dfe4a247abfc0d001f3ef8242cbbbba400d2c Mon Sep 17 00:00:00 2001 From: hari-dhanushkodi Date: Fri, 16 Oct 2026 08:02:43 -0400 Subject: [PATCH] fix(cli): accept serverless and dedicated deployment aliases (#9325) --- libs/cli/langgraph_cli/deploy.py | 10 ++++++--- .../unit_tests/cli/test_deploy_command.py | 21 +++++++++++++++++++ 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/libs/cli/langgraph_cli/deploy.py b/libs/cli/langgraph_cli/deploy.py index 9d3603029..2325a2198 100644 --- a/libs/cli/langgraph_cli/deploy.py +++ b/libs/cli/langgraph_cli/deploy.py @@ -2213,11 +2213,13 @@ def _deploy_base_options( ), click.option( "--deployment-type", - type=click.Choice(["dev", "prod"]), + type=click.Choice(["serverless", "dedicated", "dev", "prod"]), default="dev", show_default=True, help=( - "Deployment type (used when creating a new deployment). " + "Deployment type (used when creating a new deployment): " + "serverless (scale to zero) or dedicated (prod); " + "legacy dev and prod are also accepted. " "Ignored with --push-to." ), ), @@ -2508,7 +2510,9 @@ def _deploy_cmd( ), verbose=verbose, selector=selector, - deployment_type=deployment_type, + deployment_type={"serverless": "dev_zero", "dedicated": "prod"}.get( + deployment_type, deployment_type + ), secrets=secrets, tracked_packages=tracked_packages, ) diff --git a/libs/cli/tests/unit_tests/cli/test_deploy_command.py b/libs/cli/tests/unit_tests/cli/test_deploy_command.py index b9cf89858..23636b9ff 100644 --- a/libs/cli/tests/unit_tests/cli/test_deploy_command.py +++ b/libs/cli/tests/unit_tests/cli/test_deploy_command.py @@ -365,6 +365,27 @@ def test_first_local_deploy_creates_then_builds_pushes_and_updates_in_order( assert "Deployment updated" in result.output +@pytest.mark.parametrize( + ("deployment_type", "wire_type"), + [ + ("serverless", "dev_zero"), + ("dedicated", "prod"), + ("dev", "dev"), + ("prod", "prod"), + ], +) +@pytest.mark.parametrize("build_mode", ["--no-remote", "--remote"]) +def test_deployment_type_aliases( + deploy_project: DeployProject, deployment_type: str, wire_type: str, build_mode: str +) -> None: + result = deploy_project.run(build_mode, "--deployment-type", deployment_type) + + assert result.exit_code == 0, result.output + assert deploy_project.control_plane.bodies[CREATE_DEPLOYMENT]["source_config"] == { + "deployment_type": wire_type + } + + def test_first_local_deploy_creates_an_internal_docker_deployment( deploy_project: DeployProject, ) -> None: