forgexa-cli 1.58.0__tar.gz → 1.58.1__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.
Files changed (29) hide show
  1. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/PKG-INFO +1 -1
  2. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/__init__.py +1 -1
  3. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/agent_core.py +27 -0
  4. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/daemon.py +1 -1
  5. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/PKG-INFO +1 -1
  6. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/pyproject.toml +1 -1
  7. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/README.md +0 -0
  8. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/_build_config.py +0 -0
  9. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/_local_bind.py +0 -0
  10. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/autoupgrade.py +0 -0
  11. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/main.py +0 -0
  12. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/py.typed +0 -0
  13. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/runtime_evidence.py +0 -0
  14. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli/zcode_protocol.py +0 -0
  15. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/SOURCES.txt +0 -0
  16. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/dependency_links.txt +0 -0
  17. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/entry_points.txt +0 -0
  18. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/requires.txt +0 -0
  19. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/forgexa_cli.egg-info/top_level.txt +0 -0
  20. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/setup.cfg +0 -0
  21. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_auth_and_runtime_commands.py +0 -0
  22. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_autoupgrade.py +0 -0
  23. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_check_command.py +0 -0
  24. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_expiry_warnings_and_revoke.py +0 -0
  25. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_local_bind_commands.py +0 -0
  26. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_runtime_credentials.py +0 -0
  27. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_session_credentials.py +0 -0
  28. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_silent_install.py +0 -0
  29. {forgexa_cli-1.58.0 → forgexa_cli-1.58.1}/tests/test_upgrade_observability.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.58.0
3
+ Version: 1.58.1
4
4
  Summary: Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform
5
5
  Author-email: Jason Sun <dev.winds@gmail.com>
6
6
  License-Expression: MIT
@@ -1,2 +1,2 @@
1
1
  """forgexa-cli — Forgexa command-line client."""
2
- __version__ = "1.58.0"
2
+ __version__ = "1.58.1"
@@ -816,6 +816,30 @@ class AgentDiscovery:
816
816
  os.environ["PATH"] = os.pathsep.join(additions) + os.pathsep + current
817
817
  logger.debug("Expanded PATH with: %s", ", ".join(additions))
818
818
 
819
+ @staticmethod
820
+ def _wsl_windows_executable(path: str) -> bool:
821
+ """Reject a Windows-side agent before its version probe can run via WSL interop."""
822
+ if sys.platform != "linux" or not os.environ.get("WSL_DISTRO_NAME"):
823
+ return False
824
+ resolved = Path(path).resolve()
825
+ if resolved.suffix.lower() in {".exe", ".cmd", ".bat"}:
826
+ return True
827
+ parts = resolved.parts
828
+ if len(parts) >= 3 and parts[1] == "mnt" and len(parts[2]) == 1 and parts[2].isalpha():
829
+ return True
830
+ # A custom DrvFs mount need not live under /mnt/<drive>.
831
+ try:
832
+ mounts = Path("/proc/mounts").read_text(encoding="utf-8")
833
+ except OSError:
834
+ return False
835
+ for line in mounts.splitlines():
836
+ fields = line.split()
837
+ if len(fields) >= 3 and fields[2] in {"9p", "drvfs"}:
838
+ mount = Path(fields[1].replace("\\040", " "))
839
+ if resolved == mount or mount in resolved.parents:
840
+ return True
841
+ return False
842
+
819
843
  async def discover(self) -> list[DiscoveredAgent]:
820
844
  self._expand_path()
821
845
  # Probe bwrap support once at discovery time and log a clear warning
@@ -827,6 +851,9 @@ class AgentDiscovery:
827
851
  cmd = custom_path or spec["commands"][0]
828
852
  resolved = shutil.which(cmd)
829
853
  if resolved:
854
+ if self._wsl_windows_executable(resolved):
855
+ logger.warning("Agent %s resolved only to a Windows executable inside WSL; skipping", agent_id)
856
+ continue
830
857
  version = await self._get_version(spec["detect"], resolved)
831
858
  if version is None and "detect_alt" in spec:
832
859
  # Primary detect command failed; try the alternative.
@@ -1150,7 +1150,7 @@ except (ImportError, ModuleNotFoundError):
1150
1150
  # DAEMON_VERSION is the protocol/logic version of the daemon code.
1151
1151
  # Kept in sync with pyproject.toml version via bump-version.sh.
1152
1152
  # CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
1153
- DAEMON_VERSION = "1.58.0"
1153
+ DAEMON_VERSION = "1.58.1"
1154
1154
 
1155
1155
 
1156
1156
  def _detect_client_type() -> str:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.58.0
3
+ Version: 1.58.1
4
4
  Summary: Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform
5
5
  Author-email: Jason Sun <dev.winds@gmail.com>
6
6
  License-Expression: MIT
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "forgexa-cli"
3
- version = "1.58.0"
3
+ version = "1.58.1"
4
4
  description = "Forgexa CLI — command-line client and AI agent runtime for the Forgexa platform"
5
5
  requires-python = ">=3.9"
6
6
  license = "MIT"
File without changes
File without changes