meshcode 2.11.97__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.
- {meshcode-2.11.97 → meshcode-2.11.99}/PKG-INFO +1 -1
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/__init__.py +1 -1
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/__main__.py +9 -7
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/server.py +32 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/PKG-INFO +1 -1
- {meshcode-2.11.97 → meshcode-2.11.99}/pyproject.toml +1 -1
- {meshcode-2.11.97 → meshcode-2.11.99}/README.md +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/_session_handoff_template.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/_stop_hook_template.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/ascii_art.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/atomic_push.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/claude_update.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/cli.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/comms_v4.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/compat.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/daemon.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/date_parse.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/doctor.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/error_hints.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/exceptions.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/hostd.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/invites.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/launcher.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/launcher_install.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/__init__.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/__main__.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/backend.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/realtime.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/sleep_signals.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_backend.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_boot_timing.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_install_guard.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_prefs_claude_version.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_realtime.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/meshcode_mcp/test_server_wrapper.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/preferences.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/protocol_handler.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/protocol_v2.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/quickstart.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/rpc_allowlist.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/run_agent.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/scripts/check_secrets.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/scripts/race_rate_harness.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/secrets.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/self_update.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/setup_clients.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/supervisor.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/up.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode/upload.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/SOURCES.txt +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/dependency_links.txt +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/entry_points.txt +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/requires.txt +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/meshcode.egg-info/top_level.txt +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/setup.cfg +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_auto_update_hardening.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_autonomous_closegap_1.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_autonomous_closegap_2.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_autonomous_closegap_3.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_autonomous_prompt_inject.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_boot_bug_regression.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_color_truecolor.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_core.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_cross_agent_messaging.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_date_parse.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_doctor.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_epistemic_v1_python_sdk.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_epistemic_v1_stop_conditions.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_esc_deaf_state.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_exceptions.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_file_upload.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_init_device_code.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_install_guard.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_lease_sigterm_release.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_mark_read_batch.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_marketplace_ratings.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_migration_integrity.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_realtime_event_freshness.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_rls_cross_tenant.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_rpc_grants.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_rpc_migrations.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_run_agent_dry_run.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_run_agent_no_server_import.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_security_regressions.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_self_update_user_site.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_sentinel.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_setup_path.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_sleep_signals.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_status_enum_coverage.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_stay_on_loop_hook.py +0 -0
- {meshcode-2.11.97 → meshcode-2.11.99}/tests/test_wait_open_tasks_contradiction.py +0 -0
|
@@ -9,18 +9,20 @@ import sys
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
def main():
|
|
12
|
-
#
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
#
|
|
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()
|
|
@@ -6171,6 +6171,38 @@ def meshcode_recycle_fleet(visible: bool = False) -> Dict[str, Any]:
|
|
|
6171
6171
|
})
|
|
6172
6172
|
|
|
6173
6173
|
|
|
6174
|
+
@mcp.tool()
|
|
6175
|
+
@with_working_status
|
|
6176
|
+
def meshcode_set_recycle_schedule(interval_hours: int = 6, enabled: bool = True,
|
|
6177
|
+
agent: Optional[str] = None) -> Dict[str, Any]:
|
|
6178
|
+
"""Schedule AUTOMATIC recycles for YOUR meshwork — agents auto close+relaunch
|
|
6179
|
+
fresh every N hours to stay clean (remote, auto-renewing).
|
|
6180
|
+
|
|
6181
|
+
FLEET-RECYCLE P2 (task 798dd1bd). Mesh-global: the host's time-mode recycle
|
|
6182
|
+
engine enacts the schedule every `interval_hours`. Commander agent (or human
|
|
6183
|
+
owner) only, scoped to your own meshwork — enforced server-side by
|
|
6184
|
+
mc_set_recycle_schedule_as_agent (authz like mc_agent_power_as_agent).
|
|
6185
|
+
|
|
6186
|
+
Args:
|
|
6187
|
+
interval_hours: recycle the fleet every N hours (default 6).
|
|
6188
|
+
enabled: True = enable the schedule; False = disable it.
|
|
6189
|
+
agent: RESERVED for the per-agent override (fast-follow); currently
|
|
6190
|
+
mesh-global only — leave None.
|
|
6191
|
+
"""
|
|
6192
|
+
if agent is not None:
|
|
6193
|
+
return {
|
|
6194
|
+
"ok": False,
|
|
6195
|
+
"error_code": "not_yet_supported",
|
|
6196
|
+
"error": "per-agent recycle schedule is a fast-follow; pass agent=None for the mesh-global schedule.",
|
|
6197
|
+
}
|
|
6198
|
+
return be.sb_rpc("mc_set_recycle_schedule_as_agent", {
|
|
6199
|
+
"p_api_key": _get_api_key(),
|
|
6200
|
+
"p_project_id": _PROJECT_ID,
|
|
6201
|
+
"p_enabled": bool(enabled),
|
|
6202
|
+
"p_interval_hours": int(interval_hours),
|
|
6203
|
+
})
|
|
6204
|
+
|
|
6205
|
+
|
|
6174
6206
|
@mcp.tool()
|
|
6175
6207
|
@with_working_status
|
|
6176
6208
|
def meshcode_set_meshwork_autonomous_default(enabled: bool) -> Dict[str, Any]:
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|