meshcode 2.10.64__tar.gz → 2.10.65__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.10.64 → meshcode-2.10.65}/PKG-INFO +1 -1
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/__init__.py +1 -1
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/comms_v4.py +41 -4
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.10.64 → meshcode-2.10.65}/pyproject.toml +1 -1
- {meshcode-2.10.64 → meshcode-2.10.65}/README.md +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/cli.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/compat.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/error_hints.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/exceptions.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/invites.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/launcher.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/preferences.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/quickstart.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/run_agent.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/secrets.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/self_update.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/supervisor.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode/upload.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/setup.cfg +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_core.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_exceptions.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_sentinel.py +0 -0
- {meshcode-2.10.64 → meshcode-2.10.65}/tests/test_status_enum_coverage.py +0 -0
|
@@ -1467,8 +1467,34 @@ def show_board(project):
|
|
|
1467
1467
|
print(f" {project.upper()} — Board")
|
|
1468
1468
|
print(f"{'='*60}")
|
|
1469
1469
|
for a in agents:
|
|
1470
|
-
icon = {"online": "●", "working": "▶", "blocked": "■", "standby": "◆",
|
|
1470
|
+
icon = {"online": "●", "working": "▶", "blocked": "■", "standby": "◆",
|
|
1471
|
+
"idle": "○", "done": "✓", "sleeping": "☾", "offline": "✗",
|
|
1472
|
+
"waiting": "◎"}.get(a.get("status", ""), "?")
|
|
1471
1473
|
print(f" {icon} {a['name']:<14} {a.get('status','?'):<10} {a.get('task','')}")
|
|
1474
|
+
|
|
1475
|
+
# Enhanced: show health + tasks + activity from dashboard summary
|
|
1476
|
+
if _ak:
|
|
1477
|
+
try:
|
|
1478
|
+
summary = sb_rpc("mc_get_dashboard_summary", {"p_api_key": _ak})
|
|
1479
|
+
if isinstance(summary, dict) and summary.get("ok"):
|
|
1480
|
+
h = summary.get("health", {})
|
|
1481
|
+
print(f"\n{'-'*60}")
|
|
1482
|
+
print(f" Health: {h.get('active_agents',0)}/{h.get('total_agents',0)} agents active"
|
|
1483
|
+
f" | {h.get('open_tasks',0)} open tasks"
|
|
1484
|
+
f" | {h.get('messages_today',0)} messages today")
|
|
1485
|
+
tasks = summary.get("tasks", [])
|
|
1486
|
+
if tasks:
|
|
1487
|
+
print(f"\n Open tasks:")
|
|
1488
|
+
for t in tasks[:5]:
|
|
1489
|
+
prio_icon = {"urgent": "!!", "high": "!", "normal": " ", "low": "."}.get(t.get("priority", ""), " ")
|
|
1490
|
+
print(f" [{prio_icon}] {t.get('title','')[:50]} ({t.get('assignee','?')})")
|
|
1491
|
+
activity = summary.get("activity", [])
|
|
1492
|
+
if activity:
|
|
1493
|
+
print(f"\n Recent activity:")
|
|
1494
|
+
for e in activity[:5]:
|
|
1495
|
+
print(f" {e.get('agent','?')}: {e.get('summary','')[:50]}")
|
|
1496
|
+
except Exception:
|
|
1497
|
+
pass
|
|
1472
1498
|
print()
|
|
1473
1499
|
|
|
1474
1500
|
|
|
@@ -2040,11 +2066,11 @@ def cmd_doctor(flags, pos):
|
|
|
2040
2066
|
else:
|
|
2041
2067
|
fail("API key", "not found. Run: meshcode login <api_key>")
|
|
2042
2068
|
|
|
2043
|
-
# 4c. MCP server import test
|
|
2069
|
+
# 4c. MCP server import test (lightweight — only test backend, not full server)
|
|
2044
2070
|
try:
|
|
2045
2071
|
import importlib
|
|
2046
|
-
_mod = importlib.import_module("meshcode.meshcode_mcp.
|
|
2047
|
-
ok("MCP server", "module imports cleanly")
|
|
2072
|
+
_mod = importlib.import_module("meshcode.meshcode_mcp.backend")
|
|
2073
|
+
ok("MCP server", "core module imports cleanly")
|
|
2048
2074
|
except Exception as e:
|
|
2049
2075
|
fail("MCP server", f"import error: {e}. Run: pip install --upgrade meshcode")
|
|
2050
2076
|
|
|
@@ -2576,6 +2602,17 @@ if __name__ == "__main__":
|
|
|
2576
2602
|
pass
|
|
2577
2603
|
|
|
2578
2604
|
if len(sys.argv) < 2:
|
|
2605
|
+
# First-run detection: no credentials = new user
|
|
2606
|
+
_config = Path.home() / ".meshcode"
|
|
2607
|
+
_has_creds = (_config / "profile_meta.json").exists() if _config.exists() else False
|
|
2608
|
+
if not _has_creds:
|
|
2609
|
+
print()
|
|
2610
|
+
print(" Welcome to MeshCode!")
|
|
2611
|
+
print(" First time? Run: meshcode quickstart")
|
|
2612
|
+
print(" Already have an API key? Run: meshcode login <api_key>")
|
|
2613
|
+
print(" Need help? Run: meshcode doctor")
|
|
2614
|
+
print()
|
|
2615
|
+
sys.exit(0)
|
|
2579
2616
|
show_help()
|
|
2580
2617
|
sys.exit(0)
|
|
2581
2618
|
|
|
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
|
|
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
|