meshcode 2.11.65__tar.gz → 2.11.66__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 (262) hide show
  1. {meshcode-2.11.65 → meshcode-2.11.66}/PKG-INFO +1 -1
  2. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/server.py +83 -0
  4. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode.egg-info/PKG-INFO +1 -1
  5. meshcode-2.11.66/meshcode.egg-info/SOURCES.txt +88 -0
  6. meshcode-2.11.66/meshcode.egg-info/top_level.txt +1 -0
  7. {meshcode-2.11.65 → meshcode-2.11.66}/pyproject.toml +1 -1
  8. meshcode-2.11.65/meshcode/ascii_art.py +0 -638
  9. meshcode-2.11.65/meshcode/claude_update 2.py +0 -253
  10. meshcode-2.11.65/meshcode/claude_update 3.py +0 -253
  11. meshcode-2.11.65/meshcode/claude_update 4.py +0 -253
  12. meshcode-2.11.65/meshcode/claude_update 5.py +0 -253
  13. meshcode-2.11.65/meshcode/claude_update 6.py +0 -253
  14. meshcode-2.11.65/meshcode/cli.py +0 -42
  15. meshcode-2.11.65/meshcode/compat.py +0 -174
  16. meshcode-2.11.65/meshcode/error_hints.py +0 -74
  17. meshcode-2.11.65/meshcode/exceptions.py +0 -52
  18. meshcode-2.11.65/meshcode/hostd 2.py +0 -381
  19. meshcode-2.11.65/meshcode/hostd 3.py +0 -381
  20. meshcode-2.11.65/meshcode/hostd 4.py +0 -381
  21. meshcode-2.11.65/meshcode/hostd 5.py +0 -381
  22. meshcode-2.11.65/meshcode/hostd 6.py +0 -394
  23. meshcode-2.11.65/meshcode/invites.py +0 -406
  24. meshcode-2.11.65/meshcode/launcher.py +0 -353
  25. meshcode-2.11.65/meshcode/launcher_install.py +0 -414
  26. meshcode-2.11.65/meshcode/meshcode_mcp/__init__.py +0 -22
  27. meshcode-2.11.65/meshcode/meshcode_mcp/__main__.py +0 -62
  28. meshcode-2.11.65/meshcode/meshcode_mcp/test_backend.py +0 -86
  29. meshcode-2.11.65/meshcode/meshcode_mcp/test_realtime.py +0 -95
  30. meshcode-2.11.65/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  31. meshcode-2.11.65/meshcode/preferences.py +0 -260
  32. meshcode-2.11.65/meshcode/protocol_v2.py +0 -129
  33. meshcode-2.11.65/meshcode/secrets.py +0 -365
  34. meshcode-2.11.65/meshcode/supervisor.py +0 -186
  35. meshcode-2.11.65/meshcode/up 2.py +0 -220
  36. meshcode-2.11.65/meshcode/up 3.py +0 -220
  37. meshcode-2.11.65/meshcode/up 4.py +0 -257
  38. meshcode-2.11.65/meshcode/up 5.py +0 -257
  39. meshcode-2.11.65/meshcode/upload.py +0 -125
  40. meshcode-2.11.65/meshcode-backend-wt/comms_v4.py +0 -1941
  41. meshcode-2.11.65/meshcode-backend-wt/meshcode/__init__.py +0 -82
  42. meshcode-2.11.65/meshcode-backend-wt/meshcode/comms_v4.py +0 -3563
  43. meshcode-2.11.65/meshcode-backend-wt/meshcode/meshcode_mcp/backend.py +0 -1261
  44. meshcode-2.11.65/meshcode-backend-wt/meshcode/meshcode_mcp/realtime.py +0 -460
  45. meshcode-2.11.65/meshcode-backend-wt/meshcode/meshcode_mcp/server.py +0 -4117
  46. meshcode-2.11.65/meshcode-backend-wt/meshcode/quickstart.py +0 -148
  47. meshcode-2.11.65/meshcode-backend-wt/meshcode/run_agent.py +0 -958
  48. meshcode-2.11.65/meshcode-backend-wt/meshcode/self_update.py +0 -345
  49. meshcode-2.11.65/meshcode-backend-wt/meshcode/setup_clients.py +0 -926
  50. meshcode-2.11.65/meshcode-backend-wt/scripts/sentinel.py +0 -257
  51. meshcode-2.11.65/meshcode-backend-wt/tests/test_rpc_migrations.py +0 -387
  52. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/__init__.py +0 -82
  53. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/ascii_art.py +0 -638
  54. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/cli.py +0 -42
  55. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/comms_v4.py +0 -3563
  56. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/compat.py +0 -174
  57. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/error_hints.py +0 -74
  58. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/exceptions.py +0 -52
  59. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/invites.py +0 -406
  60. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/launcher.py +0 -353
  61. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/launcher_install.py +0 -414
  62. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__init__.py +0 -22
  63. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/__main__.py +0 -62
  64. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/backend.py +0 -1261
  65. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/realtime.py +0 -460
  66. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/server.py +0 -4117
  67. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_backend.py +0 -86
  68. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_realtime.py +0 -95
  69. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  70. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/preferences.py +0 -260
  71. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/protocol_v2.py +0 -129
  72. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/quickstart.py +0 -148
  73. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/run_agent.py +0 -958
  74. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/secrets.py +0 -365
  75. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/self_update.py +0 -345
  76. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/setup_clients.py +0 -926
  77. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/supervisor.py +0 -186
  78. meshcode-2.11.65/meshcode-noun-wt/build/lib/meshcode/upload.py +0 -125
  79. meshcode-2.11.65/meshcode-noun-wt/comms_v4.py +0 -1941
  80. meshcode-2.11.65/meshcode-noun-wt/meshcode/__init__.py +0 -82
  81. meshcode-2.11.65/meshcode-noun-wt/meshcode/ascii_art.py +0 -638
  82. meshcode-2.11.65/meshcode-noun-wt/meshcode/cli.py +0 -42
  83. meshcode-2.11.65/meshcode-noun-wt/meshcode/comms_v4.py +0 -3563
  84. meshcode-2.11.65/meshcode-noun-wt/meshcode/compat.py +0 -174
  85. meshcode-2.11.65/meshcode-noun-wt/meshcode/error_hints.py +0 -74
  86. meshcode-2.11.65/meshcode-noun-wt/meshcode/exceptions.py +0 -52
  87. meshcode-2.11.65/meshcode-noun-wt/meshcode/invites.py +0 -406
  88. meshcode-2.11.65/meshcode-noun-wt/meshcode/launcher.py +0 -353
  89. meshcode-2.11.65/meshcode-noun-wt/meshcode/launcher_install.py +0 -414
  90. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/__init__.py +0 -22
  91. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/__main__.py +0 -62
  92. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/backend.py +0 -1261
  93. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/realtime.py +0 -460
  94. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/server.py +0 -4117
  95. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/test_backend.py +0 -86
  96. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/test_realtime.py +0 -95
  97. meshcode-2.11.65/meshcode-noun-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  98. meshcode-2.11.65/meshcode-noun-wt/meshcode/preferences.py +0 -260
  99. meshcode-2.11.65/meshcode-noun-wt/meshcode/protocol_v2.py +0 -129
  100. meshcode-2.11.65/meshcode-noun-wt/meshcode/quickstart.py +0 -148
  101. meshcode-2.11.65/meshcode-noun-wt/meshcode/run_agent.py +0 -958
  102. meshcode-2.11.65/meshcode-noun-wt/meshcode/secrets.py +0 -365
  103. meshcode-2.11.65/meshcode-noun-wt/meshcode/self_update.py +0 -345
  104. meshcode-2.11.65/meshcode-noun-wt/meshcode/setup_clients.py +0 -926
  105. meshcode-2.11.65/meshcode-noun-wt/meshcode/supervisor.py +0 -186
  106. meshcode-2.11.65/meshcode-noun-wt/meshcode/upload.py +0 -125
  107. meshcode-2.11.65/meshcode-noun-wt/scripts/sentinel.py +0 -257
  108. meshcode-2.11.65/meshcode-noun-wt/tests/test_core.py +0 -216
  109. meshcode-2.11.65/meshcode-noun-wt/tests/test_cross_agent_messaging.py +0 -366
  110. meshcode-2.11.65/meshcode-noun-wt/tests/test_esc_deaf_state.py +0 -361
  111. meshcode-2.11.65/meshcode-noun-wt/tests/test_exceptions.py +0 -107
  112. meshcode-2.11.65/meshcode-noun-wt/tests/test_mark_read_batch.py +0 -200
  113. meshcode-2.11.65/meshcode-noun-wt/tests/test_migration_integrity.py +0 -176
  114. meshcode-2.11.65/meshcode-noun-wt/tests/test_realtime_event_freshness.py +0 -236
  115. meshcode-2.11.65/meshcode-noun-wt/tests/test_rls_cross_tenant.py +0 -255
  116. meshcode-2.11.65/meshcode-noun-wt/tests/test_rpc_migrations.py +0 -387
  117. meshcode-2.11.65/meshcode-noun-wt/tests/test_security_regressions.py +0 -171
  118. meshcode-2.11.65/meshcode-noun-wt/tests/test_sentinel.py +0 -148
  119. meshcode-2.11.65/meshcode-noun-wt/tests/test_status_enum_coverage.py +0 -231
  120. meshcode-2.11.65/meshcode-tasks-wt/comms_v4.py +0 -1941
  121. meshcode-2.11.65/meshcode-tasks-wt/meshcode/__init__.py +0 -82
  122. meshcode-2.11.65/meshcode-tasks-wt/meshcode/ascii_art.py +0 -638
  123. meshcode-2.11.65/meshcode-tasks-wt/meshcode/cli.py +0 -42
  124. meshcode-2.11.65/meshcode-tasks-wt/meshcode/comms_v4.py +0 -3563
  125. meshcode-2.11.65/meshcode-tasks-wt/meshcode/compat.py +0 -174
  126. meshcode-2.11.65/meshcode-tasks-wt/meshcode/error_hints.py +0 -74
  127. meshcode-2.11.65/meshcode-tasks-wt/meshcode/exceptions.py +0 -52
  128. meshcode-2.11.65/meshcode-tasks-wt/meshcode/invites.py +0 -406
  129. meshcode-2.11.65/meshcode-tasks-wt/meshcode/launcher.py +0 -353
  130. meshcode-2.11.65/meshcode-tasks-wt/meshcode/launcher_install.py +0 -414
  131. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/__init__.py +0 -22
  132. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/__main__.py +0 -62
  133. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/backend.py +0 -1261
  134. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/realtime.py +0 -460
  135. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/server.py +0 -4117
  136. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/test_backend.py +0 -86
  137. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/test_realtime.py +0 -95
  138. meshcode-2.11.65/meshcode-tasks-wt/meshcode/meshcode_mcp/test_server_wrapper.py +0 -117
  139. meshcode-2.11.65/meshcode-tasks-wt/meshcode/preferences.py +0 -260
  140. meshcode-2.11.65/meshcode-tasks-wt/meshcode/protocol_v2.py +0 -129
  141. meshcode-2.11.65/meshcode-tasks-wt/meshcode/quickstart.py +0 -148
  142. meshcode-2.11.65/meshcode-tasks-wt/meshcode/run_agent.py +0 -958
  143. meshcode-2.11.65/meshcode-tasks-wt/meshcode/secrets.py +0 -365
  144. meshcode-2.11.65/meshcode-tasks-wt/meshcode/self_update.py +0 -345
  145. meshcode-2.11.65/meshcode-tasks-wt/meshcode/setup_clients.py +0 -926
  146. meshcode-2.11.65/meshcode-tasks-wt/meshcode/supervisor.py +0 -186
  147. meshcode-2.11.65/meshcode-tasks-wt/meshcode/upload.py +0 -125
  148. meshcode-2.11.65/meshcode-tasks-wt/scripts/sentinel.py +0 -257
  149. meshcode-2.11.65/meshcode-tasks-wt/tests/test_core.py +0 -216
  150. meshcode-2.11.65/meshcode-tasks-wt/tests/test_cross_agent_messaging.py +0 -366
  151. meshcode-2.11.65/meshcode-tasks-wt/tests/test_esc_deaf_state.py +0 -361
  152. meshcode-2.11.65/meshcode-tasks-wt/tests/test_exceptions.py +0 -107
  153. meshcode-2.11.65/meshcode-tasks-wt/tests/test_mark_read_batch.py +0 -200
  154. meshcode-2.11.65/meshcode-tasks-wt/tests/test_migration_integrity.py +0 -176
  155. meshcode-2.11.65/meshcode-tasks-wt/tests/test_realtime_event_freshness.py +0 -236
  156. meshcode-2.11.65/meshcode-tasks-wt/tests/test_rls_cross_tenant.py +0 -255
  157. meshcode-2.11.65/meshcode-tasks-wt/tests/test_rpc_migrations.py +0 -387
  158. meshcode-2.11.65/meshcode-tasks-wt/tests/test_security_regressions.py +0 -171
  159. meshcode-2.11.65/meshcode-tasks-wt/tests/test_sentinel.py +0 -148
  160. meshcode-2.11.65/meshcode-tasks-wt/tests/test_status_enum_coverage.py +0 -231
  161. meshcode-2.11.65/meshcode.egg-info/SOURCES.txt +0 -258
  162. meshcode-2.11.65/meshcode.egg-info/top_level.txt +0 -4
  163. meshcode-2.11.65/tests/test_autonomous_prompt_inject 2.py +0 -126
  164. meshcode-2.11.65/tests/test_autonomous_prompt_inject 3.py +0 -126
  165. meshcode-2.11.65/tests/test_autonomous_prompt_inject 4.py +0 -126
  166. meshcode-2.11.65/tests/test_autonomous_prompt_inject 5.py +0 -126
  167. meshcode-2.11.65/tests/test_autonomous_prompt_inject 6.py +0 -126
  168. meshcode-2.11.65/tests/test_autonomous_prompt_inject 7.py +0 -126
  169. meshcode-2.11.65/tests/test_core.py +0 -216
  170. meshcode-2.11.65/tests/test_cross_agent_messaging.py +0 -366
  171. meshcode-2.11.65/tests/test_esc_deaf_state.py +0 -361
  172. meshcode-2.11.65/tests/test_exceptions.py +0 -107
  173. meshcode-2.11.65/tests/test_mark_read_batch.py +0 -200
  174. meshcode-2.11.65/tests/test_migration_integrity.py +0 -176
  175. meshcode-2.11.65/tests/test_realtime_event_freshness.py +0 -236
  176. meshcode-2.11.65/tests/test_rls_cross_tenant.py +0 -255
  177. meshcode-2.11.65/tests/test_security_regressions.py +0 -171
  178. meshcode-2.11.65/tests/test_sentinel.py +0 -148
  179. meshcode-2.11.65/tests/test_status_enum_coverage.py +0 -231
  180. {meshcode-2.11.65 → meshcode-2.11.66}/README.md +0 -0
  181. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/__main__.py +0 -0
  182. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/_stop_hook_template.py +0 -0
  183. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/ascii_art.py +0 -0
  184. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/atomic_push.py +0 -0
  185. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/claude_update.py +0 -0
  186. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/cli.py +0 -0
  187. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/comms_v4.py +0 -0
  188. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/compat.py +0 -0
  189. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/daemon.py +0 -0
  190. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/date_parse.py +0 -0
  191. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/doctor.py +0 -0
  192. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/error_hints.py +0 -0
  193. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/exceptions.py +0 -0
  194. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/hostd.py +0 -0
  195. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/invites.py +0 -0
  196. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/launcher.py +0 -0
  197. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/launcher_install.py +0 -0
  198. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/meshcode_mcp/__init__.py +0 -0
  199. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/meshcode_mcp/__main__.py +0 -0
  200. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/backend.py +0 -0
  201. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/realtime.py +0 -0
  202. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  203. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/meshcode_mcp/test_backend.py +0 -0
  204. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  205. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  206. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  207. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  208. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  209. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/preferences.py +0 -0
  210. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/protocol_handler.py +0 -0
  211. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/protocol_v2.py +0 -0
  212. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/quickstart.py +0 -0
  213. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/rpc_allowlist.py +0 -0
  214. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/run_agent.py +0 -0
  215. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/scripts/check_secrets.py +0 -0
  216. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/scripts/race_rate_harness.py +0 -0
  217. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/secrets.py +0 -0
  218. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/self_update.py +0 -0
  219. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/setup_clients.py +0 -0
  220. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/supervisor.py +0 -0
  221. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode/up.py +0 -0
  222. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/meshcode/upload.py +0 -0
  223. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode.egg-info/dependency_links.txt +0 -0
  224. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode.egg-info/entry_points.txt +0 -0
  225. {meshcode-2.11.65 → meshcode-2.11.66}/meshcode.egg-info/requires.txt +0 -0
  226. {meshcode-2.11.65 → meshcode-2.11.66}/setup.cfg +0 -0
  227. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_auto_update_hardening.py +0 -0
  228. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_autonomous_closegap_1.py +0 -0
  229. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_autonomous_closegap_2.py +0 -0
  230. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_autonomous_closegap_3.py +0 -0
  231. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_autonomous_prompt_inject.py +0 -0
  232. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_boot_bug_regression.py +0 -0
  233. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_color_truecolor.py +0 -0
  234. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_core.py +0 -0
  235. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_cross_agent_messaging.py +0 -0
  236. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_date_parse.py +0 -0
  237. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_doctor.py +0 -0
  238. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_epistemic_v1_python_sdk.py +0 -0
  239. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  240. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_esc_deaf_state.py +0 -0
  241. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_exceptions.py +0 -0
  242. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_file_upload.py +0 -0
  243. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_init_device_code.py +0 -0
  244. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_install_guard.py +0 -0
  245. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_lease_sigterm_release.py +0 -0
  246. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_mark_read_batch.py +0 -0
  247. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_marketplace_ratings.py +0 -0
  248. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_migration_integrity.py +0 -0
  249. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_realtime_event_freshness.py +0 -0
  250. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_rls_cross_tenant.py +0 -0
  251. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_rpc_grants.py +0 -0
  252. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_rpc_migrations.py +0 -0
  253. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_run_agent_dry_run.py +0 -0
  254. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_run_agent_no_server_import.py +0 -0
  255. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_security_regressions.py +0 -0
  256. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_self_update_user_site.py +0 -0
  257. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_sentinel.py +0 -0
  258. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_setup_path.py +0 -0
  259. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_sleep_signals.py +0 -0
  260. {meshcode-2.11.65/meshcode-backend-wt → meshcode-2.11.66}/tests/test_status_enum_coverage.py +0 -0
  261. {meshcode-2.11.65 → meshcode-2.11.66}/tests/test_stay_on_loop_hook.py +0 -0
  262. {meshcode-2.11.65 → meshcode-2.11.66}/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.65
