meshcode 2.11.34__tar.gz → 2.11.36__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.34 → meshcode-2.11.36}/PKG-INFO +1 -1
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/__init__.py +1 -1
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/backend.py +23 -3
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/server.py +11 -18
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.34 → meshcode-2.11.36}/pyproject.toml +1 -1
- {meshcode-2.11.34 → meshcode-2.11.36}/README.md +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/cli.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/compat.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/daemon.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/doctor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/invites.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/launcher.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/preferences.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/self_update.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode/upload.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/setup.cfg +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_core.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_doctor.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.34 → meshcode-2.11.36}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -969,13 +969,22 @@ def read_inbox(project_id: str, agent: str, mark_read: bool = True, api_key: Opt
|
|
|
969
969
|
|
|
970
970
|
|
|
971
971
|
def count_pending(project_id: str, agent: str, api_key: Optional[str] = None) -> int:
|
|
972
|
-
# Use SECURITY DEFINER RPC when api_key is available
|
|
972
|
+
# Use SECURITY DEFINER RPC when api_key is available.
|
|
973
|
+
# SEC-5 R-SEC5-A: call rate-limited _rl wrapper. Server-side returns
|
|
974
|
+
# cached payload on limit so Python contract stays {ok:true, count:int}.
|
|
975
|
+
# Falls back to non-rl on 404 if the wrapper isn't deployed yet.
|
|
973
976
|
if api_key:
|
|
974
|
-
result = sb_rpc("
|
|
977
|
+
result = sb_rpc("mc_count_pending_rl", {
|
|
975
978
|
"p_api_key": api_key,
|
|
976
979
|
"p_project_id": project_id,
|
|
977
980
|
"p_agent_name": agent,
|
|
978
981
|
})
|
|
982
|
+
if isinstance(result, dict) and result.get("error_code") == "404":
|
|
983
|
+
result = sb_rpc("mc_count_pending", {
|
|
984
|
+
"p_api_key": api_key,
|
|
985
|
+
"p_project_id": project_id,
|
|
986
|
+
"p_agent_name": agent,
|
|
987
|
+
})
|
|
979
988
|
if isinstance(result, dict) and result.get("ok"):
|
|
980
989
|
return result.get("count", 0)
|
|
981
990
|
# Fall through to direct query if RPC doesn't exist yet
|
|
@@ -1248,13 +1257,24 @@ def task_list(api_key, project_id, agent, status_filter=None, include_done=False
|
|
|
1248
1257
|
cached = _TASK_LIST_CACHE.get(cache_key)
|
|
1249
1258
|
if cached and (now - cached[1]) < _TASK_LIST_MIN_INTERVAL:
|
|
1250
1259
|
return cached[0]
|
|
1251
|
-
|
|
1260
|
+
# SEC-5 R-SEC5-A: call rate-limited _rl wrapper. Returns same shape as
|
|
1261
|
+
# original (with extra rate_limited/remaining metadata Python ignores).
|
|
1262
|
+
# Falls back to non-rl on 404 if wrapper isn't deployed.
|
|
1263
|
+
result = sb_rpc("mc_task_list_rl", {
|
|
1252
1264
|
"p_api_key": api_key,
|
|
1253
1265
|
"p_project_id": project_id,
|
|
1254
1266
|
"p_agent": agent,
|
|
1255
1267
|
"p_status_filter": status_filter,
|
|
1256
1268
|
"p_include_done": include_done,
|
|
1257
1269
|
})
|
|
1270
|
+
if isinstance(result, dict) and result.get("error_code") == "404":
|
|
1271
|
+
result = sb_rpc("mc_task_list", {
|
|
1272
|
+
"p_api_key": api_key,
|
|
1273
|
+
"p_project_id": project_id,
|
|
1274
|
+
"p_agent": agent,
|
|
1275
|
+
"p_status_filter": status_filter,
|
|
1276
|
+
"p_include_done": include_done,
|
|
1277
|
+
})
|
|
1258
1278
|
with _TASK_LIST_CACHE_LOCK:
|
|
1259
1279
|
if len(_TASK_LIST_CACHE) >= _TASK_LIST_CACHE_MAX:
|
|
1260
1280
|
oldest_key = min(_TASK_LIST_CACHE, key=lambda k: _TASK_LIST_CACHE[k][1])
|
|
@@ -4073,27 +4073,20 @@ def meshcode_set_status(status: str, task: str = "") -> Dict[str, Any]:
|
|
|
4073
4073
|
task: Optional human-readable task description.
|
|
4074
4074
|
"""
|
|
4075
4075
|
global _STAY_AWAKE, _CONSECUTIVE_IDLE_SECONDS
|
|
4076
|
-
# PRODUCT RULE: Cannot sleep/idle/standby with
|
|
4077
|
-
#
|
|
4078
|
-
#
|
|
4079
|
-
#
|
|
4080
|
-
#
|
|
4081
|
-
#
|
|
4082
|
-
# who delegated 7 tasks couldn't sleep because the delegations bounced
|
|
4083
|
-
# back as own-assignments via reassign-to-self workarounds. Now: only
|
|
4084
|
-
# tasks the agent ACTIVELY claimed (claimed_by=me) block sleep — those
|
|
4085
|
-
# are work the agent committed to and can't drop silently.
|
|
4076
|
+
# PRODUCT RULE: Cannot sleep/idle/standby with ANY open tasks (claimed
|
|
4077
|
+
# or just assigned). Samuel directive 2026-05-22T01:01Z confirmed the
|
|
4078
|
+
# strict rule is intentional — agents MUST work their assigned queue
|
|
4079
|
+
# before sleeping. Reverting the 2026-05-22T00:55Z "claimed-only" relax
|
|
4080
|
+
# (2.11.34) per Samuel's correction. The wake-cron is BACKUP for
|
|
4081
|
+
# disconnected sessions, NOT a license to sleep on assignments.
|
|
4086
4082
|
if status in ("sleeping", "idle", "standby"):
|
|
4087
4083
|
pending_tasks = _get_pending_tasks_summary()
|
|
4088
4084
|
if pending_tasks:
|
|
4089
|
-
|
|
4090
|
-
|
|
4091
|
-
|
|
4092
|
-
|
|
4093
|
-
|
|
4094
|
-
"pending_tasks": pending_tasks,
|
|
4095
|
-
"claimed_blocking_sleep": claimed_pending,
|
|
4096
|
-
}
|
|
4085
|
+
return {
|
|
4086
|
+
"refused": True,
|
|
4087
|
+
"reason": f"Cannot set status '{status}' — you have {len(pending_tasks)} open task(s) assigned or claimed. Work them first (claim → progress → complete) or task_reject to release.",
|
|
4088
|
+
"pending_tasks": pending_tasks,
|
|
4089
|
+
}
|
|
4097
4090
|
# Setting online/working = stay awake (prevent auto-sleep)
|
|
4098
4091
|
# Setting sleeping = allow auto-sleep again
|
|
4099
4092
|
if status in ("online", "working"):
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.34 → meshcode-2.11.36}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.34 → meshcode-2.11.36}/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.34 → meshcode-2.11.36}/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
|