meshcode 2.11.44__tar.gz → 2.11.46__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 (237) hide show
  1. {meshcode-2.11.44 → meshcode-2.11.46}/PKG-INFO +1 -1
  2. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/server.py +137 -2
  4. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.11.44 → meshcode-2.11.46}/pyproject.toml +1 -1
  6. {meshcode-2.11.44 → meshcode-2.11.46}/README.md +0 -0
  7. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/__main__.py +0 -0
  8. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/_stop_hook_template.py +0 -0
  9. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/ascii_art.py +0 -0
  10. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/atomic_push.py +0 -0
  11. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/cli.py +0 -0
  12. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/comms_v4.py +0 -0
  13. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/compat.py +0 -0
  14. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/daemon.py +0 -0
  15. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/date_parse.py +0 -0
  16. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/doctor.py +0 -0
  17. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/error_hints.py +0 -0
  18. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/exceptions.py +0 -0
  19. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/invites.py +0 -0
  20. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/launcher.py +0 -0
  21. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/launcher_install.py +0 -0
  22. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/__init__.py +0 -0
  23. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/__main__.py +0 -0
  24. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/backend.py +0 -0
  25. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/realtime.py +0 -0
  26. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  27. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_backend.py +0 -0
  28. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  29. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  30. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  31. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  32. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  33. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/preferences.py +0 -0
  34. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/protocol_handler.py +0 -0
  35. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/protocol_v2.py +0 -0
  36. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/quickstart.py +0 -0
  37. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/rpc_allowlist.py +0 -0
  38. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/run_agent.py +0 -0
  39. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/scripts/check_secrets.py +0 -0
  40. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/scripts/race_rate_harness.py +0 -0
  41. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/secrets.py +0 -0
  42. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/self_update.py +0 -0
  43. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/setup_clients.py +0 -0
  44. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/supervisor.py +0 -0
  45. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode/upload.py +0 -0
  46. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/comms_v4.py +0 -0
  47. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/__init__.py +0 -0
  48. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
  49. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/cli.py +0 -0
  50. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
  51. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/compat.py +0 -0
  52. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
  53. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
  54. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/invites.py +0 -0
  55. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/launcher.py +0 -0
  56. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
  57. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  58. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  59. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
  60. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  61. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
  62. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  63. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  64. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  65. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/preferences.py +0 -0
  66. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
  67. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
  68. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
  69. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/secrets.py +0 -0
  70. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/self_update.py +0 -0
  71. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
  72. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
  73. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/meshcode/upload.py +0 -0
  74. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/scripts/sentinel.py +0 -0
  75. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_core.py +0 -0
  76. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
  77. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
  78. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
  79. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
  80. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
  81. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
  82. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
  83. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
  84. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
  85. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
  86. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
  87. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
  88. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
  89. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
  90. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
  91. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
  92. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
  93. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
  94. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
  95. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
  96. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
  97. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
  98. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
  99. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
  100. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
  101. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
  102. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
  103. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
  104. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  105. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
  106. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
  107. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
  108. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
  109. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
  110. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
  111. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
  112. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
  113. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
  114. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/comms_v4.py +0 -0
  115. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/__init__.py +0 -0
  116. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
  117. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/cli.py +0 -0
  118. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
  119. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/compat.py +0 -0
  120. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
  121. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
  122. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/invites.py +0 -0
  123. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/launcher.py +0 -0
  124. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
  125. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  126. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  127. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
  128. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  129. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
  130. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  131. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  132. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  133. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/preferences.py +0 -0
  134. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
  135. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
  136. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
  137. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/secrets.py +0 -0
  138. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/self_update.py +0 -0
  139. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
  140. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
  141. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/meshcode/upload.py +0 -0
  142. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/scripts/sentinel.py +0 -0
  143. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_core.py +0 -0
  144. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
  145. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
  146. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
  147. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
  148. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
  149. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
  150. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
  151. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
  152. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
  153. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
  154. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
  155. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/comms_v4.py +0 -0
  156. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
  157. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
  158. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/cli.py +0 -0
  159. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
  160. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/compat.py +0 -0
  161. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
  162. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
  163. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/invites.py +0 -0
  164. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
  165. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
  166. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  167. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  168. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
  169. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  170. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
  171. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  172. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  173. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  174. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
  175. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
  176. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
  177. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
  178. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
  179. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
  180. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
  181. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
  182. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/meshcode/upload.py +0 -0
  183. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
  184. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_core.py +0 -0
  185. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
  186. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
  187. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
  188. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
  189. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
  190. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
  191. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
  192. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
  193. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
  194. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
  195. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
  196. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/PKG-INFO 2 +0 -0
  197. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/SOURCES 2.txt +0 -0
  198. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/SOURCES.txt +0 -0
  199. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/dependency_links 2.txt +0 -0
  200. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/dependency_links.txt +0 -0
  201. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/entry_points 2.txt +0 -0
  202. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/entry_points.txt +0 -0
  203. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/requires 2.txt +0 -0
  204. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/requires.txt +0 -0
  205. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/top_level 2.txt +0 -0
  206. {meshcode-2.11.44 → meshcode-2.11.46}/meshcode.egg-info/top_level.txt +0 -0
  207. {meshcode-2.11.44 → meshcode-2.11.46}/setup.cfg +0 -0
  208. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_auto_update_hardening.py +0 -0
  209. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_boot_bug_regression.py +0 -0
  210. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_color_truecolor.py +0 -0
  211. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_core.py +0 -0
  212. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_cross_agent_messaging.py +0 -0
  213. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_date_parse.py +0 -0
  214. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_doctor.py +0 -0
  215. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_epistemic_v1_python_sdk.py +0 -0
  216. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  217. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_esc_deaf_state.py +0 -0
  218. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_exceptions.py +0 -0
  219. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_init_device_code.py +0 -0
  220. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_install_guard.py +0 -0
  221. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_lease_sigterm_release.py +0 -0
  222. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_mark_read_batch.py +0 -0
  223. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_migration_integrity.py +0 -0
  224. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_realtime_event_freshness.py +0 -0
  225. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_rls_cross_tenant.py +0 -0
  226. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_rpc_grants.py +0 -0
  227. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_rpc_migrations.py +0 -0
  228. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_run_agent_dry_run.py +0 -0
  229. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_run_agent_no_server_import.py +0 -0
  230. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_security_regressions.py +0 -0
  231. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_self_update_user_site.py +0 -0
  232. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_sentinel.py +0 -0
  233. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_setup_path.py +0 -0
  234. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_sleep_signals.py +0 -0
  235. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_status_enum_coverage.py +0 -0
  236. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_stay_on_loop_hook.py +0 -0
  237. {meshcode-2.11.44 → meshcode-2.11.46}/tests/test_wait_open_tasks_contradiction.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.44
