swarph-cli 0.65.0__tar.gz → 0.67.0__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.
- {swarph_cli-0.65.0/src/swarph_cli.egg-info → swarph_cli-0.67.0}/PKG-INFO +17 -2
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/README.md +16 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/pyproject.toml +1 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/__init__.py +1 -1
- swarph_cli-0.67.0/src/swarph_cli/bench/backends.py +644 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/pack.py +15 -0
- swarph_cli-0.67.0/src/swarph_cli/bench/providers.py +94 -0
- swarph_cli-0.67.0/src/swarph_cli/bench/rules.py +40 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/runner.py +165 -16
- swarph_cli-0.67.0/src/swarph_cli/channel.py +275 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/bench.py +41 -3
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/board.py +3 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/brain_ask.py +1 -1
- swarph_cli-0.67.0/src/swarph_cli/commands/hook_interpreter.py +37 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_codex_hooks.py +4 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_opencode_plugin.py +9 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_postcompact_hook.py +3 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_wake_hook.py +4 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/mcp_server.py +207 -19
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/memory.py +18 -3
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/monitor.py +84 -22
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/spawn.py +5 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/wake_hook_output.py +3 -5
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/compress/levers.py +1 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/compress/verify.py +9 -5
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/candidates.py +19 -5
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/guide/GUIDE.md +1 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/scripts/dm_notify_filter.py +54 -0
- swarph_cli-0.67.0/src/swarph_cli/scripts/wake_watchdog.py +201 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-monitor-reexec.path +5 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-monitor-reexec.service +8 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0/src/swarph_cli.egg-info}/PKG-INFO +17 -2
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli.egg-info/SOURCES.txt +16 -0
- swarph_cli-0.67.0/tests/test_138_memory_navigate.py +50 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_654_reexec.py +154 -20
- swarph_cli-0.67.0/tests/test_729_dm_once.py +84 -0
- swarph_cli-0.67.0/tests/test_729_wake_watchdog.py +220 -0
- swarph_cli-0.67.0/tests/test_735_dm_mcp_tools.py +173 -0
- swarph_cli-0.67.0/tests/test_941_bench_backends.py +136 -0
- swarph_cli-0.67.0/tests/test_941_harness_342.py +114 -0
- swarph_cli-0.67.0/tests/test_945_same_line_pairing.py +116 -0
- swarph_cli-0.67.0/tests/test_955_prompt_audit.py +60 -0
- swarph_cli-0.67.0/tests/test_957_auth_http.py +169 -0
- swarph_cli-0.67.0/tests/test_959_venv_interpreter.py +85 -0
- swarph_cli-0.67.0/tests/test_960_channel.py +186 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_board_command.py +13 -1
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_memory_command.py +6 -3
- swarph_cli-0.65.0/src/swarph_cli/bench/backends.py +0 -277
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/LICENSE +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/setup.cfg +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/__main__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/prices.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/quality.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/refresh_prices.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/bench/validate.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/caller.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/harden.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/lineage.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/liveness.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/manifest.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/paths.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/capture/verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/cell.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/chain_token.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/_content.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/_display.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/_gateway_client.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/add.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/board_merge_check.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/brain.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/cell.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/cell_probe.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/cell_selfcheck.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/channel.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/chat.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/codegraph.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/codegraph_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/codex_hook_output.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/codex_waker.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/compress.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/daemon.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/dreaming.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/event.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/gateway.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/gh_route.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/group.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/guide.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/highlight.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/hook_output.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/hooks.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/import_session.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/init.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/install_multiplexer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/lane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/memory_emit_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/memory_sync.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/mesh.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/okf_links.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/onboard.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/peer_reply_drain.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/postcompact_hook_output.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/protocol_handler.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/ratify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/schedule.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/security.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/service.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/timeline.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/version.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/commands/watchdog.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/compress/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/compress/marker.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/console_safe.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/delivery_queue.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/clone.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/enrich.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/index_check.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/notify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/organize.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/probes.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/report.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/run.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/slm.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/transcripts.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/dreaming/verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/feature_registry.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/lanes_control.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/schema.sql +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/server.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway/services_control.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gateway_default.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/gh_identity.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/main.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/multiplexer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/orphan_daemons.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/pane_probe.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/parsers/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/parsers/claude.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/opencode/plugin.js +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/_shim.cmd +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/postcompact-recall-grok.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/postcompact-recall.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/posttooluse-emit-antigravity.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/posttooluse-emit-claude.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/posttooluse-emit-grok.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/posttooluse-emit.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/posttooluse-recall.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/precompact-flag.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/preinvocation-recall-antigravity.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/payloads/postcompact/sessionstart-recall.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_executor.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_executor_windows.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_reconciliation.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_reply_outbox.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_service_host.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_service_payload.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_service_reply.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/peer_staging.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/query_filters.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/scripts/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/scripts/ensure_monitor.sh +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/scripts/install_codex_waker_windows.ps1 +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/scripts/install_monitor_task_windows.ps1 +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/service/__init__.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/service/app.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/service/providers.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/session_bridge.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/skills/i-have-adhd/LICENSE +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/skills/i-have-adhd/SKILL.md +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/source_text.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/stall_alert.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/codex-waker.default +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/peer-reply-drain.default +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-codex-outbox@.service +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-codex-outbox@.timer +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-codex-waker@.service +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-codex-waker@.timer +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-monitor@.service +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-peer-reply-drain@.service +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-peer-reply-drain@.timer +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-watchdog.default +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-watchdog.service +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/systemd/swarph-watchdog.timer +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/timeline_paths.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli/tokens.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli.egg-info/dependency_links.txt +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli.egg-info/entry_points.txt +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli.egg-info/requires.txt +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/src/swarph_cli.egg-info/top_level.txt +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_124_register_merge.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_126_pending_from_complete.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_132_ensure_monitor_state_dir.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_139_tool_probe.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_183_card_anchor.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_201_win32_bash_refusal.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_243_onboard_per_peer_token.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_307_task4_ask_reply.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_312_codegraph_fuzzy_verb.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_319_refusal_exit_codes.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_323_mistral_backend.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_332_report_organize_findings.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_356_query_filters.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_397_gh_identity_router.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_397_router_preflight.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_467b_onboard_operator_credential.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_523_guide.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_524_conftest_hermeticity.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_532_accept_flag.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_535_version_capability.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_546_default_gateway.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_547_verbs_from_registry.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_548_gateway_remainder.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_552_codegraph_gateway.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_555_relay_row_shape.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_556_relay_freshness.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_564_bootstrap_first_peer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_578_no_machine_specific_host_defaults.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_579_register_bootstrap_message.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_591_cli_step_graph.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_644_monitor_supervision.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_648_install_unit.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_656_owned_slm.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_684_dreaming_verb.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_689_pkg_version_order.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_716_timeline_one_path.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_724_ps1_ascii_or_bom.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_725_stdio_reconfigure.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_734_dreaming_enrich_degrade.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_740_edit_project.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_762_cards_edit_priority.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_764_enrich_collapse.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_801_confirm_flow_cli.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_802_stage_history.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_825_codegraph_hook_noise.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_825_remaining_cap_shred_bind.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_829_counterfactual_column.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_830_hook_binding_version.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_84_cli_labels.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_866_doctrine_guide.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_872_identity_refuses_not_warns.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_874_source_text.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_888_opencode_data_dir_can_fail.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_937_dreaming_notify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_938_organize_line_limit.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_add_security_gate.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_add.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_hash.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_lib.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_mcp.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_skill.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_tool.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_artifact_uri.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_backends.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_pack.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_prices.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_quality.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_runner.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_bench_validate.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_board_card_thread.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_board_merge_check.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_board_obligation_close.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_brain_ask_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_brain_ask_env_diagnosis.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_brain_ask_identity_explicitness.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_brain_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_caller_meta_guard.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_capture_lineage.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_capture_liveness.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_capture_manifest.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_capture_paths.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_capture_security.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cell_command_dispatch.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cell_harden.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cell_loader.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cell_selfcheck.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cell_verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_chain_token.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_channel_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_channel_poll_never_breaks_dms.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_channel_post.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_channel_wake_policy_filter.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_chat_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_claude_parser.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_claude_tmux_template.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_codegraph_caller_scope.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_codegraph_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_codegraph_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_codegraph_mcp.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_codex_waker.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_compress_caller_convention.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_compress_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_compress_levers.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_compress_marker.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_compress_verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_console_encoding_e2e.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_content_composition.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_cursor_membrane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_daemon_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_daemon_console_encoding.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_daemon_delivery.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_delivery_queue.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_display_sanitize.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_ensure_monitor_no_peer_default.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_event_emit.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_feature_to_uri.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_gateway_brain.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_gateway_client.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_gateway_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_gateway_message_idempotency.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_gh_route_doctor_mesh_name.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_group_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_guide_commands_parse.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_guide_selfcheck.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_heartbeat_check.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_highlight_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hook_output.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_activity_marker.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_add.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_bundle.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_init.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_legacy_generation_removal.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_lifecycle.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_merge.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_win32_bash_wrapper.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_hooks_win32_command_path.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_import_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_inbox_identity_provenance.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_init_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_init_provider_menu.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_install_codex_hooks.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_install_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_install_multiplexer_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_install_postcompact_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_install_wake_hook.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_lane_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_main.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_main_unknown_verb_guard.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mcp_missing_hint.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mcp_server.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_memory_emit_snippet.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_memory_gateway.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_memory_sync.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_memory_sync_membrane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_inbox_mark_read.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_inbox_sanitize.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_send_unknown_peer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_sidecar.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_sidecar_cursor_decoupled.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_mesh_sidecar_wake_survives_read.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_meta_edge_identity.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_monitor_channel_poll.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_monitor_cli.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_monitor_daemon_collision.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_monitor_self_name_verification.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_monitor_state_split.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_multiplexer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_muse_membrane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_muse_own_cli.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_obligation_close_is_surfaced.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_okf_links.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_onboard_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_opencode_membrane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_opencode_plugin.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_orphan_daemons.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_packaged_artifacts_exist.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_packaged_skills.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_executor.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_executor_windows.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_reply_drain_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_reply_drain_supervisor.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_reply_outbox.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_reply_transport.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_service_e2e.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_service_host.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_service_payload.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_peer_service_reply.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_postcompact_recall.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_process_liveness.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_protocol_handler.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_providers_isolation.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_ratify_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_readme_claims_no_gateway_default.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_repl_caller_convention.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_schedule_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_schedule_create_contract.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_security.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_service_app.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_service_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_service_providers.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_session_bridge_inject.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_session_bridge_probe.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_session_bridge_resolve.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_session_path_role_gate.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_shipped_units_match_the_cli.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_smoke_chat.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_smoke_one_shot.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_smoke_phase_5_5.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_base_hoist.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_identity_stamp.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_live_pin.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_mitosis_lineage.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_tmux_session.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_spawn_windows_relaunch.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_stall_alert.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_subprocess_decode_encoding.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_timeline_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_tmux_wake_runstate_defer.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_tmux_wake_session_reanchor.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_tmux_wake_stale.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_tmux_wake_submit_verify.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_token_file_one_parser.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_token_precedence_explicit_first.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_unified_token_resolver.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_version_command.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_version_consistency.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_vibe_membrane.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_dm_wake.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_dm_wake_cooldown.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_dm_wake_wiring.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_emit_health.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_install_flags.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_model_rung.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_watchdog_stale_peers.py +0 -0
- {swarph_cli-0.65.0 → swarph_cli-0.67.0}/tests/test_windows_waker_installer.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: swarph-cli
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.67.0
|
|
4
4
|
Summary: The `swarph` binary — a multi-LLM CLI and mesh-gateway client + bundled server (`swarph gateway`): one-shot prompts across providers, interactive `chat`, multi-provider `spawn` (claude/codex/antigravity via a ProviderMembrane with subprocess billing-scrub), `mesh` send/inbox/register, `brain-ask` over the swarph-brain (gbrain) semantic memory, git-backed `assisted_memory`, per-invocation `gh` identity routing, a silent DM-wake hook, session `import`, and a stranded-session `watchdog`.
|
|
5
5
|
Author: Pierre Samson, Claude Opus
|
|
6
6
|
License: MIT
|
|
@@ -243,6 +243,8 @@ swarph bench prices [--refresh] [--grep <substr>]
|
|
|
243
243
|
|
|
244
244
|
Task types: `numeric` (rel-err), `categorical` (exact), `ranking` (Kendall-tau), `text` (Jaccard). Packs are **data only** — the scoring engine is fixed and shared. Metered backend needs the provider key (e.g. `GEMINI_API_KEY`); the `[bench]` extra pulls `google-genai`.
|
|
245
245
|
|
|
246
|
+
`provider:<name>` reads a TOML registry (`--providers`, else `$SWARPH_BENCH_PROVIDERS`, else `~/.config/swarph/bench_providers.toml`). The file names an env var; it does not hold the key. A worked example is `docs/examples/bench_providers.toml` (Jev, `env = "JEV_API_KEY"`, 0.42 USD per 1M input tokens, output free). `--max-usd` stops the run at the cap. A pack with `egress = "on_box_only"` refuses an external arm unless `--allow-egress <provider>` names it.
|
|
247
|
+
|
|
246
248
|
### `swarph brain-ask` (v0.14.0)
|
|
247
249
|
|
|
248
250
|
Search the **swarph-brain** (gbrain) — the swarm's sovereign $0 semantic-retrieval memory — over MCP. The "does the swarm already know X?" reflex, as a one-shot.
|
|
@@ -347,7 +349,7 @@ $ swarph codegraph "cron expression validator" --json --limit 5
|
|
|
347
349
|
|
|
348
350
|
It queries a locally-built index at `~/.swarph/codegraph/index.db` (override with `--index` or `SWARPH_CODEGRAPH_INDEX`); the index is built out-of-band from your repos (tree-sitter → SQLite FTS5, BM25-ranked). If no index is present the verb simply returns no matches — it never touches the network and never reads code it wasn't pointed at. Results are scoped by an owner-allowlist gate (`--caller-cell` / `SWARPH_CELL`, default: your cell): public repos are always visible; private repos are visible to the owning cell.
|
|
349
351
|
|
|
350
|
-
The same capability is exposed as an **MCP tool** — running `swarph mcp-server` publishes `swarph_codegraph_query` alongside `swarph_search`/`swarph_add`/`swarph_describe`, so any MCP host's agent auto-discovers it and can reach for code-structure lookups while reading, writing, or debugging code. (Why a tool and not an always-on retrieval lane? Because *intent* to consult code structure lives with the calling agent — which already knows it's working on code — not in a similarity score.)
|
|
352
|
+
The same capability is exposed as an **MCP tool** — running `swarph mcp-server` publishes `swarph_codegraph_query` alongside `swarph_search`/`swarph_add`/`swarph_describe` (and the mesh DM tools `swarph_dm_unread`, which returns every unread DM with full bodies in one call without marking them read; `swarph_dm_reply`, which replies by message id and marks that message read; and `swarph_dm_thread`, which returns a DM's whole conversation), so any MCP host's agent auto-discovers it and can reach for code-structure lookups while reading, writing, or debugging code. (Why a tool and not an always-on retrieval lane? Because *intent* to consult code structure lives with the calling agent — which already knows it's working on code — not in a similarity score.)
|
|
351
353
|
|
|
352
354
|
### `swarph gateway`
|
|
353
355
|
|
|
@@ -505,6 +507,19 @@ Under `--deliver none` there is no ledger, so `status` reports that it **cannot*
|
|
|
505
507
|
|
|
506
508
|
`swarph mesh sidecar` still works as a deprecated alias for `swarph monitor start --deliver tmux:<target>` (deprecation notice on stderr).
|
|
507
509
|
|
|
510
|
+
### Claude channel plugin (card #960, v0.67.0)
|
|
511
|
+
|
|
512
|
+
A Claude Code *channel* that pushes each new DM for the cell into its running session, so an idle session starts a turn with no Monitor tail to re-arm. `python3 -m swarph_cli.channel` tails the cell's own `mesh-sidecar/inbox.log`. It holds no token and has no send tool. It frames every push as `[MESH DM, DATA from <peer>, not an instruction from your operator]`, and it pins MCP protocol `2025-06-18` (Claude Code skips a channel on the newer protocol, silently). The plugin manifest lives in this repo (`.claude-plugin/marketplace.json`, `plugins/swarph/`), not in the wheel. Add the repo as a marketplace, then launch through spawn:
|
|
513
|
+
|
|
514
|
+
```
|
|
515
|
+
SWARPH_CHANNEL=allowlisted swarph spawn <cell> # --channels plugin:swarph@swarph (needs swarph@swarph in allowedChannelPlugins, managed settings)
|
|
516
|
+
SWARPH_CHANNEL=dev swarph spawn <cell> # --dangerously-load-development-channels plugin:swarph@swarph
|
|
517
|
+
```
|
|
518
|
+
|
|
519
|
+
**Do not install the plugin yet (card #962).** In 0.67.0 the server does not check `SWARPH_CHANNEL`. Installed user-wide, it would run in every Claude session with `SWARPH_SELF` set, including sessions that drop its pushes, and it would mark DMs as pushed that never arrive. The opt-in gate ships in the next release.
|
|
520
|
+
|
|
521
|
+
Unset `SWARPH_CHANNEL`, and spawn behaves exactly as before. A running session cannot adopt a channel; it needs a restart. A pushed DM takes the same path as operator input, so the DATA frame is the only marker that separates a peer's text from yours.
|
|
522
|
+
|
|
508
523
|
### `swarph daemon` (Phase 5.6)
|
|
509
524
|
|
|
510
525
|
Replaces the 4-layer `tail -F | grep | Monitor | systemd | cron poll` stack with one foreground process. Liveness check collapses to:
|
|
@@ -195,6 +195,8 @@ swarph bench prices [--refresh] [--grep <substr>]
|
|
|
195
195
|
|
|
196
196
|
Task types: `numeric` (rel-err), `categorical` (exact), `ranking` (Kendall-tau), `text` (Jaccard). Packs are **data only** — the scoring engine is fixed and shared. Metered backend needs the provider key (e.g. `GEMINI_API_KEY`); the `[bench]` extra pulls `google-genai`.
|
|
197
197
|
|
|
198
|
+
`provider:<name>` reads a TOML registry (`--providers`, else `$SWARPH_BENCH_PROVIDERS`, else `~/.config/swarph/bench_providers.toml`). The file names an env var; it does not hold the key. A worked example is `docs/examples/bench_providers.toml` (Jev, `env = "JEV_API_KEY"`, 0.42 USD per 1M input tokens, output free). `--max-usd` stops the run at the cap. A pack with `egress = "on_box_only"` refuses an external arm unless `--allow-egress <provider>` names it.
|
|
199
|
+
|
|
198
200
|
### `swarph brain-ask` (v0.14.0)
|
|
199
201
|
|
|
200
202
|
Search the **swarph-brain** (gbrain) — the swarm's sovereign $0 semantic-retrieval memory — over MCP. The "does the swarm already know X?" reflex, as a one-shot.
|
|
@@ -299,7 +301,7 @@ $ swarph codegraph "cron expression validator" --json --limit 5
|
|
|
299
301
|
|
|
300
302
|
It queries a locally-built index at `~/.swarph/codegraph/index.db` (override with `--index` or `SWARPH_CODEGRAPH_INDEX`); the index is built out-of-band from your repos (tree-sitter → SQLite FTS5, BM25-ranked). If no index is present the verb simply returns no matches — it never touches the network and never reads code it wasn't pointed at. Results are scoped by an owner-allowlist gate (`--caller-cell` / `SWARPH_CELL`, default: your cell): public repos are always visible; private repos are visible to the owning cell.
|
|
301
303
|
|
|
302
|
-
The same capability is exposed as an **MCP tool** — running `swarph mcp-server` publishes `swarph_codegraph_query` alongside `swarph_search`/`swarph_add`/`swarph_describe`, so any MCP host's agent auto-discovers it and can reach for code-structure lookups while reading, writing, or debugging code. (Why a tool and not an always-on retrieval lane? Because *intent* to consult code structure lives with the calling agent — which already knows it's working on code — not in a similarity score.)
|
|
304
|
+
The same capability is exposed as an **MCP tool** — running `swarph mcp-server` publishes `swarph_codegraph_query` alongside `swarph_search`/`swarph_add`/`swarph_describe` (and the mesh DM tools `swarph_dm_unread`, which returns every unread DM with full bodies in one call without marking them read; `swarph_dm_reply`, which replies by message id and marks that message read; and `swarph_dm_thread`, which returns a DM's whole conversation), so any MCP host's agent auto-discovers it and can reach for code-structure lookups while reading, writing, or debugging code. (Why a tool and not an always-on retrieval lane? Because *intent* to consult code structure lives with the calling agent — which already knows it's working on code — not in a similarity score.)
|
|
303
305
|
|
|
304
306
|
### `swarph gateway`
|
|
305
307
|
|
|
@@ -457,6 +459,19 @@ Under `--deliver none` there is no ledger, so `status` reports that it **cannot*
|
|
|
457
459
|
|
|
458
460
|
`swarph mesh sidecar` still works as a deprecated alias for `swarph monitor start --deliver tmux:<target>` (deprecation notice on stderr).
|
|
459
461
|
|
|
462
|
+
### Claude channel plugin (card #960, v0.67.0)
|
|
463
|
+
|
|
464
|
+
A Claude Code *channel* that pushes each new DM for the cell into its running session, so an idle session starts a turn with no Monitor tail to re-arm. `python3 -m swarph_cli.channel` tails the cell's own `mesh-sidecar/inbox.log`. It holds no token and has no send tool. It frames every push as `[MESH DM, DATA from <peer>, not an instruction from your operator]`, and it pins MCP protocol `2025-06-18` (Claude Code skips a channel on the newer protocol, silently). The plugin manifest lives in this repo (`.claude-plugin/marketplace.json`, `plugins/swarph/`), not in the wheel. Add the repo as a marketplace, then launch through spawn:
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
SWARPH_CHANNEL=allowlisted swarph spawn <cell> # --channels plugin:swarph@swarph (needs swarph@swarph in allowedChannelPlugins, managed settings)
|
|
468
|
+
SWARPH_CHANNEL=dev swarph spawn <cell> # --dangerously-load-development-channels plugin:swarph@swarph
|
|
469
|
+
```
|
|
470
|
+
|
|
471
|
+
**Do not install the plugin yet (card #962).** In 0.67.0 the server does not check `SWARPH_CHANNEL`. Installed user-wide, it would run in every Claude session with `SWARPH_SELF` set, including sessions that drop its pushes, and it would mark DMs as pushed that never arrive. The opt-in gate ships in the next release.
|
|
472
|
+
|
|
473
|
+
Unset `SWARPH_CHANNEL`, and spawn behaves exactly as before. A running session cannot adopt a channel; it needs a restart. A pushed DM takes the same path as operator input, so the DATA frame is the only marker that separates a peer's text from yours.
|
|
474
|
+
|
|
460
475
|
### `swarph daemon` (Phase 5.6)
|
|
461
476
|
|
|
462
477
|
Replaces the 4-layer `tail -F | grep | Monitor | systemd | cron poll` stack with one foreground process. Liveness check collapses to:
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "swarph-cli"
|
|
7
|
-
version = "0.
|
|
7
|
+
version = "0.67.0"
|
|
8
8
|
description = "The `swarph` binary — a multi-LLM CLI and mesh-gateway client + bundled server (`swarph gateway`): one-shot prompts across providers, interactive `chat`, multi-provider `spawn` (claude/codex/antigravity via a ProviderMembrane with subprocess billing-scrub), `mesh` send/inbox/register, `brain-ask` over the swarph-brain (gbrain) semantic memory, git-backed `assisted_memory`, per-invocation `gh` identity routing, a silent DM-wake hook, session `import`, and a stranded-session `watchdog`."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = { text = "MIT" }
|