meshcode 2.11.164__tar.gz → 2.11.165__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 (118) hide show
  1. {meshcode-2.11.164 → meshcode-2.11.165}/PKG-INFO +1 -1
  2. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/hostd.py +35 -2
  3. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/PKG-INFO +1 -1
  4. {meshcode-2.11.164 → meshcode-2.11.165}/pyproject.toml +1 -1
  5. {meshcode-2.11.164 → meshcode-2.11.165}/README.md +0 -0
  6. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/__init__.py +0 -0
  7. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/__main__.py +0 -0
  8. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/_launch_smoke.py +0 -0
  9. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/_session_handoff_template.py +0 -0
  10. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/_stop_hook_template.py +0 -0
  11. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/_update_guard.py +0 -0
  12. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/ascii_art.py +0 -0
  13. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/atomic_push.py +0 -0
  14. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/claude_update.py +0 -0
  15. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/cli.py +0 -0
  16. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/comms_v4.py +0 -0
  17. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/compat.py +0 -0
  18. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/daemon.py +0 -0
  19. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/date_parse.py +0 -0
  20. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/doctor.py +0 -0
  21. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/error_hints.py +0 -0
  22. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/exceptions.py +0 -0
  23. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/hooks/__init__.py +0 -0
  24. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/hooks/push_guard.py +0 -0
  25. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/hooks/repo_path_lock.py +0 -0
  26. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/invites.py +0 -0
  27. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/launcher.py +0 -0
  28. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/launcher_install.py +0 -0
  29. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/__init__.py +0 -0
  30. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/__main__.py +0 -0
  31. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/backend.py +0 -0
  32. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/realtime.py +0 -0
  33. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/server.py +0 -0
  34. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  35. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_backend.py +0 -0
  36. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  37. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  38. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  39. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  40. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  41. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/preferences.py +0 -0
  42. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/protocol_handler.py +0 -0
  43. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/protocol_v2.py +0 -0
  44. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/quickstart.py +0 -0
  45. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/rpc_allowlist.py +0 -0
  46. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/run_agent.py +0 -0
  47. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/scripts/check_secrets.py +0 -0
  48. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/scripts/race_rate_harness.py +0 -0
  49. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/secrets.py +0 -0
  50. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/self_update.py +0 -0
  51. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/setup_clients.py +0 -0
  52. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/supervisor.py +0 -0
  53. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/up.py +0 -0
  54. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode/upload.py +0 -0
  55. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/SOURCES.txt +0 -0
  56. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/dependency_links.txt +0 -0
  57. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/entry_points.txt +0 -0
  58. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/requires.txt +0 -0
  59. {meshcode-2.11.164 → meshcode-2.11.165}/meshcode.egg-info/top_level.txt +0 -0
  60. {meshcode-2.11.164 → meshcode-2.11.165}/setup.cfg +0 -0
  61. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_auto_update_hardening.py +0 -0
  62. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_autonomous_closegap_1.py +0 -0
  63. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_autonomous_closegap_2.py +0 -0
  64. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_autonomous_closegap_3.py +0 -0
  65. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_autonomous_prompt_inject.py +0 -0
  66. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_boot_bug_regression.py +0 -0
  67. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_color_truecolor.py +0 -0
  68. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_core.py +0 -0
  69. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_cross_agent_messaging.py +0 -0
  70. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_date_parse.py +0 -0
  71. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_doctor.py +0 -0
  72. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_ensure_boot_env_urgent_wake.py +0 -0
  73. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_epistemic_v1_python_sdk.py +0 -0
  74. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  75. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_esc_deaf_state.py +0 -0
  76. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_exceptions.py +0 -0
  77. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_file_upload.py +0 -0
  78. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_fleet_reaper.py +0 -0
  79. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_hostd_launch_pinned_env.py +0 -0
  80. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_hostd_serve_discovery_split.py +0 -0
  81. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_hostd_zombie_sessions.py +0 -0
  82. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_init_device_code.py +0 -0
  83. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_install_guard.py +0 -0
  84. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_launch_smoke.py +0 -0
  85. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_lease_sigterm_release.py +0 -0
  86. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_live_mesh_guard.py +0 -0
  87. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_mark_read_batch.py +0 -0
  88. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_marketplace_ratings.py +0 -0
  89. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_migration_integrity.py +0 -0
  90. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_no_appleevents_on_sweep.py +0 -0
  91. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_preflight_hb_gate.py +0 -0
  92. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_pretrust_claude.py +0 -0
  93. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_prompt_dedup_budget.py +0 -0
  94. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_push_guard.py +0 -0
  95. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_realtime_event_freshness.py +0 -0
  96. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_replica_base_workspace_fallback.py +0 -0
  97. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_replica_boot_protocol_unconditional.py +0 -0
  98. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_rls_cross_tenant.py +0 -0
  99. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_rm_guard.py +0 -0
  100. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_rpc_grants.py +0 -0
  101. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_rpc_migrations.py +0 -0
  102. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_run_agent_dry_run.py +0 -0
  103. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_run_agent_no_server_import.py +0 -0
  104. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_security_regressions.py +0 -0
  105. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_self_update_user_site.py +0 -0
  106. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_sentinel.py +0 -0
  107. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_session_replay_gate.py +0 -0
  108. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_setup_path.py +0 -0
  109. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_sleep_signals.py +0 -0
  110. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_status_enum_coverage.py +0 -0
  111. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_stay_on_loop_hook.py +0 -0
  112. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_stop_ghost_terminal.py +0 -0
  113. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_task_progress.py +0 -0
  114. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_terminal_lifecycle.py +0 -0
  115. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_up_launch_cmd.py +0 -0
  116. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_update_guard.py +0 -0
  117. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_urgent_wake_tmux.py +0 -0
  118. {meshcode-2.11.164 → meshcode-2.11.165}/tests/test_wait_open_tasks_contradiction.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.164
