meshcode 2.11.98__tar.gz → 2.11.99__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 (243) hide show
  1. {meshcode-2.11.98 → meshcode-2.11.99}/PKG-INFO +1 -1
  2. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/__main__.py +9 -7
  4. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode.egg-info/PKG-INFO +1 -1
  5. meshcode-2.11.99/meshcode.egg-info/SOURCES.txt +89 -0
  6. meshcode-2.11.99/meshcode.egg-info/top_level.txt +1 -0
  7. {meshcode-2.11.98 → meshcode-2.11.99}/pyproject.toml +1 -1
  8. meshcode-2.11.98/meshcode/cli.py +0 -42
  9. meshcode-2.11.98/meshcode/compat.py +0 -174
  10. meshcode-2.11.98/meshcode/error_hints.py +0 -74
  11. meshcode-2.11.98/meshcode/exceptions.py +0 -52
  12. meshcode-2.11.98/meshcode/invites.py +0 -406
  13. meshcode-2.11.98/meshcode/launcher.py +0 -353
  14. meshcode-2.11.98/meshcode/launcher_install.py +0 -414
  15. meshcode-2.11.98/meshcode/meshcode_mcp/__init__.py +0 -22
  16. meshcode-2.11.98/meshcode/meshcode_mcp/__main__.py +0 -62
  17. meshcode-2.11.98/meshcode/meshcode_mcp/test_backend.py +0 -86
  18. meshcode-2.11.98/meshcode/meshcode_mcp/test_realtime.py +0 -95
  19. meshcode-2.11.98/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  20. meshcode-2.11.98/meshcode/preferences.py +0 -260
  21. meshcode-2.11.98/meshcode/protocol_v2.py +0 -129
  22. meshcode-2.11.98/meshcode/secrets.py +0 -365
  23. meshcode-2.11.98/meshcode/supervisor.py +0 -186
  24. meshcode-2.11.98/meshcode/upload.py +0 -125
  25. meshcode-2.11.98/meshcode-backend-wt/comms_v4.py +0 -0
  26. meshcode-2.11.98/meshcode-backend-wt/meshcode/__init__.py +0 -82
  27. meshcode-2.11.98/meshcode-backend-wt/meshcode/ascii_art.py +0 -0
  28. meshcode-2.11.98/meshcode-backend-wt/meshcode/comms_v4.py +0 -3563
  29. meshcode-2.11.98/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -1261
  30. meshcode-2.11.98/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  31. meshcode-2.11.98/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -0
  32. meshcode-2.11.98/meshcode-backend-wt/meshcode/quickstart.py +0 -148
  33. meshcode-2.11.98/meshcode-backend-wt/meshcode/run_agent.py +0 -0
  34. meshcode-2.11.98/meshcode-backend-wt/meshcode/self_update.py +0 -345
  35. meshcode-2.11.98/meshcode-backend-wt/meshcode/setup_clients.py +0 -0
  36. meshcode-2.11.98/meshcode-backend-wt/scripts/sentinel.py +0 -257
  37. meshcode-2.11.98/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -387
  38. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -82
  39. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -638
  40. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -42
  41. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -0
  42. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -174
  43. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -74
  44. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -52
  45. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -406
  46. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -353
  47. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -414
  48. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -22
  49. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -62
  50. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -0
  51. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -0
  52. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -0
  53. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -86
  54. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -95
  55. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  56. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -260
  57. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -129
  58. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -148
  59. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -0
  60. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -365
  61. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -345
  62. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -0
  63. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -186
  64. meshcode-2.11.98/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -125
  65. meshcode-2.11.98/meshcode-noun-wt/comms_v4.py +0 -0
  66. meshcode-2.11.98/meshcode-noun-wt/meshcode/__init__.py +0 -82
  67. meshcode-2.11.98/meshcode-noun-wt/meshcode/ascii_art.py +0 -0
  68. meshcode-2.11.98/meshcode-noun-wt/meshcode/cli.py +0 -42
  69. meshcode-2.11.98/meshcode-noun-wt/meshcode/comms_v4.py +0 -0
  70. meshcode-2.11.98/meshcode-noun-wt/meshcode/compat.py +0 -174
  71. meshcode-2.11.98/meshcode-noun-wt/meshcode/error_hints.py +0 -74
  72. meshcode-2.11.98/meshcode-noun-wt/meshcode/exceptions.py +0 -52
  73. meshcode-2.11.98/meshcode-noun-wt/meshcode/invites.py +0 -406
  74. meshcode-2.11.98/meshcode-noun-wt/meshcode/launcher.py +0 -353
  75. meshcode-2.11.98/meshcode-noun-wt/meshcode/launcher_install.py +0 -414
  76. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -22
  77. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -62
  78. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -0
  79. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -0
  80. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -0
  81. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -86
  82. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -95
  83. meshcode-2.11.98/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  84. meshcode-2.11.98/meshcode-noun-wt/meshcode/preferences.py +0 -260
  85. meshcode-2.11.98/meshcode-noun-wt/meshcode/protocol_v2.py +0 -129
  86. meshcode-2.11.98/meshcode-noun-wt/meshcode/quickstart.py +0 -148
  87. meshcode-2.11.98/meshcode-noun-wt/meshcode/run_agent.py +0 -0
  88. meshcode-2.11.98/meshcode-noun-wt/meshcode/secrets.py +0 -365
  89. meshcode-2.11.98/meshcode-noun-wt/meshcode/self_update.py +0 -345
  90. meshcode-2.11.98/meshcode-noun-wt/meshcode/setup_clients.py +0 -926
  91. meshcode-2.11.98/meshcode-noun-wt/meshcode/supervisor.py +0 -186
  92. meshcode-2.11.98/meshcode-noun-wt/meshcode/upload.py +0 -125
  93. meshcode-2.11.98/meshcode-noun-wt/scripts/sentinel.py +0 -257
  94. meshcode-2.11.98/meshcode-noun-wt/tests/test_core.py +0 -216
  95. meshcode-2.11.98/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -366
  96. meshcode-2.11.98/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -361
  97. meshcode-2.11.98/meshcode-noun-wt/tests/test_exceptions.py +0 -107
  98. meshcode-2.11.98/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -200
  99. meshcode-2.11.98/meshcode-noun-wt/tests/test_migration_integrity.py +0 -176
  100. meshcode-2.11.98/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -236
  101. meshcode-2.11.98/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -255
  102. meshcode-2.11.98/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -387
  103. meshcode-2.11.98/meshcode-noun-wt/tests/test_security_regressions.py +0 -171
  104. meshcode-2.11.98/meshcode-noun-wt/tests/test_sentinel.py +0 -148
  105. meshcode-2.11.98/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -231
  106. meshcode-2.11.98/meshcode-tasks-wt/comms_v4.py +0 -1941
  107. meshcode-2.11.98/meshcode-tasks-wt/meshcode/__init__.py +0 -82
  108. meshcode-2.11.98/meshcode-tasks-wt/meshcode/ascii_art.py +0 -0
  109. meshcode-2.11.98/meshcode-tasks-wt/meshcode/cli.py +0 -42
  110. meshcode-2.11.98/meshcode-tasks-wt/meshcode/comms_v4.py +0 -0
  111. meshcode-2.11.98/meshcode-tasks-wt/meshcode/compat.py +0 -174
  112. meshcode-2.11.98/meshcode-tasks-wt/meshcode/error_hints.py +0 -74
  113. meshcode-2.11.98/meshcode-tasks-wt/meshcode/exceptions.py +0 -52
  114. meshcode-2.11.98/meshcode-tasks-wt/meshcode/invites.py +0 -406
  115. meshcode-2.11.98/meshcode-tasks-wt/meshcode/launcher.py +0 -353
  116. meshcode-2.11.98/meshcode-tasks-wt/meshcode/launcher_install.py +0 -414
  117. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -22
  118. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -62
  119. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -1261
  120. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -460
  121. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -0
  122. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -86
  123. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -95
  124. meshcode-2.11.98/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  125. meshcode-2.11.98/meshcode-tasks-wt/meshcode/preferences.py +0 -260
  126. meshcode-2.11.98/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -129
  127. meshcode-2.11.98/meshcode-tasks-wt/meshcode/quickstart.py +0 -148
  128. meshcode-2.11.98/meshcode-tasks-wt/meshcode/run_agent.py +0 -0
  129. meshcode-2.11.98/meshcode-tasks-wt/meshcode/secrets.py +0 -365
  130. meshcode-2.11.98/meshcode-tasks-wt/meshcode/self_update.py +0 -345
  131. meshcode-2.11.98/meshcode-tasks-wt/meshcode/setup_clients.py +0 -926
  132. meshcode-2.11.98/meshcode-tasks-wt/meshcode/supervisor.py +0 -186
  133. meshcode-2.11.98/meshcode-tasks-wt/meshcode/upload.py +0 -125
  134. meshcode-2.11.98/meshcode-tasks-wt/scripts/sentinel.py +0 -257
  135. meshcode-2.11.98/meshcode-tasks-wt/tests/test_core.py +0 -216
  136. meshcode-2.11.98/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -366
  137. meshcode-2.11.98/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -361
  138. meshcode-2.11.98/meshcode-tasks-wt/tests/test_exceptions.py +0 -107
  139. meshcode-2.11.98/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -200
  140. meshcode-2.11.98/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -176
  141. meshcode-2.11.98/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -236
  142. meshcode-2.11.98/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -255
  143. meshcode-2.11.98/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -387
  144. meshcode-2.11.98/meshcode-tasks-wt/tests/test_security_regressions.py +0 -171
  145. meshcode-2.11.98/meshcode-tasks-wt/tests/test_sentinel.py +0 -148
  146. meshcode-2.11.98/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -231
  147. meshcode-2.11.98/meshcode.egg-info/SOURCES.txt +0 -239
  148. meshcode-2.11.98/meshcode.egg-info/top_level.txt +0 -4
  149. meshcode-2.11.98/tests/test_core.py +0 -216
  150. meshcode-2.11.98/tests/test_cross_agent_messaging.py +0 -366
  151. meshcode-2.11.98/tests/test_esc_deaf_state.py +0 -361
  152. meshcode-2.11.98/tests/test_exceptions.py +0 -107
  153. meshcode-2.11.98/tests/test_mark_read_batch.py +0 -200
  154. meshcode-2.11.98/tests/test_migration_integrity.py +0 -176
  155. meshcode-2.11.98/tests/test_realtime_event_freshness.py +0 -236
  156. meshcode-2.11.98/tests/test_rls_cross_tenant.py +0 -255
  157. meshcode-2.11.98/tests/test_security_regressions.py +0 -171
  158. meshcode-2.11.98/tests/test_sentinel.py +0 -148
  159. meshcode-2.11.98/tests/test_status_enum_coverage.py +0 -231
  160. {meshcode-2.11.98 → meshcode-2.11.99}/README.md +0 -0
  161. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/_session_handoff_template.py +0 -0
  162. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/_stop_hook_template.py +0 -0
  163. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/ascii_art.py +0 -0
  164. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/atomic_push.py +0 -0
  165. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/claude_update.py +0 -0
  166. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/cli.py +0 -0
  167. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/comms_v4.py +0 -0
  168. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/compat.py +0 -0
  169. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/daemon.py +0 -0
  170. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/date_parse.py +0 -0
  171. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/doctor.py +0 -0
  172. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/error_hints.py +0 -0
  173. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/exceptions.py +0 -0
  174. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/hostd.py +0 -0
  175. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/invites.py +0 -0
  176. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/launcher.py +0 -0
  177. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/launcher_install.py +0 -0
  178. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/meshcode_mcp/__init__.py +0 -0
  179. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/meshcode_mcp/__main__.py +0 -0
  180. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/backend.py +0 -0
  181. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/realtime.py +0 -0
  182. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/server.py +0 -0
  183. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  184. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/meshcode_mcp/test_backend.py +0 -0
  185. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  186. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  187. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  188. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  189. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  190. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/preferences.py +0 -0
  191. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/protocol_handler.py +0 -0
  192. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/protocol_v2.py +0 -0
  193. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/quickstart.py +0 -0
  194. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/rpc_allowlist.py +0 -0
  195. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/run_agent.py +0 -0
  196. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/scripts/check_secrets.py +0 -0
  197. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/scripts/race_rate_harness.py +0 -0
  198. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/secrets.py +0 -0
  199. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/self_update.py +0 -0
  200. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/setup_clients.py +0 -0
  201. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/supervisor.py +0 -0
  202. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode/up.py +0 -0
  203. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/meshcode/upload.py +0 -0
  204. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode.egg-info/dependency_links.txt +0 -0
  205. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode.egg-info/entry_points.txt +0 -0
  206. {meshcode-2.11.98 → meshcode-2.11.99}/meshcode.egg-info/requires.txt +0 -0
  207. {meshcode-2.11.98 → meshcode-2.11.99}/setup.cfg +0 -0
  208. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_auto_update_hardening.py +0 -0
  209. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_autonomous_closegap_1.py +0 -0
  210. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_autonomous_closegap_2.py +0 -0
  211. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_autonomous_closegap_3.py +0 -0
  212. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_autonomous_prompt_inject.py +0 -0
  213. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_boot_bug_regression.py +0 -0
  214. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_color_truecolor.py +0 -0
  215. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_core.py +0 -0
  216. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_cross_agent_messaging.py +0 -0
  217. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_date_parse.py +0 -0
  218. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_doctor.py +0 -0
  219. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_epistemic_v1_python_sdk.py +0 -0
  220. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  221. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_esc_deaf_state.py +0 -0
  222. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_exceptions.py +0 -0
  223. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_file_upload.py +0 -0
  224. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_init_device_code.py +0 -0
  225. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_install_guard.py +0 -0
  226. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_lease_sigterm_release.py +0 -0
  227. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_mark_read_batch.py +0 -0
  228. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_marketplace_ratings.py +0 -0
  229. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_migration_integrity.py +0 -0
  230. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_realtime_event_freshness.py +0 -0
  231. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_rls_cross_tenant.py +0 -0
  232. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_rpc_grants.py +0 -0
  233. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_rpc_migrations.py +0 -0
  234. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_run_agent_dry_run.py +0 -0
  235. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_run_agent_no_server_import.py +0 -0
  236. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_security_regressions.py +0 -0
  237. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_self_update_user_site.py +0 -0
  238. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_sentinel.py +0 -0
  239. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_setup_path.py +0 -0
  240. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_sleep_signals.py +0 -0
  241. {meshcode-2.11.98/meshcode-backend-wt → meshcode-2.11.99}/tests/test_status_enum_coverage.py +0 -0
  242. {meshcode-2.11.98 → meshcode-2.11.99}/tests/test_stay_on_loop_hook.py +0 -0
  243. {meshcode-2.11.98 → meshcode-2.11.99}/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.98
