swarph-cli 0.72.27__tar.gz → 0.72.28__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.72.27/src/swarph_cli.egg-info → swarph_cli-0.72.28}/PKG-INFO +1 -1
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/pyproject.toml +1 -1
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/__init__.py +1 -1
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/wake_watchdog.py +37 -2
- {swarph_cli-0.72.27 → swarph_cli-0.72.28/src/swarph_cli.egg-info}/PKG-INFO +1 -1
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_729_wake_watchdog.py +53 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/LICENSE +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/README.md +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/setup.cfg +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/__main__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/backends.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/claude_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/codex_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/pack.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/prices.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/providers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/quality.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/refresh_prices.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/rules.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/runner.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/signal_score.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/bench/validate.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/caller.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/harden.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/lineage.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/liveness.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/manifest.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/paths.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/capture/verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/cell.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/chain_token.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/channel.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/_content.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/_display.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/_gateway_client.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/add.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/bench.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/board.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/board_merge_check.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/brain.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/brain_ask.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/cell.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/cell_probe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/cell_selfcheck.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/channel.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/chat.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/codegraph.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/codegraph_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/codex_hook_output.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/codex_waker.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/compress.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/daemon.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/dreaming.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/event.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/gateway.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/gh_route.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/group.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/guide.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/highlight.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/hook_interpreter.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/hook_output.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/hooks.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/import_session.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/init.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_codex_hooks.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_multiplexer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_opencode_plugin.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_postcompact_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_wake_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/lane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/mcp_server.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/memory.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/memory_emit_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/memory_sync.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/mesh.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/monitor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/okf_links.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/onboard.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/peer_reply_drain.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/postcompact_hook_output.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/protocol_handler.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/ratify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/roster.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/rowclear_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/schedule.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/security.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/service.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/spawn.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/sweep.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/timeline.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/triage.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/version.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/wake_hook_output.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/watchdog.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/compress/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/compress/levers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/compress/marker.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/compress/verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/console_safe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/delivery_queue.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dm_frame.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/candidates.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/clone.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/enrich.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/index_check.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/notify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/organize.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/probes.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/report.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/run.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/slm.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/transcripts.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/dreaming/verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/feature_registry.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/lanes_control.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/schema.sql +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/server.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway/services_control.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gateway_default.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/gh_identity.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/guide/GUIDE.md +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/identity.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-codex-outbox.plist +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-codex-outbox.timer.plist +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-monitor.plist +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-watchdog.plist +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-watchdog.timer.plist +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd_render.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/main.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/multiplexer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/__main__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/api.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/config.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/operator/fmt.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/orphan_daemons.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/pane_probe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/parsers/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/parsers/claude.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/opencode/plugin.js +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/_shim.cmd +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/postcompact-recall-grok.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/postcompact-recall.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-emit-antigravity.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-emit-claude.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-emit-grok.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-emit.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-recall.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/precompact-flag.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/preinvocation-recall-antigravity.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/sessionstart-recall.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_executor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_executor_windows.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_reconciliation.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_reply_outbox.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_service_host.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_service_payload.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_service_reply.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/peer_staging.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/query_filters.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/quota_sync.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/rowclear.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/dm_notify_filter.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/ensure_monitor.sh +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/install_codex_waker_windows.ps1 +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/install_monitor_task_windows.ps1 +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scrub.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/service/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/service/app.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/service/providers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/session_bridge.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/skills/i-have-adhd/LICENSE +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/skills/i-have-adhd/SKILL.md +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/source_text.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/stall_alert.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/codex-waker.default +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/peer-reply-drain.default +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-codex-outbox@.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-codex-outbox@.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-codex-waker@.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-codex-waker@.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-monitor-reexec.path +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-monitor-reexec.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-monitor@.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-peer-reply-drain@.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-peer-reply-drain@.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-stuck-sweep.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-stuck-sweep.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-triage.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-triage.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-watchdog.default +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-watchdog.service +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/systemd/swarph-watchdog.timer +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/timeline_paths.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/tokens.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/__init__.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/backend.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/job.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/owners.json +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/router.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/rows.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/triage/sensor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli.egg-info/SOURCES.txt +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli.egg-info/dependency_links.txt +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli.egg-info/entry_points.txt +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli.egg-info/requires.txt +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli.egg-info/top_level.txt +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1006_board_publisher.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1006_session_board.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1010_strand_only.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1013_spawn_channel.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1017_muse_tui.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1050_surrogate_wake.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1052_opencode_deaf.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1059_watchdog_unread_env.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1061_roster_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1064_stuck_sweep.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1065_release.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1066_quiet_wakes.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1068_structured_accept_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1071_quota_sync.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1073_triage.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1073_triage_board.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1073_wheel_install.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1075_task_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1083_openai_decisions.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1144_cell_yaml_github.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1197_commander_taps.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1203_swarph_me_refusal.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1206_offer_question.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1214_egress.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1219_egress_probe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_1221_quota_windows.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_124_register_merge.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_126_pending_from_complete.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_132_ensure_monitor_state_dir.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_138_memory_navigate.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_139_tool_probe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_183_card_anchor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_184_notify_honesty.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_201_win32_bash_refusal.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_243_onboard_per_peer_token.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_307_task4_ask_reply.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_312_codegraph_fuzzy_verb.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_319_refusal_exit_codes.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_323_mistral_backend.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_332_report_organize_findings.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_356_query_filters.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_397_gh_identity_router.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_397_router_preflight.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_402_one_identity_resolver.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_432_rowclear.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_467b_onboard_operator_credential.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_472_register_caller_binding.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_484_codex_queue_sink.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_523_guide.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_524_conftest_hermeticity.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_532_accept_flag.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_535_version_capability.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_538_signal_bench.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_546_default_gateway.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_547_verbs_from_registry.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_548_gateway_remainder.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_552_codegraph_gateway.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_555_relay_row_shape.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_556_relay_freshness.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_559_edges_truncated.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_564_bootstrap_first_peer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_578_no_machine_specific_host_defaults.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_579_register_bootstrap_message.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_591_cli_step_graph.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_644_monitor_supervision.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_648_install_unit.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_654_reexec.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_656_owned_slm.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_684_dreaming_verb.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_689_pkg_version_order.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_715_grok_wake.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_716_timeline_one_path.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_723_grok_0251.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_724_ps1_ascii_or_bom.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_725_stdio_reconfigure.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_726_grok_limit_screen.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_729_arm_check_delivery_gap.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_729_dm_once.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_734_dreaming_enrich_degrade.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_735_dm_mcp_tools.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_739_wake_writer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_740_edit_project.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_762_cards_edit_priority.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_764_enrich_collapse.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_801_confirm_flow_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_802_stage_history.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_825_codegraph_hook_noise.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_825_install_posttooluse_only.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_825_remaining_cap_shred_bind.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_829_counterfactual_column.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_830_hook_binding_version.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_84_cli_labels.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_866_doctrine_guide.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_872_identity_refuses_not_warns.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_874_source_text.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_888_opencode_data_dir_can_fail.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_937_dreaming_notify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_938_organize_line_limit.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_941_bench_backends.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_941_harness_342.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_945_same_line_pairing.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_955_prompt_audit.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_957_auth_http.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_959_venv_interpreter.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_960_channel.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_960_ensure_monitor_heartbeat.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_961_cursor_grok_footer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_961_loud_stop.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_963_plugin_manifest.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_964_channel_cell.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_965_mesh_wait.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_975_channel_hop.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_add_security_gate.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_add.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_hash.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_lib.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_mcp.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_skill.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_tool.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_artifact_uri.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_backends.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_claude_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_codex_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_pack.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_prices.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_quality.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_runner.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_bench_validate.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_board_card_thread.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_board_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_board_merge_check.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_board_obligation_close.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_brain_ask_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_brain_ask_env_diagnosis.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_brain_ask_identity_explicitness.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_brain_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_caller_meta_guard.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_capture_lineage.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_capture_liveness.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_capture_manifest.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_capture_paths.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_capture_security.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cell_command_dispatch.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cell_harden.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cell_loader.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cell_selfcheck.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cell_verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_chain_token.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_channel_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_channel_poll_never_breaks_dms.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_channel_post.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_channel_wake_policy_filter.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_chat_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_claude_parser.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_claude_tmux_template.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_codegraph_caller_scope.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_codegraph_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_codegraph_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_codegraph_mcp.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_codex_waker.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_compress_caller_convention.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_compress_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_compress_levers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_compress_marker.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_compress_verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_console_encoding_e2e.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_content_composition.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_copilot_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_copilot_pane_reader.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_cursor_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_daemon_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_daemon_console_encoding.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_daemon_delivery.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_delivery_queue.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_display_sanitize.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_ensure_monitor_no_peer_default.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_event_emit.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_feature_to_uri.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_gateway_brain.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_gateway_client.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_gateway_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_gateway_message_idempotency.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_gh_route_doctor_mesh_name.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_group_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_guide_commands_parse.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_guide_selfcheck.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_heartbeat_check.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_highlight_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hook_output.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_activity_marker.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_add.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_bundle.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_init.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_legacy_generation_removal.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_lifecycle.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_merge.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_win32_bash_wrapper.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_hooks_win32_command_path.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_import_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_inbox_identity_provenance.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_init_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_init_provider_menu.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_install_codex_hooks.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_install_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_install_multiplexer_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_install_postcompact_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_install_wake_hook.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_lane_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_launchd_units.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_main.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_main_unknown_verb_guard.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mcp_missing_hint.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mcp_server.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_memory_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_memory_emit_snippet.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_memory_gateway.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_memory_sync.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_memory_sync_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_inbox_mark_read.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_inbox_sanitize.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_originate_thread_623.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_send_unknown_peer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_sidecar.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_sidecar_cursor_decoupled.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_sidecar_muse_sink.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_mesh_sidecar_wake_survives_read.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_meta_edge_identity.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_monitor_channel_poll.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_monitor_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_monitor_daemon_collision.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_monitor_self_name_verification.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_monitor_state_split.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_multiplexer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_muse_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_muse_own_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_obligation_close_is_surfaced.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_okf_links.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_onboard_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_opencode_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_opencode_plugin.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_operator_me.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_orphan_daemons.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_packaged_artifacts_exist.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_packaged_skills.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_executor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_executor_windows.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_reply_drain_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_reply_drain_supervisor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_reply_outbox.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_reply_transport.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_service_e2e.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_service_host.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_service_payload.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_peer_service_reply.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_postcompact_recall.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_process_liveness.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_protocol_handler.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_providers_isolation.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_ratify_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_readme_claims_no_gateway_default.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_repl_caller_convention.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_schedule_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_schedule_create_contract.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_scrub.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_security.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_service_app.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_service_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_service_providers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_session_bridge_inject.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_session_bridge_probe.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_session_bridge_resolve.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_session_path_role_gate.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_shipped_units_match_the_cli.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_smoke_chat.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_smoke_one_shot.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_smoke_phase_5_5.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_base_hoist.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_identity_stamp.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_live_pin.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_mitosis_lineage.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_tmux_session.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_spawn_windows_relaunch.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_stall_alert.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_subprocess_decode_encoding.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_timeline_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_tmux_wake_runstate_defer.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_tmux_wake_session_reanchor.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_tmux_wake_stale.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_tmux_wake_submit_verify.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_token_file_one_parser.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_token_precedence_explicit_first.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_unified_token_resolver.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_version_command.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_version_consistency.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_vibe_membrane.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_dm_wake.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_dm_wake_cooldown.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_dm_wake_wiring.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_emit_health.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_install_flags.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_model_rung.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/tests/test_watchdog_stale_peers.py +0 -0
- {swarph_cli-0.72.27 → swarph_cli-0.72.28}/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.72.
|
|
3
|
+
Version: 0.72.28
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "swarph-cli"
|
|
7
|
-
version = "0.72.
|
|
7
|
+
version = "0.72.28"
|
|
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" }
|
|
@@ -148,8 +148,9 @@ def _waiter_just_delivered(inbox: str, now: float | None = None) -> bool:
|
|
|
148
148
|
|
|
149
149
|
def _watching(inbox: str, cmdlines: Iterable[str]) -> bool:
|
|
150
150
|
"""A reader is tail or dm_notify_filter with the inbox path as its own argument,
|
|
151
|
-
a channel server whose heartbeat is fresh,
|
|
152
|
-
|
|
151
|
+
a channel server whose heartbeat is fresh, a one-shot `swarph mesh wait` for
|
|
152
|
+
this cell (running, or delivered within WAIT_REARM_GRACE), or the cell's own
|
|
153
|
+
monitor running with a tmux sink.
|
|
153
154
|
|
|
154
155
|
A process that merely mentions the path (a prompt, a log line) is not a reader.
|
|
155
156
|
"""
|
|
@@ -160,6 +161,8 @@ def _watching(inbox: str, cmdlines: Iterable[str]) -> bool:
|
|
|
160
161
|
parts = cmd.split()
|
|
161
162
|
if _waits_on(parts, cell):
|
|
162
163
|
return True
|
|
164
|
+
if _monitor_sink_pushes(parts, cell):
|
|
165
|
+
return True
|
|
163
166
|
if inbox not in parts:
|
|
164
167
|
continue
|
|
165
168
|
if any(os.path.basename(p) == "tail" for p in parts):
|
|
@@ -169,6 +172,38 @@ def _watching(inbox: str, cmdlines: Iterable[str]) -> bool:
|
|
|
169
172
|
return False
|
|
170
173
|
|
|
171
174
|
|
|
175
|
+
def _monitor_sink_pushes(parts: list[str], cell: str) -> bool:
|
|
176
|
+
"""A running `swarph monitor`, started with `--as <cell>` and a tmux sink,
|
|
177
|
+
is a wake path.
|
|
178
|
+
|
|
179
|
+
The monitor's tmux sink injects the wake into the cell's pane; card #961
|
|
180
|
+
measured that a cell cannot wake its own session, so this sink is the only
|
|
181
|
+
path that actually STARTS a turn. It names the cell, not the inbox path, so
|
|
182
|
+
it is checked before the inbox-path gate. Observation only: the watchdog
|
|
183
|
+
never starts a monitor. A process that merely quotes the command (a prompt,
|
|
184
|
+
a log line) is not the monitor -- it must BE swarph running the monitor for
|
|
185
|
+
this cell with a tmux deliver sink.
|
|
186
|
+
"""
|
|
187
|
+
for i in (0, 1):
|
|
188
|
+
if len(parts) < i + 4 or os.path.basename(parts[i]) != "swarph":
|
|
189
|
+
continue
|
|
190
|
+
if i == 1 and not os.path.basename(parts[0]).startswith("python"):
|
|
191
|
+
continue
|
|
192
|
+
if parts[i + 1:i + 3] != ["monitor", "start"]:
|
|
193
|
+
continue
|
|
194
|
+
rest = parts[i + 3:]
|
|
195
|
+
named = f"--as={cell}" in rest or any(
|
|
196
|
+
a == "--as" and b == cell for a, b in zip(rest, rest[1:]))
|
|
197
|
+
# Any tmux: pane counts, in either form (`--deliver tmux:<pane>` or
|
|
198
|
+
# `--deliver=tmux:<pane>`) -- the sink is the cell's wake, whatever pane
|
|
199
|
+
# it names, so the two spellings must agree.
|
|
200
|
+
has_tmux = any(p.startswith("--deliver=tmux:") for p in rest) or any(
|
|
201
|
+
a == "--deliver" and b.startswith("tmux:")
|
|
202
|
+
for a, b in zip(rest, rest[1:]))
|
|
203
|
+
return named and has_tmux
|
|
204
|
+
return False
|
|
205
|
+
|
|
206
|
+
|
|
172
207
|
def _waits_on(parts: list[str], cell: str) -> bool:
|
|
173
208
|
"""`swarph mesh wait --once --as <cell>` names the cell, not the inbox path.
|
|
174
209
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: swarph-cli
|
|
3
|
-
Version: 0.72.
|
|
3
|
+
Version: 0.72.28
|
|
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
|
|
@@ -333,3 +333,56 @@ def test_the_re_arm_gap_after_a_one_shot_delivery_is_not_an_outage(tmp_path):
|
|
|
333
333
|
st = {}
|
|
334
334
|
assert scan(cells, [], st, now=0) == []
|
|
335
335
|
assert scan(cells, [], st, now=120) == ["copilot"]
|
|
336
|
+
|
|
337
|
+
|
|
338
|
+
def test_a_monitor_with_a_tmux_sink_is_a_watcher():
|
|
339
|
+
"""Card #961: the tmux sink is the only path that starts a turn, so a cell
|
|
340
|
+
whose own monitor runs with `--deliver tmux:<pane>` is watched even with no
|
|
341
|
+
tail -- the commander's one-wake-source rule (drop the tail, keep the sink)."""
|
|
342
|
+
cells = {"opencode": "/tmp/opencode/mesh-sidecar/inbox.log"}
|
|
343
|
+
state = {}
|
|
344
|
+
monitor = ["/usr/bin/python3 /home/ubuntu/.local/bin/swarph monitor start "
|
|
345
|
+
"--as opencode --deliver tmux:opencode --deliver pull --foreground"]
|
|
346
|
+
assert scan(cells, monitor, state, now=0) == []
|
|
347
|
+
assert scan(cells, monitor, state, now=120) == []
|
|
348
|
+
assert state["opencode"].get("outage") is not True
|
|
349
|
+
|
|
350
|
+
|
|
351
|
+
def test_a_prompt_quoting_the_monitor_command_is_not_a_watcher():
|
|
352
|
+
cells = {"opencode": "/tmp/opencode/mesh-sidecar/inbox.log"}
|
|
353
|
+
state = {}
|
|
354
|
+
noise = ['claude --append-system-prompt "run swarph monitor start --as opencode '
|
|
355
|
+
'--deliver tmux:opencode"']
|
|
356
|
+
assert scan(cells, noise, state, now=0) == []
|
|
357
|
+
assert scan(cells, noise, state, now=120) == ["opencode"]
|
|
358
|
+
|
|
359
|
+
|
|
360
|
+
def test_a_monitor_for_another_cell_is_not_this_cells_watcher():
|
|
361
|
+
cells = {"opencode": "/tmp/opencode/mesh-sidecar/inbox.log"}
|
|
362
|
+
state = {}
|
|
363
|
+
other = ["/usr/bin/python3 /home/ubuntu/.local/bin/swarph monitor start "
|
|
364
|
+
"--as cursor-lin --deliver tmux:cursor-lin --foreground"]
|
|
365
|
+
assert scan(cells, other, state, now=0) == []
|
|
366
|
+
assert scan(cells, other, state, now=120) == ["opencode"]
|
|
367
|
+
|
|
368
|
+
|
|
369
|
+
def test_a_pull_only_monitor_is_not_a_watcher():
|
|
370
|
+
"""A pull-only monitor writes inbox.log but starts no turn, so the cell is
|
|
371
|
+
still unwatched (card #1234)."""
|
|
372
|
+
cells = {"opencode": "/tmp/opencode/mesh-sidecar/inbox.log"}
|
|
373
|
+
state = {}
|
|
374
|
+
pull_only = ["/usr/bin/python3 /home/ubuntu/.local/bin/swarph monitor start "
|
|
375
|
+
"--as opencode --deliver pull --foreground"]
|
|
376
|
+
assert scan(cells, pull_only, state, now=0) == []
|
|
377
|
+
assert scan(cells, pull_only, state, now=120) == ["opencode"]
|
|
378
|
+
|
|
379
|
+
|
|
380
|
+
def test_the_equals_form_of_the_tmux_sink_counts():
|
|
381
|
+
"""Both spellings agree: any tmux:<pane> counts, not only the cell's own name."""
|
|
382
|
+
cells = {"opencode": "/tmp/opencode/mesh-sidecar/inbox.log"}
|
|
383
|
+
state = {}
|
|
384
|
+
monitor = ["/usr/bin/python3 /home/ubuntu/.local/bin/swarph monitor start "
|
|
385
|
+
"--as opencode --deliver=tmux:some-other-pane --foreground"]
|
|
386
|
+
assert scan(cells, monitor, state, now=0) == []
|
|
387
|
+
assert scan(cells, monitor, state, now=120) == []
|
|
388
|
+
assert state["opencode"].get("outage") is not True
|
|
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
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_opencode_plugin.py
RENAMED
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/install_postcompact_hook.py
RENAMED
|
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
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/commands/postcompact_hook_output.py
RENAMED
|
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
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-codex-outbox.timer.plist
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/launchd/swarph-watchdog.timer.plist
RENAMED
|
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
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/postcompact-recall.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-emit.sh
RENAMED
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/posttooluse-recall.sh
RENAMED
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/precompact-flag.sh
RENAMED
|
File without changes
|
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/payloads/postcompact/sessionstart-recall.sh
RENAMED
|
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
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/install_codex_waker_windows.ps1
RENAMED
|
File without changes
|
{swarph_cli-0.72.27 → swarph_cli-0.72.28}/src/swarph_cli/scripts/install_monitor_task_windows.ps1
RENAMED
|
File without changes
|
|
File without changes
|