meshcode 2.11.38__tar.gz → 2.11.40__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 (231) hide show
  1. {meshcode-2.11.38 → meshcode-2.11.40}/PKG-INFO +1 -1
  2. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/server.py +75 -5
  4. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.11.38 → meshcode-2.11.40}/pyproject.toml +1 -1
  6. {meshcode-2.11.38 → meshcode-2.11.40}/README.md +0 -0
  7. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/__main__.py +0 -0
  8. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/_stop_hook_template.py +0 -0
  9. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/ascii_art.py +0 -0
  10. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/atomic_push.py +0 -0
  11. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/cli.py +0 -0
  12. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/comms_v4.py +0 -0
  13. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/compat.py +0 -0
  14. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/daemon.py +0 -0
  15. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/date_parse.py +0 -0
  16. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/doctor.py +0 -0
  17. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/error_hints.py +0 -0
  18. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/exceptions.py +0 -0
  19. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/invites.py +0 -0
  20. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/launcher.py +0 -0
  21. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/launcher_install.py +0 -0
  22. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/__init__.py +0 -0
  23. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/__main__.py +0 -0
  24. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/backend.py +0 -0
  25. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/realtime.py +0 -0
  26. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  27. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_backend.py +0 -0
  28. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  29. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  30. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  31. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  32. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  33. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/preferences.py +0 -0
  34. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/protocol_handler.py +0 -0
  35. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/protocol_v2.py +0 -0
  36. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/quickstart.py +0 -0
  37. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/rpc_allowlist.py +0 -0
  38. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/run_agent.py +0 -0
  39. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/scripts/check_secrets.py +0 -0
  40. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/scripts/race_rate_harness.py +0 -0
  41. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/secrets.py +0 -0
  42. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/self_update.py +0 -0
  43. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/setup_clients.py +0 -0
  44. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/supervisor.py +0 -0
  45. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode/upload.py +0 -0
  46. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/comms_v4.py +0 -0
  47. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/__init__.py +0 -0
  48. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
  49. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/cli.py +0 -0
  50. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
  51. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/compat.py +0 -0
  52. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
  53. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
  54. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/invites.py +0 -0
  55. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/launcher.py +0 -0
  56. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
  57. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  58. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  59. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
  60. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  61. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
  62. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  63. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  64. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  65. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/preferences.py +0 -0
  66. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
  67. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
  68. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
  69. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/secrets.py +0 -0
  70. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/self_update.py +0 -0
  71. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
  72. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
  73. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/meshcode/upload.py +0 -0
  74. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/scripts/sentinel.py +0 -0
  75. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_core.py +0 -0
  76. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
  77. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
  78. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
  79. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
  80. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
  81. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
  82. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
  83. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
  84. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
  85. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
  86. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
  87. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
  88. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
  89. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
  90. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
  91. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
  92. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
  93. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
  94. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
  95. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
  96. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
  97. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
  98. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
  99. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
  100. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
  101. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
  102. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
  103. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
  104. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  105. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
  106. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
  107. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
  108. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
  109. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
  110. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
  111. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
  112. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
  113. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
  114. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/comms_v4.py +0 -0
  115. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/__init__.py +0 -0
  116. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
  117. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/cli.py +0 -0
  118. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
  119. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/compat.py +0 -0
  120. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
  121. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
  122. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/invites.py +0 -0
  123. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/launcher.py +0 -0
  124. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
  125. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  126. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  127. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
  128. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  129. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
  130. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  131. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  132. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  133. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/preferences.py +0 -0
  134. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
  135. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
  136. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
  137. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/secrets.py +0 -0
  138. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/self_update.py +0 -0
  139. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
  140. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
  141. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/meshcode/upload.py +0 -0
  142. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/scripts/sentinel.py +0 -0
  143. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_core.py +0 -0
  144. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
  145. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
  146. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
  147. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
  148. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
  149. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
  150. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
  151. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
  152. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
  153. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
  154. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
  155. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/comms_v4.py +0 -0
  156. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
  157. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
  158. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/cli.py +0 -0
  159. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
  160. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/compat.py +0 -0
  161. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
  162. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
  163. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/invites.py +0 -0
  164. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
  165. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
  166. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  167. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  168. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
  169. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  170. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
  171. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  172. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  173. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  174. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
  175. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
  176. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
  177. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
  178. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
  179. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
  180. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
  181. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
  182. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/meshcode/upload.py +0 -0
  183. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
  184. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_core.py +0 -0
  185. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
  186. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
  187. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
  188. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
  189. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
  190. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
  191. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
  192. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
  193. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
  194. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
  195. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
  196. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/SOURCES.txt +0 -0
  197. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/dependency_links.txt +0 -0
  198. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/entry_points.txt +0 -0
  199. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/requires.txt +0 -0
  200. {meshcode-2.11.38 → meshcode-2.11.40}/meshcode.egg-info/top_level.txt +0 -0
  201. {meshcode-2.11.38 → meshcode-2.11.40}/setup.cfg +0 -0
  202. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_auto_update_hardening.py +0 -0
  203. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_boot_bug_regression.py +0 -0
  204. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_color_truecolor.py +0 -0
  205. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_core.py +0 -0
  206. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_cross_agent_messaging.py +0 -0
  207. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_date_parse.py +0 -0
  208. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_doctor.py +0 -0
  209. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_epistemic_v1_python_sdk.py +0 -0
  210. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  211. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_esc_deaf_state.py +0 -0
  212. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_exceptions.py +0 -0
  213. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_init_device_code.py +0 -0
  214. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_install_guard.py +0 -0
  215. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_lease_sigterm_release.py +0 -0
  216. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_mark_read_batch.py +0 -0
  217. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_migration_integrity.py +0 -0
  218. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_realtime_event_freshness.py +0 -0
  219. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rls_cross_tenant.py +0 -0
  220. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rpc_grants.py +0 -0
  221. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_rpc_migrations.py +0 -0
  222. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_run_agent_dry_run.py +0 -0
  223. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_run_agent_no_server_import.py +0 -0
  224. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_security_regressions.py +0 -0
  225. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_self_update_user_site.py +0 -0
  226. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_sentinel.py +0 -0
  227. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_setup_path.py +0 -0
  228. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_sleep_signals.py +0 -0
  229. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_status_enum_coverage.py +0 -0
  230. {meshcode-2.11.38 → meshcode-2.11.40}/tests/test_stay_on_loop_hook.py +0 -0
  231. {meshcode-2.11.38 → meshcode-2.11.40}/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.38