3
+ Version: 2.11.99
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.98"
2
+ __version__ = "2.11.99"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -9,18 +9,20 @@ import sys
9
9
 
10
10
 
11
11
  def main():
12
- # If the user explicitly asked to set up PATH, delegate to the real CLI.
13
- if len(sys.argv) > 1 and sys.argv[1] == "setup-path":
14
- from meshcode import comms_v4 as _cv # noqa: F401
12
+ # ROOT FIX (task 798dd1bd / REOPEN_PATH_bug): dispatch ANY subcommand to the real CLI
13
+ # (comms_v4), not just setup-path. hostd spawns agents via `python -m meshcode run <target>`
14
+ # (so a bg pip can replace the .exe) — that MUST route to the `run` dispatch, NOT fall through
15
+ # to the PATH-help error. Previously only setup-path dispatched, so every `python -m meshcode
16
+ # run` died with the misleading "meshcode not on PATH" message (qa/recycle-demo/respawn boots).
17
+ if len(sys.argv) > 1:
18
+ # runpy imports + executes comms_v4 as __main__; do NOT pre-import it here (a prior
19
+ # `import meshcode.comms_v4` triggers a runpy "found in sys.modules" double-exec warning).
15
20
  sys.argv[0] = "meshcode"
16
- # comms_v4 runs main() at module load via `if __name__ == "__main__"`.
17
- # Re-exec the body by importing as __main__ would require executing
18
- # the module again; simpler: invoke via runpy.
19
21
  import runpy