3
+ Version: 2.11.46
4
4
  Summary: Real-time communication between AI agents — Supabase-backed CLI
5
5
  Author-email: MeshCode <hello@meshcode.io>
6
6
  License: MIT
@@ -1,5 +1,5 @@
1
1
  """MeshCode — Real-time communication between AI agents."""
2
- __version__ = "2.11.44"
2
+ __version__ = "2.11.46"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -3353,6 +3353,53 @@ def _get_pending_tasks_summary() -> Optional[List[Dict[str, str]]]:
3353
3353
  return None
3354
3354
 
3355
3355
 
3356
+ def _try_auto_claim_self_assigned_tasks(max_claims: int = 20) -> List[Dict[str, str]]:
3357
+ """URGENT_RUNTIME_FIX_TASK_PULL (Samuel directive 2026-05-26T04:20Z msg
3358
+ a15d7ed4 + commander msg 0cfca3f3 AUTOCLAIM_ON_RECONNECT): claim every
3359
+ OPEN task already ASSIGNED to me but not yet claimed by anyone. Closes
3360
+ the 'tasks sit forever when agent was offline at create time' gap.
3361
+
3362
+ Always-on (NOT gated on autonomous_mode per Samuel msg a15d7ed4 quote:
3363
+ "antes siempre que habia task assigned el agente sabia que tenia un
3364
+ task assigned pendiente y no paraba hasta completar todos").
3365
+
3366
+ Returns the list of claimed task summaries (may be empty).
3367
+ """
3368
+ claimed: List[Dict[str, str]] = []
3369
+ try:
3370
+ api_key = _get_api_key()
3371
+ if not api_key:
3372
+ return claimed
3373
+ result = be.task_list(api_key, _PROJECT_ID, AGENT_NAME, status_filter="open")
3374
+ if not isinstance(result, dict) or not result.get("ok"):
3375
+ return claimed
3376
+ tasks = result.get("tasks", [])
3377
+ candidates = [
3378
+ t for t in tasks
3379
+ if t.get("assignee") == AGENT_NAME
3380
+ and not t.get("claimed_by")
3381
+ and t.get("status") == "open"
3382
+ ]
3383
+ # Sort urgent → high → normal → low, oldest first within priority
3384
+ _PRIO = {"urgent": 0, "high": 1, "normal": 2, "low": 3}
3385
+ candidates.sort(key=lambda t: (_PRIO.get(t.get("priority", "normal"), 2), t.get("created_at", "")))
3386
+ for target in candidates[:max_claims]:
3387
+ claim_result = be.sb_rpc("mc_task_claim", {
3388
+ "p_api_key": api_key,
3389
+ "p_task_id": target["id"],
3390
+ })
3391
+ if isinstance(claim_result, dict) and claim_result.get("ok"):
3392
+ log.info(f"[meshcode] auto-claimed self-assigned task: {target['title'][:60]}")
3393
+ claimed.append({
3394
+ "id": target["id"][:8],
3395
+ "title": target["title"][:80],
3396
+ "priority": target.get("priority", "normal"),
3397
+ })
3398
+ except Exception as e:
3399
+ log.debug(f"[meshcode] auto-claim self-assigned failed: {e}")
3400
+ return claimed
3401
+
3402
+
3356
3403
  def _try_auto_claim_task() -> Optional[Dict[str, str]]:
