meshcode 2.11.71__tar.gz → 2.11.72__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.71 → meshcode-2.11.72}/PKG-INFO +1 -1
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/__init__.py +1 -1
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/hostd.py +45 -4
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.71 → meshcode-2.11.72}/pyproject.toml +1 -1
- {meshcode-2.11.71 → meshcode-2.11.72}/README.md +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/claude_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/cli.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/compat.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/daemon.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/doctor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/invites.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/launcher.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/preferences.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/self_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/up.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode/upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/PKG-INFO 2 +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/SOURCES 2.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/dependency_links 2.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/entry_points 2.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/requires 2.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/top_level 2.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/setup.cfg +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_closegap_1.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_closegap_2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_closegap_3.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 10.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 11.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 12.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 13.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 14.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 15.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 16.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 17.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 18.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 19.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 2.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 20.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 21.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 3.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 4.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 5.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 6.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 7.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 8.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject 9.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_autonomous_prompt_inject.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_core.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_doctor.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_file_upload.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_marketplace_ratings.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.71 → meshcode-2.11.72}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -198,18 +198,59 @@ def _spawn_agent(project: str, agent: str, headless: bool = False) -> bool:
|
|
|
198
198
|
target = f"{project}/{agent}"
|
|
199
199
|
bin_ = _meshcode_bin()
|
|
200
200
|
if headless:
|
|
201
|
-
# background,
|
|
201
|
+
# background, NO terminal — UNIVERSAL macOS/Linux/Windows (task c1a6c6a8, mesh-dev specs).
|
|
202
|
+
# Clean env (a stale CLAUDECODE aborts `meshcode run`); keep crash logs in a per-agent logfile
|
|
203
|
+
# (NOT DEVNULL — we want to debug headless agents that die on boot).
|
|
202
204
|
env = {k: v for k, v in os.environ.items()
|
|
203
205
|
if k not in ("CLAUDECODE", "CLAUDE_CODE_SESSION")}
|
|
204
206
|
env["MESHCODE_NO_AUTO_UPDATE"] = "1"
|
|
207
|
+
log_dir = STATE_DIR / "logs"
|
|
205
208
|
try:
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
+
log_dir.mkdir(parents=True, exist_ok=True)
|
|
210
|
+
except Exception:
|
|
211
|
+
pass
|
|
212
|
+
safe = f"{project}__{agent}".replace("/", "_").replace("\\", "_")
|
|
213
|
+
log_path = log_dir / f"{safe}.headless.log"
|
|
214
|
+
logf = None
|
|
215
|
+
try:
|
|
216
|
+
logf = open(log_path, "ab")
|
|
217
|
+
except Exception:
|
|
218
|
+
logf = None
|
|
219
|
+
kwargs = {
|
|
220
|
+
"stdin": subprocess.DEVNULL,
|
|
221
|
+
"stdout": (logf if logf is not None else subprocess.DEVNULL),
|
|
222
|
+
"stderr": subprocess.STDOUT,
|
|
223
|
+
"env": env,
|
|
224
|
+
}
|
|
225
|
+
if sys.platform == "win32":
|
|
226
|
+
# CREATE_NO_WINDOW (0x08000000) | DETACHED_PROCESS (0x08): no console window, fully
|
|
227
|
+
# detached from this daemon. Use the console entry-point (meshcode.exe), NEVER pythonw
|
|
228
|
+
# (it swallows stderr). Ensure venv Scripts + System32 on PATH (Windows PATH cap ~32k).
|
|
229
|
+
kwargs["creationflags"] = 0x08000000 | 0x00000008
|
|
230
|
+
try:
|
|
231
|
+
scripts = str(Path(bin_).resolve().parent)
|
|
232
|
+
except Exception:
|
|
233
|
+
scripts = ""
|
|
234
|
+
sysroot = os.environ.get("SystemRoot", r"C:\Windows")
|
|
235
|
+
base_path = os.pathsep.join(p for p in (scripts, sysroot + r"\System32", sysroot) if p)
|
|
236
|
+
env["PATH"] = (base_path + os.pathsep + env.get("PATH", ""))[:30000]
|
|
237
|
+
else:
|
|
238
|
+
# POSIX: detach into its own session so it survives the daemon + has no controlling tty.
|
|
239
|
+
kwargs["start_new_session"] = True
|
|
240
|
+
try:
|
|
241
|
+
subprocess.Popen([bin_, "run", target], **kwargs)
|
|
242
|
+
_log(f"spawned {target} HEADLESS (no window, {sys.platform}; log={log_path})")
|
|
209
243
|
return True
|
|
210
244
|
except Exception as e:
|
|
211
245
|
_log(f"WARN: headless spawn {target} failed: {e}")
|
|
212
246
|
return False
|
|
247
|
+
finally:
|
|
248
|
+
# child inherited its own fd; safe to drop the daemon's handle.
|
|
249
|
+
if logf is not None:
|
|
250
|
+
try:
|
|
251
|
+
logf.close()
|
|
252
|
+
except Exception:
|
|
253
|
+
pass
|
|
213
254
|
# env hygiene (item1 RC): a stale CLAUDECODE aborts `meshcode run` (exit2).
|
|
214
255
|
# Prefix the shell command so the spawned terminal starts with a clean env.
|
|
215
256
|
cmd = (f"unset CLAUDECODE CLAUDE_CODE_SESSION; export MESHCODE_NO_AUTO_UPDATE=1; "
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.71 → meshcode-2.11.72}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.71 → meshcode-2.11.72}/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.71 → meshcode-2.11.72}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|