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.
Files changed (200) hide show
  1. {meshcode-2.10.90 → meshcode-2.10.91}/PKG-INFO +1 -1
  2. meshcode-2.10.91/meshcode/__init__.py +82 -0
  3. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/server.py +33 -4
  4. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.10.90 → meshcode-2.10.91}/pyproject.toml +1 -1
  6. meshcode-2.10.90/meshcode/__init__.py +0 -82
  7. {meshcode-2.10.90 → meshcode-2.10.91}/README.md +0 -0
  8. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/ascii_art.py +0 -0
  9. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/cli.py +0 -0
  10. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/comms_v4.py +0 -0
  11. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/compat.py +0 -0
  12. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/error_hints.py +0 -0
  13. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/exceptions.py +0 -0
  14. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/invites.py +0 -0
  15. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/launcher.py +0 -0
  16. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/launcher_install.py +0 -0
  17. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/__init__.py +0 -0
  18. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/__main__.py +0 -0
  19. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/backend.py +0 -0
  20. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/realtime.py +0 -0
  21. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_backend.py +0 -0
  22. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  23. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  24. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/preferences.py +0 -0
  25. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/protocol_v2.py +0 -0
  26. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/quickstart.py +0 -0
  27. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/run_agent.py +0 -0
  28. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/secrets.py +0 -0
  29. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/self_update.py +0 -0
  30. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/setup_clients.py +0 -0
  31. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/supervisor.py +0 -0
  32. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode/upload.py +0 -0
  33. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/comms_v4.py +0 -0
  34. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/__init__.py +0 -0
  35. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
  36. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/cli.py +0 -0
  37. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
  38. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/compat.py +0 -0
  39. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
  40. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
  41. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/invites.py +0 -0
  42. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher.py +0 -0
  43. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
  44. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  45. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  46. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
  47. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  48. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
  49. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  50. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  51. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  52. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/preferences.py +0 -0
  53. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
  54. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
  55. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
  56. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/secrets.py +0 -0
  57. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/self_update.py +0 -0
  58. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
  59. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
  60. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/meshcode/upload.py +0 -0
  61. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/scripts/sentinel.py +0 -0
  62. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_core.py +0 -0
  63. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
  64. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
  65. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
  66. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
  67. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
  68. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
  69. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
  70. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
  71. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
  72. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
  73. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
  74. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
  75. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
  76. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
  77. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
  78. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
  79. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
  80. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
  81. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
  82. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
  83. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
  84. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
  85. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
  86. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
  87. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
  88. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
  89. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
  90. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
  91. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  92. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
  93. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
  94. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
  95. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
  96. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
  97. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
  98. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
  99. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
  100. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
  101. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/comms_v4.py +0 -0
  102. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/__init__.py +0 -0
  103. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
  104. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/cli.py +0 -0
  105. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
  106. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/compat.py +0 -0
  107. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
  108. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
  109. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/invites.py +0 -0
  110. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher.py +0 -0
  111. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
  112. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  113. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  114. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
  115. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  116. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
  117. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  118. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  119. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  120. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/preferences.py +0 -0
  121. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
  122. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
  123. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
  124. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/secrets.py +0 -0
  125. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/self_update.py +0 -0
  126. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
  127. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
  128. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/meshcode/upload.py +0 -0
  129. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/scripts/sentinel.py +0 -0
  130. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_core.py +0 -0
  131. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
  132. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
  133. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
  134. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
  135. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
  136. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
  137. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
  138. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
  139. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
  140. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
  141. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
  142. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/comms_v4.py +0 -0
  143. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
  144. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
  145. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/cli.py +0 -0
  146. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
  147. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/compat.py +0 -0
  148. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
  149. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
  150. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/invites.py +0 -0
  151. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
  152. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
  153. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  154. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  155. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
  156. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  157. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
  158. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  159. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  160. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  161. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
  162. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
  163. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
  164. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
  165. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
  166. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
  167. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
  168. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
  169. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/meshcode/upload.py +0 -0
  170. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
  171. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_core.py +0 -0
  172. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
  173. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
  174. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
  175. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
  176. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
  177. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
  178. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
  179. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
  180. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
  181. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
  182. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
  183. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/SOURCES.txt +0 -0
  184. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/dependency_links.txt +0 -0
  185. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/entry_points.txt +0 -0
  186. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/requires.txt +0 -0
  187. {meshcode-2.10.90 → meshcode-2.10.91}/meshcode.egg-info/top_level.txt +0 -0
  188. {meshcode-2.10.90 → meshcode-2.10.91}/setup.cfg +0 -0
  189. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_core.py +0 -0
  190. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_cross_agent_messaging.py +0 -0
  191. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_esc_deaf_state.py +0 -0
  192. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_exceptions.py +0 -0
  193. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_mark_read_batch.py +0 -0
  194. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_migration_integrity.py +0 -0
  195. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_realtime_event_freshness.py +0 -0
  196. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_rls_cross_tenant.py +0 -0
  197. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_rpc_migrations.py +0 -0
  198. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_security_regressions.py +0 -0
  199. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_sentinel.py +0 -0
  200. {meshcode-2.10.90 → meshcode-2.10.91}/tests/test_status_enum_coverage.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.10.90
3
+ Version: 2.10.91
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -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) -> Dict[str, Any]:
1846
- """Send message. Use "agent@meshwork" for cross-mesh. sensitive=True hides from exports. Pass encrypted=True for secrets/credentials (AES-256-GCM)."""
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, msg_type="msg",
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,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.10.90
3
+ Version: 2.10.91
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meshcode"
7
- version = "2.10.90"
7
+ version = "2.10.91"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -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