meshcode 2.10.51__tar.gz → 2.10.52__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 (32) hide show
  1. {meshcode-2.10.51 → meshcode-2.10.52}/PKG-INFO +1 -1
  2. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/__init__.py +1 -1
  3. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/server.py +28 -2
  4. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.10.51 → meshcode-2.10.52}/pyproject.toml +1 -1
  6. {meshcode-2.10.51 → meshcode-2.10.52}/README.md +0 -0
  7. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/ascii_art.py +0 -0
  8. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/cli.py +0 -0
  9. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/comms_v4.py +0 -0
  10. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/invites.py +0 -0
  11. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/launcher.py +0 -0
  12. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/launcher_install.py +0 -0
  13. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/__init__.py +0 -0
  14. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/__main__.py +0 -0
  15. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/backend.py +0 -0
  16. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/realtime.py +0 -0
  17. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/test_backend.py +0 -0
  18. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  19. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  20. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/preferences.py +0 -0
  21. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/protocol_v2.py +0 -0
  22. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/run_agent.py +0 -0
  23. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/secrets.py +0 -0
  24. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/self_update.py +0 -0
  25. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode/setup_clients.py +0 -0
  26. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/SOURCES.txt +0 -0
  27. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/dependency_links.txt +0 -0
  28. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/entry_points.txt +0 -0
  29. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/requires.txt +0 -0
  30. {meshcode-2.10.51 → meshcode-2.10.52}/meshcode.egg-info/top_level.txt +0 -0
  31. {meshcode-2.10.51 → meshcode-2.10.52}/setup.cfg +0 -0
  32. {meshcode-2.10.51 → meshcode-2.10.52}/tests/test_status_enum_coverage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.10.51
3
+ Version: 2.10.52
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -1,2 +1,2 @@
1
1
  """MeshCode — Real-time communication between AI agents."""
2
- __version__ = "2.10.51"
2
+ __version__ = "2.10.52"
@@ -3735,6 +3735,7 @@ def run_server():
3735
3735
  # `mcp.run()` normally, which breaks the loop.
3736
3736
  import time as _time_mod
3737
3737
  _restart_count = 0
3738
+ _clean_return_count = 0
3738
3739
  while True:
3739
3740
  try:
3740
3741
  mcp.run()
@@ -3760,5 +3761,30 @@ def run_server():
3760
3761
  break
3761
3762
  _time_mod.sleep(0.3)
3762
3763
  continue
3763
- # Clean return = stdin EOF = Claude Code closed the pipe = real shutdown
3764
- break
3764
+
3765
+ # mcp.run() returned cleanly (stdin EOF). This can mean:
3766
+ # a) Claude Code intentionally shut us down (process exit)
3767
+ # b) Claude Code closed the pipe temporarily due to ESC/cancel
3768
+ # Instead of exiting immediately, wait briefly and retry — Claude
3769
+ # Code's /mcp reconnect will re-attach stdin within seconds.
3770
+ # Only exit after multiple consecutive clean returns with no
3771
+ # recovery, which means the parent process truly wants us dead.
3772
+ _clean_return_count += 1
3773
+ if _clean_return_count > 5:
3774
+ try:
3775
+ sys.stderr.write("[meshcode-mcp] stdin EOF persisted after 5 retries; exiting\n")
3776
+ sys.stderr.flush()
3777
+ except Exception:
3778
+ pass
3779
+ break
3780
+ try:
3781
+ sys.stderr.write(
3782
+ f"[meshcode-mcp] mcp.run() returned cleanly (stdin EOF, attempt {_clean_return_count}/5); "
3783
+ f"waiting 2s for Claude Code reconnect...\n"
3784
+ )
3785
+ sys.stderr.flush()
3786
+ except Exception:
3787
+ pass
3788
+ _time_mod.sleep(2.0)
3789
+ # Reset exception restart count — this is a clean return, not a crash
3790
+ _restart_count = 0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.10.51
3
+ Version: 2.10.52
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meshcode"
7
- version = "2.10.51"
7
+ version = "2.10.52"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes
File without changes