From 0d185d43ed53449b5c468640fdff19b828caea43 Mon Sep 17 00:00:00 2001 From: Tat Dat Duong Date: Tue, 25 Mar 2025 23:26:04 +0100 Subject: [PATCH 1/3] feat(cli): add packageManager and devEngines detection --- libs/cli/langgraph_cli/config.py | 36 +++++++++++++++++++++++++++++++- 1 file changed, 35 insertions(+), 1 deletion(-) diff --git a/libs/cli/langgraph_cli/config.py b/libs/cli/langgraph_cli/config.py index 011432147..daf07e2e0 100644 --- a/libs/cli/langgraph_cli/config.py +++ b/libs/cli/langgraph_cli/config.py @@ -1022,6 +1022,27 @@ def node_config_to_docker( except OSError: return False + def get_pkg_manager_name(): + try: + with open(config_path.parent / "package.json") as f: + pkg = json.load(f) + + if (pkg_manager_name := pkg.get("packageManager")) and isinstance( + pkg_manager_name, str + ): + return pkg_manager_name.lstrip("^").split("@")[0] + + if ( + dev_engine_name := ( + (pkg.get("devEngines") or {}).get("packageManager") or {} + ).get("name") + ) and isinstance(dev_engine_name, str): + return dev_engine_name + + return None + except Exception: + return None + npm, yarn, pnpm, bun = [ test_file("package-lock.json"), test_file("yarn.lock"), @@ -1038,7 +1059,20 @@ def node_config_to_docker( elif bun: install_cmd = "bun i" else: - install_cmd = "npm i" + # read package.json + # inspired by `package-manager-detector` + pkg_manager_name = get_pkg_manager_name() + + if pkg_manager_name == "yarn": + install_cmd = "yarn install --frozen-lockfile" + elif pkg_manager_name == "pnpm": + install_cmd = "pnpm i --frozen-lockfile" + elif pkg_manager_name == "npm": + install_cmd = "npm ci" + elif pkg_manager_name == "bun": + install_cmd = "bun i" + else: + install_cmd = "npm i" store_config = config.get("store") env_additional_config = ( "" From 3c797529bbce489088ca394bbf48be5b5093a256 Mon Sep 17 00:00:00 2001 From: Tat Dat Duong Date: Tue, 25 Mar 2025 23:32:40 +0100 Subject: [PATCH 2/3] Avoid frozen lockfile --- libs/cli/langgraph_cli/config.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/libs/cli/langgraph_cli/config.py b/libs/cli/langgraph_cli/config.py index daf07e2e0..cd5049db6 100644 --- a/libs/cli/langgraph_cli/config.py +++ b/libs/cli/langgraph_cli/config.py @@ -1022,6 +1022,7 @@ def node_config_to_docker( except OSError: return False + # inspired by `package-manager-detector` def get_pkg_manager_name(): try: with open(config_path.parent / "package.json") as f: @@ -1059,16 +1060,12 @@ def node_config_to_docker( elif bun: install_cmd = "bun i" else: - # read package.json - # inspired by `package-manager-detector` pkg_manager_name = get_pkg_manager_name() if pkg_manager_name == "yarn": - install_cmd = "yarn install --frozen-lockfile" + install_cmd = "yarn install" elif pkg_manager_name == "pnpm": - install_cmd = "pnpm i --frozen-lockfile" - elif pkg_manager_name == "npm": - install_cmd = "npm ci" + install_cmd = "pnpm i" elif pkg_manager_name == "bun": install_cmd = "bun i" else: From 39d85466f803da4bc1251bf033a3c77af84d40ad Mon Sep 17 00:00:00 2001 From: Tat Dat Duong Date: Tue, 25 Mar 2025 23:36:33 +0100 Subject: [PATCH 3/3] Bump to 0.1.80 --- libs/cli/pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libs/cli/pyproject.toml b/libs/cli/pyproject.toml index 8d768570a..72c59cade 100644 --- a/libs/cli/pyproject.toml +++ b/libs/cli/pyproject.toml @@ -1,6 +1,6 @@ [tool.poetry] name = "langgraph-cli" -version = "0.1.79" +version = "0.1.80" description = "CLI for interacting with LangGraph API" authors = [] license = "MIT"