3
+ Version: 2.11.40
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.38"
2
+ __version__ = "2.11.40"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -3349,6 +3349,36 @@ def _try_auto_claim_task() -> Optional[Dict[str, str]]:
3349
3349
  _LAST_ROSTER_SNAPSHOT: Optional[List[Dict[str, Any]]] = None
3350
3350
  _LAST_ROSTER_SNAPSHOT_TS: float = 0.0
3351
3351
 
3352
+ # AUTONOMOUS-MODE-1-RUNTIME (mig 354 backend slice already live): cache the
3353
+ # autonomous_mode flag so the wait loop modulation is cheap. Refresh every
3354
+ # 15s — short enough to react to dashboard toggle within ~1 wait cycle,
3355
+ # long enough to avoid hammering the RPC.
3356
+ _AUTONOMOUS_MODE_CACHE: Optional[bool] = None
3357
+ _AUTONOMOUS_MODE_CACHE_TS: float = 0.0
3358
+
3359
+
3360
+ def _get_autonomous_mode(max_age_s: float = 15.0) -> bool:
3361
+ global _AUTONOMOUS_MODE_CACHE, _AUTONOMOUS_MODE_CACHE_TS
3362
+ now_ts = _time.monotonic()
3363
+ if _AUTONOMOUS_MODE_CACHE is not None and (now_ts - _AUTONOMOUS_MODE_CACHE_TS) < max_age_s:
3364
+ return _AUTONOMOUS_MODE_CACHE
3365
+ try:
3366
+ api_key = _get_api_key()
3367
+ if not api_key:
3368
+ return False
3369
+ resp = be.sb_rpc("mc_agent_get_autonomous", {
3370
+ "p_api_key": api_key,
3371
+ "p_project_id": _PROJECT_ID,
3372
+ "p_agent_name": AGENT_NAME,
3373
+ })
3374
+ flag = bool(isinstance(resp, dict) and resp.get("ok") and resp.get("autonomous_mode"))
3375
+ _AUTONOMOUS_MODE_CACHE = flag
3376
+ _AUTONOMOUS_MODE_CACHE_TS = now_ts
3377
+ return flag
3378
+ except Exception as e:
3379
+ log.debug(f"[meshcode] autonomous_mode fetch failed: {e}")
3380
+ return False
3381
+
3352
3382
 
3353
3383
  def _get_mesh_online_snapshot(max_age_s: float = 10.0) -> Optional[List[Dict[str, Any]]]:
3354
3384
  global _LAST_ROSTER_SNAPSHOT, _LAST_ROSTER_SNAPSHOT_TS
