meshcode 2.11.43__tar.gz → 2.11.45__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.43 → meshcode-2.11.45}/PKG-INFO +1 -1
  2. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/comms_v4.py +51 -2
  4. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/server.py +22 -0
  5. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/setup_clients.py +37 -0
  6. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/PKG-INFO +1 -1
  7. {meshcode-2.11.43 → meshcode-2.11.45}/pyproject.toml +1 -1
  8. {meshcode-2.11.43 → meshcode-2.11.45}/README.md +0 -0
  9. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/__main__.py +0 -0
  10. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/_stop_hook_template.py +0 -0
  11. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/ascii_art.py +0 -0
  12. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/atomic_push.py +0 -0
  13. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/cli.py +0 -0
  14. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/compat.py +0 -0
  15. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/daemon.py +0 -0
  16. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/date_parse.py +0 -0
  17. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/doctor.py +0 -0
  18. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/error_hints.py +0 -0
  19. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/exceptions.py +0 -0
  20. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/invites.py +0 -0
  21. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/launcher.py +0 -0
  22. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/launcher_install.py +0 -0
  23. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/__init__.py +0 -0
  24. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/__main__.py +0 -0
  25. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/backend.py +0 -0
  26. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/realtime.py +0 -0
  27. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  28. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_backend.py +0 -0
  29. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  30. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  31. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  32. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  33. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  34. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/preferences.py +0 -0
  35. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/protocol_handler.py +0 -0
  36. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/protocol_v2.py +0 -0
  37. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/quickstart.py +0 -0
  38. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/rpc_allowlist.py +0 -0
  39. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/run_agent.py +0 -0
  40. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/scripts/check_secrets.py +0 -0
  41. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/scripts/race_rate_harness.py +0 -0
  42. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/secrets.py +0 -0
  43. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/self_update.py +0 -0
  44. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/supervisor.py +0 -0
  45. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode/upload.py +0 -0
  46. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/comms_v4.py +0 -0
  47. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/__init__.py +0 -0
  48. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
  49. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/cli.py +0 -0
  50. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/comms_v4.py +0 -0
  51. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/compat.py +0 -0
  52. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/error_hints.py +0 -0
  53. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/exceptions.py +0 -0
  54. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/invites.py +0 -0
  55. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/launcher.py +0 -0
  56. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/launcher_install.py +0 -0
  57. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  58. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  59. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -0
  60. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  61. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
  62. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  63. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  64. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  65. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/preferences.py +0 -0
  66. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/protocol_v2.py +0 -0
  67. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/quickstart.py +0 -0
  68. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/run_agent.py +0 -0
  69. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/secrets.py +0 -0
  70. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/self_update.py +0 -0
  71. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
  72. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/supervisor.py +0 -0
  73. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/meshcode/upload.py +0 -0
  74. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/scripts/sentinel.py +0 -0
  75. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_core.py +0 -0
  76. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_cross_agent_messaging.py +0 -0
  77. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_esc_deaf_state.py +0 -0
  78. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_exceptions.py +0 -0
  79. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_mark_read_batch.py +0 -0
  80. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_migration_integrity.py +0 -0
  81. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_realtime_event_freshness.py +0 -0
  82. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_rls_cross_tenant.py +0 -0
  83. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -0
  84. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_security_regressions.py +0 -0
  85. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_sentinel.py +0 -0
  86. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-backend-wt/tests/test_status_enum_coverage.py +0 -0
  87. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -0
  88. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -0
  89. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -0
  90. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
  91. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -0
  92. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -0
  93. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -0
  94. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -0
  95. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -0
  96. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -0
  97. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -0
  98. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -0
  99. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
  100. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
  101. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
  102. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -0
  103. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -0
  104. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  105. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -0
  106. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -0
  107. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -0
  108. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
  109. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -0
  110. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -0
  111. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
  112. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -0
  113. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -0
  114. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/comms_v4.py +0 -0
  115. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/__init__.py +0 -0
  116. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
  117. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/cli.py +0 -0
  118. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
  119. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/compat.py +0 -0
  120. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/error_hints.py +0 -0
  121. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/exceptions.py +0 -0
  122. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/invites.py +0 -0
  123. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/launcher.py +0 -0
  124. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/launcher_install.py +0 -0
  125. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  126. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  127. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
  128. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  129. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
  130. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  131. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  132. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  133. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/preferences.py +0 -0
  134. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/protocol_v2.py +0 -0
  135. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/quickstart.py +0 -0
  136. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/run_agent.py +0 -0
  137. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/secrets.py +0 -0
  138. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/self_update.py +0 -0
  139. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/setup_clients.py +0 -0
  140. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/supervisor.py +0 -0
  141. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/meshcode/upload.py +0 -0
  142. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/scripts/sentinel.py +0 -0
  143. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_core.py +0 -0
  144. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -0
  145. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -0
  146. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_exceptions.py +0 -0
  147. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -0
  148. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_migration_integrity.py +0 -0
  149. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -0
  150. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -0
  151. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -0
  152. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_security_regressions.py +0 -0
  153. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_sentinel.py +0 -0
  154. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -0
  155. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/comms_v4.py +0 -0
  156. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/__init__.py +0 -0
  157. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
  158. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/cli.py +0 -0
  159. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
  160. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/compat.py +0 -0
  161. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/error_hints.py +0 -0
  162. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/exceptions.py +0 -0
  163. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/invites.py +0 -0
  164. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/launcher.py +0 -0
  165. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/launcher_install.py +0 -0
  166. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -0
  167. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -0
  168. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -0
  169. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  170. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
  171. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -0
  172. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -0
  173. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  174. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/preferences.py +0 -0
  175. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -0
  176. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/quickstart.py +0 -0
  177. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
  178. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/secrets.py +0 -0
  179. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/self_update.py +0 -0
  180. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/setup_clients.py +0 -0
  181. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/supervisor.py +0 -0
  182. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/meshcode/upload.py +0 -0
  183. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/scripts/sentinel.py +0 -0
  184. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_core.py +0 -0
  185. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -0
  186. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -0
  187. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_exceptions.py +0 -0
  188. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -0
  189. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -0
  190. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -0
  191. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -0
  192. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -0
  193. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_security_regressions.py +0 -0
  194. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_sentinel.py +0 -0
  195. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -0
  196. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/PKG-INFO 2 +0 -0
  197. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/SOURCES 2.txt +0 -0
  198. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/SOURCES.txt +0 -0
  199. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/dependency_links 2.txt +0 -0
  200. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/dependency_links.txt +0 -0
  201. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/entry_points 2.txt +0 -0
  202. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/entry_points.txt +0 -0
  203. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/requires 2.txt +0 -0
  204. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/requires.txt +0 -0
  205. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/top_level 2.txt +0 -0
  206. {meshcode-2.11.43 → meshcode-2.11.45}/meshcode.egg-info/top_level.txt +0 -0
  207. {meshcode-2.11.43 → meshcode-2.11.45}/setup.cfg +0 -0
  208. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_auto_update_hardening.py +0 -0
  209. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_boot_bug_regression.py +0 -0
  210. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_color_truecolor.py +0 -0
  211. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_core.py +0 -0
  212. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_cross_agent_messaging.py +0 -0
  213. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_date_parse.py +0 -0
  214. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_doctor.py +0 -0
  215. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_epistemic_v1_python_sdk.py +0 -0
  216. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  217. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_esc_deaf_state.py +0 -0
  218. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_exceptions.py +0 -0
  219. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_init_device_code.py +0 -0
  220. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_install_guard.py +0 -0
  221. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_lease_sigterm_release.py +0 -0
  222. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_mark_read_batch.py +0 -0
  223. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_migration_integrity.py +0 -0
  224. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_realtime_event_freshness.py +0 -0
  225. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_rls_cross_tenant.py +0 -0
  226. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_rpc_grants.py +0 -0
  227. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_rpc_migrations.py +0 -0
  228. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_run_agent_dry_run.py +0 -0
  229. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_run_agent_no_server_import.py +0 -0
  230. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_security_regressions.py +0 -0
  231. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_self_update_user_site.py +0 -0
  232. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_sentinel.py +0 -0
  233. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_setup_path.py +0 -0
  234. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_sleep_signals.py +0 -0
  235. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_status_enum_coverage.py +0 -0
  236. {meshcode-2.11.43 → meshcode-2.11.45}/tests/test_stay_on_loop_hook.py +0 -0
  237. {meshcode-2.11.43 → meshcode-2.11.45}/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.43
