meshcode 2.4.7__tar.gz → 2.4.9__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. {meshcode-2.4.7 → meshcode-2.4.9}/PKG-INFO +1 -1
  2. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/__init__.py +1 -1
  3. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/server.py +18 -3
  4. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.4.7 → meshcode-2.4.9}/pyproject.toml +1 -1
  6. {meshcode-2.4.7 → meshcode-2.4.9}/README.md +0 -0
  7. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/cli.py +0 -0
  8. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/comms_v4.py +0 -0
  9. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/invites.py +0 -0
  10. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/launcher.py +0 -0
  11. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/launcher_install.py +0 -0
  12. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/__init__.py +0 -0
  13. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/__main__.py +0 -0
  14. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/backend.py +0 -0
  15. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/realtime.py +0 -0
  16. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_backend.py +0 -0
  17. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  18. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  19. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/preferences.py +0 -0
  20. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/protocol_v2.py +0 -0
  21. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/run_agent.py +0 -0
  22. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/secrets.py +0 -0
  23. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/self_update.py +0 -0
  24. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/setup_clients.py +0 -0
  25. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/SOURCES.txt +0 -0
  26. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/dependency_links.txt +0 -0
  27. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/entry_points.txt +0 -0
  28. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/requires.txt +0 -0
  29. {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/top_level.txt +0 -0
  30. {meshcode-2.4.7 → meshcode-2.4.9}/setup.cfg +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.4.7
3
+ Version: 2.4.9
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.4.7"
2
+ __version__ = "2.4.8"
@@ -503,6 +503,17 @@ def _acquire_lease() -> bool:
503
503
  if not api_key:
504
504
  return True # legacy clients without api_key skip lease check
505
505
  import time as _time
506
+ # Pre-clean any stale lease for our agent name before attempting.
507
+ # This auto-heals ghost leases from dead sessions (any status).
508
+ try:
509
+ be.sb_rpc("mc_force_clear_stale_lease", {
510
+ "p_api_key": api_key,
511
+ "p_project_id": _PROJECT_ID,
512
+ "p_agent_name": AGENT_NAME,
513
+ })
514
+ except Exception as e:
515
+ # Non-fatal: RPC might not exist on older servers.
516
+ print(f"[meshcode-mcp] stale-lease pre-clean skipped: {e}", file=sys.stderr)
506
517
  for attempt in range(3):
507
518
  try:
508
519
  r = be.sb_rpc("mc_acquire_agent_lease", {
@@ -1124,17 +1135,21 @@ def _detect_global_done(messages: List[Dict[str, Any]]) -> Optional[Dict[str, An
1124
1135
 
1125
1136
  @mcp.tool()
1126
1137
  @with_working_status
1127
- async def meshcode_wait(timeout_seconds: int = 60, include_acks: bool = False) -> Dict[str, Any]:
1138
+ async def meshcode_wait(timeout_seconds: int = 120, include_acks: bool = False) -> Dict[str, Any]:
1128
1139
  """Block until a mesh message arrives or timeout. Your idle state.
1129
1140
 
1130
1141
  Args:
1131
- timeout_seconds: Max wait time in seconds (default 120).
1142
+ timeout_seconds: Max wait time in seconds (default 120, hard cap 120).
1132
1143
  """
1133
1144
  global _IN_WAIT
1134
1145
  _IN_WAIT = True
1135
1146
  _set_state("waiting", "listening for messages")
1147
+ # Universal hard cap: even if a caller passes a larger value (e.g. 1800),
1148
+ # clamp to 120s. Forces shorter iteration loops across all users so progress
1149
+ # never hides behind a long wait. Per mesh-commander 2026-04-11.
1150
+ capped_timeout = min(max(1, int(timeout_seconds)), 120)
1136
1151
  try:
1137
- result = await _meshcode_wait_inner(actual_timeout=max(1, int(timeout_seconds)), include_acks=include_acks)
1152
+ result = await _meshcode_wait_inner(actual_timeout=capped_timeout, include_acks=include_acks)
1138
1153
  if result.get("got_message"):
1139
1154
  _set_state("online", "")
1140
1155
  return result
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.4.7
3
+ Version: 2.4.9
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.4.7"
7
+ version = "2.4.9"
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
File without changes
File without changes
File without changes
File without changes
File without changes