3357
3404
  """Auto-claim the oldest open task matching this agent's role.
3358
3405
 
@@ -3494,6 +3541,17 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
3494
3541
  # The legacy refuse-on-open-tasks behavior is preserved behind an
3495
3542
  # opt-in env flag MESHCODE_WAIT_BLOCKS_ON_TASKS=1 in case any
3496
3543
  # workspace depends on it; default OFF to fix the contradiction.
3544
+ # URGENT_RUNTIME_FIX_TASK_PULL (Samuel msg a15d7ed4): proactive
3545
+ # self-assigned-task sweep at every wait entry. Any open task
3546
+ # assigned to me but not yet claimed gets auto-claimed before we
3547
+ # even check inbox — closes the "task sits because agent was
3548
+ # offline at create time" gap. Always-on, not gated on
3549
+ # autonomous_mode. Best-effort.
3550
+ try:
3551
+ _wait_entry_auto_claimed = _try_auto_claim_self_assigned_tasks()
3552
+ except Exception:
3553
+ _wait_entry_auto_claimed = []
3554
+
3497
3555
  pending_tasks = _get_pending_tasks_summary()
3498
3556
  if pending_tasks and os.environ.get("MESHCODE_WAIT_BLOCKS_ON_TASKS", "").lower() in ("1", "true", "yes"):
3499
3557
  if not _is_leader_agent():
@@ -3502,8 +3560,28 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
3502
3560
  "reason": "You have open tasks. Work them before entering wait. (legacy behavior, MESHCODE_WAIT_BLOCKS_ON_TASKS=1)",
3503
3561
  "pending_tasks": pending_tasks,
3504
3562
  "count": len(pending_tasks),
3563
+ "auto_claimed_at_wait_entry": _wait_entry_auto_claimed,
3505
3564
  }
3506
3565
 
3566
+ # URGENT_RUNTIME_FIX_TASK_PULL (Samuel msg a15d7ed4): if we have
3567
+ # ANY pending-self tasks (claimed or open-assigned-to-me), short-
3568
+ # circuit out of wait so the agent works them in priority order
3569
+ # without burning a 20s timeout cycle each round. Mirrors the
3570
+ # legacy "no paraba hasta completar todos" cadence. Non-leader
3571
+ # agents only — leaders need to stay in wait to triage wildcard
3572
+ # tasks for the mesh.
3573
+ if pending_tasks and not _is_leader_agent():
3574
+ out: Dict[str, Any] = {
3575
+ "pending_tasks": pending_tasks,
3576
+ "count": len(pending_tasks),
3577
+ "you_are_autonomous": _get_autonomous_mode(),
3578
+ "task_pull_active": True,
3579
+ "hint": "Work the highest-priority task with meshcode_task_start, then meshcode_task_complete. Wait will surface the next one automatically.",
3580
+ }
3581
+ if _wait_entry_auto_claimed:
3582
+ out["auto_claimed_at_wait_entry"] = _wait_entry_auto_claimed
3583
+ return out
3584
+
3507
3585
  # PRODUCT RULE 2: If agent has unread messages in DB, refuse to wait.
3508
3586
  try:
3509
3587
  db_pending = be.count_pending(_PROJECT_ID, AGENT_NAME, api_key=_get_api_key())
@@ -4160,6 +4238,18 @@ def meshcode_set_status(status: str, task: str = "") -> Dict[str, Any]:
4160
4238
  # "idle Ns" string from accumulating across status churn.
4161
4239
  if status == "online" and isinstance(resp, dict) and resp.get("ok"):
4162
4240
  _CONSECUTIVE_IDLE_SECONDS = 0
4241
+ # URGENT_RUNTIME_FIX_TASK_PULL (Samuel msg a15d7ed4 + commander
4242
+ # msg 0cfca3f3): autoclaim-on-reconnect. When the agent flips to
4243
+ # online/working, sweep any open-assigned-to-me tasks and claim
4244
+ # them so they don't sit indefinitely. Always-on (not gated on
4245
+ # autonomous_mode). Best-effort; never fails the set_status path.
4246
+ if status in ("online", "working") and isinstance(resp, dict) and resp.get("ok"):
4247
+ try:
4248
+ _claimed_on_reconnect = _try_auto_claim_self_assigned_tasks()
4249
+ if _claimed_on_reconnect:
4250
+ resp["auto_claimed_on_reconnect"] = _claimed_on_reconnect
4251
+ except Exception:
4252
+ pass
4163
4253
  return resp
4164
4254
 
4165
4255
 
@@ -4298,9 +4388,24 @@ def meshcode_tasks(status_filter: Optional[str] = None, verbose: bool = False) -
4298
4388
  @mcp.tool()
4299
4389
  @with_working_status
4300
4390
  def meshcode_task_claim(task_id: str) -> Dict[str, Any]:
4301
- """Claim an open task. Fails if already claimed by someone else."""
4391
+ """Claim an open task. Fails if already claimed by someone else.
4392
+
4393
+ On success, also flips mc_agents.status='working' with a short task
4394
+ label (URGENT_RUNTIME_FIX_TASK_PULL, msg a15d7ed4 STATUS_SURFACING)
4395
+ so observers + Samuel see "working on X" in real time.
4396
+ """
4302
4397
  api_key = _get_api_key()
4303
- return be.task_claim(api_key, _PROJECT_ID, task_id, AGENT_NAME)
4398
+ resp = be.task_claim(api_key, _PROJECT_ID, task_id, AGENT_NAME)
4399
+ if isinstance(resp, dict) and resp.get("ok"):
4400
+ try:
4401
+ _short_id = (resp.get("task_id") or task_id)[:8]
4402
+ _short_title = (resp.get("title") or "").strip()[:60] or "task"
4403
+ be.set_status(_PROJECT_ID, AGENT_NAME, "working",
4404
+ f"task {_short_id}: {_short_title}",
4405
+ api_key=api_key)
4406
+ except Exception:
4407
+ pass # status surfacing is best-effort
4408
+ return resp
4304
4409
 
4305
4410
 
4306
4411
  @mcp.tool()
@@ -4344,6 +4449,14 @@ def meshcode_task_complete(task_id: str, summary: str = "", force: bool = False)
4344
4449
  "risk=low|med|high). The team's backlog stays fed without the "
4345
4450
  "commander manually generating ideas."
4346
4451
  )
4452
+ # URGENT_RUNTIME_FIX_TASK_PULL (msg a15d7ed4 STATUS_SURFACING):
4453
+ # clear the task label + flip to online so the wait loop pulls
4454
+ # the next pending task on the next round without leaving the
4455
+ # roster showing "working on <stale task>".
4456
+ try:
4457
+ be.set_status(_PROJECT_ID, AGENT_NAME, "online", "", api_key=api_key)
4458
+ except Exception:
4459
+ pass
4347
4460
  return result
4348
4461
 
4349
4462
 
@@ -5403,6 +5516,28 @@ def meshcode_add_agent(name: str, role: str = "", autonomous: bool = False) -> D
5403
5516
  return result or {"error": "failed to add agent"}
5404
5517
 
5405
5518
 
5519
+ @mcp.tool()
5520
+ @with_working_status
5521
+ def meshcode_set_meshwork_autonomous_default(enabled: bool) -> Dict[str, Any]:
5522
+ """Set the autonomous_mode_default for the current meshwork.
5523
+
5524
+ Owner-only. Agents whose own mc_agents.autonomous_mode IS NULL fall
5525
+ through to this default. Setting True makes new agents autonomous by
5526
+ default; setting False reverts to the conservative ask-mode default.
5527
+
5528
+ AUTONOMOUS-MODE-UNIVERSAL Phase 2 (mig 359, task f248d98e). Writes an
5529
+ mc_traces audit row on every flip.
5530
+
5531
+ Args:
5532
+ enabled: True = autonomous default for the meshwork; False = ask-mode default.
5533
+ """
5534
+ return be.sb_rpc("mc_meshwork_set_autonomous_default", {
5535
+ "p_api_key": _get_api_key(),
5536
+ "p_project_id": _PROJECT_ID,
5537
+ "p_default": bool(enabled),
5538
+ })
5539
+
5540
+
5406
5541
  @mcp.tool()
5407
5542
  @with_working_status
5408
5543
  def meshcode_edit_agent(name: str, role: Optional[str] = None, launch_prompt: Optional[str] = None) -> Dict[str, Any]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.44
3
+ Version: 2.11.46
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.11.44"
7
+ version = "2.11.46"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
File without changes
File without changes
File without changes