3
+ Version: 2.11.66
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.65"
2
+ __version__ = "2.11.66"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -6404,6 +6404,89 @@ def meshcode_fulfill(promise_id: str) -> Dict[str, Any]:
6404
6404
  })
6405
6405
 
6406
6406
 
6407
+ # ----------------- PENDING APPROVALS (flagship: GO/no-go gate) -----------------
6408
+ # Task bb396c9b. The agent asks for a GO/no-go before a gated action; a human (or an
6409
+ # autonomous commander) approves/rejects with one button in the dashboard panel.
6410
+ # AUTO-APPROVE: if the project commander is in autonomous_mode AND the action is NOT
6411
+ # destructive, mc_request_approval auto-approves at creation. SAFETY FLOOR: a
6412
+ # destructive/irreversible action ALWAYS escalates to a human, even in autonomous mode.
6413
+
6414
+ _APPROVAL_RISK = ("low", "medium", "high", "critical")
6415
+ _APPROVAL_ACTIONS = ("push", "ddl", "deploy", "send", "task_complete", "custom")
6416
+
6417
+
6418
+ @mcp.tool()
6419
+ @with_working_status
6420
+ def meshcode_request_approval(
6421
+ title: str,
6422
+ detail: Optional[str] = None,
6423
+ risk_level: str = "medium",
6424
+ action_type: str = "custom",
6425
+ is_destructive: bool = False,
6426
+ context: Optional[Dict[str, Any]] = None,
6427
+ timeout_seconds: int = 1800,
6428
+ ) -> Dict[str, Any]:
6429
+ """Request a human/commander GO-no-go approval before a gated action, then BLOCK
6430
+ until it's resolved. Use before anything risky/outward-facing you want a human to
6431
+ confirm (prod DDL, deploy, force-push, external send, spending money, etc.).
6432
+
6433
+ Auto-approves instantly IF the project's commander is in autonomous_mode AND the
6434
+ action is NOT destructive. A destructive/irreversible action ALWAYS waits for a
6435
+ human, even under autonomous_mode (safety floor).
6436
+
6437
+ Args:
6438
+ title: short one-line summary of what you want to do (shown as the panel row).
6439
+ detail: optional markdown detail (the diff/command/plan/target).
6440
+ risk_level: 'low' | 'med' | 'high'.
6441
+ action_type: 'push' | 'ddl' | 'deploy' | 'send' | 'task_complete' | 'custom'.
6442
+ is_destructive: True for irreversible/destructive actions (always human-gated).
6443
+ context: optional jsonb context (diff, command, target ids).
6444
+ timeout_seconds: how long to block waiting for the decision (default 1800).
6445
+
6446
+ Returns: {ok, approval_id, decision: 'approved'|'rejected'|'expired'|'timeout',
6447
+ auto_approved: bool, resolved_by?}.
6448
+ """
6449
+ if not title or not title.strip():
6450
+ return {"ok": False, "error": "title is required"}
6451
+ if risk_level not in _APPROVAL_RISK:
6452
+ return {"ok": False, "error": f"risk_level must be one of {_APPROVAL_RISK}"}
6453
+ if action_type not in _APPROVAL_ACTIONS:
6454
+ return {"ok": False, "error": f"action_type must be one of {_APPROVAL_ACTIONS}"}
6455
+ api_key = _get_api_key()
6456
+ created = be.sb_rpc("mc_request_approval", {
6457
+ "p_api_key": api_key,
6458
+ "p_title": title.strip(),
6459
+ "p_detail": (detail or None),
6460
+ "p_risk_level": risk_level,
6461
+ "p_action_type": action_type,
6462
+ "p_is_destructive": bool(is_destructive),
6463
+ "p_context": context if isinstance(context, dict) else None,
6464
+ })
6465
+ if not isinstance(created, dict) or not created.get("ok"):
6466
+ return created if isinstance(created, dict) else {"ok": False, "error": "create_failed"}
6467
+ approval_id = created.get("approval_id")
6468
+ status = created.get("status")
6469
+ # Auto-approved at creation (autonomous commander, non-destructive) -> return now.
6470
+ if status in ("approved", "auto_approved"):
6471
+ return {"ok": True, "approval_id": approval_id, "decision": status,
6472
+ "auto_approved": (status == "auto_approved"), "resolved_by": created.get("resolved_by")}
6473
+ if status in ("rejected", "expired"):
6474
+ return {"ok": True, "approval_id": approval_id, "decision": status, "auto_approved": False}
6475
+ # Pending -> block-poll until resolved / expired / timeout.
6476
+ import time as _time
6477
+ deadline = _time.monotonic() + max(30, int(timeout_seconds))
6478
+ while _time.monotonic() < deadline:
6479
+ _time.sleep(4)
6480
+ st = be.sb_rpc("mc_approval_status", {"p_api_key": api_key, "p_approval_id": approval_id})
6481
+ if isinstance(st, dict) and st.get("ok"):
6482
+ cur = st.get("status")
6483
+ if cur in ("approved", "auto_approved", "rejected", "expired"):
6484
+ return {"ok": True, "approval_id": approval_id, "decision": cur,
6485
+ "auto_approved": False, "resolved_by": st.get("resolved_by")}
6486
+ return {"ok": True, "approval_id": approval_id, "decision": "timeout", "auto_approved": False,
6487
+ "hint": "still pending; re-check with the panel or call again"}
6488
+
6489
+
6407
6490
  @mcp.tool()
