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.
- {meshcode-2.4.7 → meshcode-2.4.9}/PKG-INFO +1 -1
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/__init__.py +1 -1
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/server.py +18 -3
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.4.7 → meshcode-2.4.9}/pyproject.toml +1 -1
- {meshcode-2.4.7 → meshcode-2.4.9}/README.md +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/cli.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/comms_v4.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/invites.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/launcher.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/launcher_install.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/preferences.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/run_agent.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/secrets.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/self_update.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode/setup_clients.py +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.4.7 → meshcode-2.4.9}/setup.cfg +0 -0
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
"""MeshCode — Real-time communication between AI agents."""
|
|
2
|
-
__version__ = "2.4.
|
|
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 =
|
|
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=
|
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|