3
+ Version: 2.11.45
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.43"
2
+ __version__ = "2.11.45"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -1602,13 +1602,23 @@ def show_status(project=None):
1602
1602
  continue
1603
1603
 
1604
1604
  print(f"\n [{proj['name']}]")
1605
+ _autonomous_count = 0
1605
1606
  for a in agents:
1606
1607
  # Count pending
1607
1608
  pending = sb_select("mc_messages",
1608
1609
  f"project_id=eq.{proj['id']}&to_agent=eq.{quote(a['name'])}&read=eq.false&type=neq.ack")
1609
1610
  pcount = len(pending)
1610
1611
  icon = "●" if pcount > 0 else "○"
1611
- print(f" {icon} {a['name']:<14} {a.get('role',''):<25} pending: {pcount}")
1612
+ _auto_marker = " 🔆" if a.get("autonomous_mode") else ""
1613
+ if a.get("autonomous_mode"):
1614
+ _autonomous_count += 1
1615
+ print(f" {icon} {a['name']:<14} {a.get('role',''):<25} pending: {pcount}{_auto_marker}")
1616
+ # AUTONOMOUS-MODE-UNIVERSAL P8 (task f57aa2d2): if multi-agent mesh
1617
+ # has 0% autonomous adoption, surface a 1-line hint so users see the
1618
+ # bottleneck without reading a memo. Hint hidden when single-agent
1619
+ # mesh or any agent is already autonomous (signal-only, no noise).
1620
+ if len(agents) >= 2 and _autonomous_count == 0:
1621
+ print(f" 💡 0/{len(agents)} agents autonomous. Re-run each with `--autonomous` (or `export MESHCODE_AUTONOMOUS=1`) to enable parallel self-driven work.")
1612
1622
  print()
