meshcode 2.11.78__tar.gz → 2.11.80__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.78 → meshcode-2.11.80}/PKG-INFO +1 -1
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/__init__.py +1 -1
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/hostd.py +82 -16
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/run_agent.py +10 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.78 → meshcode-2.11.80}/pyproject.toml +1 -1
- {meshcode-2.11.78 → meshcode-2.11.80}/README.md +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/claude_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/cli.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/compat.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/daemon.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/doctor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/invites.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/launcher.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/preferences.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/self_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/up.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode/upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/setup.cfg +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_autonomous_closegap_1.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_autonomous_closegap_2.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_autonomous_closegap_3.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_autonomous_prompt_inject.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_core.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_doctor.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_file_upload.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_marketplace_ratings.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.78 → meshcode-2.11.80}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -321,6 +321,16 @@ def _do_respawns(api_key: str, host_id: str) -> int:
|
|
|
321
321
|
# The old mc_set_desired_state(p_state=crashed) call passed NO agent id = no-op; dropped.
|
|
322
322
|
if rec and rec.get("give_up"):
|
|
323
323
|
_log(f"ALERT {proj}/{agent}: respawn cap hit — marked crashed (atomic). No more respawns.")
|
|
324
|
+
# task 843f282c Phase 2: an agent that spawned but NEVER came online (hit the cap) is
|
|
325
|
+
# almost always Claude Code not logged in (hangs on an invisible headless login prompt).
|
|
326
|
+
# Resolve the pending launch -> FE toast instead of an eternal spinner.
|
|
327
|
+
try:
|
|
328
|
+
_rpc("mc_resolve_launch", {
|
|
329
|
+
"p_api_key": api_key, "p_project_id": c.get("project_id"), "p_agent": agent,
|
|
330
|
+
"p_status": "failed", "p_reason": "spawn_failed",
|
|
331
|
+
"p_detail": "agent spawned but never connected — check Claude Code login (run `claude`)"})
|
|
332
|
+
except Exception:
|
|
333
|
+
pass
|
|
324
334
|
n += 1
|
|
325
335
|
return n
|
|
326
336
|
|
|
@@ -457,10 +467,21 @@ def _hostd_plist_xml() -> str:
|
|
|
457
467
|
_HOSTD_TASK_NAME = "MeshCode hostd"
|
|
458
468
|
|
|
459
469
|
|
|
470
|
+
def _hostd_start_now_windows(launch_cmd) -> None:
|
|
471
|
+
"""Start hostd detached NOW (CREATE_NO_WINDOW | DETACHED_PROCESS) so the current session has a live
|
|
472
|
+
host immediately, independent of whichever persistence tier installed."""
|
|
473
|
+
try:
|
|
474
|
+
subprocess.Popen(["cmd.exe", "/c", str(launch_cmd)],
|
|
475
|
+
creationflags=0x08000000 | 0x00000008,
|
|
476
|
+
stdin=subprocess.DEVNULL, stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL)
|
|
477
|
+
except Exception as e:
|
|
478
|
+
_log(f"hostd start-now (windows) failed: {e}")
|
|
479
|
+
|
|
480
|
+
|
|
460
481
|
def _hostd_install_windows() -> int:
|
|
461
|
-
"""Windows
|
|
462
|
-
|
|
463
|
-
|
|
482
|
+
"""Windows keep-alive — NON-ADMIN safe (task 843f282c). Persistence is best-effort across 3 tiers
|
|
483
|
+
(Register-ScheduledTask w/ watchdog -> schtasks ONLOGON CLI -> HKCU\\Run registry); hostd is ALWAYS
|
|
484
|
+
started now so the session works even if all persistence tiers fail (non-admin)."""
|
|
464
485
|
mc = shutil.which("meshcode") or "meshcode"
|
|
465
486
|
STATE_DIR.mkdir(parents=True, exist_ok=True)
|
|
466
487
|
(STATE_DIR / "logs").mkdir(parents=True, exist_ok=True)
|
|
@@ -473,23 +494,59 @@ def _hostd_install_windows() -> int:
|
|
|
473
494
|
f'"{mc}" hostd run\r\n',
|
|
474
495
|
encoding="utf-8",
|
|
475
496
|
)
|
|
476
|
-
# Register-ScheduledTask (PowerShell)
|
|
497
|
+
# Register-ScheduledTask (PowerShell) — ROBUST KEEP-ALIVE (task 843f282c CRITICAL: hostd died ~15:04
|
|
498
|
+
# and Task Scheduler did NOT revive it = silent dead daemon = stuck launches). Two triggers: at-logon
|
|
499
|
+
# AND a PERIODIC every-5min watchdog (re-starts if down; MultipleInstances=IgnoreNew so it never
|
|
500
|
+
# double-spawns a live one) + high RestartCount on crash + unlimited runtime + hidden.
|
|
477
501
|
ps = (
|
|
478
502
|
'$a = New-ScheduledTaskAction -Execute "cmd.exe" -Argument \'/c "' + str(launch_cmd) + '"\';'
|
|
479
|
-
'$
|
|
503
|
+
'$t1 = New-ScheduledTaskTrigger -AtLogOn;'
|
|
504
|
+
'$t2 = New-ScheduledTaskTrigger -Once -At (Get-Date) '
|
|
505
|
+
'-RepetitionInterval (New-TimeSpan -Minutes 5) -RepetitionDuration (New-TimeSpan -Days 3650);'
|
|
480
506
|
'$s = New-ScheduledTaskSettingsSet -AllowStartIfOnBatteries -DontStopIfGoingOnBatteries'
|
|
481
|
-
' -ExecutionTimeLimit ([TimeSpan]::Zero) -RestartCount
|
|
482
|
-
' -RestartInterval (New-TimeSpan -Minutes 1) -Hidden;'
|
|
507
|
+
' -ExecutionTimeLimit ([TimeSpan]::Zero) -RestartCount 999'
|
|
508
|
+
' -RestartInterval (New-TimeSpan -Minutes 1) -MultipleInstances IgnoreNew -Hidden;'
|
|
483
509
|
'$p = New-ScheduledTaskPrincipal -UserId $env:USERNAME -LogonType Interactive -RunLevel Limited;'
|
|
484
|
-
"Register-ScheduledTask -TaskName '" + _HOSTD_TASK_NAME + "' -Action $a -Trigger $
|
|
510
|
+
"Register-ScheduledTask -TaskName '" + _HOSTD_TASK_NAME + "' -Action $a -Trigger $t1,$t2"
|
|
485
511
|
' -Settings $s -Principal $p -Force | Out-Null'
|
|
486
512
|
)
|
|
513
|
+
# NON-ADMIN tiered persistence (task 843f282c): 99% of users are NOT admin, and Register-ScheduledTask
|
|
514
|
+
# fails Access-Denied (0x80070005) for them. Fall back: schtasks CLI (user task) -> HKCU\Run registry.
|
|
515
|
+
# hostd is ALWAYS started now regardless, so the current session has a live host immediately.
|
|
516
|
+
method = None
|
|
517
|
+
task_made = False
|
|
487
518
|
r = subprocess.run(["powershell", "-NoProfile", "-Command", ps], capture_output=True, text=True)
|
|
488
|
-
if r.returncode
|
|
489
|
-
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
519
|
+
if r.returncode == 0:
|
|
520
|
+
task_made = True
|
|
521
|
+
method = "Task Scheduler (at-logon + 5min watchdog + restart)"
|
|
522
|
+
else:
|
|
523
|
+
_log(f"Register-ScheduledTask failed ({(r.stderr or '').strip()[:120]}); trying non-admin fallbacks")
|
|
524
|
+
r2 = subprocess.run(["schtasks", "/Create", "/TN", _HOSTD_TASK_NAME,
|
|
525
|
+
"/TR", f'cmd /c "{launch_cmd}"', "/SC", "ONLOGON", "/F"],
|
|
526
|
+
capture_output=True, text=True)
|
|
527
|
+
if r2.returncode == 0:
|
|
528
|
+
task_made = True
|
|
529
|
+
method = "schtasks ONLOGON (CLI, non-admin; no watchdog)"
|
|
530
|
+
else:
|
|
531
|
+
_log(f"schtasks /Create failed ({((r2.stderr or '')+(r2.stdout or '')).strip()[:120]}); trying HKCU Run")
|
|
532
|
+
r3 = subprocess.run(["reg", "add",
|
|
533
|
+
r"HKCU\Software\Microsoft\Windows\CurrentVersion\Run",
|
|
534
|
+
"/v", "MeshCodeHostd", "/t", "REG_SZ", "/d", f'cmd /c "{launch_cmd}"', "/f"],
|
|
535
|
+
capture_output=True, text=True)
|
|
536
|
+
if r3.returncode == 0:
|
|
537
|
+
method = "HKCU\\Run registry (login autostart, no admin; no watchdog)"
|
|
538
|
+
# ensure hostd is RUNNING now (task tiers: start via the task w/ IgnoreNew; else detached Popen).
|
|
539
|
+
started = False
|
|
540
|
+
if task_made:
|
|
541
|
+
rr = subprocess.run(["schtasks", "/Run", "/TN", _HOSTD_TASK_NAME], capture_output=True, text=True)
|
|
542
|
+
started = (rr.returncode == 0)
|
|
543
|
+
if not started:
|
|
544
|
+
_hostd_start_now_windows(launch_cmd)
|
|
545
|
+
if method:
|
|
546
|
+
print(f"[hostd] keep-alive installed via {method}; hostd running now. launcher: {launch_cmd}")
|
|
547
|
+
return 0
|
|
548
|
+
print(f"[hostd] WARN: no persistence method available (non-admin) — hostd started for THIS session "
|
|
549
|
+
f"ONLY (re-run after reboot). launcher: {launch_cmd}", file=sys.stderr)
|
|
493
550
|
return 0
|
|
494
551
|
|
|
495
552
|
|
|
@@ -604,10 +661,13 @@ def _hostd_bootstrap(verbose: bool = False) -> bool:
|
|
|
604
661
|
elif sysname == "Windows":
|
|
605
662
|
q = subprocess.run(["schtasks", "/Query", "/TN", _HOSTD_TASK_NAME],
|
|
606
663
|
capture_output=True, text=True)
|
|
607
|
-
if q.returncode
|
|
664
|
+
if q.returncode == 0:
|
|
665
|
+
# task exists -> just ensure running (IgnoreNew => harmless if already up; no double-spawn)
|
|
666
|
+
subprocess.run(["schtasks", "/Run", "/TN", _HOSTD_TASK_NAME],
|
|
667
|
+
capture_output=True, text=True)
|
|
668
|
+
else:
|
|
669
|
+
# no task (incl non-admin registry-only / first run) -> install best tier + start now
|
|
608
670
|
_hostd_install_windows()
|
|
609
|
-
subprocess.run(["schtasks", "/Run", "/TN", _HOSTD_TASK_NAME],
|
|
610
|
-
capture_output=True, text=True) # harmless if already running
|
|
611
671
|
else: # Linux + others
|
|
612
672
|
if shutil.which("systemctl"):
|
|
613
673
|
act = subprocess.run(["systemctl", "--user", "is-active", _HOSTD_SYSTEMD_UNIT],
|
|
@@ -717,6 +777,12 @@ def cmd_hostd(args: list) -> int:
|
|
|
717
777
|
_log(f"hostd starting — host_id={host_id} interval={POLL_INTERVAL_SEC}s stale={STALE_SECONDS}s")
|
|
718
778
|
while True:
|
|
719
779
|
try:
|
|
780
|
+
# task 843f282c: heartbeat so the cloud knows this daemon is ALIVE — launch-request
|
|
781
|
+
# detects host_offline (dead hostd) and toasts instead of spinning forever (Ian's bug).
|
|
782
|
+
try:
|
|
783
|
+
_rpc("mc_host_heartbeat", {"p_api_key": api_key, "p_host_id": host_id})
|
|
784
|
+
except Exception:
|
|
785
|
+
pass
|
|
720
786
|
relaunched = _do_respawns(api_key, host_id)
|
|
721
787
|
recycled = _do_recycles(api_key, host_id)
|
|
722
788
|
ver_recycled = _do_version_recycles(api_key, host_id)
|
|
@@ -1082,6 +1082,16 @@ def run(agent: str, project: Optional[str] = None, editor_override: Optional[str
|
|
|
1082
1082
|
os.execvp(cmd[0], cmd)
|
|
1083
1083
|
except FileNotFoundError:
|
|
1084
1084
|
print(f"[meshcode] ERROR: '{editor}' not found in PATH", file=sys.stderr)
|
|
1085
|
+
# task 843f282c Phase 2: tell the dashboard WHY (claude_not_installed) so the pending launch
|
|
1086
|
+
# toast fires with an actionable message instead of spinning forever. Best-effort.
|
|
1087
|
+
try:
|
|
1088
|
+
from .comms_v4 import sb_rpc as _rpc_resolve
|
|
1089
|
+
_rpc_resolve("mc_resolve_launch", {
|
|
1090
|
+
"p_api_key": api_key, "p_project_id": project_id, "p_agent": agent,
|
|
1091
|
+
"p_status": "failed", "p_reason": "claude_not_installed",
|
|
1092
|
+
"p_detail": f"'{editor}' not found in PATH — install: npm i -g @anthropic-ai/claude-code"})
|
|
1093
|
+
except Exception:
|
|
1094
|
+
pass
|
|
1085
1095
|
return 127
|
|
1086
1096
|
except Exception as e:
|
|
1087
1097
|
print(f"[meshcode] ERROR launching {editor}: {e}", file=sys.stderr)
|
|
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
|
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_cross_agent_messaging.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-backend-wt/tests/test_status_enum_coverage.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-noun-wt/tests/test_realtime_event_freshness.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py
RENAMED
|
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
|
{meshcode-2.11.78 → meshcode-2.11.80}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py
RENAMED
|
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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|