6408
6491
  @with_working_status
6409
6492
  def meshcode_seed_fixture(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.65
3
+ Version: 2.11.66
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,88 @@
1
+ README.md
2
+ pyproject.toml
3
+ meshcode/__init__.py
4
+ meshcode/__main__.py
5
+ meshcode/_stop_hook_template.py
6
+ meshcode/ascii_art.py
7
+ meshcode/atomic_push.py
8
+ meshcode/claude_update.py
9
+ meshcode/cli.py
10
+ meshcode/comms_v4.py
11
+ meshcode/compat.py
12
+ meshcode/daemon.py
13
+ meshcode/date_parse.py
14
+ meshcode/doctor.py
15
+ meshcode/error_hints.py
16
+ meshcode/exceptions.py
17
+ meshcode/hostd.py
18
+ meshcode/invites.py
19
+ meshcode/launcher.py
20
+ meshcode/launcher_install.py
21
+ meshcode/preferences.py
22
+ meshcode/protocol_handler.py
23
+ meshcode/protocol_v2.py
24
+ meshcode/quickstart.py
25
+ meshcode/rpc_allowlist.py
26
+ meshcode/run_agent.py
27
+ meshcode/secrets.py
28
+ meshcode/self_update.py
29
+ meshcode/setup_clients.py
30
+ meshcode/supervisor.py
31
+ meshcode/up.py
32
+ meshcode/upload.py
33
+ meshcode.egg-info/PKG-INFO
34
+ meshcode.egg-info/SOURCES.txt
35
+ meshcode.egg-info/dependency_links.txt
36
+ meshcode.egg-info/entry_points.txt
37
+ meshcode.egg-info/requires.txt
38
+ meshcode.egg-info/top_level.txt
39
+ meshcode/meshcode_mcp/__init__.py
40
+ meshcode/meshcode_mcp/__main__.py
41
+ meshcode/meshcode_mcp/backend.py
42
+ meshcode/meshcode_mcp/realtime.py
43
+ meshcode/meshcode_mcp/server.py
44
+ meshcode/meshcode_mcp/sleep_signals.py
45
+ meshcode/meshcode_mcp/test_backend.py
46
+ meshcode/meshcode_mcp/test_boot_timing.py
47
+ meshcode/meshcode_mcp/test_install_guard.py
48
+ meshcode/meshcode_mcp/test_prefs_claude_version.py
49
+ meshcode/meshcode_mcp/test_realtime.py
50
+ meshcode/meshcode_mcp/test_server_wrapper.py
51
+ meshcode/scripts/check_secrets.py
52
+ meshcode/scripts/race_rate_harness.py
53
+ tests/test_auto_update_hardening.py
54
+ tests/test_autonomous_closegap_1.py
55
+ tests/test_autonomous_closegap_2.py
56
+ tests/test_autonomous_closegap_3.py
57
+ tests/test_autonomous_prompt_inject.py
58
+ tests/test_boot_bug_regression.py
59
+ tests/test_color_truecolor.py
60
+ tests/test_core.py
61
+ tests/test_cross_agent_messaging.py
62
+ tests/test_date_parse.py
63
+ tests/test_doctor.py
64
+ tests/test_epistemic_v1_python_sdk.py
65
+ tests/test_epistemic_v1_stop_conditions.py
66
+ tests/test_esc_deaf_state.py
67
+ tests/test_exceptions.py
68
+ tests/test_file_upload.py
69
+ tests/test_init_device_code.py
70
+ tests/test_install_guard.py
71
+ tests/test_lease_sigterm_release.py
72
+ tests/test_mark_read_batch.py
73
+ tests/test_marketplace_ratings.py
74
+ tests/test_migration_integrity.py
75
+ tests/test_realtime_event_freshness.py
76
+ tests/test_rls_cross_tenant.py
77
+ tests/test_rpc_grants.py
78
+ tests/test_rpc_migrations.py
79
+ tests/test_run_agent_dry_run.py
80
+ tests/test_run_agent_no_server_import.py
81
+ tests/test_security_regressions.py
82
+ tests/test_self_update_user_site.py
83
+ tests/test_sentinel.py
84
+ tests/test_setup_path.py
85
+ tests/test_sleep_signals.py
86
+ tests/test_status_enum_coverage.py
87
+ tests/test_stay_on_loop_hook.py
88
+ 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.65"
7
+ version = "2.11.66"
8
8
  description = "Real-time communication between AI agents — Supabase-backed CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}