meshcode 2.11.3__tar.gz → 2.11.4__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.3 → meshcode-2.11.4}/PKG-INFO +1 -1
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/__init__.py +1 -1
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/_stop_hook_template.py +29 -12
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.3 → meshcode-2.11.4}/pyproject.toml +1 -1
- {meshcode-2.11.3 → meshcode-2.11.4}/README.md +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/cli.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/compat.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/daemon.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/invites.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/launcher.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/preferences.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/self_update.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode/upload.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/setup.cfg +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_core.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.3 → meshcode-2.11.4}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -109,6 +109,23 @@ _USER_MCP_FAIL_PHRASES = (
|
|
|
109
109
|
)
|
|
110
110
|
|
|
111
111
|
|
|
112
|
+
def _rec_role_content(rec):
|
|
113
|
+
"""Extract (role, content) from a Claude Code transcript record.
|
|
114
|
+
|
|
115
|
+
Claude Code wraps user/assistant payloads in `rec["message"]` since the
|
|
116
|
+
schema migration; older parsers that read top-level `rec["role"]` /
|
|
117
|
+
`rec["content"]` MISS every record and silently never fire. Normalize
|
|
118
|
+
here so every helper sees the canonical shape. Falls back to top-level
|
|
119
|
+
keys for forward compat with hypothetical older transcripts.
|
|
120
|
+
"""
|
|
121
|
+
if not isinstance(rec, dict):
|
|
122
|
+
return None, None
|
|
123
|
+
msg = rec.get("message")
|
|
124
|
+
if isinstance(msg, dict):
|
|
125
|
+
return msg.get("role"), msg.get("content")
|
|
126
|
+
return rec.get("role"), rec.get("content")
|
|
127
|
+
|
|
128
|
+
|
|
112
129
|
def _last_user_message(transcript_path):
|
|
113
130
|
try:
|
|
114
131
|
last = ""
|
|
@@ -118,8 +135,8 @@ def _last_user_message(transcript_path):
|
|
|
118
135
|
rec = json.loads(line)
|
|
119
136
|
except json.JSONDecodeError:
|
|
120
137
|
continue
|
|
121
|
-
|
|
122
|
-
|
|
138
|
+
role, content = _rec_role_content(rec)
|
|
139
|
+
if role == "user":
|
|
123
140
|
if isinstance(content, str):
|
|
124
141
|
last = content
|
|
125
142
|
elif isinstance(content, list):
|
|
@@ -147,12 +164,12 @@ def _last_assistant_turn_called_wait(transcript_path):
|
|
|
147
164
|
continue
|
|
148
165
|
last_assistant_blocks = []
|
|
149
166
|
for rec in reversed(records):
|
|
150
|
-
|
|
167
|
+
role, content = _rec_role_content(rec)
|
|
168
|
+
if role == "user":
|
|
151
169
|
if last_assistant_blocks:
|
|
152
170
|
break
|
|
153
171
|
continue
|
|
154
|
-
if
|
|
155
|
-
content = rec.get("content")
|
|
172
|
+
if role == "assistant":
|
|
156
173
|
if isinstance(content, list):
|
|
157
174
|
last_assistant_blocks.extend(content)
|
|
158
175
|
elif isinstance(content, dict):
|
|
@@ -185,9 +202,9 @@ def _latest_wait_result_authorizes_exit(transcript_path):
|
|
|
185
202
|
|
|
186
203
|
wait_use_ids = set()
|
|
187
204
|
for rec in records:
|
|
188
|
-
|
|
205
|
+
role, content = _rec_role_content(rec)
|
|
206
|
+
if role != "assistant":
|
|
189
207
|
continue
|
|
190
|
-
content = rec.get("content")
|
|
191
208
|
blocks = content if isinstance(content, list) else [content] if isinstance(content, dict) else []
|
|
192
209
|
for block in blocks:
|
|
193
210
|
if not isinstance(block, dict):
|
|
@@ -201,9 +218,9 @@ def _latest_wait_result_authorizes_exit(transcript_path):
|
|
|
201
218
|
return False
|
|
202
219
|
|
|
203
220
|
for rec in reversed(records):
|
|
204
|
-
|
|
221
|
+
role, content = _rec_role_content(rec)
|
|
222
|
+
if role != "user":
|
|
205
223
|
continue
|
|
206
|
-
content = rec.get("content")
|
|
207
224
|
blocks = content if isinstance(content, list) else [content] if isinstance(content, dict) else []
|
|
208
225
|
for block in blocks:
|
|
209
226
|
if not isinstance(block, dict):
|
|
@@ -310,7 +327,7 @@ def _mcp_unreachable_recently(transcript_path, lookback_records=_UNREACHABLE_LOO
|
|
|
310
327
|
wait_tool_use_ids = set()
|
|
311
328
|
toolsearch_wait_ids = set()
|
|
312
329
|
for rec in tail:
|
|
313
|
-
content = rec
|
|
330
|
+
_, content = _rec_role_content(rec)
|
|
314
331
|
blocks = content if isinstance(content, list) else [content] if isinstance(content, dict) else []
|
|
315
332
|
for block in blocks:
|
|
316
333
|
if not isinstance(block, dict):
|
|
@@ -429,9 +446,9 @@ def _user_explicitly_reports_mcp_failure(transcript_path, lookback_records=_UNRE
|
|
|
429
446
|
continue
|
|
430
447
|
tail = records[-lookback_records:] if lookback_records else records
|
|
431
448
|
for rec in reversed(tail):
|
|
432
|
-
|
|
449
|
+
role, content = _rec_role_content(rec)
|
|
450
|
+
if role != "user":
|
|
433
451
|
continue
|
|
434
|
-
content = rec.get("content")
|
|
435
452
|
text = ""
|
|
436
453
|
if isinstance(content, str):
|
|
437
454
|
text = content
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-backend-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.3 → meshcode-2.11.4}/meshcode-backend-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
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.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
|
{meshcode-2.11.3 → meshcode-2.11.4}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.3 → meshcode-2.11.4}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.3 → meshcode-2.11.4}/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.3 → meshcode-2.11.4}/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
|