langgraph-cli 0.4.33__tar.gz → 0.4.34__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/PKG-INFO +1 -1
- langgraph_cli-0.4.34/langgraph_cli/__init__.py +1 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/deploy.py +23 -5
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/test_cli.py +116 -0
- langgraph_cli-0.4.33/langgraph_cli/__init__.py +0 -1
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/.gitignore +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/LICENSE +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/Makefile +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/README.md +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/.env.example +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/.gitignore +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/Makefile +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs/deps/additional_deps/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs/deps/zuper_deps/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs_fail/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs_fail/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs_fail/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs/storm.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/graphs_submod/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/graphs_submod/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/graphs_submod/subprompt.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/hello.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/prompt.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/requirements.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/graphs_submod/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/graphs_submod/subprompt.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/hello.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/prompt.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/requirements.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/utils/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/utils/greeter.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/my_app.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/pipconf.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/generate_schema.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/.dockerignore +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/.editorconfig +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/.env.example +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/.eslintrc.cjs +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/.gitignore +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/LICENSE +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/README.md +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/jest.config.js +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/package.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/src/agent/graph.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/src/agent/state.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/static/studio.png +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/tests/agent.test.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/tests/graph.int.test.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/tsconfig.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-examples/yarn.lock +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/.eslintrc.cjs +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/apps/agent/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/apps/agent/package.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/apps/agent/src/graph.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/apps/agent/src/state.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/apps/agent/tsconfig.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/libs/shared/package.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/libs/shared/src/index.ts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/libs/shared/tsconfig.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/package.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/tsconfig.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/turbo.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/js-monorepo-example/yarn.lock +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/__main__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/_ignore.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/analytics.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/archive.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/cli.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/config.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/constants.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/dependency_tracking.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/docker.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/exec.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/host_backend.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/image_reference.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/progress.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/py.typed +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/schemas.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/templates.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/util.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/uv_lock.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/langgraph_cli/version.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/.env.example +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/src/agent/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/src/agent/graph.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/src/agent/state.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/common/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/common/helpers.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/shared/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/shared/src/shared/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/shared/src/shared/utils.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/schemas/schema.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/schemas/schema.v0.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/schemas/version.schema.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/integration_tests/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/integration_tests/test_cli.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/test_deploy_command.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/cli/test_templates.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/conftest.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/graphs/agent.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/helpers.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/multiplatform/js.mts +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/multiplatform/python.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/pipconfig.txt +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_archive.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_config.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_config.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_dependency_tracking.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_deploy_agents.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_deploy_helpers.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_docker.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_host_backend.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_image_reference.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_logs_helpers.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/tests/unit_tests/test_util.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/.env.example +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/src/agent/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/src/agent/graph.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/libs/shared/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/libs/shared/src/shared/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/libs/shared/src/shared/utils.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/uv.lock +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/.env.example +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/langgraph.json +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/pyproject.toml +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/src/agent/__init__.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/src/agent/graph.py +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/simple/uv.lock +0 -0
- {langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv.lock +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
__version__ = "0.4.34"
|
|
@@ -1874,7 +1874,10 @@ def _create_host_backend_client(
|
|
|
1874
1874
|
host_url: str | None,
|
|
1875
1875
|
api_key: str | None,
|
|
1876
1876
|
env_vars: dict[str, str] | None = None,
|
|
1877
|
+
*,
|
|
1878
|
+
no_input: bool | None = None,
|
|
1877
1879
|
) -> HostBackendClient:
|
|
1880
|
+
effective_no_input = _no_input if no_input is None else no_input
|
|
1878
1881
|
if env_vars is None:
|
|
1879
1882
|
env_vars = _parse_env_from_config({}, pathlib.Path.cwd() / DEFAULT_CONFIG)
|
|
1880
1883
|
resolved_api_key = api_key
|
|
@@ -1889,7 +1892,7 @@ def _create_host_backend_client(
|
|
|
1889
1892
|
resolved_api_key = val
|
|
1890
1893
|
break
|
|
1891
1894
|
if not resolved_api_key:
|
|
1892
|
-
if
|
|
1895
|
+
if effective_no_input:
|
|
1893
1896
|
raise click.ClickException(
|
|
1894
1897
|
"No LangSmith API key found. Set LANGSMITH_API_KEY in the "
|
|
1895
1898
|
"environment or .env file."
|
|
@@ -1914,6 +1917,8 @@ def _create_host_backend_client(
|
|
|
1914
1917
|
def _call_host_backend_with_optional_tenant(
|
|
1915
1918
|
client: HostBackendClient,
|
|
1916
1919
|
operation: Callable[[HostBackendClient], _T],
|
|
1920
|
+
*,
|
|
1921
|
+
no_input: bool | None = None,
|
|
1917
1922
|
) -> _T:
|
|
1918
1923
|
"""Run *operation*, prompting for a workspace ID on org-scoped 403s.
|
|
1919
1924
|
|
|
@@ -1922,6 +1927,7 @@ def _call_host_backend_with_optional_tenant(
|
|
|
1922
1927
|
in-place so all subsequent calls through the same instance are
|
|
1923
1928
|
tenant-aware.
|
|
1924
1929
|
"""
|
|
1930
|
+
effective_no_input = _no_input if no_input is None else no_input
|
|
1925
1931
|
prompted_for_tenant = False
|
|
1926
1932
|
|
|
1927
1933
|
while True:
|
|
@@ -1933,7 +1939,7 @@ def _call_host_backend_with_optional_tenant(
|
|
|
1933
1939
|
and err.status_code == 403
|
|
1934
1940
|
and "requires workspace specification" in err.message
|
|
1935
1941
|
):
|
|
1936
|
-
if
|
|
1942
|
+
if effective_no_input:
|
|
1937
1943
|
raise click.ClickException(
|
|
1938
1944
|
"API key is org-scoped and requires a workspace ID. "
|
|
1939
1945
|
"Set LANGSMITH_TENANT_ID in your .env file or "
|
|
@@ -2518,6 +2524,13 @@ def deploy_listeners() -> None:
|
|
|
2518
2524
|
|
|
2519
2525
|
@OPT_HOST_API_KEY
|
|
2520
2526
|
@OPT_HOST_URL
|
|
2527
|
+
@click.option(
|
|
2528
|
+
"--json",
|
|
2529
|
+
"json_output",
|
|
2530
|
+
is_flag=True,
|
|
2531
|
+
default=False,
|
|
2532
|
+
help="Emit the listeners as a JSON array instead of a table.",
|
|
2533
|
+
)
|
|
2521
2534
|
@deploy_listeners.command(
|
|
2522
2535
|
"list",
|
|
2523
2536
|
help=(
|
|
@@ -2526,11 +2539,16 @@ def deploy_listeners() -> None:
|
|
|
2526
2539
|
"--listener-id <id>` to deploy through it."
|
|
2527
2540
|
),
|
|
2528
2541
|
)
|
|
2529
|
-
def deploy_listeners_list(
|
|
2530
|
-
|
|
2542
|
+
def deploy_listeners_list(
|
|
2543
|
+
api_key: str | None, host_url: str | None, json_output: bool
|
|
2544
|
+
) -> None:
|
|
2545
|
+
client = _create_host_backend_client(host_url, api_key, no_input=json_output)
|
|
2531
2546
|
listeners = _call_host_backend_with_optional_tenant(
|
|
2532
|
-
client, lambda c: c.list_listeners()
|
|
2547
|
+
client, lambda c: c.list_listeners(), no_input=json_output
|
|
2533
2548
|
)
|
|
2549
|
+
if json_output:
|
|
2550
|
+
click.echo(json_mod.dumps(listeners))
|
|
2551
|
+
return
|
|
2534
2552
|
if not listeners:
|
|
2535
2553
|
click.echo("No listeners found for this workspace.")
|
|
2536
2554
|
return
|
|
@@ -14,6 +14,7 @@ import langgraph_cli.deploy as deploy_module
|
|
|
14
14
|
from langgraph_cli.cli import cli, prepare_args_and_stdin
|
|
15
15
|
from langgraph_cli.config import Config, _get_pip_cleanup_lines, validate_config
|
|
16
16
|
from langgraph_cli.docker import DEFAULT_POSTGRES_URI, DockerCapabilities, Version
|
|
17
|
+
from langgraph_cli.host_backend import HostBackendError
|
|
17
18
|
from langgraph_cli.util import clean_empty_lines
|
|
18
19
|
|
|
19
20
|
FORMATTED_CLEANUP_LINES = _get_pip_cleanup_lines(
|
|
@@ -535,6 +536,121 @@ def test_deploy_listeners_list_command_no_results(monkeypatch) -> None:
|
|
|
535
536
|
assert result.output.strip() == "No listeners found for this workspace."
|
|
536
537
|
|
|
537
538
|
|
|
539
|
+
def test_deploy_listeners_list_command_json(monkeypatch) -> None:
|
|
540
|
+
runner = CliRunner()
|
|
541
|
+
|
|
542
|
+
listeners = [
|
|
543
|
+
{
|
|
544
|
+
"id": "listener-1",
|
|
545
|
+
"compute_id": "prod-cluster",
|
|
546
|
+
"compute_config": {"k8s_namespaces": ["agents"]},
|
|
547
|
+
},
|
|
548
|
+
{
|
|
549
|
+
"id": "listener-2",
|
|
550
|
+
"compute_id": "multi-cluster",
|
|
551
|
+
"compute_config": {"k8s_namespaces": ["agents", "agents-staging"]},
|
|
552
|
+
},
|
|
553
|
+
]
|
|
554
|
+
|
|
555
|
+
class FakeClient:
|
|
556
|
+
def __init__(self, host_url: str, api_key: str, tenant_id: str | None = None):
|
|
557
|
+
pass
|
|
558
|
+
|
|
559
|
+
def list_listeners(self):
|
|
560
|
+
return listeners
|
|
561
|
+
|
|
562
|
+
monkeypatch.setattr(deploy_module, "HostBackendClient", FakeClient)
|
|
563
|
+
|
|
564
|
+
result = runner.invoke(
|
|
565
|
+
cli,
|
|
566
|
+
[
|
|
567
|
+
"deploy",
|
|
568
|
+
"listeners",
|
|
569
|
+
"list",
|
|
570
|
+
"--json",
|
|
571
|
+
"--api-key",
|
|
572
|
+
"test-key",
|
|
573
|
+
"--host-url",
|
|
574
|
+
"https://api.example.com",
|
|
575
|
+
],
|
|
576
|
+
)
|
|
577
|
+
|
|
578
|
+
assert result.exit_code == 0, result.output
|
|
579
|
+
assert json.loads(result.output) == listeners
|
|
580
|
+
|
|
581
|
+
|
|
582
|
+
def test_deploy_listeners_list_command_json_no_results(monkeypatch) -> None:
|
|
583
|
+
runner = CliRunner()
|
|
584
|
+
|
|
585
|
+
class FakeClient:
|
|
586
|
+
def __init__(self, host_url: str, api_key: str, tenant_id: str | None = None):
|
|
587
|
+
pass
|
|
588
|
+
|
|
589
|
+
def list_listeners(self):
|
|
590
|
+
return []
|
|
591
|
+
|
|
592
|
+
monkeypatch.setattr(deploy_module, "HostBackendClient", FakeClient)
|
|
593
|
+
|
|
594
|
+
result = runner.invoke(
|
|
595
|
+
cli,
|
|
596
|
+
[
|
|
597
|
+
"deploy",
|
|
598
|
+
"listeners",
|
|
599
|
+
"list",
|
|
600
|
+
"--json",
|
|
601
|
+
"--api-key",
|
|
602
|
+
"test-key",
|
|
603
|
+
"--host-url",
|
|
604
|
+
"https://api.example.com",
|
|
605
|
+
],
|
|
606
|
+
)
|
|
607
|
+
|
|
608
|
+
assert result.exit_code == 0, result.output
|
|
609
|
+
assert json.loads(result.output) == []
|
|
610
|
+
|
|
611
|
+
|
|
612
|
+
def test_deploy_listeners_list_command_json_org_scoped_403(monkeypatch) -> None:
|
|
613
|
+
"""With --json, an org-scoped 403 must raise cleanly instead of
|
|
614
|
+
prompting for a workspace ID, which would write to stdout and hang
|
|
615
|
+
waiting for input that a scripted invocation never provides."""
|
|
616
|
+
runner = CliRunner()
|
|
617
|
+
|
|
618
|
+
class FakeClient:
|
|
619
|
+
def __init__(self, host_url: str, api_key: str, tenant_id: str | None = None):
|
|
620
|
+
pass
|
|
621
|
+
|
|
622
|
+
def list_listeners(self):
|
|
623
|
+
raise HostBackendError("requires workspace specification", status_code=403)
|
|
624
|
+
|
|
625
|
+
def set_tenant(self, tenant_id: str) -> None:
|
|
626
|
+
raise AssertionError("must not retry with a prompted tenant with --json")
|
|
627
|
+
|
|
628
|
+
monkeypatch.setattr(deploy_module, "HostBackendClient", FakeClient)
|
|
629
|
+
|
|
630
|
+
prompt_calls = []
|
|
631
|
+
monkeypatch.setattr(
|
|
632
|
+
click, "prompt", lambda *a, **k: prompt_calls.append((a, k)) or "unreachable"
|
|
633
|
+
)
|
|
634
|
+
|
|
635
|
+
result = runner.invoke(
|
|
636
|
+
cli,
|
|
637
|
+
[
|
|
638
|
+
"deploy",
|
|
639
|
+
"listeners",
|
|
640
|
+
"list",
|
|
641
|
+
"--json",
|
|
642
|
+
"--api-key",
|
|
643
|
+
"test-key",
|
|
644
|
+
"--host-url",
|
|
645
|
+
"https://api.example.com",
|
|
646
|
+
],
|
|
647
|
+
)
|
|
648
|
+
|
|
649
|
+
assert prompt_calls == [], "must not prompt interactively with --json"
|
|
650
|
+
assert result.exit_code != 0
|
|
651
|
+
assert "LANGSMITH_TENANT_ID" in result.output
|
|
652
|
+
|
|
653
|
+
|
|
538
654
|
def test_deploy_revisions_list_command(monkeypatch) -> None:
|
|
539
655
|
runner = CliRunner()
|
|
540
656
|
captured: dict[str, str] = {}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
__version__ = "0.4.33"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs_fail/langgraph.json
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graph_prerelease_reqs_fail/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/graphs_submod/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_a/graphs_submod/subprompt.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/examples/graphs_reqs_b/graphs_submod/subprompt.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/.env.example
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/langgraph.json
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/src/agent/graph.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/apps/agent/src/agent/state.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/common/__init__.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/common/helpers.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/python-monorepo-example/libs/shared/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/langgraph.json
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/pyproject.toml
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/src/agent/__init__.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/apps/agent/src/agent/graph.py
RENAMED
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/libs/shared/pyproject.toml
RENAMED
|
File without changes
|
|
File without changes
|
{langgraph_cli-0.4.33 → langgraph_cli-0.4.34}/uv-examples/monorepo/libs/shared/src/shared/utils.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|