1613
1623
 
1614
1624
 
@@ -3038,6 +3048,45 @@ if __name__ == "__main__":
3038
3048
  proj = sys.argv[2] if len(sys.argv) > 2 else None
3039
3049
  show_status(proj)
3040
3050
 
3051
+ elif cmd in ("wake-all", "wakeall"):
3052
+ # AUTONOMOUS-MODE-UNIVERSAL P9 (task f57aa2d2): print copy-paste
3053
+ # launch commands for every offline agent in a meshwork. No process
3054
+ # control (those terminals are gone); just frictionless bootstrap.
3055
+ proj = sys.argv[2] if len(sys.argv) > 2 else None
3056
+ if not proj:
3057
+ print("Usage: meshcode wake-all <project>")
3058
+ sys.exit(1)
3059
+ api_key = _load_api_key_for_cli()
3060
+ if not api_key:
3061
+ print("[meshcode] Not logged in. Run: meshcode login <api_key>")
3062
+ sys.exit(1)
3063
+ _projs = sb_rpc("mc_list_user_projects", {"p_api_key": api_key})
3064
+ _agents = []
3065
+ if isinstance(_projs, dict) and _projs.get("projects"):
3066
+ for _p in _projs["projects"]:
3067
+ if _p.get("name") == proj:
3068
+ _agents = _p.get("agents") or []
3069
+ break
3070
+ if not _agents:
3071
+ print(f"[meshcode] No agents found in meshwork '{proj}'. Check the name with `meshcode projects`.")
3072
+ sys.exit(1)
3073
+ _offline = [a for a in _agents if a.get("status") in ("offline", "sleeping", None)]
3074
+ _online = [a for a in _agents if a not in _offline]
3075
+ print(f"[meshcode] meshwork '{proj}': {len(_online)} online, {len(_offline)} offline.")
3076
+ if not _offline:
3077
+ print(f"[meshcode] ✓ All agents already online. Nothing to wake.")
3078
+ sys.exit(0)
3079
+ print(f"[meshcode]")
3080
+ print(f"[meshcode] Copy-paste these into separate terminal panes to wake the offline agents")
3081
+ print(f"[meshcode] in autonomous mode (so they self-progress without per-step prompting):")
3082
+ print(f"[meshcode]")
3083
+ for a in _offline:
3084
+ print(f" meshcode run {proj}/{a.get('name', '?')} --autonomous")
3085
+ print(f"[meshcode]")
3086
+ print(f"[meshcode] Tip: `export MESHCODE_AUTONOMOUS=1` once in your shell rc, then you")
3087
+ print(f"[meshcode] can drop the `--autonomous` flag for the rest of the session.")
3088
+ sys.exit(0)
3089
+
3041
3090
  elif cmd in ("projects", "list", "ls"):
3042
3091
  list_projects()
3043
3092
 
@@ -3743,7 +3792,7 @@ if __name__ == "__main__":
3743
3792
  "setup", "run", "go", "invite", "join", "invites", "members",
3744
3793
  "revoke-invite", "revoke-member", "login", "prefs", "launcher",
3745
3794
  "help", "init", "doctor", "compat", "upgrade", "profile", "validate-sessions", "wake-headless",
