meshcode 2.11.74__tar.gz → 2.11.76__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.11.74 → meshcode-2.11.76}/PKG-INFO +1 -1
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/__init__.py +1 -1
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/comms_v4.py +10 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/hostd.py +114 -12
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/run_agent.py +6 -5
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode.egg-info/PKG-INFO +1 -1
- meshcode-2.11.74/meshcode.egg-info/SOURCES 2.txt → meshcode-2.11.76/meshcode.egg-info/SOURCES.txt +0 -12
- {meshcode-2.11.74 → meshcode-2.11.76}/pyproject.toml +1 -1
- meshcode-2.11.74/meshcode/hostd 3.py +0 -509
- meshcode-2.11.74/meshcode.egg-info/PKG-INFO 2 +0 -452
- meshcode-2.11.74/meshcode.egg-info/SOURCES.txt +0 -266
- meshcode-2.11.74/meshcode.egg-info/dependency_links 2.txt +0 -1
- meshcode-2.11.74/meshcode.egg-info/entry_points 2.txt +0 -3
- meshcode-2.11.74/meshcode.egg-info/requires 2.txt +0 -13
- meshcode-2.11.74/meshcode.egg-info/top_level 2.txt +0 -4
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 10.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 11.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 12.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 13.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 14.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 15.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 16.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 17.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 18.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 19.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 2.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 20.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 21.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 22.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 3.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 4.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 5.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 6.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 7.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 8.py +0 -126
- meshcode-2.11.74/tests/test_autonomous_prompt_inject 9.py +0 -126
- {meshcode-2.11.74 → meshcode-2.11.76}/README.md +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/claude_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/cli.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/compat.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/daemon.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/doctor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/invites.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/launcher.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/preferences.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/self_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/up.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode/upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/setup.cfg +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_autonomous_closegap_1.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_autonomous_closegap_2.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_autonomous_closegap_3.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_autonomous_prompt_inject.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_core.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_doctor.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_file_upload.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_marketplace_ratings.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.74 → meshcode-2.11.76}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -2388,6 +2388,16 @@ def login(api_key):
|
|
|
2388
2388
|
backend = secrets_mod.keyring_status().get("backend", "?")
|
|
2389
2389
|
print(f"[meshcode] Authenticated as {result['display_name']} ({result['email']})")
|
|
2390
2390
|
print(f"[meshcode] API key stored in OS keychain ({backend})")
|
|
2391
|
+
|
|
2392
|
+
# ZERO-SETUP (task f12b9d36): auto-bootstrap hostd so Launch works with no manual
|
|
2393
|
+
# `meshcode hostd install`. Idempotent + cross-platform + best-effort (never breaks login).
|
|
2394
|
+
try:
|
|
2395
|
+
import importlib as _il
|
|
2396
|
+
_hd = _il.import_module("meshcode.hostd")
|
|
2397
|
+
_hd._hostd_bootstrap(verbose=True)
|
|
2398
|
+
except Exception:
|
|
2399
|
+
pass
|
|
2400
|
+
|
|
2391
2401
|
return True
|
|
2392
2402
|
|
|
2393
2403
|
|
|
@@ -35,6 +35,7 @@ from __future__ import annotations
|
|
|
35
35
|
import json
|
|
36
36
|
import os
|
|
37
37
|
import shlex
|
|
38
|
+
import shutil
|
|
38
39
|
import subprocess
|
|
39
40
|
import sys
|
|
40
41
|
import time
|
|
@@ -211,10 +212,13 @@ def _spawn_agent(project: str, agent: str, headless: bool = False) -> bool:
|
|
|
211
212
|
# background, NO terminal — UNIVERSAL macOS/Linux/Windows (task c1a6c6a8, mesh-dev specs).
|
|
212
213
|
# Clean env (a stale CLAUDECODE aborts `meshcode run`); keep crash logs in a per-agent logfile
|
|
213
214
|
# (NOT DEVNULL — we want to debug headless agents that die on boot).
|
|
215
|
+
# task 14782bb4: spawned agents DO auto-update (non-blocking) — strip any inherited
|
|
216
|
+
# NO_*UPDATE so the agent's launch runs the bg updater (the daemon launcher stays disabled).
|
|
217
|
+
# No hang: run_agent now uses the NON-blocking updater + we spawn via `python -m meshcode`
|
|
218
|
+
# (not the .exe shim) so a bg `pip install -U` can replace meshcode.exe on Windows.
|
|
214
219
|
env = {k: v for k, v in os.environ.items()
|
|
215
|
-
if k not in ("CLAUDECODE", "CLAUDE_CODE_SESSION"
|
|
216
|
-
|
|
217
|
-
env["MESHCODE_NO_UPDATE"] = "1" # belt-and-suspenders: var honored pre-2.11.74 (no launch-hang)
|
|
220
|
+
if k not in ("CLAUDECODE", "CLAUDE_CODE_SESSION",
|
|
221
|
+
"MESHCODE_NO_UPDATE", "MESHCODE_NO_AUTO_UPDATE")}
|
|
218
222
|
log_dir = STATE_DIR / "logs"
|
|
219
223
|
try:
|
|
220
224
|
log_dir.mkdir(parents=True, exist_ok=True)
|
|
@@ -235,11 +239,11 @@ def _spawn_agent(project: str, agent: str, headless: bool = False) -> bool:
|
|
|
235
239
|
}
|
|
236
240
|
if sys.platform == "win32":
|
|
237
241
|
# CREATE_NO_WINDOW (0x08000000) | DETACHED_PROCESS (0x08): no console window, fully
|
|
238
|
-
# detached from this daemon.
|
|
239
|
-
#
|
|
242
|
+
# detached from this daemon. NEVER pythonw (swallows stderr). Ensure venv Scripts +
|
|
243
|
+
# System32 on PATH (Windows PATH cap ~32k).
|
|
240
244
|
kwargs["creationflags"] = 0x08000000 | 0x00000008
|
|
241
245
|
try:
|
|
242
|
-
scripts = str(Path(
|
|
246
|
+
scripts = str(Path(sys.executable).resolve().parent) # venv Scripts dir
|
|
243
247
|
except Exception:
|
|
244
248
|
scripts = ""
|
|
245
249
|
sysroot = os.environ.get("SystemRoot", r"C:\Windows")
|
|
@@ -249,7 +253,9 @@ def _spawn_agent(project: str, agent: str, headless: bool = False) -> bool:
|
|
|
249
253
|
# POSIX: detach into its own session so it survives the daemon + has no controlling tty.
|
|
250
254
|
kwargs["start_new_session"] = True
|
|
251
255
|
try:
|
|
252
|
-
|
|
256
|
+
# `python -m meshcode` (NOT the meshcode.exe shim) so the .exe isn't held open by the
|
|
257
|
+
# agent -> a background `pip install -U` can replace it on Windows (task 14782bb4 #4).
|
|
258
|
+
subprocess.Popen([sys.executable, "-m", "meshcode", "run", target], **kwargs)
|
|
253
259
|
_log(f"spawned {target} HEADLESS (no window, {sys.platform}; log={log_path})")
|
|
254
260
|
return True
|
|
255
261
|
except Exception as e:
|
|
@@ -266,13 +272,15 @@ def _spawn_agent(project: str, agent: str, headless: bool = False) -> bool:
|
|
|
266
272
|
# command PER-PLATFORM (mesh-core FIX1, 0x80070002): cmd.exe uses & (NOT ';'), set "V=" to clear
|
|
267
273
|
# (NOT bash unset/export), double-quotes (NOT shlex POSIX), no exec — else Windows Terminal splits
|
|
268
274
|
# on ';' -> file-not-found. Layered ON TOP of the 2.11.72 headless-flags fix (visible branch only).
|
|
275
|
+
# task 14782bb4: CLEAR any inherited NO_*UPDATE (so the agent auto-updates non-blocking) and run
|
|
276
|
+
# via `python -m meshcode` (NOT the .exe shim) so a bg `pip install -U` can replace meshcode.exe.
|
|
269
277
|
if sys.platform == "win32":
|
|
270
278
|
cmd = (f'set "CLAUDECODE=" & set "CLAUDE_CODE_SESSION=" & '
|
|
271
|
-
f'set "
|
|
272
|
-
f'"{
|
|
279
|
+
f'set "MESHCODE_NO_UPDATE=" & set "MESHCODE_NO_AUTO_UPDATE=" & '
|
|
280
|
+
f'"{sys.executable}" -m meshcode run "{target}"')
|
|
273
281
|
else:
|
|
274
|
-
cmd = (f"unset CLAUDECODE CLAUDE_CODE_SESSION
|
|
275
|
-
f"
|
|
282
|
+
cmd = (f"unset CLAUDECODE CLAUDE_CODE_SESSION MESHCODE_NO_UPDATE MESHCODE_NO_AUTO_UPDATE; "
|
|
283
|
+
f"exec {shlex.quote(sys.executable)} -m meshcode run {shlex.quote(target)}")
|
|
276
284
|
try:
|
|
277
285
|
from meshcode import protocol_handler as _ph
|
|
278
286
|
ok, info = _ph._spawn_terminal(cmd)
|
|
@@ -485,12 +493,64 @@ def _hostd_install_windows() -> int:
|
|
|
485
493
|
return 0
|
|
486
494
|
|
|
487
495
|
|
|
496
|
+
_HOSTD_SYSTEMD_UNIT = "meshcode-hostd.service"
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
def _hostd_run_argv() -> list:
|
|
500
|
+
"""Argv that runs `meshcode hostd run`, resolving the installed console script or
|
|
501
|
+
falling back to `python -m meshcode`."""
|
|
502
|
+
mc = shutil.which("meshcode")
|
|
503
|
+
if mc:
|
|
504
|
+
return [mc, "hostd", "run"]
|
|
505
|
+
return [sys.executable, "-m", "meshcode", "hostd", "run"]
|
|
506
|
+
|
|
507
|
+
|
|
508
|
+
def _hostd_install_linux() -> int:
|
|
509
|
+
"""Linux (task f12b9d36): systemd --user unit (durable, auto-restart, survives logout-login)
|
|
510
|
+
with nohup fallback when systemd --user isn't usable (no session bus / container)."""
|
|
511
|
+
(STATE_DIR / "logs").mkdir(parents=True, exist_ok=True)
|
|
512
|
+
argv = _hostd_run_argv()
|
|
513
|
+
execstart = " ".join(shlex.quote(a) for a in argv)
|
|
514
|
+
if shutil.which("systemctl"):
|
|
515
|
+
unit_dir = Path.home() / ".config" / "systemd" / "user"
|
|
516
|
+
unit_dir.mkdir(parents=True, exist_ok=True)
|
|
517
|
+
(unit_dir / _HOSTD_SYSTEMD_UNIT).write_text(
|
|
518
|
+
"[Unit]\nDescription=MeshCode hostd\nAfter=default.target\n\n"
|
|
519
|
+
"[Service]\nType=simple\n"
|
|
520
|
+
"Environment=MESHCODE_NO_UPDATE=1\nEnvironment=MESHCODE_NO_AUTO_UPDATE=1\n"
|
|
521
|
+
"Environment=MESHCODE_HOSTD_POLL_SEC=10\n"
|
|
522
|
+
f"ExecStart={execstart}\nRestart=on-failure\nRestartSec=10\n\n"
|
|
523
|
+
"[Install]\nWantedBy=default.target\n",
|
|
524
|
+
encoding="utf-8",
|
|
525
|
+
)
|
|
526
|
+
subprocess.run(["systemctl", "--user", "daemon-reload"], capture_output=True, text=True)
|
|
527
|
+
r = subprocess.run(["systemctl", "--user", "enable", "--now", _HOSTD_SYSTEMD_UNIT],
|
|
528
|
+
capture_output=True, text=True)
|
|
529
|
+
if r.returncode == 0:
|
|
530
|
+
print(f"[hostd] installed systemd --user unit '{_HOSTD_SYSTEMD_UNIT}' (enabled + started)")
|
|
531
|
+
return 0
|
|
532
|
+
_log(f"systemd --user enable failed ({r.stderr.strip()}); falling back to nohup")
|
|
533
|
+
# nohup fallback: starts now (host registers); not reboot-persistent.
|
|
534
|
+
env = {**os.environ, "MESHCODE_NO_UPDATE": "1", "MESHCODE_NO_AUTO_UPDATE": "1",
|
|
535
|
+
"MESHCODE_HOSTD_POLL_SEC": "10"}
|
|
536
|
+
try:
|
|
537
|
+
logf = open(STATE_DIR / "logs" / "hostd.stdout.log", "ab")
|
|
538
|
+
except Exception:
|
|
539
|
+
logf = subprocess.DEVNULL
|
|
540
|
+
subprocess.Popen(argv, stdout=logf, stderr=subprocess.STDOUT, stdin=subprocess.DEVNULL,
|
|
541
|
+
start_new_session=True, env=env)
|
|
542
|
+
print("[hostd] started via nohup (no systemd --user available; not reboot-persistent)")
|
|
543
|
+
return 0
|
|
544
|
+
|
|
545
|
+
|
|
488
546
|
def _hostd_install() -> int:
|
|
489
547
|
import platform
|
|
490
548
|
if platform.system() == "Windows":
|
|
491
549
|
return _hostd_install_windows()
|
|
550
|
+
if platform.system() == "Linux":
|
|
551
|
+
return _hostd_install_linux()
|
|
492
552
|
if platform.system() != "Darwin":
|
|
493
|
-
print("[hostd]
|
|
553
|
+
print("[hostd] unsupported platform; run `meshcode hostd run` under your own supervisor.", file=sys.stderr)
|
|
494
554
|
return 2
|
|
495
555
|
plist = _hostd_plist_path()
|
|
496
556
|
plist.parent.mkdir(parents=True, exist_ok=True)
|
|
@@ -524,6 +584,48 @@ def _hostd_uninstall() -> int:
|
|
|
524
584
|
return 0
|
|
525
585
|
|
|
526
586
|
|
|
587
|
+
def _hostd_bootstrap(verbose: bool = False) -> bool:
|
|
588
|
+
"""Idempotent auto-install + start of hostd (task f12b9d36) — called from `meshcode login`
|
|
589
|
+
so onboarding is just `pip install meshcode` + `meshcode login` (no manual `hostd install`).
|
|
590
|
+
If the OS job already exists, just ensure it's running (don't bounce a live daemon); else
|
|
591
|
+
install + start. Best-effort: NEVER raises — login must not fail on a bootstrap hiccup."""
|
|
592
|
+
import platform
|
|
593
|
+
try:
|
|
594
|
+
sysname = platform.system()
|
|
595
|
+
if sysname == "Darwin":
|
|
596
|
+
if not _hostd_plist_path().exists():
|
|
597
|
+
_hostd_install() # writes plist + launchctl load
|
|
598
|
+
try:
|
|
599
|
+
uid = str(os.getuid())
|
|
600
|
+
subprocess.run(["launchctl", "kickstart", f"gui/{uid}/{_HOSTD_PLIST_LABEL}"],
|
|
601
|
+
capture_output=True, text=True) # start if not already running
|
|
602
|
+
except Exception:
|
|
603
|
+
pass
|
|
604
|
+
elif sysname == "Windows":
|
|
605
|
+
q = subprocess.run(["schtasks", "/Query", "/TN", _HOSTD_TASK_NAME],
|
|
606
|
+
capture_output=True, text=True)
|
|
607
|
+
if q.returncode != 0:
|
|
608
|
+
_hostd_install_windows()
|
|
609
|
+
subprocess.run(["schtasks", "/Run", "/TN", _HOSTD_TASK_NAME],
|
|
610
|
+
capture_output=True, text=True) # harmless if already running
|
|
611
|
+
else: # Linux + others
|
|
612
|
+
if shutil.which("systemctl"):
|
|
613
|
+
act = subprocess.run(["systemctl", "--user", "is-active", _HOSTD_SYSTEMD_UNIT],
|
|
614
|
+
capture_output=True, text=True)
|
|
615
|
+
if act.stdout.strip() == "active":
|
|
616
|
+
return True # already running — no-op
|
|
617
|
+
_hostd_install_linux() # systemd enable --now, or nohup fallback
|
|
618
|
+
if verbose:
|
|
619
|
+
print("[meshcode] hostd bootstrapped — Launch is ready (no manual setup needed).")
|
|
620
|
+
return True
|
|
621
|
+
except Exception as e:
|
|
622
|
+
try:
|
|
623
|
+
_log(f"hostd bootstrap skipped: {e}")
|
|
624
|
+
except Exception:
|
|
625
|
+
pass
|
|
626
|
+
return False
|
|
627
|
+
|
|
628
|
+
|
|
527
629
|
def cmd_hostd(args: list) -> int:
|
|
528
630
|
"""Entry point for `meshcode hostd ...`."""
|
|
529
631
|
if not args or args[0] in ("-h", "--help"):
|
|
@@ -698,13 +698,14 @@ def run(agent: str, project: Optional[str] = None, editor_override: Optional[str
|
|
|
698
698
|
# Propagate autonomous flag to the editor + MCP child via env var.
|
|
699
699
|
if autonomous:
|
|
700
700
|
os.environ["MESHCODE_AUTONOMOUS"] = "1"
|
|
701
|
-
#
|
|
702
|
-
#
|
|
703
|
-
#
|
|
704
|
-
#
|
|
701
|
+
# NON-BLOCKING self-update (task 14782bb4): kick a detached background `pip install -U meshcode`
|
|
702
|
+
# and return IMMEDIATELY — the launch NEVER waits/hangs (Samuel req; the old blocking variant hung
|
|
703
|
+
# every Windows launch on WinError 32). This launch runs the current version; the next spawn/recycle
|
|
704
|
+
# picks up the new one (two-launch async). Skip in dry-run (CI/pre-publish smokes must not fork pip).
|
|
705
|
+
# Fully opt-out via MESHCODE_NO_UPDATE / MESHCODE_NO_AUTO_UPDATE (handled inside check_and_maybe_update).
|
|
705
706
|
if not dry_run:
|
|
706
707
|
try:
|
|
707
|
-
self_update.
|
|
708
|
+
self_update.check_and_maybe_update()
|
|
708
709
|
except Exception:
|
|
709
710
|
pass
|
|
710
711
|
|
meshcode-2.11.74/meshcode.egg-info/SOURCES 2.txt → meshcode-2.11.76/meshcode.egg-info/SOURCES.txt
RENAMED
|
@@ -5,9 +5,6 @@ meshcode/__main__.py
|
|
|
5
5
|
meshcode/_stop_hook_template.py
|
|
6
6
|
meshcode/ascii_art.py
|
|
7
7
|
meshcode/atomic_push.py
|
|
8
|
-
meshcode/claude_update 2.py
|
|
9
|
-
meshcode/claude_update 3.py
|
|
10
|
-
meshcode/claude_update 4.py
|
|
11
8
|
meshcode/claude_update.py
|
|
12
9
|
meshcode/cli.py
|
|
13
10
|
meshcode/comms_v4.py
|
|
@@ -17,9 +14,6 @@ meshcode/date_parse.py
|
|
|
17
14
|
meshcode/doctor.py
|
|
18
15
|
meshcode/error_hints.py
|
|
19
16
|
meshcode/exceptions.py
|
|
20
|
-
meshcode/hostd 2.py
|
|
21
|
-
meshcode/hostd 3.py
|
|
22
|
-
meshcode/hostd 4.py
|
|
23
17
|
meshcode/hostd.py
|
|
24
18
|
meshcode/invites.py
|
|
25
19
|
meshcode/launcher.py
|
|
@@ -34,8 +28,6 @@ meshcode/secrets.py
|
|
|
34
28
|
meshcode/self_update.py
|
|
35
29
|
meshcode/setup_clients.py
|
|
36
30
|
meshcode/supervisor.py
|
|
37
|
-
meshcode/up 2.py
|
|
38
|
-
meshcode/up 3.py
|
|
39
31
|
meshcode/up.py
|
|
40
32
|
meshcode/upload.py
|
|
41
33
|
meshcode-backend-wt/comms_v4.py
|
|
@@ -212,10 +204,6 @@ tests/test_auto_update_hardening.py
|
|
|
212
204
|
tests/test_autonomous_closegap_1.py
|
|
213
205
|
tests/test_autonomous_closegap_2.py
|
|
214
206
|
tests/test_autonomous_closegap_3.py
|
|
215
|
-
tests/test_autonomous_prompt_inject 2.py
|
|
216
|
-
tests/test_autonomous_prompt_inject 3.py
|
|
217
|
-
tests/test_autonomous_prompt_inject 4.py
|
|
218
|
-
tests/test_autonomous_prompt_inject 5.py
|
|
219
207
|
tests/test_autonomous_prompt_inject.py
|
|
220
208
|
tests/test_boot_bug_regression.py
|
|
221
209
|
tests/test_color_truecolor.py
|