@@ -3466,7 +3496,14 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
3466
3496
 
3467
3497
  _IN_WAIT = True
3468
3498
  _set_state("waiting", "listening for messages")
3469
- capped_timeout = min(max(1, int(timeout_seconds)), 20)
3499
+ # AUTONOMOUS-MODE-1-RUNTIME: when the agent is in autonomous mode,
3500
+ # tighten the wait timeout so the loop reacts to mesh activity faster
3501
+ # and reaches the proactive auto-claim path sooner.
3502
+ _autonomous = _get_autonomous_mode()
3503
+ if _autonomous:
3504
+ capped_timeout = min(max(1, int(timeout_seconds)), 5)
3505
+ else:
3506
+ capped_timeout = min(max(1, int(timeout_seconds)), 20)
3470
3507
  try:
3471
3508
  # ── INTERNAL LOOP ──────────────────────────────────────────
3472
3509
  # Keep polling until something actionable arrives.
@@ -3498,10 +3535,12 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
3498
3535
  result["pending_tasks"] = pending_tasks
3499
3536
  break # Return so agent can work tasks
3500
3537
 
3501
- # Auto-claim: when idle >30s with no assigned tasks, try to
3502
- # claim the oldest open wildcard task. This makes agents
3503
- # self-directing instead of waiting passively for assignment.
3504
- if _CONSECUTIVE_IDLE_SECONDS >= 30 and not _is_leader_agent():
3538
+ # Auto-claim: when idle >30s (or >10s in autonomous mode)
3539
+ # with no assigned tasks, try to claim the oldest open
3540
+ # wildcard task. Autonomous agents react faster to make
3541
+ # the mesh feel proactive.
3542
+ _auto_claim_threshold = 10 if _autonomous else 30
3543
+ if _CONSECUTIVE_IDLE_SECONDS >= _auto_claim_threshold and not _is_leader_agent():
3505
3544
  claimed = _try_auto_claim_task()
3506
3545
  if claimed:
3507
3546
  result["auto_claimed"] = claimed
@@ -3576,6 +3615,10 @@ async def meshcode_wait(timeout_seconds: int = 20, include_acks: bool = False) -
3576
3615
  _snapshot = _get_mesh_online_snapshot()
3577
3616
  if _snapshot is not None:
3578
3617
  result["mesh_online_snapshot"] = _snapshot
3618
+ # AUTONOMOUS-MODE-1-RUNTIME: surface the flag so the LLM knows
3619
+ # whether to operate proactively.
3620
+ if isinstance(result, dict):
3621
+ result["autonomous_mode"] = _autonomous
3579
3622
  return result
3580
3623
  finally:
3581
3624
  _IN_WAIT = False
@@ -4226,6 +4269,33 @@ def meshcode_task_complete(task_id: str, summary: str = "", force: bool = False)
4226
4269
  return result
4227
4270
 
4228
4271
 
4272
+ @mcp.tool()
4273
+ @with_working_status
4274
+ def meshcode_task_start(task_id: str) -> Dict[str, Any]:
4275
+ """Flip a claimed task to in_progress (mig 349 invariant: one in_progress per agent — any sibling in_progress for this agent is demoted to 'claimed' atomically)."""
4276
+ api_key = _get_api_key()
4277
+ return be.sb_rpc("mc_task_start", {
4278
+ "p_api_key": api_key,
4279
+ "p_project_id": _PROJECT_ID,
4280
+ "p_task_id": task_id,
4281
+ "p_starting_agent": AGENT_NAME,
4282
+ })
4283
+
4284
+
4285
+ @mcp.tool()
4286
+ @with_working_status
4287
+ def meshcode_task_set_review(task_id: str, summary: str = "") -> Dict[str, Any]:
4288
+ """Worker-initiated transition to in_review (mig 351). Source state must be 'claimed' or 'in_progress'. Pairs with mc_task_approve / mc_task_reject for the review loop."""
4289
+ api_key = _get_api_key()
4290
+ return be.sb_rpc("mc_task_set_review", {
4291
+ "p_api_key": api_key,
4292
+ "p_project_id": _PROJECT_ID,
4293
+ "p_task_id": task_id,
4294
+ "p_review_agent": AGENT_NAME,
4295
+ "p_summary": summary,
4296
+ })
4297
+
4298
+
4229
4299
  @mcp.tool()
4230
4300
  @with_working_status
4231
4301
  async def meshcode_finish_and_wait(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.38
3
+ Version: 2.11.40
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.38"
7
+ version = "2.11.40"
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