meshcode 2.11.16__tar.gz → 2.11.18__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.16 → meshcode-2.11.18}/PKG-INFO +7 -1
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/__init__.py +1 -1
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/server.py +36 -4
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/PKG-INFO +7 -1
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/requires.txt +8 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/pyproject.toml +5 -1
- {meshcode-2.11.16 → meshcode-2.11.18}/README.md +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/cli.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/compat.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/daemon.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/doctor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/invites.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/launcher.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/preferences.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/self_update.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode/upload.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/setup.cfg +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_core.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_doctor.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.16 → meshcode-2.11.18}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshcode
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.18
|
|
4
4
|
Summary: Real-time communication between AI agents — Supabase-backed CLI
|
|
5
5
|
Author-email: MeshCode <hello@meshcode.io>
|
|
6
6
|
License: MIT
|
|
@@ -23,6 +23,12 @@ Requires-Dist: websockets>=12.0
|
|
|
23
23
|
Requires-Dist: realtime>=2.0.0
|
|
24
24
|
Requires-Dist: keyring>=24.0
|
|
25
25
|
Requires-Dist: cryptography>=41.0
|
|
26
|
+
Provides-Extra: test
|
|
27
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
30
|
+
Requires-Dist: twine>=4; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
26
32
|
|
|
27
33
|
# MeshCode
|
|
28
34
|
|
|
@@ -1861,8 +1861,22 @@ def _preload_memories_bg() -> None:
|
|
|
1861
1861
|
"p_tier": "reference",
|
|
1862
1862
|
"p_project_name": PROJECT_NAME,
|
|
1863
1863
|
})
|
|
1864
|
+
# AUDIT-P1 cap: keep at most 10 critical memories at boot, ordered by
|
|
1865
|
+
# weight desc (so high-signal hints surface first). Server-side
|
|
1866
|
+
# mc_memory_list doesn't yet support p_limit; cap client-side.
|
|
1864
1867
|
if isinstance(crit, dict) and crit.get("ok"):
|
|
1865
|
-
|
|
1868
|
+
_crit_all = crit.get("memories") or []
|
|
1869
|
+
_crit_sorted = sorted(
|
|
1870
|
+
_crit_all,
|
|
1871
|
+
key=lambda m: (m.get("weight") or 0),
|
|
1872
|
+
reverse=True,
|
|
1873
|
+
)
|
|
1874
|
+
_PRELOADED_CRITICAL = _crit_sorted[:10]
|
|
1875
|
+
if len(_crit_all) > 10:
|
|
1876
|
+
log.info(
|
|
1877
|
+
f"memory preload cap: {len(_crit_all)} critical → "
|
|
1878
|
+
f"top-10 by weight (AUDIT-P1)"
|
|
1879
|
+
)
|
|
1866
1880
|
if isinstance(ref, dict) and ref.get("ok"):
|
|
1867
1881
|
_PRELOADED_REFERENCE_KEYS = [m["key"] for m in (ref.get("memories") or []) if "key" in m]
|
|
1868
1882
|
log.info(
|
|
@@ -2079,6 +2093,8 @@ def _get_parent_cpu() -> float:
|
|
|
2079
2093
|
|
|
2080
2094
|
|
|
2081
2095
|
_heartbeat_crash_count = 0
|
|
2096
|
+
_heartbeat_crash_count_max = 0 # all-time max for long-term telemetry
|
|
2097
|
+
_heartbeat_successive_ok = 0
|
|
2082
2098
|
|
|
2083
2099
|
def _heartbeat_thread_fn():
|
|
2084
2100
|
"""Heartbeat in a DAEMON THREAD — independent of asyncio event loop.
|
|
@@ -2090,18 +2106,34 @@ def _heartbeat_thread_fn():
|
|
|
2090
2106
|
Wrapped in an outer try/except so uncaught exceptions (including from
|
|
2091
2107
|
_heartbeat_stop.wait()) restart the loop instead of silently killing
|
|
2092
2108
|
the thread — which would leave the agent as a ghost on the dashboard.
|
|
2109
|
+
|
|
2110
|
+
AUDIT-C3: crash counter decays after 100 successive clean iterations
|
|
2111
|
+
(~25min on free plan). Persistent all-time-max kept in
|
|
2112
|
+
_heartbeat_crash_count_max for triage.
|
|
2093
2113
|
"""
|
|
2094
|
-
global _heartbeat_crash_count
|
|
2114
|
+
global _heartbeat_crash_count, _heartbeat_crash_count_max, _heartbeat_successive_ok
|
|
2095
2115
|
while not _heartbeat_stop.is_set():
|
|
2096
2116
|
try:
|
|
2097
2117
|
_heartbeat_loop_inner()
|
|
2118
|
+
_heartbeat_successive_ok += 1
|
|
2119
|
+
if _heartbeat_successive_ok >= 100 and _heartbeat_crash_count > 0:
|
|
2120
|
+
log.info(
|
|
2121
|
+
f"heartbeat crash counter reset "
|
|
2122
|
+
f"(was {_heartbeat_crash_count}x, "
|
|
2123
|
+
f"all-time max {_heartbeat_crash_count_max}x)"
|
|
2124
|
+
)
|
|
2125
|
+
_heartbeat_crash_count = 0
|
|
2126
|
+
_heartbeat_successive_ok = 0
|
|
2098
2127
|
except Exception as e:
|
|
2099
2128
|
_heartbeat_crash_count += 1
|
|
2129
|
+
if _heartbeat_crash_count > _heartbeat_crash_count_max:
|
|
2130
|
+
_heartbeat_crash_count_max = _heartbeat_crash_count
|
|
2131
|
+
_heartbeat_successive_ok = 0
|
|
2100
2132
|
log.error(
|
|
2101
|
-
f"heartbeat thread crashed ({_heartbeat_crash_count}x
|
|
2133
|
+
f"heartbeat thread crashed ({_heartbeat_crash_count}x, "
|
|
2134
|
+
f"all-time {_heartbeat_crash_count_max}x): {e} — "
|
|
2102
2135
|
f"restarting in 5s to prevent ghost agent"
|
|
2103
2136
|
)
|
|
2104
|
-
# Brief sleep before restart to avoid tight crash loop
|
|
2105
2137
|
_heartbeat_stop.wait(5)
|
|
2106
2138
|
|
|
2107
2139
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: meshcode
|
|
3
|
-
Version: 2.11.
|
|
3
|
+
Version: 2.11.18
|
|
4
4
|
Summary: Real-time communication between AI agents — Supabase-backed CLI
|
|
5
5
|
Author-email: MeshCode <hello@meshcode.io>
|
|
6
6
|
License: MIT
|
|
@@ -23,6 +23,12 @@ Requires-Dist: websockets>=12.0
|
|
|
23
23
|
Requires-Dist: realtime>=2.0.0
|
|
24
24
|
Requires-Dist: keyring>=24.0
|
|
25
25
|
Requires-Dist: cryptography>=41.0
|
|
26
|
+
Provides-Extra: test
|
|
27
|
+
Requires-Dist: pytest>=8; extra == "test"
|
|
28
|
+
Provides-Extra: dev
|
|
29
|
+
Requires-Dist: build>=1.0; extra == "dev"
|
|
30
|
+
Requires-Dist: twine>=4; extra == "dev"
|
|
31
|
+
Requires-Dist: pytest>=8; extra == "dev"
|
|
26
32
|
|
|
27
33
|
# MeshCode
|
|
28
34
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "meshcode"
|
|
7
|
-
version = "2.11.
|
|
7
|
+
version = "2.11.18"
|
|
8
8
|
description = "Real-time communication between AI agents — Supabase-backed CLI"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = {text = "MIT"}
|
|
@@ -30,6 +30,10 @@ classifiers = [
|
|
|
30
30
|
"Operating System :: OS Independent",
|
|
31
31
|
]
|
|
32
32
|
|
|
33
|
+
[project.optional-dependencies]
|
|
34
|
+
test = ["pytest>=8"]
|
|
35
|
+
dev = ["build>=1.0", "twine>=4", "pytest>=8"]
|
|
36
|
+
|
|
33
37
|
[project.scripts]
|
|
34
38
|
meshcode = "meshcode.cli:main"
|
|
35
39
|
meshcode-mcp = "meshcode.meshcode_mcp.__main__:main"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.16 → meshcode-2.11.18}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.16 → meshcode-2.11.18}/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.16 → meshcode-2.11.18}/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
|