20
22
  runpy.run_module("meshcode.comms_v4", run_name="__main__", alter_sys=True)
21
23
  return
22
24
 
23
- # Otherwise: the user is here because `meshcode` isn't on PATH.
25
+ # Bare `python -m meshcode` (no subcommand): the user is here because `meshcode` isn't on PATH.
24
26
  print()
25
27
  print(" meshcode is installed but the `meshcode` command isn't on your PATH.")
26
28
  print()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.98
3
+ Version: 2.11.99
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,89 @@
1
+ README.md
2
+ pyproject.toml
3
+ meshcode/__init__.py
4
+ meshcode/__main__.py
5
+ meshcode/_session_handoff_template.py
6
+ meshcode/_stop_hook_template.py
7
+ meshcode/ascii_art.py
8
+ meshcode/atomic_push.py
9
+ meshcode/claude_update.py
10
+ meshcode/cli.py
11
+ meshcode/comms_v4.py
12
+ meshcode/compat.py
13
+ meshcode/daemon.py
14
+ meshcode/date_parse.py
15
+ meshcode/doctor.py
16
+ meshcode/error_hints.py
17
+ meshcode/exceptions.py
18
+ meshcode/hostd.py
19
+ meshcode/invites.py
20
+ meshcode/launcher.py
21
+ meshcode/launcher_install.py
22
+ meshcode/preferences.py
23
+ meshcode/protocol_handler.py
24
+ meshcode/protocol_v2.py
25
+ meshcode/quickstart.py
26
+ meshcode/rpc_allowlist.py
27
+ meshcode/run_agent.py
28
+ meshcode/secrets.py
29
+ meshcode/self_update.py
30
+ meshcode/setup_clients.py
31
+ meshcode/supervisor.py
32
+ meshcode/up.py
33
+ meshcode/upload.py
34
+ meshcode.egg-info/PKG-INFO
35
+ meshcode.egg-info/SOURCES.txt
36
+ meshcode.egg-info/dependency_links.txt
37
+ meshcode.egg-info/entry_points.txt
38
+ meshcode.egg-info/requires.txt
39
+ meshcode.egg-info/top_level.txt
40
+ meshcode/meshcode_mcp/__init__.py
41
+ meshcode/meshcode_mcp/__main__.py
42
+ meshcode/meshcode_mcp/backend.py
43
+ meshcode/meshcode_mcp/realtime.py
44
+ meshcode/meshcode_mcp/server.py
45
+ meshcode/meshcode_mcp/sleep_signals.py
46
+ meshcode/meshcode_mcp/test_backend.py
47
+ meshcode/meshcode_mcp/test_boot_timing.py
48
+ meshcode/meshcode_mcp/test_install_guard.py
49
+ meshcode/meshcode_mcp/test_prefs_claude_version.py
50
+ meshcode/meshcode_mcp/test_realtime.py
51
+ meshcode/meshcode_mcp/test_server_wrapper.py
52
+ meshcode/scripts/check_secrets.py
53
+ meshcode/scripts/race_rate_harness.py
54
+ tests/test_auto_update_hardening.py
55
+ tests/test_autonomous_closegap_1.py
56
+ tests/test_autonomous_closegap_2.py
57
+ tests/test_autonomous_closegap_3.py
58
+ tests/test_autonomous_prompt_inject.py
59
+ tests/test_boot_bug_regression.py
60
+ tests/test_color_truecolor.py
61
+ tests/test_core.py
62
+ tests/test_cross_agent_messaging.py
63
+ tests/test_date_parse.py
64
+ tests/test_doctor.py
65
+ tests/test_epistemic_v1_python_sdk.py
66
+ tests/test_epistemic_v1_stop_conditions.py
67
+ tests/test_esc_deaf_state.py
68
+ tests/test_exceptions.py
69
+ tests/test_file_upload.py
70
+ tests/test_init_device_code.py
71
+ tests/test_install_guard.py
72
+ tests/test_lease_sigterm_release.py
73
+ tests/test_mark_read_batch.py
74
+ tests/test_marketplace_ratings.py
75
+ tests/test_migration_integrity.py
76
+ tests/test_realtime_event_freshness.py
77
+ tests/test_rls_cross_tenant.py
78
+ tests/test_rpc_grants.py
79
+ tests/test_rpc_migrations.py
80
+ tests/test_run_agent_dry_run.py
81
+ tests/test_run_agent_no_server_import.py
82
+ tests/test_security_regressions.py
83
+ tests/test_self_update_user_site.py
84
+ tests/test_sentinel.py
85
+ tests/test_setup_path.py
86
+ tests/test_sleep_signals.py
87
+ tests/test_status_enum_coverage.py
88
+ tests/test_stay_on_loop_hook.py
89
+ tests/test_wait_open_tasks_contradiction.py
@@ -0,0 +1 @@
1
+ meshcode
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "meshcode"
7
- version = "2.11.98"
7
+ version = "2.11.99"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
@@ -1,42 +0,0 @@
1
- #!/usr/bin/env python3
2
- """MeshCode CLI entry point for pip install."""
3
- import sys
4
- import os
5
-
6
- # Force UTF-8 on stdout/stderr for Windows terminals (cp1252 default crashes
7
- # on emojis, em-dashes, and any non-ASCII output the CLI prints).
8
- # Python 3.7+ supports reconfigure(); older versions get a no-op.
9
- try:
10
- if hasattr(sys.stdout, "reconfigure"):
11
- sys.stdout.reconfigure(encoding="utf-8", errors="replace")
12
- if hasattr(sys.stderr, "reconfigure"):
13
- sys.stderr.reconfigure(encoding="utf-8", errors="replace")
14
- except Exception:
15
- pass
16
-
17
-
18
- def main():
19
- """Entry point that delegates to comms_v4.py within the package."""
20
- # Find comms_v4.py — first in package dir, then in repo root
21
- pkg_dir = os.path.dirname(os.path.abspath(__file__))
22
- repo_root = os.path.dirname(pkg_dir)
23
-
24
- for candidate in [
25
- os.path.join(pkg_dir, "comms_v4.py"),
26
- os.path.join(repo_root, "comms_v4.py"),
27
- ]:
28
- if os.path.exists(candidate):
29
- sys.argv[0] = candidate
30
- # Set __name__ and __file__ for the script
31
- globs = {"__name__": "__main__", "__file__": candidate}
32
- # Force UTF-8 on Windows (cp1252 default crashes on non-ASCII)
33
- with open(candidate, encoding="utf-8") as f:
34
- exec(compile(f.read(), candidate, "exec"), globs)
35
- return
36
-
37
- print("[meshcode] ERROR: comms_v4.py not found. Reinstall: pip install meshcode")
38
- sys.exit(1)
39
-
40
-
41
- if __name__ == "__main__":
42
- main()
@@ -1,174 +0,0 @@
1
- """Claude Code version compatibility matrix.
2
-
3
- Tracks known-good and known-bad Claude Code versions so the SDK can
4
- adjust behavior at runtime and warn users about regressions.
5
-
6
- HEARTBEAT THRESHOLD CONTRACT (reference):
7
- clear(60) < guard(90) < decay(180) < display(300) < client(600)
8
- """
9
-
10
- from __future__ import annotations
11
-
12
- import subprocess
13
- import shutil
14
- from typing import Optional, Dict, List, Tuple
15
-
16
-
17
- # ============================================================
18
- # COMPATIBILITY MATRIX
19
- # ============================================================
20
- # Each entry: version_prefix -> {status, issues[], mitigations[]}
21
- # status: "safe", "degraded", "broken"
22
- # Versions not listed are assumed "unknown" (treated as safe with warning).
23
-
24
- MATRIX: Dict[str, Dict] = {
25
- # Known-good versions
26
- "2.1.104": {
27
- "status": "safe",
28
- "issues": [],
29
- "mitigations": [],
30
- },
31
- # ESC/MCP stdio regression range: 2.1.111 through 2.1.119
32
- "2.1.111": {
33
- "status": "broken",
34
- "issues": ["ESC closes MCP stdio pipe instead of sending cancel notification"],
35
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
36
- },
37
- "2.1.112": {
38
- "status": "broken",
39
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
40
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
41
- },
42
- "2.1.113": {
43
- "status": "broken",
44
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
45
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
46
- },
47
- "2.1.114": {
48
- "status": "broken",
49
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
50
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
51
- },
52
- "2.1.115": {
53
- "status": "broken",
54
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
55
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
56
- },
57
- "2.1.116": {
58
- "status": "broken",
59
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
60
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
61
- },
62
- "2.1.117": {
63
- "status": "broken",
64
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
65
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
66
- },
67
- "2.1.118": {
68
- "status": "broken",
69
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
70
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
71
- },
72
- "2.1.119": {
73
- "status": "broken",
74
- "issues": ["ESC closes MCP stdio pipe (same as 2.1.111)"],
75
- "mitigations": ["Pin to 2.1.104: npm i -g @anthropic-ai/claude-code@2.1.104"],
76
- },
77
- }
78
-
79
- RECOMMENDED_VERSION = "2.1.104"
80
-
81
-
82
- def detect_cc_version() -> Optional[str]:
83
- """Detect installed Claude Code version. Returns version string or None."""
84
- claude_bin = shutil.which("claude")
85
- if not claude_bin:
86
- return None
87
- try:
88
- out = subprocess.run(
89
- [claude_bin, "--version"],
90
- capture_output=True, text=True, timeout=5,
91
- )
92
- # Output like "2.1.104 (Claude Code)" or "Claude Code 2.1.104"
93
- text = out.stdout.strip()
94
- for part in text.split():
95
- # Find the version-like token
96
- if part[0].isdigit() and "." in part:
97
- return part.strip("()")
98
- except Exception:
99
- pass
100
- return None
101
-
102
-
103
- def lookup(version: str) -> Dict:
104
- """Look up a version in the matrix. Returns entry or unknown default."""
105
- if version in MATRIX:
106
- return MATRIX[version]
107
- # Try prefix match (e.g., "2.1.104" matches "2.1.104-beta")
108
- for key in MATRIX:
109
- if version.startswith(key):
110
- return MATRIX[key]
111
- return {
112
- "status": "unknown",
113
- "issues": [],
114
- "mitigations": [],
115
- }
116
-
117
-
118
- def check() -> Tuple[str, str, Dict]:
119
- """Check current CC version against matrix.
120
-
121
- Returns: (version_str, status, entry_dict)
122
- """
123
- version = detect_cc_version()
124
- if not version:
125
- return ("not found", "unknown", {
126
- "status": "unknown",
127
- "issues": ["Claude Code not found in PATH"],
128
- "mitigations": ["Install: npm i -g @anthropic-ai/claude-code"],
129
- })
130
- entry = lookup(version)
131
- return (version, entry["status"], entry)
132
-
133
-
134
- def get_runtime_adjustments(version: str) -> Dict:
135
- """Return runtime parameter adjustments for a given CC version.
136
-
137
- These can be applied by the MCP server to mitigate known issues.
138
- """
139
- entry = lookup(version)
140
- adjustments = {}
141
-
142
- if entry["status"] == "broken":
143
- # ESC kills MCP: use shorter wait timeouts so if MCP dies,
144
- # it restarts faster and doesn't miss too many messages.
145
- adjustments["wait_timeout_cap"] = 10 # seconds (default 20)
146
- adjustments["heartbeat_interval"] = 15 # seconds (default 30)
147
- adjustments["warn_on_boot"] = True
148
-
149
- elif entry["status"] == "degraded":
150
- adjustments["heartbeat_interval"] = 20 # slightly more aggressive
151
- adjustments["warn_on_boot"] = True
152
-
153
- return adjustments
154
-
155
-
156
- def format_report(version: str, entry: Dict) -> str:
157
- """Format a human-readable compatibility report."""
158
- lines = []
159
- lines.append(f" Claude Code version: {version}")
160
- lines.append(f" Status: {entry.get('status', 'unknown').upper()}")
161
- lines.append(f" Recommended: {RECOMMENDED_VERSION}")
162
- if entry.get("issues"):
163
- lines.append("")
164
- lines.append(" Known issues:")
165
- for issue in entry["issues"]:
166
- lines.append(f" - {issue}")
167
- if entry.get("mitigations"):
168
- lines.append("")
169
- lines.append(" Fixes:")
170
- for m in entry["mitigations"]:
171
- lines.append(f" - {m}")
172
- if entry.get("status") == "safe":
173
- lines.append(" No known issues.")
174
- return "\n".join(lines)
@@ -1,74 +0,0 @@
1
- """Smart error messages — maps common error patterns to actionable fix commands.
2
-
3
- Usage:
4
- from meshcode.error_hints import hint_for_error
5
- print(hint_for_error("agent not found"))
6
- # → "Run: meshcode register <project> <agent> <role>"
7
- """
8
-
9
- _HINTS = [
10
- # Auth errors
11
- ("invalid api_key", "Run: meshcode login <api_key> to set your credentials"),
12
- ("api key", "Run: meshcode login <api_key> to refresh credentials"),
13
- ("auth_failed", "Run: meshcode login to re-authenticate"),
14
- ("forbidden", "You don't have permission. Check: meshcode doctor"),
15
- ("not authenticated", "Run: meshcode login <api_key>"),
16
-
17
- # Agent errors
18
- ("agent not found", "Run: meshcode register <project> <agent_name> <role>"),
19
- ("agent.*not registered", "Run: meshcode register <project> <agent_name> <role>"),
20
-
21
- # Project errors
22
- ("project.*not found", "Check project name with: meshcode projects"),
23
- ("no projects found", "Create one at meshcode.io/dashboard or: meshcode init <project_name>"),
24
-
25
- # Network errors
26
- ("circuit breaker open", "Supabase is temporarily unavailable. Wait 30s and retry. Details: meshcode doctor"),
27
- ("connection refused", "Check internet connection. If persists: meshcode doctor"),
28
- ("network error", "Check internet connection. If persists: meshcode doctor"),
29
- ("timeout", "Request timed out. Check connection: meshcode doctor"),
30
-
31
- # MCP errors
32
- ("MCP server crashed", "Restart: meshcode run <agent>"),
33
- ("stdin EOF", "MCP pipe closed. Restart the MCP server or Claude Code session"),
34
- ("mcp.*failed", "Check MCP config: meshcode doctor"),
35
-
36
- # Task errors
37
- ("task.*already claimed", "This task is being worked on. Try: meshcode tasks to see available tasks"),
38
- ("task not found", "Check task ID. List tasks: meshcode tasks"),
39
-
40
- # Config errors
41
- ("comms_v4.py not found", "Reinstall: pip install --upgrade meshcode"),
42
- ("\.mcp\.json", "Run: meshcode setup <project> <agent> to create config"),
43
-
44
- # Token errors
45
- ("token expired", "Generate a new token from the dashboard"),
46
- ("token already used", "Generate a new token from the dashboard"),
47
- ]
48
-
49
-
50
- def hint_for_error(error_msg: str) -> str:
51
- """Return an actionable fix suggestion for a given error message.
52
-
53
- Returns empty string if no hint matches.
54
- """
55
- import re
56
- lower = error_msg.lower()
57
- for pattern, hint in _HINTS:
58
- if re.search(pattern, lower):
59
- return hint
60
- return ""
61
-
62
-
63
- def format_error(error_msg: str, prefix: str = "[meshcode]") -> str:
64
- """Format an error with an actionable hint if available.
65
-
66
- Example output:
67
- [meshcode] ERROR: agent not found
68
- [meshcode] Fix: Run: meshcode register <project> <agent_name> <role>
69
- """
70
- lines = [f"{prefix} ERROR: {error_msg}"]
71
- hint = hint_for_error(error_msg)
72
- if hint:
73
- lines.append(f"{prefix} Fix: {hint}")
74
- return "\n".join(lines)
@@ -1,52 +0,0 @@
1
- """MeshCode exception hierarchy.
2
-
3
- All SDK-specific errors inherit from :class:`MeshCodeError` so callers can
4
- catch a single base class, or narrow down to the specific failure mode.
5
-
6
- CLI entry points (cli.py, launcher.py, server.py boot) catch these and
7
- convert to ``sys.exit(2)`` so end-user behaviour is unchanged.
8
- """
9
-
10
-
11
- class MeshCodeError(Exception):
12
- """Base exception for all MeshCode SDK errors."""
13
-
14
-
15
- class AuthError(MeshCodeError):
16
- """Authentication or API-key related failure.
17
-
18
- Raised when:
19
- - No API key is found in the keychain or environment
20
- - The secrets module cannot be loaded
21
- - An API key is rejected by the server
22
- """
23
-
24
-
25
- class RPCError(MeshCodeError):
26
- """A Supabase RPC call returned an error payload.
27
-
28
- Attributes:
29
- rpc_name: Name of the RPC function that failed (if known).
30
- detail: Server-provided error message.
31
- """
32
-
33
- def __init__(self, message: str, *, rpc_name: str = "", detail: str = ""):
34
- super().__init__(message)
35
- self.rpc_name = rpc_name
36
- self.detail = detail
37
-
38
-
39
- class MeshCodeTimeoutError(MeshCodeError):
40
- """A network or RPC call timed out.
41
-
42
- Named ``MeshCodeTimeoutError`` to avoid shadowing the builtin
43
- :class:`TimeoutError`.
44
- """
45
-
46
-
47
- class MeshCodeConnectionError(MeshCodeError):
48
- """Could not reach the MeshCode / Supabase backend.
49
-
50
- Named ``MeshCodeConnectionError`` to avoid shadowing the builtin
51
- :class:`ConnectionError`.
52
- """