meshcode 2.10.89__tar.gz → 2.10.91__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.10.89 → meshcode-2.10.91}/PKG-INFO +1 -1
- meshcode-2.10.91/meshcode/__init__.py +82 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/server.py +89 -4
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.10.89 → meshcode-2.10.91}/pyproject.toml +1 -1
- meshcode-2.10.89/meshcode/__init__.py +0 -82
- {meshcode-2.10.89 → meshcode-2.10.91}/README.md +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/cli.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/compat.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/error_hints.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/invites.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/launcher.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/preferences.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/quickstart.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/run_agent.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/secrets.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/self_update.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/supervisor.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode/upload.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/setup.cfg +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_core.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_exceptions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_sentinel.py +0 -0
- {meshcode-2.10.89 → meshcode-2.10.91}/tests/test_status_enum_coverage.py +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""MeshCode — Real-time communication between AI agents."""
|
|
2
|
+
__version__ = "2.10.91"
|
|
3
|
+
|
|
4
|
+
# Exception hierarchy — eagerly imported (lightweight, no deps)
|
|
5
|
+
from meshcode.exceptions import ( # noqa: F401
|
|
6
|
+
MeshCodeError,
|
|
7
|
+
AuthError,
|
|
8
|
+
RPCError,
|
|
9
|
+
MeshCodeTimeoutError,
|
|
10
|
+
MeshCodeConnectionError,
|
|
11
|
+
)
|
|
12
|
+
|
|
13
|
+
# Public API — lazy imports to avoid heavy deps at import time
|
|
14
|
+
def __getattr__(name):
|
|
15
|
+
if name == "backend":
|
|
16
|
+
from meshcode.meshcode_mcp import backend
|
|
17
|
+
return backend
|
|
18
|
+
if name in _BACKEND_EXPORTS:
|
|
19
|
+
from meshcode.meshcode_mcp import backend
|
|
20
|
+
return getattr(backend, name)
|
|
21
|
+
if name in _SECRETS_EXPORTS:
|
|
22
|
+
from meshcode import secrets
|
|
23
|
+
return getattr(secrets, name)
|
|
24
|
+
raise AttributeError(f"module 'meshcode' has no attribute {name!r}")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
# Backend: core messaging & agent management
|
|
28
|
+
_BACKEND_EXPORTS = {
|
|
29
|
+
"send_message",
|
|
30
|
+
"read_inbox",
|
|
31
|
+
"count_pending",
|
|
32
|
+
"get_board",
|
|
33
|
+
"heartbeat",
|
|
34
|
+
"set_status",
|
|
35
|
+
"register_agent",
|
|
36
|
+
"get_project_id",
|
|
37
|
+
"sb_rpc",
|
|
38
|
+
"task_create",
|
|
39
|
+
"task_list",
|
|
40
|
+
"encrypt_payload",
|
|
41
|
+
"decrypt_payload",
|
|
42
|
+
}
|
|
43
|
+
|
|
44
|
+
# Secrets: credential management
|
|
45
|
+
_SECRETS_EXPORTS = {
|
|
46
|
+
"get_api_key",
|
|
47
|
+
"set_api_key",
|
|
48
|
+
"list_profiles",
|
|
49
|
+
}
|
|
50
|
+
|
|
51
|
+
__all__ = [
|
|
52
|
+
"__version__",
|
|
53
|
+
"backend",
|
|
54
|
+
# Exceptions
|
|
55
|
+
"MeshCodeError",
|
|
56
|
+
"AuthError",
|
|
57
|
+
"RPCError",
|
|
58
|
+
"MeshCodeTimeoutError",
|
|
59
|
+
"MeshCodeConnectionError",
|
|
60
|
+
# Messaging
|
|
61
|
+
"send_message",
|
|
62
|
+
"read_inbox",
|
|
63
|
+
"count_pending",
|
|
64
|
+
# Agent management
|
|
65
|
+
"register_agent",
|
|
66
|
+
"get_project_id",
|
|
67
|
+
"get_board",
|
|
68
|
+
"heartbeat",
|
|
69
|
+
"set_status",
|
|
70
|
+
# Tasks
|
|
71
|
+
"task_create",
|
|
72
|
+
"task_list",
|
|
73
|
+
# Low-level
|
|
74
|
+
"sb_rpc",
|
|
75
|
+
# Encryption
|
|
76
|
+
"encrypt_payload",
|
|
77
|
+
"decrypt_payload",
|
|
78
|
+
# Credentials
|
|
79
|
+
"get_api_key",
|
|
80
|
+
"set_api_key",
|
|
81
|
+
"list_profiles",
|
|
82
|
+
]
|
|
@@ -731,6 +731,19 @@ def with_working_status(func):
|
|
|
731
731
|
# Auto-log to activity feed (skip noisy read-only tools)
|
|
732
732
|
if not skip and name not in _ACTIVITY_LOG_SKIP:
|
|
733
733
|
_log_activity_bg("tool_call", f"{AGENT_NAME}: {name}")
|
|
734
|
+
# Persona hint injection (BE-S4.1.sdk): once per session.
|
|
735
|
+
global _PERSONA_INJECTED
|
|
736
|
+
if (not skip and not _PERSONA_INJECTED and _PERSONA
|
|
737
|
+
and isinstance(result, dict)):
|
|
738
|
+
_hint_fields = {
|
|
739
|
+
k: _PERSONA[k]
|
|
740
|
+
for k in ("tone", "language", "reply_max_tokens",
|
|
741
|
+
"emoji_policy", "decision_style")
|
|
742
|
+
if k in _PERSONA and _PERSONA[k] is not None
|
|
743
|
+
}
|
|
744
|
+
if _hint_fields:
|
|
745
|
+
result.setdefault("persona_hint", _hint_fields)
|
|
746
|
+
_PERSONA_INJECTED = True
|
|
734
747
|
return result
|
|
735
748
|
except asyncio.CancelledError:
|
|
736
749
|
log.debug(f"[meshcode] tool {name} cancelled by client (ESC)")
|
|
@@ -759,6 +772,22 @@ def with_working_status(func):
|
|
|
759
772
|
result = func(*args, **kwargs)
|
|
760
773
|
if not skip and name not in _ACTIVITY_LOG_SKIP:
|
|
761
774
|
_log_activity_bg("tool_call", f"{AGENT_NAME}: {name}")
|
|
775
|
+
# Persona hint injection (BE-S4.1.sdk): on the FIRST non-wait
|
|
776
|
+
# tool call after boot, attach a persona_hint envelope so the
|
|
777
|
+
# LLM stays in voice. Only once per session — agents are
|
|
778
|
+
# supposed to internalize tone after seeing it once.
|
|
779
|
+
global _PERSONA_INJECTED
|
|
780
|
+
if (not skip and not _PERSONA_INJECTED and _PERSONA
|
|
781
|
+
and isinstance(result, dict)):
|
|
782
|
+
_hint_fields = {
|
|
783
|
+
k: _PERSONA[k]
|
|
784
|
+
for k in ("tone", "language", "reply_max_tokens",
|
|
785
|
+
"emoji_policy", "decision_style")
|
|
786
|
+
if k in _PERSONA and _PERSONA[k] is not None
|
|
787
|
+
}
|
|
788
|
+
if _hint_fields:
|
|
789
|
+
result.setdefault("persona_hint", _hint_fields)
|
|
790
|
+
_PERSONA_INJECTED = True
|
|
762
791
|
return result
|
|
763
792
|
except Exception as e:
|
|
764
793
|
if not skip:
|
|
@@ -790,6 +819,11 @@ _BOOT_PPID = os.getppid()
|
|
|
790
819
|
_BOOT_CONTEXT_BUNDLE: Optional[Dict[str, Any]] = None
|
|
791
820
|
_BOOT_CONTEXT_AT: float = 0.0
|
|
792
821
|
_BOOT_CONTEXT_TTL_SECONDS: float = 30.0
|
|
822
|
+
# Per-agent persona JSONB (mig 232) cached at lifespan start. Drives tone /
|
|
823
|
+
# voice / reply length on first tool call after boot. TTL infinite within a
|
|
824
|
+
# session — persona changes are rare and need a relaunch to take effect.
|
|
825
|
+
_PERSONA: Optional[Dict[str, Any]] = None
|
|
826
|
+
_PERSONA_INJECTED: bool = False
|
|
793
827
|
|
|
794
828
|
def _acquire_lease() -> bool:
|
|
795
829
|
api_key = _get_api_key()
|
|
@@ -1640,6 +1674,28 @@ async def lifespan(_app):
|
|
|
1640
1674
|
log.warning(f"initial heartbeat attempt {_attempt+1} failed: {e}")
|
|
1641
1675
|
import time; time.sleep(2)
|
|
1642
1676
|
|
|
1677
|
+
# Per-agent persona (BE-S4.1.sdk / mig 232): tone/voice/policy that
|
|
1678
|
+
# shapes how the agent talks. Loaded once per session; soft-fail if the
|
|
1679
|
+
# RPC is unavailable on older projects.
|
|
1680
|
+
global _PERSONA
|
|
1681
|
+
try:
|
|
1682
|
+
_persona_resp = be.sb_rpc("mc_agent_persona", {
|
|
1683
|
+
"p_api_key": _get_api_key(),
|
|
1684
|
+
"p_project_id": _PROJECT_ID,
|
|
1685
|
+
"p_agent_name": AGENT_NAME,
|
|
1686
|
+
})
|
|
1687
|
+
if isinstance(_persona_resp, dict) and _persona_resp.get("ok"):
|
|
1688
|
+
_PERSONA = _persona_resp.get("persona") or {}
|
|
1689
|
+
log.info(
|
|
1690
|
+
f"[meshcode] persona loaded: tone={_PERSONA.get('tone','default')} "
|
|
1691
|
+
f"language={_PERSONA.get('language','en')} "
|
|
1692
|
+
f"reply_max_tokens={_PERSONA.get('reply_max_tokens','unset')}"
|
|
1693
|
+
)
|
|
1694
|
+
else:
|
|
1695
|
+
log.debug(f"persona load returned non-ok: {_persona_resp} — continuing without")
|
|
1696
|
+
except Exception as e:
|
|
1697
|
+
log.debug(f"persona RPC unavailable ({e}) — continuing without")
|
|
1698
|
+
|
|
1643
1699
|
# Boot-context bundle (S1-2.F2 / mig 217): single RPC returns last_seen
|
|
1644
1700
|
# + recent msgs + open tasks + relevant memories + peer state. Cached on
|
|
1645
1701
|
# the module global so the first ~30s of tool calls can short-circuit.
|
|
@@ -1786,8 +1842,16 @@ async def meshcode_debug_sleep(seconds: int = 30) -> Dict[str, Any]:
|
|
|
1786
1842
|
@mcp.tool()
|
|
1787
1843
|
@with_working_status
|
|
1788
1844
|
def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
1789
|
-
sensitive: bool = False, encrypted: bool = False
|
|
1790
|
-
|
|
1845
|
+
sensitive: bool = False, encrypted: bool = False,
|
|
1846
|
+
type: Optional[str] = None) -> Dict[str, Any]:
|
|
1847
|
+
"""Send message. Use "agent@meshwork" for cross-mesh. sensitive=True hides from exports. Pass encrypted=True for secrets/credentials (AES-256-GCM).
|
|
1848
|
+
|
|
1849
|
+
Optional `type` argument (mig 233 typed catalog): one of report, ask,
|
|
1850
|
+
proposal, status, blocker, decision, broadcast, ack, msg, dm, etc.
|
|
1851
|
+
When passed, the SDK soft-validates the payload against the schema
|
|
1852
|
+
in mc_message_schema(p_type) and logs a warning on mismatch — never
|
|
1853
|
+
refuses the send (per memory feedback_meshcode_wait_mark_read).
|
|
1854
|
+
"""
|
|
1791
1855
|
if not to or not to.strip():
|
|
1792
1856
|
return {"error": "recipient 'to' cannot be empty"}
|
|
1793
1857
|
to = to.strip()
|
|
@@ -1816,6 +1880,26 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
|
1816
1880
|
if _payload_len > 2000:
|
|
1817
1881
|
return {"error": f"message too large ({_payload_len} chars). Use meshcode_task_create for long content. Messages must be structured JSON <2000 chars."}
|
|
1818
1882
|
|
|
1883
|
+
# Typed-catalog soft validation (BE-S4.2.sdk / mig 233): if caller
|
|
1884
|
+
# passes type=, fetch the schema and check required fields. NEVER
|
|
1885
|
+
# refuses the send — best-effort warn-only. Skips when no type given,
|
|
1886
|
+
# when schema fetch fails, or when the type is unknown.
|
|
1887
|
+
if type:
|
|
1888
|
+
try:
|
|
1889
|
+
_schema_resp = be.sb_rpc("mc_message_schema", {"p_type": type})
|
|
1890
|
+
if isinstance(_schema_resp, dict) and _schema_resp.get("ok"):
|
|
1891
|
+
_schema = _schema_resp.get("schema") or {}
|
|
1892
|
+
_required = (_schema.get("required") or []) if isinstance(_schema, dict) else []
|
|
1893
|
+
_missing = [k for k in _required if k not in payload]
|
|
1894
|
+
if _missing:
|
|
1895
|
+
log.warning(
|
|
1896
|
+
f"meshcode_send type={type!r} payload missing required "
|
|
1897
|
+
f"fields {_missing} per mc_message_schema. Sending anyway "
|
|
1898
|
+
f"(soft validation)."
|
|
1899
|
+
)
|
|
1900
|
+
except Exception as _vex:
|
|
1901
|
+
log.debug(f"type-schema validation skipped: {_vex}")
|
|
1902
|
+
|
|
1819
1903
|
# Cross-mesh routing: if 'to' contains '@', parse as agent@meshwork
|
|
1820
1904
|
if "@" in to:
|
|
1821
1905
|
target_agent, target_meshwork = to.split("@", 1)
|
|
@@ -1848,13 +1932,14 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
|
1848
1932
|
"p_to_project": target_meshwork,
|
|
1849
1933
|
"p_to_agent": target_agent,
|
|
1850
1934
|
"p_payload": payload,
|
|
1851
|
-
"p_type": "msg",
|
|
1935
|
+
"p_type": type or "msg",
|
|
1852
1936
|
})
|
|
1853
1937
|
if isinstance(result, dict) and result.get("ok") and encrypted:
|
|
1854
1938
|
result["encrypted"] = True
|
|
1855
1939
|
return result
|
|
1856
1940
|
|
|
1857
|
-
return be.send_message(_PROJECT_ID, AGENT_NAME, to, payload,
|
|
1941
|
+
return be.send_message(_PROJECT_ID, AGENT_NAME, to, payload,
|
|
1942
|
+
msg_type=type or "msg",
|
|
1858
1943
|
parent_msg_id=in_reply_to, sensitive=sensitive,
|
|
1859
1944
|
api_key=_get_api_key(), encrypted=encrypted)
|
|
1860
1945
|
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"""MeshCode — Real-time communication between AI agents."""
|
|
2
|
-
__version__ = "2.10.89"
|
|
3
|
-
|
|
4
|
-
# Exception hierarchy — eagerly imported (lightweight, no deps)
|
|
5
|
-
from meshcode.exceptions import ( # noqa: F401
|
|
6
|
-
MeshCodeError,
|
|
7
|
-
AuthError,
|
|
8
|
-
RPCError,
|
|
9
|
-
MeshCodeTimeoutError,
|
|
10
|
-
MeshCodeConnectionError,
|
|
11
|
-
)
|
|
12
|
-
|
|
13
|
-
# Public API — lazy imports to avoid heavy deps at import time
|
|
14
|
-
def __getattr__(name):
|
|
15
|
-
if name == "backend":
|
|
16
|
-
from meshcode.meshcode_mcp import backend
|
|
17
|
-
return backend
|
|
18
|
-
if name in _BACKEND_EXPORTS:
|
|
19
|
-
from meshcode.meshcode_mcp import backend
|
|
20
|
-
return getattr(backend, name)
|
|
21
|
-
if name in _SECRETS_EXPORTS:
|
|
22
|
-
from meshcode import secrets
|
|
23
|
-
return getattr(secrets, name)
|
|
24
|
-
raise AttributeError(f"module 'meshcode' has no attribute {name!r}")
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Backend: core messaging & agent management
|
|
28
|
-
_BACKEND_EXPORTS = {
|
|
29
|
-
"send_message",
|
|
30
|
-
"read_inbox",
|
|
31
|
-
"count_pending",
|
|
32
|
-
"get_board",
|
|
33
|
-
"heartbeat",
|
|
34
|
-
"set_status",
|
|
35
|
-
"register_agent",
|
|
36
|
-
"get_project_id",
|
|
37
|
-
"sb_rpc",
|
|
38
|
-
"task_create",
|
|
39
|
-
"task_list",
|
|
40
|
-
"encrypt_payload",
|
|
41
|
-
"decrypt_payload",
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
# Secrets: credential management
|
|
45
|
-
_SECRETS_EXPORTS = {
|
|
46
|
-
"get_api_key",
|
|
47
|
-
"set_api_key",
|
|
48
|
-
"list_profiles",
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
__all__ = [
|
|
52
|
-
"__version__",
|
|
53
|
-
"backend",
|
|
54
|
-
# Exceptions
|
|
55
|
-
"MeshCodeError",
|
|
56
|
-
"AuthError",
|
|
57
|
-
"RPCError",
|
|
58
|
-
"MeshCodeTimeoutError",
|
|
59
|
-
"MeshCodeConnectionError",
|
|
60
|
-
# Messaging
|
|
61
|
-
"send_message",
|
|
62
|
-
"read_inbox",
|
|
63
|
-
"count_pending",
|
|
64
|
-
# Agent management
|
|
65
|
-
"register_agent",
|
|
66
|
-
"get_project_id",
|
|
67
|
-
"get_board",
|
|
68
|
-
"heartbeat",
|
|
69
|
-
"set_status",
|
|
70
|
-
# Tasks
|
|
71
|
-
"task_create",
|
|
72
|
-
"task_list",
|
|
73
|
-
# Low-level
|
|
74
|
-
"sb_rpc",
|
|
75
|
-
# Encryption
|
|
76
|
-
"encrypt_payload",
|
|
77
|
-
"decrypt_payload",
|
|
78
|
-
# Credentials
|
|
79
|
-
"get_api_key",
|
|
80
|
-
"set_api_key",
|
|
81
|
-
"list_profiles",
|
|
82
|
-
]
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.10.89 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_realtime_event_freshness.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.89 → meshcode-2.10.91}/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.10.89 → meshcode-2.10.91}/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
|