meshcode 2.11.66__tar.gz → 2.11.67__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 (90) hide show
  1. {meshcode-2.11.66 → meshcode-2.11.67}/PKG-INFO +1 -1
  2. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/__init__.py +1 -1
  3. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/server.py +24 -0
  4. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/PKG-INFO +1 -1
  5. {meshcode-2.11.66 → meshcode-2.11.67}/pyproject.toml +1 -1
  6. {meshcode-2.11.66 → meshcode-2.11.67}/README.md +0 -0
  7. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/__main__.py +0 -0
  8. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/_stop_hook_template.py +0 -0
  9. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/ascii_art.py +0 -0
  10. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/atomic_push.py +0 -0
  11. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/claude_update.py +0 -0
  12. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/cli.py +0 -0
  13. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/comms_v4.py +0 -0
  14. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/compat.py +0 -0
  15. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/daemon.py +0 -0
  16. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/date_parse.py +0 -0
  17. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/doctor.py +0 -0
  18. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/error_hints.py +0 -0
  19. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/exceptions.py +0 -0
  20. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/hostd.py +0 -0
  21. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/invites.py +0 -0
  22. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/launcher.py +0 -0
  23. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/launcher_install.py +0 -0
  24. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/__init__.py +0 -0
  25. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/__main__.py +0 -0
  26. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/backend.py +0 -0
  27. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/realtime.py +0 -0
  28. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
  29. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_backend.py +0 -0
  30. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
  31. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
  32. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
  33. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_realtime.py +0 -0
  34. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
  35. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/preferences.py +0 -0
  36. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/protocol_handler.py +0 -0
  37. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/protocol_v2.py +0 -0
  38. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/quickstart.py +0 -0
  39. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/rpc_allowlist.py +0 -0
  40. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/run_agent.py +0 -0
  41. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/scripts/check_secrets.py +0 -0
  42. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/scripts/race_rate_harness.py +0 -0
  43. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/secrets.py +0 -0
  44. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/self_update.py +0 -0
  45. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/setup_clients.py +0 -0
  46. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/supervisor.py +0 -0
  47. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/up.py +0 -0
  48. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode/upload.py +0 -0
  49. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/SOURCES.txt +0 -0
  50. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/dependency_links.txt +0 -0
  51. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/entry_points.txt +0 -0
  52. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/requires.txt +0 -0
  53. {meshcode-2.11.66 → meshcode-2.11.67}/meshcode.egg-info/top_level.txt +0 -0
  54. {meshcode-2.11.66 → meshcode-2.11.67}/setup.cfg +0 -0
  55. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_auto_update_hardening.py +0 -0
  56. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_autonomous_closegap_1.py +0 -0
  57. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_autonomous_closegap_2.py +0 -0
  58. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_autonomous_closegap_3.py +0 -0
  59. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_autonomous_prompt_inject.py +0 -0
  60. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_boot_bug_regression.py +0 -0
  61. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_color_truecolor.py +0 -0
  62. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_core.py +0 -0
  63. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_cross_agent_messaging.py +0 -0
  64. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_date_parse.py +0 -0
  65. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_doctor.py +0 -0
  66. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_epistemic_v1_python_sdk.py +0 -0
  67. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_epistemic_v1_stop_conditions.py +0 -0
  68. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_esc_deaf_state.py +0 -0
  69. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_exceptions.py +0 -0
  70. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_file_upload.py +0 -0
  71. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_init_device_code.py +0 -0
  72. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_install_guard.py +0 -0
  73. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_lease_sigterm_release.py +0 -0
  74. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_mark_read_batch.py +0 -0
  75. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_marketplace_ratings.py +0 -0
  76. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_migration_integrity.py +0 -0
  77. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_realtime_event_freshness.py +0 -0
  78. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_rls_cross_tenant.py +0 -0
  79. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_rpc_grants.py +0 -0
  80. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_rpc_migrations.py +0 -0
  81. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_run_agent_dry_run.py +0 -0
  82. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_run_agent_no_server_import.py +0 -0
  83. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_security_regressions.py +0 -0
  84. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_self_update_user_site.py +0 -0
  85. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_sentinel.py +0 -0
  86. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_setup_path.py +0 -0
  87. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_sleep_signals.py +0 -0
  88. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_status_enum_coverage.py +0 -0
  89. {meshcode-2.11.66 → meshcode-2.11.67}/tests/test_stay_on_loop_hook.py +0 -0
  90. {meshcode-2.11.66 → meshcode-2.11.67}/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.66
3
+ Version: 2.11.67
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.66"
2
+ __version__ = "2.11.67"
3
3
 
4
4
  # Exception hierarchy — eagerly imported (lightweight, no deps)
5
5
  from meshcode.exceptions import ( # noqa: F401
@@ -6487,6 +6487,30 @@ def meshcode_request_approval(
6487
6487
  "hint": "still pending; re-check with the panel or call again"}
6488
6488
 
6489
6489
 
6490
+ @mcp.tool()
6491
+ @with_working_status
6492
+ def meshcode_resolve_approval(approval_id: str, decision: str) -> Dict[str, Any]:
6493
+ """Resolve a COMMANDER-tier pending approval (commander agents only). For the project's
6494
+ commander to clear GO/no-go requests routed to it. HARD limits enforced server-side:
6495
+ only the project's commander agent can resolve; you CANNOT resolve your own request;
6496
+ HUMAN-tier approvals (destructive / high / critical) are NOT resolvable here — those
6497
+ escalate to the human owner in the dashboard panel.
6498
+
6499
+ Args:
6500
+ approval_id: the approval to resolve.
6501
+ decision: 'approved' or 'rejected'.
6502
+ """
6503
+ if not approval_id or not str(approval_id).strip():
6504
+ return {"ok": False, "error": "approval_id is required"}
6505
+ if decision not in ("approved", "rejected"):
6506
+ return {"ok": False, "error": "decision must be 'approved' or 'rejected'"}
6507
+ return be.sb_rpc("mc_approval_resolve_commander", {
6508
+ "p_api_key": _get_api_key(),
6509
+ "p_approval_id": str(approval_id).strip(),
6510
+ "p_decision": decision,
6511
+ })
6512
+
6513
+
6490
6514
  @mcp.tool()
6491
6515
  @with_working_status
6492
6516
  def meshcode_seed_fixture(
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: meshcode
3
- Version: 2.11.66
3
+ Version: 2.11.67
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.66"
7
+ version = "2.11.67"
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
File without changes
File without changes