forgexa-cli 1.64.0__tar.gz → 1.64.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 (30) hide show
  1. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/PKG-INFO +1 -1
  2. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/__init__.py +1 -1
  3. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/daemon.py +28 -1
  4. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/PKG-INFO +1 -1
  5. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/pyproject.toml +1 -1
  6. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/README.md +0 -0
  7. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/_build_config.py +0 -0
  8. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/_local_bind.py +0 -0
  9. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/agent_core.py +0 -0
  10. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/autoupgrade.py +0 -0
  11. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/aws_evidence.py +0 -0
  12. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/main.py +0 -0
  13. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/py.typed +0 -0
  14. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/runtime_evidence.py +0 -0
  15. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli/zcode_protocol.py +0 -0
  16. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/SOURCES.txt +0 -0
  17. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/dependency_links.txt +0 -0
  18. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/entry_points.txt +0 -0
  19. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/requires.txt +0 -0
  20. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/forgexa_cli.egg-info/top_level.txt +0 -0
  21. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/setup.cfg +0 -0
  22. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_auth_and_runtime_commands.py +0 -0
  23. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_autoupgrade.py +0 -0
  24. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_check_command.py +0 -0
  25. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_expiry_warnings_and_revoke.py +0 -0
  26. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_local_bind_commands.py +0 -0
  27. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_runtime_credentials.py +0 -0
  28. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_session_credentials.py +0 -0
  29. {forgexa_cli-1.64.0 → forgexa_cli-1.64.1}/tests/test_silent_install.py +0 -0
  30. {forgexa_cli-1.64.0 → forgexa_cli-1.64.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.64.0
3
+ Version: 1.64.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.64.0"
2
+ __version__ = "1.64.1"
@@ -1231,7 +1231,7 @@ except (ImportError, ModuleNotFoundError):
1231
1231
  # DAEMON_VERSION is the protocol/logic version of the daemon code.
1232
1232
  # Kept in sync with pyproject.toml version via bump-version.sh.
1233
1233
  # CLIENT_TYPE identifies which packaging/distribution this daemon runs in.
1234
- DAEMON_VERSION = "1.64.0"
1234
+ DAEMON_VERSION = "1.64.1"
1235
1235
 
1236
1236
 
1237
1237
  def _detect_client_type() -> str:
@@ -18681,10 +18681,37 @@ class RuntimeDaemon:
18681
18681
  self._shutdown_event.set()
18682
18682
 
18683
18683
 
18684
+ def _start_desktop_parent_monitor(daemon, loop):
18685
+ """Stop only an explicitly Desktop-owned daemon when its parent pipe closes."""
18686
+ if sys.platform != "win32" or os.environ.pop("FORGEXA_DESKTOP_PARENT_PIPE", None) != "1":
18687
+ return None
18688
+ stream = sys.stdin
18689
+ if stream is None:
18690
+ raise RuntimeError("Desktop parent pipe is unavailable")
18691
+ import threading
18692
+
18693
+ def monitor():
18694
+ try:
18695
+ while stream.read(1):
18696
+ pass
18697
+ except (OSError, ValueError):
18698
+ pass
18699
+ try:
18700
+ # Capture the running loop here, not in this background thread.
18701
+ loop.call_soon_threadsafe(daemon.handle_signal, signal.SIGTERM)
18702
+ except RuntimeError:
18703
+ pass # The daemon has already closed its loop.
18704
+
18705
+ thread = threading.Thread(target=monitor, name="desktop-parent-pipe", daemon=True)
18706
+ thread.start()
18707
+ return thread
18708
+
18709
+
18684
18710
  async def main():
18685
18711
  daemon = RuntimeDaemon()
18686
18712
 
18687
18713
  loop = asyncio.get_event_loop()
18714
+ _start_desktop_parent_monitor(daemon, loop)
18688
18715
  if sys.platform != "win32":
18689
18716
  for sig in (signal.SIGINT, signal.SIGTERM):
18690
18717
  loop.add_signal_handler(sig, daemon.handle_signal, sig)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: forgexa-cli
3
- Version: 1.64.0
3
+ Version: 1.64.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.64.0"
3
+ version = "1.64.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