3
+ Version: 2.11.165
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -2630,9 +2630,31 @@ def _hostd_plist_xml() -> str:
2630
2630
  wrapper = _hostd_launch_command_path()
2631
2631
  wrapper.write_text(
2632
2632
  "#!/bin/sh\n"
2633
- "# MeshCode hostd launcher (task d84cbfa1: version-split self-heal). Generated\n"
2634
- "# by `meshcode hostd install` do not edit; it is overwritten on reinstall.\n"
2633
+ "# MeshCode hostd launcher (storm fix e4eda167 + d84cbfa1 self-heal). Generated\n"
2634
+ "# by `meshcode hostd install` -- do not edit; it is overwritten on reinstall.\n"
2635
2635
  f'PATH="{bindir}:$PATH"; export PATH\n'
2636
+ "# Storm RC e4eda167: a KeepAlive supervisor pinned to a FROZEN interpreter\n"
2637
+ "# (e.g. anaconda) relaunches OLD code forever -> the native terminal-window\n"
2638
+ "# storm. Converge UP every relaunch: exec the NEWEST finalized immutable env\n"
2639
+ "# (~/.meshcode/envs/<v> with .build-ok + bin/python3), independent of the\n"
2640
+ "# frozen PATH interpreter whose self-upgrade DEFERS under live agents.\n"
2641
+ 'ENVS="$HOME/.meshcode/envs"\n'
2642
+ 'NEWEST=""\n'
2643
+ 'if [ -d "$ENVS" ]; then\n'
2644
+ ' for d in "$ENVS"/*/; do\n'
2645
+ ' v=$(basename "$d")\n'
2646
+ ' case "$v" in .tmp-*) continue ;; esac\n'
2647
+ ' [ -f "$ENVS/$v/.build-ok" ] || continue\n'
2648
+ ' [ -x "$ENVS/$v/bin/python3" ] || continue\n'
2649
+ ' if [ -z "$NEWEST" ]; then NEWEST="$v"; continue; fi\n'
2650
+ ' NEWEST=$(printf "%s\\n%s\\n" "$NEWEST" "$v" | awk -F. \'{ printf "%010d%010d%010d %s\\n", $1, $2, $3, $0 }\' | sort | tail -n1 | cut -d" " -f2)\n'
2651
+ ' done\n'
2652
+ 'fi\n'
2653
+ 'if [ -n "$NEWEST" ] && [ -x "$ENVS/$NEWEST/bin/python3" ]; then\n'
2654
+ ' MESHCODE_NO_AUTO_UPDATE=1; export MESHCODE_NO_AUTO_UPDATE\n'
2655
+ ' exec "$ENVS/$NEWEST/bin/python3" -m meshcode hostd run\n'
2656
+ 'fi\n'
2657
+ "# Fallback (no finalized env, e.g. fresh pip-only install): original behavior.\n"
2636
2658
  "unset MESHCODE_NO_UPDATE MESHCODE_NO_AUTO_UPDATE\n"
2637
2659
  f'{mc_inv} self-upgrade >> "{logdir / "hostd-update.log"}" 2>&1 || true\n'
2638
2660
  "MESHCODE_NO_AUTO_UPDATE=1; export MESHCODE_NO_AUTO_UPDATE\n"
@@ -2914,6 +2936,17 @@ def _running_daemon_is_stale() -> bool:
2914
2936
  import importlib.metadata as _ilmd
2915
2937
  ondisk = _ilmd.version("meshcode")
2916
2938
  from meshcode import self_update as _su
2939
+ # Storm fix e4eda167 (fix B): the CURRENT interpreter may be a lagging
2940
+ # pip install (e.g. anaconda 2.11.157) whose version == the stuck
2941
+ # daemon's running_version => "not stale" => never bounces it. Consider
2942
+ # the NEWEST finalized immutable env too, so an agent launched from ANY
2943
+ # interpreter converges a stale hostd within one launch. FAIL-SAFE.
2944
+ try:
2945
+ _env = _su.newest_installed_env()
2946
+ if _env and _su._is_newer(_env[0], ondisk):
2947
+ ondisk = _env[0]
2948
+ except Exception:
2949
+ pass
2917
2950
  return bool(_su._is_newer(ondisk, rv))
2918
2951
  except Exception:
2919
2952
  return False
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.164
3
+ Version: 2.11.165
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.11.164"
7
+ version = "2.11.165"
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