meshcode 2.11.19__tar.gz → 2.11.20__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.19 → meshcode-2.11.20}/PKG-INFO +1 -1
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/__init__.py +1 -1
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/server.py +65 -6
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/rpc_allowlist.py +4 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.19 → meshcode-2.11.20}/pyproject.toml +1 -1
- {meshcode-2.11.19 → meshcode-2.11.20}/README.md +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/cli.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/compat.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/daemon.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/doctor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/invites.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/launcher.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/preferences.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/self_update.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode/upload.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/setup.cfg +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_core.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_doctor.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.19 → meshcode-2.11.20}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -5334,6 +5334,8 @@ def meshcode_remember(
|
|
|
5334
5334
|
value: Any,
|
|
5335
5335
|
weight: int = 5,
|
|
5336
5336
|
emotion_tag: Optional[str] = None,
|
|
5337
|
+
scope: str = "agent",
|
|
5338
|
+
promote_from: Optional[str] = None,
|
|
5337
5339
|
) -> Dict[str, Any]:
|
|
5338
5340
|
"""Store a persistent memory (survives restarts). Only for reusable learnings, NOT task data.
|
|
5339
5341
|
|
|
@@ -5341,16 +5343,22 @@ def meshcode_remember(
|
|
|
5341
5343
|
key: Short key (e.g. "team_conventions").
|
|
5342
5344
|
value: Any JSON-serializable value.
|
|
5343
5345
|
weight: 1-10, default 5 (neutral). Higher = ranks higher on recall.
|
|
5344
|
-
|
|
5345
|
-
|
|
5346
|
-
|
|
5347
|
-
|
|
5346
|
+
emotion_tag: Optional free-form tag.
|
|
5347
|
+
scope: 'agent' (default, per-agent memory) OR 'mesh' (shared across
|
|
5348
|
+
the meshwork; visible to all agents). MESH-IMPROVE-2 (mig 339).
|
|
5349
|
+
On write conflict with an existing mesh value, server records the
|
|
5350
|
+
contradiction; resolve via meshcode_resolve_contradiction.
|
|
5351
|
+
promote_from: when scope='mesh', set this to an existing agent-scope
|
|
5352
|
+
memory key — server lifts that value to mesh-scope without
|
|
5353
|
+
duplicating the data. Caller's `value` arg is ignored when set.
|
|
5348
5354
|
"""
|
|
5349
5355
|
if not key or not key.strip():
|
|
5350
5356
|
return {"error": "key cannot be empty"}
|
|
5351
5357
|
key = key.strip()
|
|
5352
5358
|
if not isinstance(weight, int) or weight < 1 or weight > 10:
|
|
5353
5359
|
return {"error": "weight must be an integer 1..10"}
|
|
5360
|
+
if scope not in ("agent", "mesh"):
|
|
5361
|
+
return {"error": f"scope must be 'agent' or 'mesh', got {scope!r}"}
|
|
5354
5362
|
api_key = _get_api_key()
|
|
5355
5363
|
json_value = value if isinstance(value, (dict, list)) else json.dumps(value)
|
|
5356
5364
|
if isinstance(json_value, str):
|
|
@@ -5358,6 +5366,20 @@ def meshcode_remember(
|
|
|
5358
5366
|
json_value = json.loads(json_value)
|
|
5359
5367
|
except (json.JSONDecodeError, TypeError):
|
|
5360
5368
|
json_value = {"_raw": value}
|
|
5369
|
+
if scope == "mesh":
|
|
5370
|
+
# MESH-IMPROVE-2: mesh-scope write via mig 339 RPC. Surfaces
|
|
5371
|
+
# contradiction metadata in the response when an existing value
|
|
5372
|
+
# differs from the new one.
|
|
5373
|
+
return be.sb_rpc("mc_meshwork_remember", {
|
|
5374
|
+
"p_api_key": api_key,
|
|
5375
|
+
"p_project_id": _PROJECT_ID,
|
|
5376
|
+
"p_key": key,
|
|
5377
|
+
"p_value": json_value,
|
|
5378
|
+
"p_writer_agent": AGENT_NAME,
|
|
5379
|
+
"p_weight": weight,
|
|
5380
|
+
"p_emotion_tag": emotion_tag,
|
|
5381
|
+
"p_promote_from_agent_key": promote_from,
|
|
5382
|
+
})
|
|
5361
5383
|
result = be.sb_rpc("mc_memory_set", {
|
|
5362
5384
|
"p_api_key": api_key,
|
|
5363
5385
|
"p_agent_name": AGENT_NAME,
|
|
@@ -5368,15 +5390,52 @@ def meshcode_remember(
|
|
|
5368
5390
|
"p_weight": weight,
|
|
5369
5391
|
"p_emotion_tag": emotion_tag,
|
|
5370
5392
|
})
|
|
5371
|
-
# Best-effort sync to Obsidian vault (if configured)
|
|
5372
5393
|
if isinstance(result, dict) and result.get("ok"):
|
|
5373
5394
|
try:
|
|
5374
5395
|
_sync_to_obsidian(key, json_value)
|
|
5375
5396
|
except Exception:
|
|
5376
|
-
pass
|
|
5397
|
+
pass
|
|
5377
5398
|
return result
|
|
5378
5399
|
|
|
5379
5400
|
|
|
5401
|
+
@mcp.tool()
|
|
5402
|
+
@with_working_status
|
|
5403
|
+
def meshcode_recall_mesh(key: str) -> Dict[str, Any]:
|
|
5404
|
+
"""Read a mesh-scoped memory + any open contradictions on it.
|
|
5405
|
+
MESH-IMPROVE-2 (mig 339).
|
|
5406
|
+
"""
|
|
5407
|
+
if not key or not key.strip():
|
|
5408
|
+
return {"error": "key cannot be empty"}
|
|
5409
|
+
return be.sb_rpc("mc_meshwork_recall", {
|
|
5410
|
+
"p_api_key": _get_api_key(),
|
|
5411
|
+
"p_project_id": _PROJECT_ID,
|
|
5412
|
+
"p_key": key.strip(),
|
|
5413
|
+
})
|
|
5414
|
+
|
|
5415
|
+
|
|
5416
|
+
@mcp.tool()
|
|
5417
|
+
@with_working_status
|
|
5418
|
+
def meshcode_resolve_contradiction(key: str, winning_value: Any) -> Dict[str, Any]:
|
|
5419
|
+
"""Pick a winning value for a mesh-scoped memory with open contradictions.
|
|
5420
|
+
Marks every loser as superseded. MESH-IMPROVE-2 (mig 339).
|
|
5421
|
+
"""
|
|
5422
|
+
if not key or not key.strip():
|
|
5423
|
+
return {"error": "key cannot be empty"}
|
|
5424
|
+
json_value = winning_value if isinstance(winning_value, (dict, list)) else json.dumps(winning_value)
|
|
5425
|
+
if isinstance(json_value, str):
|
|
5426
|
+
try:
|
|
5427
|
+
json_value = json.loads(json_value)
|
|
5428
|
+
except (json.JSONDecodeError, TypeError):
|
|
5429
|
+
json_value = {"_raw": winning_value}
|
|
5430
|
+
return be.sb_rpc("mc_meshwork_resolve_contradiction", {
|
|
5431
|
+
"p_api_key": _get_api_key(),
|
|
5432
|
+
"p_project_id": _PROJECT_ID,
|
|
5433
|
+
"p_key": key.strip(),
|
|
5434
|
+
"p_winning_value": json_value,
|
|
5435
|
+
"p_resolver": AGENT_NAME,
|
|
5436
|
+
})
|
|
5437
|
+
|
|
5438
|
+
|
|
5380
5439
|
@mcp.tool()
|
|
5381
5440
|
@with_working_status
|
|
5382
5441
|
def meshcode_recall(key: Optional[str] = None) -> Dict[str, Any]:
|
|
@@ -67,6 +67,10 @@ AGENT_CALLABLE_RPCS = [
|
|
|
67
67
|
"mc_memory_list",
|
|
68
68
|
"mc_memory_search",
|
|
69
69
|
"mc_memory_contradictions",
|
|
70
|
+
# Mesh-scoped memory (mig 339)
|
|
71
|
+
"mc_meshwork_remember",
|
|
72
|
+
"mc_meshwork_recall",
|
|
73
|
+
"mc_meshwork_resolve_contradiction",
|
|
70
74
|
|
|
71
75
|
# ── Decisions / outcomes
|
|
72
76
|
"mc_has_open_decision",
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.19 → meshcode-2.11.20}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.11.19 → meshcode-2.11.20}/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.19 → meshcode-2.11.20}/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
|