3746
- "supervisor", "upload", "quickstart", "patch-hooks",
3795
+ "supervisor", "upload", "quickstart", "patch-hooks", "wake-all",
3747
3796
  ]
3748
3797
  # Simple fuzzy: prefix match + Levenshtein-like best match
3749
3798
  suggestions = [c for c in known_cmds if c.startswith(cmd)]
@@ -5403,6 +5403,28 @@ def meshcode_add_agent(name: str, role: str = "", autonomous: bool = False) -> D
5403
5403
  return result or {"error": "failed to add agent"}
5404
5404
 
5405
5405
 
5406
+ @mcp.tool()
5407
+ @with_working_status
5408
+ def meshcode_set_meshwork_autonomous_default(enabled: bool) -> Dict[str, Any]:
5409
+ """Set the autonomous_mode_default for the current meshwork.
5410
+
5411
+ Owner-only. Agents whose own mc_agents.autonomous_mode IS NULL fall
5412
+ through to this default. Setting True makes new agents autonomous by
5413
+ default; setting False reverts to the conservative ask-mode default.
5414
+
5415
+ AUTONOMOUS-MODE-UNIVERSAL Phase 2 (mig 359, task f248d98e). Writes an
5416
+ mc_traces audit row on every flip.
5417
+
5418
+ Args:
5419
+ enabled: True = autonomous default for the meshwork; False = ask-mode default.
5420
+ """
5421
+ return be.sb_rpc("mc_meshwork_set_autonomous_default", {
5422
+ "p_api_key": _get_api_key(),
5423
+ "p_project_id": _PROJECT_ID,
5424
+ "p_default": bool(enabled),
5425
+ })
5426
+
5427
+
5406
5428
  @mcp.tool()
5407
5429
  @with_working_status
5408
5430
  def meshcode_edit_agent(name: str, role: Optional[str] = None, launch_prompt: Optional[str] = None) -> Dict[str, Any]:
@@ -1372,6 +1372,43 @@ Call `meshcode_wait` now.
1372
1372
  print(f"[meshcode]")
1373
1373
  print(f"[meshcode] Closing the editor window flips this agent offline.")
1374
1374
  print(f"[meshcode] Other agents stay independent — no cross-window pollution.")
1375
+
1376
+ # AUTONOMOUS-MODE-UNIVERSAL P6 (task f57aa2d2): if this agent makes the
1377
+ # 2nd+ in the meshwork AND no agent has autonomous_mode=true AND the
1378
+ # user didn't already opt in via env var, surface a one-line nudge.
1379
+ # Best-effort — never block setup on telemetry failure.
1380
+ if os.environ.get("MESHCODE_AUTONOMOUS", "").strip().lower() not in ("1", "true", "yes", "on"):
1381
+ try:
1382
+ from urllib.request import Request as _Req, urlopen as _urlopen
1383
+ _body = json.dumps({
1384
+ "p_api_key": api_key,
1385
+ "p_project_id": project_id,
1386
+ "p_agent_name": None,
1387
+ "p_select": "name,autonomous_mode",
1388
+ "p_limit": 50,
1389
+ }).encode()
1390
+ _req = _Req(
1391
+ f"{sb['SUPABASE_URL']}/rest/v1/rpc/mc_get_agents",
1392
+ data=_body, method="POST",
1393
+ headers={
1394
+ "apikey": sb["SUPABASE_KEY"],
1395
+ "Authorization": f"Bearer {sb['SUPABASE_KEY']}",
1396
+ "Content-Type": "application/json",
1397
+ },
1398
+ )
1399
+ with _urlopen(_req, timeout=5) as _resp:
1400
+ _data = json.loads(_resp.read().decode())
1401
+ _all = (_data or {}).get("agents") or []
1402
+ _n = len(_all)
1403
+ _auto = sum(1 for a in _all if a.get("autonomous_mode"))
1404
+ if _n >= 2 and _auto == 0:
1405
+ print(f"[meshcode]")
1406
+ print(f"[meshcode] 💡 Tip: this meshwork now has {_n} agents. Consider autonomous mode:")
1407
+ print(f"[meshcode] meshcode run {agent} --autonomous")
1408
+ print(f"[meshcode] or set once for your shell: export MESHCODE_AUTONOMOUS=1")
1409
+ print(f"[meshcode] Autonomous agents self-progress without per-step prompting.")
1410
+ except Exception:
1411
+ pass # best-effort hint; never fail setup on this
1375
1412
  return 0
1376
1413
 
1377
1414
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.43
3
+ Version: 2.11.45
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.43"
7
+ version = "2.11.45"
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