meshcode 2.11.38__tar.gz → 2.11.40__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.38 → meshcode-2.11.40}/PKG-INFO +1 -1
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/__init__.py +1 -1
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/server.py +75 -5
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.38 → meshcode-2.11.40}/pyproject.toml +1 -1
- {meshcode-2.11.38 → meshcode-2.11.40}/README.md +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/cli.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/compat.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/daemon.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/doctor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/invites.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/launcher.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/preferences.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/self_update.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/upload.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/setup.cfg +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_core.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_doctor.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -3349,6 +3349,36 @@ def _try_auto_claim_task() -> Optional[Dict[str, str]]:
|
|
|
3349
3349
|
_LAST_ROSTER_SNAPSHOT: Optional[List[Dict[str, Any]]] = None
|
|
3350
3350
|
_LAST_ROSTER_SNAPSHOT_TS: float = 0.0
|
|
3351
3351
|
|
|
3352
|
+
# AUTONOMOUS-MODE-1-RUNTIME (mig 354 backend slice already live): cache the
|
|
3353
|
+
# autonomous_mode flag so the wait loop modulation is cheap. Refresh every
|
|
3354
|
+
# 15s — short enough to react to dashboard toggle within ~1 wait cycle,
|
|
3355
|
+
# long enough to avoid hammering the RPC.
|
|
3356
|
+
_AUTONOMOUS_MODE_CACHE: Optional[bool] = None
|
|
3357
|
+
_AUTONOMOUS_MODE_CACHE_TS: float = 0.0
|
|
3358
|
+
|
|
3359
|
+
|
|
3360
|
+
def _get_autonomous_mode(max_age_s: float = 15.0) -> bool:
|
|
3361
|
+
global _AUTONOMOUS_MODE_CACHE, _AUTONOMOUS_MODE_CACHE_TS
|
|
3362
|
+
now_ts = _time.monotonic()
|
|
3363
|
+
if _AUTONOMOUS_MODE_CACHE is not None and (now_ts - _AUTONOMOUS_MODE_CACHE_TS) < max_age_s:
|
|
3364
|
+
return _AUTONOMOUS_MODE_CACHE
|
|
3365
|
+
try:
|
|
3366
|
+
api_key = _get_api_key()
|
|
3367
|
+
if not api_key:
|
|
3368
|
+
return False
|
|
3369
|
+
resp = be.sb_rpc("mc_agent_get_autonomous", {
|
|
3370
|
+
"p_api_key": api_key,
|
|
3371
|
+
"p_project_id": _PROJECT_ID,
|
|
3372
|
+
"p_agent_name": AGENT_NAME,
|
|
3373
|
+
})
|
|
3374
|
+
flag = bool(isinstance(resp, dict) and resp.get("ok") and resp.get("autonomous_mode"))
|
|
3375
|
+
_AUTONOMOUS_MODE_CACHE = flag
|
|
3376
|
+
_AUTONOMOUS_MODE_CACHE_TS = now_ts
|
|
3377
|
+
return flag
|
|
3378
|
+
except Exception as e:
|
|
3379
|
+
log.debug(f"[meshcode] autonomous_mode fetch failed: {e}")
|
|
3380
|
+
return False
|
|
3381
|
+
|
|
3352
3382
|
|
|
3353
3383
|
def _get_mesh_online_snapshot(max_age_s: float = 10.0) -> Optional[List[Dict[str, Any]]]:
|
|
3354
3384
|
global _LAST_ROSTER_SNAPSHOT, _LAST_ROSTER_SNAPSHOT_TS
|
|
@@ -3466,7 +3496,14 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3466
3496
|
|
|
3467
3497
|
_IN_WAIT = True
|
|
3468
3498
|
_set_state("waiting", "listening for messages")
|
|
3469
|
-
|
|
3499
|
+
# AUTONOMOUS-MODE-1-RUNTIME: when the agent is in autonomous mode,
|
|
3500
|
+
# tighten the wait timeout so the loop reacts to mesh activity faster
|
|
3501
|
+
# and reaches the proactive auto-claim path sooner.
|
|
3502
|
+
_autonomous = _get_autonomous_mode()
|
|
3503
|
+
if _autonomous:
|
|
3504
|
+
capped_timeout = min(max(1, int(timeout_seconds)), 5)
|
|
3505
|
+
else:
|
|
3506
|
+
capped_timeout = min(max(1, int(timeout_seconds)), 20)
|
|
3470
3507
|
try:
|
|
3471
3508
|
# ── INTERNAL LOOP ──────────────────────────────────────────
|
|
3472
3509
|
# Keep polling until something actionable arrives.
|
|
@@ -3498,10 +3535,12 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3498
3535
|
result["pending_tasks"] = pending_tasks
|
|
3499
3536
|
break # Return so agent can work tasks
|
|
3500
3537
|
|
|
3501
|
-
# Auto-claim: when idle >30s
|
|
3502
|
-
#
|
|
3503
|
-
#
|
|
3504
|
-
|
|
3538
|
+
# Auto-claim: when idle >30s (or >10s in autonomous mode)
|
|
3539
|
+
# with no assigned tasks, try to claim the oldest open
|
|
3540
|
+
# wildcard task. Autonomous agents react faster to make
|
|
3541
|
+
# the mesh feel proactive.
|
|
3542
|
+
_auto_claim_threshold = 10 if _autonomous else 30
|
|
3543
|
+
if _CONSECUTIVE_IDLE_SECONDS >= _auto_claim_threshold and not _is_leader_agent():
|
|
3505
3544
|
claimed = _try_auto_claim_task()
|
|
3506
3545
|
if claimed:
|
|
3507
3546
|
result["auto_claimed"] = claimed
|
|
@@ -3576,6 +3615,10 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
|
|
|
3576
3615
|
_snapshot = _get_mesh_online_snapshot()
|
|
3577
3616
|
if _snapshot is not None:
|
|
3578
3617
|
result["mesh_online_snapshot"] = _snapshot
|
|
3618
|
+
# AUTONOMOUS-MODE-1-RUNTIME: surface the flag so the LLM knows
|
|
3619
|
+
# whether to operate proactively.
|
|
3620
|
+
if isinstance(result, dict):
|
|
3621
|
+
result["autonomous_mode"] = _autonomous
|
|
3579
3622
|
return result
|
|
3580
3623
|
finally:
|
|
3581
3624
|
_IN_WAIT = False
|
|
@@ -4226,6 +4269,33 @@ def meshcode_task_complete(task_id: str, summary: str = "", force: bool = False)
|
|
|
4226
4269
|
return result
|
|
4227
4270
|
|
|
4228
4271
|
|
|
4272
|
+
@mcp.tool()
|
|
4273
|
+
@with_working_status
|
|
4274
|
+
def meshcode_task_start(task_id: str) -> Dict[str, Any]:
|
|
4275
|
+
"""Flip a claimed task to in_progress (mig 349 invariant: one in_progress per agent — any sibling in_progress for this agent is demoted to 'claimed' atomically)."""
|
|
4276
|
+
api_key = _get_api_key()
|
|
4277
|
+
return be.sb_rpc("mc_task_start", {
|
|
4278
|
+
"p_api_key": api_key,
|
|
4279
|
+
"p_project_id": _PROJECT_ID,
|
|
4280
|
+
"p_task_id": task_id,
|
|
4281
|
+
"p_starting_agent": AGENT_NAME,
|
|
4282
|
+
})
|
|
4283
|
+
|
|
4284
|
+
|
|
4285
|
+
@mcp.tool()
|
|
4286
|
+
@with_working_status
|
|
4287
|
+
def meshcode_task_set_review(task_id: str, summary: str = "") -> Dict[str, Any]:
|
|
4288
|
+
"""Worker-initiated transition to in_review (mig 351). Source state must be 'claimed' or 'in_progress'. Pairs with mc_task_approve / mc_task_reject for the review loop."""
|
|
4289
|
+
api_key = _get_api_key()
|
|
4290
|
+
return be.sb_rpc("mc_task_set_review", {
|
|
4291
|
+
"p_api_key": api_key,
|
|
4292
|
+
"p_project_id": _PROJECT_ID,
|
|
4293
|
+
"p_task_id": task_id,
|
|
4294
|
+
"p_review_agent": AGENT_NAME,
|
|
4295
|
+
"p_summary": summary,
|
|
4296
|
+
})
|
|
4297
|
+
|
|
4298
|
+
|
|
4229
4299
|
@mcp.tool()
|
|
4230
4300
|
@with_working_status
|
|
4231
4301
|
async def meshcode_finish_and_wait(
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.38 → meshcode-2.11.40}/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.38 → meshcode-2.11.40}/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
|