meshcode 2.10.90__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.90 → meshcode-2.10.91}/PKG-INFO +1 -1
- meshcode-2.10.91/meshcode/__init__.py +82 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/server.py +33 -4
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.10.90 → meshcode-2.10.91}/pyproject.toml +1 -1
- meshcode-2.10.90/meshcode/__init__.py +0 -82
- {meshcode-2.10.90 → meshcode-2.10.91}/README.md +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/cli.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/compat.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/error_hints.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/invites.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/launcher.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/preferences.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/quickstart.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/run_agent.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/secrets.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/self_update.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/supervisor.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/upload.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_core.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_core.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/cli.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/compat.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/invites.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/upload.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_core.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/setup.cfg +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_core.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_exceptions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_security_regressions.py +0 -0
- {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_sentinel.py +0 -0
- {meshcode-2.10.90 → 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
|
+
]
|
|
@@ -1842,8 +1842,16 @@ async def meshcode_debug_sleep(seconds: int = 30) -> Dict[str, Any]:
|
|
|
1842
1842
|
@mcp.tool()
|
|
1843
1843
|
@with_working_status
|
|
1844
1844
|
def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
1845
|
-
sensitive: bool = False, encrypted: bool = False
|
|
1846
|
-
|
|
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
|
+
"""
|
|
1847
1855
|
if not to or not to.strip():
|
|
1848
1856
|
return {"error": "recipient 'to' cannot be empty"}
|
|
1849
1857
|
to = to.strip()
|
|
@@ -1872,6 +1880,26 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
|
1872
1880
|
if _payload_len > 2000:
|
|
1873
1881
|
return {"error": f"message too large ({_payload_len} chars). Use meshcode_task_create for long content. Messages must be structured JSON <2000 chars."}
|
|
1874
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
|
+
|
|
1875
1903
|
# Cross-mesh routing: if 'to' contains '@', parse as agent@meshwork
|
|
1876
1904
|
if "@" in to:
|
|
1877
1905
|
target_agent, target_meshwork = to.split("@", 1)
|
|
@@ -1904,13 +1932,14 @@ def meshcode_send(to: str, message: Any, in_reply_to: Optional[str] = None,
|
|
|
1904
1932
|
"p_to_project": target_meshwork,
|
|
1905
1933
|
"p_to_agent": target_agent,
|
|
1906
1934
|
"p_payload": payload,
|
|
1907
|
-
"p_type": "msg",
|
|
1935
|
+
"p_type": type or "msg",
|
|
1908
1936
|
})
|
|
1909
1937
|
if isinstance(result, dict) and result.get("ok") and encrypted:
|
|
1910
1938
|
result["encrypted"] = True
|
|
1911
1939
|
return result
|
|
1912
1940
|
|
|
1913
|
-
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",
|
|
1914
1943
|
parent_msg_id=in_reply_to, sensitive=sensitive,
|
|
1915
1944
|
api_key=_get_api_key(), encrypted=encrypted)
|
|
1916
1945
|
|
|
@@ -1,82 +0,0 @@
|
|
|
1
|
-
"""MeshCode — Real-time communication between AI agents."""
|
|
2
|
-
__version__ = "2.10.90"
|
|
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.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → 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.90 → 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.90 → 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.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_security_regressions.py
RENAMED
|
File without changes
|
|
File without changes
|
{meshcode-2.10.90 → 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.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → 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.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → 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.90 → 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.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py
RENAMED
|
File without changes
|
{meshcode-2.10.90 → 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.90 → 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
|