meshcode 2.11.39__tar.gz → 2.11.41__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.39 → meshcode-2.11.41}/PKG-INFO +1 -1
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/__init__.py +1 -1
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/backend.py +8 -1
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/server.py +120 -10
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.39 → meshcode-2.11.41}/pyproject.toml +1 -1
- {meshcode-2.11.39 → meshcode-2.11.41}/README.md +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/cli.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/compat.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/daemon.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/doctor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/invites.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/launcher.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/preferences.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/self_update.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode/upload.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/setup.cfg +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_core.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_doctor.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.39 → meshcode-2.11.41}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -437,7 +437,14 @@ _recording_session_id = ""
|
|
|
437
437
|
_SKIP_RECORDING = {"mc_heartbeat", "mc_record_event", "mc_agent_set_status_by_api_key",
|
|
438
438
|
"mc_acquire_agent_lease", "mc_release_agent_lease",
|
|
439
439
|
"mc_update_agent", "mc_get_agents",
|
|
440
|
-
"mc_task_list", "mc_count_pending", "mc_mark_message_read"
|
|
440
|
+
"mc_task_list", "mc_count_pending", "mc_mark_message_read",
|
|
441
|
+
# Stop-gap (per commander 1b789a11): mc_tasks_due_soon lives
|
|
442
|
+
# only in `meshcode` schema (mig 329); no `public` wrapper
|
|
443
|
+
# exists, so PostgREST returns PGRST202 ~every wait cycle.
|
|
444
|
+
# ~18k err/12h log pollution. The two call sites already
|
|
445
|
+
# treat it as soft-fail. Silence telemetry until Samuel
|
|
446
|
+
# approves the public-wrapper DDL.
|
|
447
|
+
"mc_tasks_due_soon"}
|
|
441
448
|
|
|
442
449
|
|
|
443
450
|
def _get_api_key() -> Optional[str]:
|
|
@@ -95,6 +95,58 @@ def _agent_color(name: str) -> str:
|
|
|
95
95
|
return _ANSI_COLORS[h % len(_ANSI_COLORS)]
|
|
96
96
|
|
|
97
97
|
|
|
98
|
+
# DUP-AGENTS-P3 (memo afc88b8f, vote 2/2 + chief pending): register-time
|
|
99
|
+
# name/role family sanity check. Catches the class-of-bug where an agent
|
|
100
|
+
# named `front-2` gets registered with role="Backend Engineer". Warning-only:
|
|
101
|
+
# never blocks; surfaces via `warning` field that admin UI renders as badge.
|
|
102
|
+
_ROLE_FAMILY_PREFIX_MAP = (
|
|
103
|
+
("commander", "Commander"),
|
|
104
|
+
("chief", "Commander"),
|
|
105
|
+
("co-dev-", "Engineer"),
|
|
106
|
+
("front-", "Frontend"),
|
|
107
|
+
("back-", "Backend"),
|
|
108
|
+
("backend", "Backend"),
|
|
109
|
+
("frontend", "Frontend"),
|
|
110
|
+
("qa-", "QA"),
|
|
111
|
+
("qa", "QA"),
|
|
112
|
+
("design-", "Design"),
|
|
113
|
+
("ops-", "Ops"),
|
|
114
|
+
("data-", "Data"),
|
|
115
|
+
)
|
|
116
|
+
|
|
117
|
+
|
|
118
|
+
def _role_family_from_name(name: str) -> Optional[str]:
|
|
119
|
+
"""Derive expected role family from agent name prefix. None = unknown
|
|
120
|
+
prefix, no opinion (skip warning to avoid noise on names like
|
|
121
|
+
`mesh-commander` or one-off custom names)."""
|
|
122
|
+
if not name:
|
|
123
|
+
return None
|
|
124
|
+
lower = name.lower()
|
|
125
|
+
for prefix, family in _ROLE_FAMILY_PREFIX_MAP:
|
|
126
|
+
if prefix.endswith("-"):
|
|
127
|
+
if lower.startswith(prefix):
|
|
128
|
+
return family
|
|
129
|
+
else:
|
|
130
|
+
if lower == prefix or lower.startswith(prefix + "-") or lower.startswith(prefix + "_"):
|
|
131
|
+
return family
|
|
132
|
+
return None
|
|
133
|
+
|
|
134
|
+
|
|
135
|
+
def _role_warning(name: str, role: str) -> Optional[str]:
|
|
136
|
+
"""Returns a warning string if name-prefix family ≠ role text family.
|
|
137
|
+
None when names with unknown prefixes (avoid false positives), or when
|
|
138
|
+
role text contains the expected family substring (case-insensitive).
|
|
139
|
+
"""
|
|
140
|
+
if not name or not role:
|
|
141
|
+
return None
|
|
142
|
+
expected = _role_family_from_name(name)
|
|
143
|
+
if not expected:
|
|
144
|
+
return None
|
|
145
|
+
if expected.lower() in role.lower():
|
|
146
|
+
return None
|
|
147
|
+
return f"name '{name}' suggests {expected} but role is '{role}' — possible typo or mislabel"
|
|
148
|
+
|
|
149
|
+
|
|
98
150
|
def _mc_log(msg: str, level: str = "info") -> None:
|
|
99
151
|
"""Colored [meshcode-mcp] log line. Uses agent color if available.
|
|
100
152
|
|
|
@@ -3349,6 +3401,36 @@ def _try_auto_claim_task() -> Optional[Dict[str, str]]:
|
|
|
3349
3401
|
_LAST_ROSTER_SNAPSHOT: Optional[List[Dict[str, Any]]] = None
|
|
3350
3402
|
_LAST_ROSTER_SNAPSHOT_TS: float = 0.0
|
|
3351
3403
|
|
|
3404
|
+
# AUTONOMOUS-MODE-1-RUNTIME (mig 354 backend slice already live): cache the
|
|
3405
|
+
# autonomous_mode flag so the wait loop modulation is cheap. Refresh every
|
|
3406
|
+
# 15s — short enough to react to dashboard toggle within ~1 wait cycle,
|
|
3407
|
+
# long enough to avoid hammering the RPC.
|
|
3408
|
+
_AUTONOMOUS_MODE_CACHE: Optional[bool] = None
|
|
3409
|
+
_AUTONOMOUS_MODE_CACHE_TS: float = 0.0
|
|
3410
|
+
|
|
3411
|
+
|
|
3412
|
+
def _get_autonomous_mode(max_age_s: float = 15.0) -> bool:
|
|
3413
|
+
global _AUTONOMOUS_MODE_CACHE, _AUTONOMOUS_MODE_CACHE_TS
|
|
3414
|
+
now_ts = _time.monotonic()
|
|
3415
|
+
if _AUTONOMOUS_MODE_CACHE is not None and (now_ts - _AUTONOMOUS_MODE_CACHE_TS) < max_age_s:
|
|
3416
|
+
return _AUTONOMOUS_MODE_CACHE
|
|
3417
|
+
try:
|
|
3418
|
+
api_key = _get_api_key()
|
|
3419
|
+
if not api_key:
|
|
3420
|
+
return False
|
|
3421
|
+
resp = be.sb_rpc("mc_agent_get_autonomous", {
|
|
3422
|
+
"p_api_key": api_key,
|
|
3423
|
+
"p_project_id": _PROJECT_ID,
|
|
3424
|
+
"p_agent_name": AGENT_NAME,
|
|
3425
|
+
})
|
|
3426
|
+
flag = bool(isinstance(resp, dict) and resp.get("ok") and resp.get("autonomous_mode"))
|
|
3427
|
+
_AUTONOMOUS_MODE_CACHE = flag
|
|
3428
|
+
_AUTONOMOUS_MODE_CACHE_TS = now_ts
|
|
3429
|
+
return flag
|
|
3430
|
+
except Exception as e:
|
|
3431
|
+
log.debug(f"[meshcode] autonomous_mode fetch failed: {e}")
|
|
3432
|
+
return False
|
|
3433
|
+
|
|
3352
3434
|
|
|
3353
3435
|
def _get_mesh_online_snapshot(max_age_s: float = 10.0) -> Optional[List[Dict[str, Any]]]:
|
|
3354
3436
|
global _LAST_ROSTER_SNAPSHOT, _LAST_ROSTER_SNAPSHOT_TS
|
|
@@ -3466,7 +3548,14 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3466
3548
|
|
|
3467
3549
|
_IN_WAIT = True
|
|
3468
3550
|
_set_state("waiting", "listening for messages")
|
|
3469
|
-
|
|
3551
|
+
# AUTONOMOUS-MODE-1-RUNTIME: when the agent is in autonomous mode,
|
|
3552
|
+
# tighten the wait timeout so the loop reacts to mesh activity faster
|
|
3553
|
+
# and reaches the proactive auto-claim path sooner.
|
|
3554
|
+
_autonomous = _get_autonomous_mode()
|
|
3555
|
+
if _autonomous:
|
|
3556
|
+
capped_timeout = min(max(1, int(timeout_seconds)), 5)
|
|
3557
|
+
else:
|
|
3558
|
+
capped_timeout = min(max(1, int(timeout_seconds)), 20)
|
|
3470
3559
|
try:
|
|
3471
3560
|
# ── INTERNAL LOOP ──────────────────────────────────────────
|
|
3472
3561
|
# Keep polling until something actionable arrives.
|
|
@@ -3498,10 +3587,12 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3498
3587
|
result["pending_tasks"] = pending_tasks
|
|
3499
3588
|
break # Return so agent can work tasks
|
|
3500
3589
|
|
|
3501
|
-
# Auto-claim: when idle >30s
|
|
3502
|
-
#
|
|
3503
|
-
#
|
|
3504
|
-
|
|
3590
|
+
# Auto-claim: when idle >30s (or >10s in autonomous mode)
|
|
3591
|
+
# with no assigned tasks, try to claim the oldest open
|
|
3592
|
+
# wildcard task. Autonomous agents react faster to make
|
|
3593
|
+
# the mesh feel proactive.
|
|
3594
|
+
_auto_claim_threshold = 10 if _autonomous else 30
|
|
3595
|
+
if _CONSECUTIVE_IDLE_SECONDS >= _auto_claim_threshold and not _is_leader_agent():
|
|
3505
3596
|
claimed = _try_auto_claim_task()
|
|
3506
3597
|
if claimed:
|
|
3507
3598
|
result["auto_claimed"] = claimed
|
|
@@ -3576,6 +3667,10 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3576
3667
|
_snapshot = _get_mesh_online_snapshot()
|
|
3577
3668
|
if _snapshot is not None:
|
|
3578
3669
|
result["mesh_online_snapshot"] = _snapshot
|
|
3670
|
+
# AUTONOMOUS-MODE-1-RUNTIME: surface the flag so the LLM knows
|
|
3671
|
+
# whether to operate proactively.
|
|
3672
|
+
if isinstance(result, dict):
|
|
3673
|
+
result["autonomous_mode"] = _autonomous
|
|
3579
3674
|
return result
|
|
3580
3675
|
finally:
|
|
3581
3676
|
_IN_WAIT = False
|
|
@@ -4002,7 +4097,12 @@ def meshcode_status() -> Dict[str, Any]:
|
|
|
4002
4097
|
@with_working_status
|
|
4003
4098
|
def meshcode_register(role: str = "") -> Dict[str, Any]:
|
|
4004
4099
|
"""Re-register agent (update role)."""
|
|
4005
|
-
|
|
4100
|
+
effective_role = role or AGENT_ROLE
|
|
4101
|
+
result = be.register_agent(PROJECT_NAME, AGENT_NAME, effective_role, api_key=_get_api_key())
|
|
4102
|
+
warn = _role_warning(AGENT_NAME, effective_role)
|
|
4103
|
+
if warn and isinstance(result, dict):
|
|
4104
|
+
result = {**result, "warning": warn}
|
|
4105
|
+
return result
|
|
4006
4106
|
|
|
4007
4107
|
|
|
4008
4108
|
@mcp.tool()
|
|
@@ -4059,8 +4159,13 @@ def meshcode_init(project: str, agent: str, role: str = "") -> Dict[str, Any]:
|
|
|
4059
4159
|
if not pid:
|
|
4060
4160
|
return {"error": f"project '{project}' not found"}
|
|
4061
4161
|
_PROJECT_ID = pid
|
|
4062
|
-
|
|
4063
|
-
|
|
4162
|
+
effective_role = role or "MCP-connected agent"
|
|
4163
|
+
result = be.register_agent(project, agent, effective_role, api_key=_get_api_key())
|
|
4164
|
+
warn = _role_warning(agent, effective_role)
|
|
4165
|
+
out: Dict[str, Any] = {"ok": True, "project": project, "agent": agent, "register": result}
|
|
4166
|
+
if warn:
|
|
4167
|
+
out["warning"] = warn
|
|
4168
|
+
return out
|
|
4064
4169
|
|
|
4065
4170
|
|
|
4066
4171
|
@mcp.tool()
|
|
@@ -5252,9 +5357,14 @@ def meshcode_add_agent(name: str, role: str = "") -> Dict[str, Any]:
|
|
|
5252
5357
|
name: Agent name.
|
|
5253
5358
|
role: Agent role description.
|
|
5254
5359
|
"""
|
|
5255
|
-
|
|
5360
|
+
effective_role = role or "MCP-connected agent"
|
|
5361
|
+
result = be.register_agent(PROJECT_NAME, name, effective_role, api_key=_get_api_key())
|
|
5362
|
+
warn = _role_warning(name, effective_role)
|
|
5256
5363
|
if isinstance(result, dict) and not result.get("error"):
|
|
5257
|
-
|
|
5364
|
+
out: Dict[str, Any] = {"ok": True, "agent": name, "next_step": f"Run: meshcode setup {PROJECT_NAME} {name} && meshcode run {name}"}
|
|
5365
|
+
if warn:
|
|
5366
|
+
out["warning"] = warn
|
|
5367
|
+
return out
|
|
5258
5368
|
return result or {"error": "failed to add agent"}
|
|
5259
5369
|
|
|
5260
5370
|
|
|
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.39 → meshcode-2.11.41}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.39 → meshcode-2.11.41}/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.39 → meshcode-2.11.41}/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
|